aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEfraim Flashner <efraim@flashner.co.il>2021-10-31 12:47:14 +0200
committerEfraim Flashner <efraim@flashner.co.il>2021-10-31 14:49:47 +0200
commitbc5155b952ae8bdbc56aded4d8d39768b4e2a7d4 (patch)
tree6b55475d86c522543384dea7d1ab66bba32af63e
parentdac8d013bd1fc7f57b8ba3582eef6e0e01b23dfd (diff)
parent4e5000114ec01b5e92a87c52f2a10f9ba7a601c8 (diff)
downloadguix-bc5155b952ae8bdbc56aded4d8d39768b4e2a7d4.tar
guix-bc5155b952ae8bdbc56aded4d8d39768b4e2a7d4.tar.gz
Merge remote-tracking branch 'origin/master' into core-updates-frozen
-rw-r--r--Makefile.am3
-rw-r--r--doc/build.scm8
-rw-r--r--doc/contributing.texi8
-rw-r--r--doc/guix.texi541
-rw-r--r--doc/local.mk6
-rw-r--r--etc/completion/bash/guix18
-rw-r--r--etc/completion/zsh/_guix1
-rw-r--r--etc/news.scm91
-rw-r--r--gnu/installer/newt/partition.scm6
-rw-r--r--gnu/local.mk16
-rw-r--r--gnu/packages/algebra.scm36
-rw-r--r--gnu/packages/animation.scm2
-rw-r--r--gnu/packages/audio.scm6
-rw-r--r--gnu/packages/backup.scm10
-rw-r--r--gnu/packages/bioconductor.scm31
-rw-r--r--gnu/packages/bioinformatics.scm369
-rw-r--r--gnu/packages/bootloaders.scm21
-rw-r--r--gnu/packages/browser-extensions.scm4
-rw-r--r--gnu/packages/c.scm4
-rw-r--r--gnu/packages/cdrom.scm8
-rw-r--r--gnu/packages/chromium.scm22
-rw-r--r--gnu/packages/cran.scm180
-rw-r--r--gnu/packages/crates-io.scm2
-rw-r--r--gnu/packages/crypto.scm49
-rw-r--r--gnu/packages/debug.scm61
-rw-r--r--gnu/packages/diffoscope.scm12
-rw-r--r--gnu/packages/display-managers.scm19
-rw-r--r--gnu/packages/djvu.scm11
-rw-r--r--gnu/packages/dns.scm4
-rw-r--r--gnu/packages/docbook.scm3
-rw-r--r--gnu/packages/emacs-xyz.scm153
-rw-r--r--gnu/packages/emacs.scm16
-rw-r--r--gnu/packages/emulators.scm4
-rw-r--r--gnu/packages/engineering.scm2
-rw-r--r--gnu/packages/file-systems.scm28
-rw-r--r--gnu/packages/finance.scm16
-rw-r--r--gnu/packages/firmware.scm4
-rw-r--r--gnu/packages/flashing-tools.scm60
-rw-r--r--gnu/packages/fonts.scm64
-rw-r--r--gnu/packages/fontutils.scm32
-rw-r--r--gnu/packages/freedesktop.scm68
-rw-r--r--gnu/packages/game-development.scm17
-rw-r--r--gnu/packages/games.scm11
-rw-r--r--gnu/packages/genimage.scm121
-rw-r--r--gnu/packages/gimp.scm4
-rw-r--r--gnu/packages/gnome.scm7
-rw-r--r--gnu/packages/gnuzilla.scm798
-rw-r--r--gnu/packages/graphics.scm146
-rw-r--r--gnu/packages/gstreamer.scm2
-rw-r--r--gnu/packages/hardware.scm28
-rw-r--r--gnu/packages/image-processing.scm33
-rw-r--r--gnu/packages/image-viewers.scm2
-rw-r--r--gnu/packages/image.scm42
-rw-r--r--gnu/packages/javascript.scm4
-rw-r--r--gnu/packages/julia-jll.scm50
-rw-r--r--gnu/packages/julia-xyz.scm242
-rw-r--r--gnu/packages/kde-frameworks.scm2
-rw-r--r--gnu/packages/kde.scm2
-rw-r--r--gnu/packages/linux.scm116
-rw-r--r--gnu/packages/lisp-check.scm794
-rw-r--r--gnu/packages/lisp-xyz.scm907
-rw-r--r--gnu/packages/mail.scm17
-rw-r--r--gnu/packages/maths.scm220
-rw-r--r--gnu/packages/messaging.scm21
-rw-r--r--gnu/packages/multiprecision.scm24
-rw-r--r--gnu/packages/music.scm48
-rw-r--r--gnu/packages/networking.scm8
-rw-r--r--gnu/packages/ocaml.scm4
-rw-r--r--gnu/packages/package-management.scm22
-rw-r--r--gnu/packages/parallel.scm10
-rw-r--r--gnu/packages/patches/diffoscope-fix-llvm-test.patch (renamed from gnu/packages/patches/diffoscope-fix-test_item3_deflate_llvm_bitcode.patch)0
-rw-r--r--gnu/packages/patches/disarchive-cross-compilation.patch77
-rw-r--r--gnu/packages/patches/flatpak-fix-path.patch29
-rw-r--r--gnu/packages/patches/icecat-78-makeicecat.patch110
-rw-r--r--gnu/packages/patches/icecat-makeicecat.patch133
-rw-r--r--gnu/packages/patches/mupdf-CVE-2021-3407.patch51
-rw-r--r--gnu/packages/patches/mupdf-fix-linkage.patch27
-rw-r--r--gnu/packages/patches/python-peachpy-determinism.patch25
-rw-r--r--gnu/packages/patches/qemu-fix-agent-paths.patch66
-rw-r--r--gnu/packages/patches/u-boot-allow-disabling-openssl.patch164
-rw-r--r--gnu/packages/patches/udiskie-no-appindicator.patch155
-rw-r--r--gnu/packages/patches/zig-disable-libc-note-test.patch31
-rw-r--r--gnu/packages/patches/zig-use-system-paths.patch143
-rw-r--r--gnu/packages/pdf.scm9
-rw-r--r--gnu/packages/photo.scm6
-rw-r--r--gnu/packages/php.scm7
-rw-r--r--gnu/packages/python-check.scm2
-rw-r--r--gnu/packages/python-web.scm9
-rw-r--r--gnu/packages/python-xyz.scm56
-rw-r--r--gnu/packages/radio.scm16
-rw-r--r--gnu/packages/ruby.scm2
-rw-r--r--gnu/packages/scheme.scm14
-rw-r--r--gnu/packages/search.scm107
-rw-r--r--gnu/packages/security-token.scm24
-rw-r--r--gnu/packages/shellutils.scm89
-rw-r--r--gnu/packages/skarnet.scm42
-rw-r--r--gnu/packages/suckless.scm32
-rw-r--r--gnu/packages/task-management.scm7
-rw-r--r--gnu/packages/terminals.scm13
-rw-r--r--gnu/packages/text-editors.scm4
-rw-r--r--gnu/packages/time.scm4
-rw-r--r--gnu/packages/tls.scm21
-rw-r--r--gnu/packages/tor.scm4
-rw-r--r--gnu/packages/version-control.scm9
-rw-r--r--gnu/packages/video.scm70
-rw-r--r--gnu/packages/vim.scm58
-rw-r--r--gnu/packages/virtualization.scm74
-rw-r--r--gnu/packages/vnc.scm7
-rw-r--r--gnu/packages/web-browsers.scm1
-rw-r--r--gnu/packages/web.scm30
-rw-r--r--gnu/packages/wm.scm5
-rw-r--r--gnu/packages/xdisorg.scm48
-rw-r--r--gnu/packages/xfce.scm25
-rw-r--r--gnu/packages/zig.scm104
-rw-r--r--gnu/services/rsync.scm5
-rw-r--r--guix/build/syscalls.scm49
-rw-r--r--guix/cache.scm10
-rw-r--r--guix/import/cran.scm23
-rw-r--r--guix/lint.scm19
-rw-r--r--guix/packages.scm101
-rw-r--r--guix/profiles.scm19
-rw-r--r--guix/scripts/environment.scm432
-rw-r--r--guix/scripts/home.scm24
-rw-r--r--guix/scripts/home/import.scm301
-rw-r--r--guix/scripts/package.scm47
-rw-r--r--guix/scripts/shell.scm394
-rw-r--r--guix/store.scm18
-rw-r--r--guix/ui.scm30
-rw-r--r--po/guix/POTFILES.in1
-rw-r--r--tests/guix-environment-container.sh8
-rw-r--r--tests/guix-environment.sh7
-rw-r--r--tests/guix-shell.sh102
-rw-r--r--tests/home-import.scm187
-rw-r--r--tests/lint.scm14
-rw-r--r--tests/packages.scm14
-rw-r--r--tests/profiles.scm7
-rw-r--r--tests/store.scm28
-rw-r--r--tests/syscalls.scm35
138 files changed, 6886 insertions, 2600 deletions
diff --git a/Makefile.am b/Makefile.am
index a99ccabd0f..135fbb5cce 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -317,6 +317,7 @@ MODULES = \
guix/scripts/import/stackage.scm \
guix/scripts/import/texlive.scm \
guix/scripts/environment.scm \
+ guix/scripts/shell.scm \
guix/scripts/publish.scm \
guix/scripts/edit.scm \
guix/scripts/size.scm \
@@ -477,6 +478,7 @@ SCM_TESTS = \
tests/graph.scm \
tests/gremlin.scm \
tests/hackage.scm \
+ tests/home-import.scm \
tests/import-git.scm \
tests/import-utils.scm \
tests/inferior.scm \
@@ -556,6 +558,7 @@ SH_TESTS = \
tests/guix-authenticate.sh \
tests/guix-environment.sh \
tests/guix-environment-container.sh \
+ tests/guix-shell.sh \
tests/guix-graph.sh \
tests/guix-describe.sh \
tests/guix-repl.sh \
diff --git a/doc/build.scm b/doc/build.scm
index 90fbf1f0e2..bf32f85436 100644
--- a/doc/build.scm
+++ b/doc/build.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
;;;
;;; This file is part of GNU Guix.
@@ -59,6 +59,7 @@
;; failed" crash: <https://bugs.gnu.org/47428>.
(computed-file (computed-file-name result)
(computed-file-gexp result)
+ #:local-build? #f
#:options (computed-file-options result)
#:guile guile-3.0-latest)))))
@@ -699,7 +700,7 @@ makeinfo OPTIONS."
'#$languages)))))
(let* ((name (string-append manual "-html-manual"))
- (manual (computed-file name build)))
+ (manual (computed-file name build #:local-build? #f)))
(syntax-highlighted-html manual
#:mono-node-indexes mono-node-indexes
#:split-node-indexes split-node-indexes
@@ -803,7 +804,8 @@ PDF for language '~a'!~%~%"
opts))))
'#$languages))))
- (computed-file (string-append manual "-pdf-manual") build))
+ (computed-file (string-append manual "-pdf-manual") build
+ #:local-build? #f))
(define (guix-manual-text-domain source languages)
"Return the PO files for LANGUAGES of the 'guix-manual' text domain taken
diff --git a/doc/contributing.texi b/doc/contributing.texi
index 76ab913b0d..db0f836157 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -73,10 +73,10 @@ all the dependencies and appropriate environment variables are set up to
hack on Guix:
@example
-guix environment guix --pure
+guix shell -D guix --pure
@end example
-@xref{Invoking guix environment}, for more information on that command.
+@xref{Invoking guix shell}, for more information on that command.
If you are unable to use Guix when building Guix from a checkout, the
following are the required packages in addition to those mentioned in the
@@ -92,10 +92,10 @@ installation instructions (@pxref{Requirements}).
@end itemize
On Guix, extra dependencies can be added by instead running @command{guix
-environment} with @option{--ad-hoc}:
+shell}:
@example
-guix environment guix --pure --ad-hoc help2man git strace
+guix shell -D guix help2man git strace --pure
@end example
Run @command{./bootstrap} to generate the build system infrastructure
diff --git a/doc/guix.texi b/doc/guix.texi
index 656dc357f5..85d834aca4 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -120,6 +120,7 @@ Documentation License''.
@dircategory Software development
@direntry
+* guix shell: (guix)Invoking guix shell. Creating software environments.
* guix environment: (guix)Invoking guix environment. Building development environments with Guix.
* guix build: (guix)Invoking guix build. Building packages.
* guix pack: (guix)Invoking guix pack. Creating binary bundles.
@@ -263,6 +264,7 @@ Channels
Development
+* Invoking guix shell:: Spawning one-off software environments.
* Invoking guix environment:: Setting up development environments.
* Invoking guix pack:: Creating software bundles.
* The GCC toolchain:: Working with languages supported by GCC.
@@ -3069,10 +3071,10 @@ substitutes: they can force a local build and @emph{challenge} providers
(@pxref{Invoking guix challenge}).
Control over the build environment is a feature that is also useful for
-developers. The @command{guix environment} command allows developers of
+developers. The @command{guix shell} command allows developers of
a package to quickly set up the right development environment for their
package, without having to manually install the dependencies of the
-package into their profile (@pxref{Invoking guix environment}).
+package into their profile (@pxref{Invoking guix shell}).
@cindex replication, of software environments
@cindex provenance tracking, of software artifacts
@@ -3236,7 +3238,7 @@ As an example, @var{file} might contain a definition like this
Developers may find it useful to include such a @file{guix.scm} file
in the root of their project source tree that can be used to test
development snapshots and create reproducible development environments
-(@pxref{Invoking guix environment}).
+(@pxref{Invoking guix shell}).
The @var{file} may also contain a JSON representation of one or more
package definitions. Running @code{guix package -f} on
@@ -3343,6 +3345,17 @@ objects, like this:
'("emacs" "guile@@2.2" "guile@@2.2:debug"))
@end lisp
+@findex package->development-manifest
+You might also want to create a manifest for all the dependencies of a
+package, rather than the package itself:
+
+@lisp
+(package->development-manifest (specification->package "emacs"))
+@end lisp
+
+The example above gives you all the software required to develop Emacs,
+similar to what @command{guix environment emacs} provides.
+
@xref{export-manifest, @option{--export-manifest}}, to learn how to
obtain a manifest file from an existing profile.
@@ -5552,31 +5565,389 @@ If you are a software developer, Guix provides tools that you should find
helpful---independently of the language you're developing in. This is what
this chapter is about.
-The @command{guix environment} command provides a convenient way to set up
-@dfn{development environments} containing all the dependencies and tools
-necessary to work on the software package of your choice. The @command{guix
+The @command{guix shell} command provides a convenient way to set up
+one-off software environments, be it for development purposes or to run
+a command without installing it in your profile. The @command{guix
pack} command allows you to create @dfn{application bundles} that can be
easily distributed to users who do not run Guix.
@menu
+* Invoking guix shell:: Spawning one-off software environments.
* Invoking guix environment:: Setting up development environments.
* Invoking guix pack:: Creating software bundles.
* The GCC toolchain:: Working with languages supported by GCC.
* Invoking guix git authenticate:: Authenticating Git repositories.
@end menu
-@node Invoking guix environment
-@section Invoking @command{guix environment}
+@node Invoking guix shell
+@section Invoking @command{guix shell}
@cindex reproducible build environments
@cindex development environments
@cindex @command{guix environment}
@cindex environment, package build environment
-The purpose of @command{guix environment} is to assist hackers in
-creating reproducible development environments without polluting their
-package profile. The @command{guix environment} tool takes one or more
-packages, builds all of their inputs, and creates a shell
-environment to use them.
+The purpose of @command{guix shell} is to make it easy to create one-off
+software environments, without changing one's profile. It is typically
+used to create development environments; it is also a convenient way to
+run applications without ``polluting'' your profile.
+
+@quotation Note
+The @command{guix shell} command was recently introduced to supersede
+@command{guix environment} (@pxref{Invoking guix environment}). If you
+are familiar with @command{guix environment}, you will notice that it is
+similar but also---we hope!---more convenient.
+@end quotation
+
+The general syntax is:
+
+@example
+guix shell [@var{options}] [@var{package}@dots{}]
+@end example
+
+The following example creates an environment containing Python and NumPy,
+building or downloading any missing package, and runs the
+@command{python3} command in that environment:
+
+@example
+guix shell python python-numpy -- python3
+@end example
+
+Development environments can be created as in the example below, which
+spawns an interactive shell containing all the dependencies and
+environment variables needed to work on Inkscape:
+
+@example
+guix shell --development inkscape
+@end example
+
+Exiting the shell places the user back in the original environment
+before @command{guix shell} was invoked. The next garbage collection
+(@pxref{Invoking guix gc}) may clean up packages that were installed in
+the environment and that are no longer used outside of it.
+
+As an added convenience, when running from a directory that contains a
+@file{manifest.scm} or a @file{guix.scm} file (in this order), possibly
+in a parent directory, @command{guix shell} automatically loads the
+file---provided the directory is listed in
+@file{~/.config/guix/shell-authorized-directories}, and only for
+interactive use:
+
+@example
+guix shell
+@end example
+
+This provides an easy way to define, share, and enter development
+environments.
+
+By default, the shell session or command runs in an @emph{augmented}
+environment, where the new packages are added to search path environment
+variables such as @code{PATH}. You can, instead, choose to create an
+@emph{isolated} environment containing nothing but the packages you
+asked for. Passing the @option{--pure} option clears environment
+variable definitions found in the parent environment@footnote{Be sure to
+use the @option{--check} option the first time you use @command{guix
+shell} interactively to make sure the shell does not undo the effect of
+@option{--pure}.}; passing @option{--container} goes one step further by
+spawning a @dfn{container} isolated from the rest of the system:
+
+@example
+guix shell --container emacs gcc-toolchain
+@end example
+
+The command above spawns an interactive shell in a container when
+nothing but @code{emacs}, @code{gcc-toolchain}, and their dependencies
+is available. The container lacks network access and shares no files
+other than the current working directory with the surrounding
+environment. This is useful to prevent access to system-wide resources
+such as @file{/usr/bin} on foreign distros.
+
+This @option{--container} option can also prove useful if you wish to
+run a security-sensitive application, such as a web browser, in an
+isolated environment. For example, the command below launches
+Ungoogled-Chromium in an isolated environment, this time sharing network
+access with the host and preserving its @code{DISPLAY} environment
+variable, but without even sharing the current directory:
+
+@example
+guix shell --container --network --no-cwd ungoogled-chromium \
+ --preserve='^DISPLAY$' -- chromium
+@end example
+
+@vindex GUIX_ENVIRONMENT
+@command{guix shell} defines the @env{GUIX_ENVIRONMENT}
+variable in the shell it spawns; its value is the file name of the
+profile of this environment. This allows users to, say, define a
+specific prompt for development environments in their @file{.bashrc}
+(@pxref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}):
+
+@example
+if [ -n "$GUIX_ENVIRONMENT" ]
+then
+ export PS1="\u@@\h \w [dev]\$ "
+fi
+@end example
+
+@noindent
+...@: or to browse the profile:
+
+@example
+$ ls "$GUIX_ENVIRONMENT/bin"
+@end example
+
+The available options are summarized below.
+
+@table @code
+@item --check
+Set up the environment and check whether the shell would clobber
+environment variables. It's a good idea to use this option the first
+time you run @command{guix shell} for an interactive session to make
+sure your setup is correct.
+
+For example, if the shell modifies the @env{PATH} environment variable,
+report it since you would get a different environment than what you
+asked for.
+
+Such problems usually indicate that the shell startup files are
+unexpectedly modifying those environment variables. For example, if you
+are using Bash, make sure that environment variables are set or modified
+in @file{~/.bash_profile} and @emph{not} in @file{~/.bashrc}---the
+former is sourced only by log-in shells. @xref{Bash Startup Files,,,
+bash, The GNU Bash Reference Manual}, for details on Bash start-up
+files.
+
+@item --development
+@itemx -D
+Cause @command{guix shell} to include in the environment the
+dependencies of the following package rather than the package itself.
+This can be combined with other packages. For instance, the command
+below starts an interactive shell containing the build-time dependencies
+of GNU@tie{}Guile, plus Autoconf, Automake, and Libtool:
+
+@example
+guix shell -D guile autoconf automake libtool
+@end example
+
+@item --expression=@var{expr}
+@itemx -e @var{expr}
+Create an environment for the package or list of packages that
+@var{expr} evaluates to.
+
+For example, running:
+
+@example
+guix shell -D -e '(@@ (gnu packages maths) petsc-openmpi)'
+@end example
+
+starts a shell with the environment for this specific variant of the
+PETSc package.
+
+Running:
+
+@example
+guix shell -e '(@@ (gnu) %base-packages)'
+@end example
+
+starts a shell with all the base system packages available.
+
+The above commands only use the default output of the given packages.
+To select other outputs, two element tuples can be specified:
+
+@example
+guix shell -e '(list (@@ (gnu packages bash) bash) "include")'
+@end example
+
+@item --file=@var{file}
+@itemx -f @var{file}
+Create an environment containing the package or list of packages that
+the code within @var{file} evaluates to.
+
+As an example, @var{file} might contain a definition like this
+(@pxref{Defining Packages}):
+
+@lisp
+@verbatiminclude environment-gdb.scm
+@end lisp
+
+With the file above, you can enter a development environment for GDB by
+running:
+
+@example
+guix shell -D -f gdb-devel.scm
+@end example
+
+@item --manifest=@var{file}
+@itemx -m @var{file}
+Create an environment for the packages contained in the manifest object
+returned by the Scheme code in @var{file}. This option can be repeated
+several times, in which case the manifests are concatenated.
+
+This is similar to the same-named option in @command{guix package}
+(@pxref{profile-manifest, @option{--manifest}}) and uses the same
+manifest files.
+
+@item --rebuild-cache
+When using @option{--manifest}, @option{--file}, or when invoked without
+arguments, @command{guix shell} caches the environment so that
+subsequent uses are instantaneous. The cache is invalidated anytime the
+file is modified.
+
+The @option{--rebuild-cache} forces the cached environment to be
+refreshed even if the file has not changed. This is useful if the
+@command{guix.scm} or @command{manifest.scm} has external dependencies,
+or if its behavior depends, say, on environment variables.
+
+@item --pure
+Unset existing environment variables when building the new environment, except
+those specified with @option{--preserve} (see below). This has the effect of
+creating an environment in which search paths only contain package inputs.
+
+@item --preserve=@var{regexp}
+@itemx -E @var{regexp}
+When used alongside @option{--pure}, preserve the environment variables
+matching @var{regexp}---in other words, put them on a ``white list'' of
+environment variables that must be preserved. This option can be repeated
+several times.
+
+@example
+guix shell --pure --preserve=^SLURM openmpi @dots{} \
+ -- mpirun @dots{}
+@end example
+
+This example runs @command{mpirun} in a context where the only environment
+variables defined are @env{PATH}, environment variables whose name starts
+with @samp{SLURM}, as well as the usual ``precious'' variables (@env{HOME},
+@env{USER}, etc.).
+
+@item --search-paths
+Display the environment variable definitions that make up the
+environment.
+
+@item --system=@var{system}
+@itemx -s @var{system}
+Attempt to build for @var{system}---e.g., @code{i686-linux}.
+
+@item --container
+@itemx -C
+@cindex container
+Run @var{command} within an isolated container. The current working
+directory outside the container is mapped inside the container.
+Additionally, unless overridden with @option{--user}, a dummy home
+directory is created that matches the current user's home directory, and
+@file{/etc/passwd} is configured accordingly.
+
+The spawned process runs as the current user outside the container. Inside
+the container, it has the same UID and GID as the current user, unless
+@option{--user} is passed (see below).
+
+@item --network
+@itemx -N
+For containers, share the network namespace with the host system.
+Containers created without this flag only have access to the loopback
+device.
+
+@item --link-profile
+@itemx -P
+For containers, link the environment profile to @file{~/.guix-profile}
+within the container and set @code{GUIX_ENVIRONMENT} to that.
+This is equivalent to making @file{~/.guix-profile} a symlink to the
+actual profile within the container.
+Linking will fail and abort the environment if the directory already
+exists, which will certainly be the case if @command{guix shell}
+was invoked in the user's home directory.
+
+Certain packages are configured to look in @file{~/.guix-profile} for
+configuration files and data;@footnote{For example, the
+@code{fontconfig} package inspects @file{~/.guix-profile/share/fonts}
+for additional fonts.} @option{--link-profile} allows these programs to
+behave as expected within the environment.
+
+@item --user=@var{user}
+@itemx -u @var{user}
+For containers, use the username @var{user} in place of the current
+user. The generated @file{/etc/passwd} entry within the container will
+contain the name @var{user}, the home directory will be
+@file{/home/@var{user}}, and no user GECOS data will be copied. Furthermore,
+the UID and GID inside the container are 1000. @var{user}
+need not exist on the system.
+
+Additionally, any shared or exposed path (see @option{--share} and
+@option{--expose} respectively) whose target is within the current user's
+home directory will be remapped relative to @file{/home/USER}; this
+includes the automatic mapping of the current working directory.
+
+@example
+# will expose paths as /home/foo/wd, /home/foo/test, and /home/foo/target
+cd $HOME/wd
+guix shell --container --user=foo \
+ --expose=$HOME/test \
+ --expose=/tmp/target=$HOME/target
+@end example
+
+While this will limit the leaking of user identity through home paths
+and each of the user fields, this is only one useful component of a
+broader privacy/anonymity solution---not one in and of itself.
+
+@item --no-cwd
+For containers, the default behavior is to share the current working
+directory with the isolated container and immediately change to that
+directory within the container. If this is undesirable,
+@option{--no-cwd} will cause the current working directory to @emph{not}
+be automatically shared and will change to the user's home directory
+within the container instead. See also @option{--user}.
+
+@item --expose=@var{source}[=@var{target}]
+@itemx --share=@var{source}[=@var{target}]
+For containers, @option{--expose} (resp. @option{--share}) exposes the
+file system @var{source} from the host system as the read-only
+(resp. writable) file system @var{target} within the container. If
+@var{target} is not specified, @var{source} is used as the target mount
+point in the container.
+
+The example below spawns a Guile REPL in a container in which the user's
+home directory is accessible read-only via the @file{/exchange}
+directory:
+
+@example
+guix shell --container --expose=$HOME=/exchange guile -- guile
+@end example
+
+@item --root=@var{file}
+@itemx -r @var{file}
+@cindex persistent environment
+@cindex garbage collector root, for environments
+Make @var{file} a symlink to the profile for this environment, and
+register it as a garbage collector root.
+
+This is useful if you want to protect your environment from garbage
+collection, to make it ``persistent''.
+
+When this option is omitted, the environment is protected from garbage
+collection only for the duration of the @command{guix shell}
+session. This means that next time you recreate the same environment,
+you could have to rebuild or re-download packages. @xref{Invoking guix
+gc}, for more on GC roots.
+@end table
+
+@command{guix shell} also supports all of the common build options that
+@command{guix build} supports (@pxref{Common Build Options}) as well as
+package transformation options (@pxref{Package Transformation Options}).
+
+@node Invoking guix environment
+@section Invoking @command{guix environment}
+
+The purpose of @command{guix environment} is to assist in creating
+development environments.
+
+@quotation Deprecation warning
+The @command{guix environment} command is deprecated in favor of
+@command{guix shell}, which performs similar functions but is more
+convenient to use. @xref{Invoking guix shell}.
+
+Being deprecated, @command{guix environment} is slated for eventual
+removal, but the Guix project is committed to keeping it until May 1st,
+2023. Please get in touch with us at @email{guix-devel@@gnu.org} if you
+would like to discuss it.
+@end quotation
The general syntax is:
@@ -5710,6 +6081,11 @@ guix environment --preserve='^DISPLAY$' --container --network \
The available options are summarized below.
@table @code
+@item --check
+Set up the environment and check whether the shell would clobber
+environment variables. @xref{Invoking guix shell, @option{--check}},
+for more info.
+
@item --root=@var{file}
@itemx -r @var{file}
@cindex persistent environment
@@ -6898,6 +7274,47 @@ In this example we obtain the @code{gmp} package that is among the
direct inputs of @code{coreutils}.
@end deffn
+@cindex development inputs, of a package
+@cindex implicit inputs, of a package
+Sometimes you will want to obtain the list of inputs needed to
+@emph{develop} a package---all the inputs that are visible when the
+package is compiled. This is what the @code{package-development-inputs}
+procedure returns.
+
+@deffn {Scheme Procedure} package-development-inputs @var{package} @
+ [@var{system}] [#:target #f]
+Return the list of inputs required by @var{package} for development
+purposes on @var{system}. When @var{target} is true, return the inputs
+needed to cross-compile @var{package} from @var{system} to
+@var{triplet}, where @var{triplet} is a triplet such as
+@code{"aarch64-linux-gnu"}.
+
+Note that the result includes both explicit inputs and implicit
+inputs---inputs automatically added by the build system (@pxref{Build
+Systems}). Let us take the @code{hello} package to illustrate that:
+
+@lisp
+(use-modules (gnu packages base) (guix packages))
+
+hello
+@result{} #<package hello@@2.10 gnu/packages/base.scm:79 7f585d4f6790>
+
+(package-direct-inputs hello)
+@result{} ()
+
+(package-development-inputs hello)
+@result{} (("source" @dots{}) ("tar" #<package tar@@1.32 @dots{}>) @dots{})
+@end lisp
+
+In this example, @code{package-direct-inputs} returns the empty list,
+because @code{hello} has zero explicit dependencies. Conversely,
+@code{package-development-inputs} includes inputs implicitly added by
+@code{gnu-build-system} that are required to build @code{hello}: tar,
+gzip, GCC, libc, Bash, and more. To visualize it, @command{guix graph
+hello} would show you explicit inputs, whereas @command{guix graph -t
+bag hello} would include implicit inputs (@pxref{Invoking guix graph}).
+@end deffn
+
Because packages are regular Scheme objects that capture a complete
dependency graph and associated build procedures, it is often useful to
write procedures that take a package and return a modified version
@@ -11152,14 +11569,14 @@ a container similar to the one the build daemon creates:
$ guix build -K foo
@dots{}
$ cd /tmp/guix-build-foo.drv-0
-$ guix environment --no-grafts -C foo --ad-hoc strace gdb
+$ guix shell --no-grafts -C foo strace gdb
[env]# source ./environment-variables
[env]# cd foo-1.2
@end example
-Here, @command{guix environment -C} creates a container and spawns a new
-shell in it (@pxref{Invoking guix environment}). The @command{--ad-hoc
-strace gdb} part adds the @command{strace} and @command{gdb} commands to
+Here, @command{guix shell -C} creates a container and spawns a new
+shell in it (@pxref{Invoking guix shell}). The @command{strace gdb}
+part adds the @command{strace} and @command{gdb} commands to
the container, which you may find handy while debugging. The
@option{--no-grafts} option makes sure we get the exact same
environment, with ungrafted packages (@pxref{Security Updates}, for more
@@ -11173,7 +11590,7 @@ remove @file{/bin/sh}:
@end example
(Don't worry, this is harmless: this is all happening in the throw-away
-container created by @command{guix environment}.)
+container created by @command{guix shell}.)
The @command{strace} command is probably not in the search path, but we
can run:
@@ -13468,8 +13885,8 @@ is subject to radical change in the future.
The purpose of @command{guix container} is to manipulate processes
running within an isolated environment, commonly known as a
-``container'', typically created by the @command{guix environment}
-(@pxref{Invoking guix environment}) and @command{guix system container}
+``container'', typically created by the @command{guix shell}
+(@pxref{Invoking guix shell}) and @command{guix system container}
(@pxref{Invoking guix system}) commands.
The general syntax is:
@@ -13655,7 +14072,7 @@ listed.}. Here's an example of the information it returns:
$ sudo guix processes
SessionPID: 19002
ClientPID: 19090
-ClientCommand: guix environment --ad-hoc python
+ClientCommand: guix shell python
SessionPID: 19402
ClientPID: 19367
@@ -17362,6 +17779,10 @@ Data type representing the configuration for @code{rsync-service}.
@item @code{package} (default: @var{rsync})
@code{rsync} package to use.
+@item @code{address} (default: @code{#f})
+IP address on which @command{rsync} listens for incoming connections.
+If unspecified, it defaults to listening on all available addresses.
+
@item @code{port-number} (default: @code{873})
TCP port on which @command{rsync} listens for incoming connections. If port
is less than @code{1024} @command{rsync} needs to be started as the
@@ -29868,8 +30289,7 @@ When the service is running, you can view its console by connecting to
it with a VNC client, for example with:
@example
-guix environment --ad-hoc tigervnc-client -- \
- vncviewer localhost:5900
+guix shell tigervnc-client -- vncviewer localhost:5900
@end example
The default configuration (see @code{hurd-vm-configuration} below)
@@ -34125,7 +34545,7 @@ guix system delete-generations
@end example
You can also select the generations you want to delete. The example below
-deletes all the system generations that are more than two month old:
+deletes all the system generations that are more than two months old:
@example
guix system delete-generations 2m
@@ -35657,12 +36077,27 @@ still in an experimental stage, though.
@section Declaring the Home Environment
The home environment is configured by providing a
@code{home-environment} declaration in a file that can be passed to the
-@command{guix home} command (@pxref{Invoking guix home}). A simple
-setup can include Bash and a custom text configuration, like in the
-example below. Don't be afraid to declare home environment parts, which
-overlaps with your current dotfiles, before installing any configuration
-files, Guix Home will back up existing config files to a separate place
-in the home folder.
+@command{guix home} command (@pxref{Invoking guix home}). The easiest
+way to get started is by generating an initial configuration with
+@command{guix home import}:
+
+@example
+guix home import ~/src/guix-config
+@end example
+
+The @command{guix home import} command reads some of the ``dot files''
+such as @file{~/.bashrc} found in your home directory and copies them to
+the given directory, @file{~/src/guix-config} in this case; it also
+reads the contents of your profile, @file{~/.guix-profile}, and, based
+on that, it outputs a Home configuration that resembles your current
+configuration. You can dump that configuration to a file and you're
+ready to go!
+
+A simple setup can include Bash and a custom text configuration, like in
+the example below. Don't be afraid to declare home environment parts,
+which overlaps with your current dot files: before installing any
+configuration files, Guix Home will back up existing config files to a
+separate place in the home directory.
@quotation Note
It is highly recommended that you manage your shell or shells with Guix
@@ -35685,10 +36120,20 @@ There is no daemon (at least not necessarily) related to a home service,
a home service is just an element that is used to declare part of home
environment and extend other parts of it. The extension mechanism
discussed in the previous chapter (@pxref{Defining Services}) should not
-be confused with @ref{Shepherd Services}. Using this extension
+be confused with Shepherd services (@pxref{Shepherd Services}). Using this extension
mechanism and some Scheme code that glues things together gives the user
the freedom to declare their own, very custom, home environments.
+Once you have a configuration file that suits your needs, you can
+reconfigure your home by running:
+
+@example
+guix home reconfigure config.scm
+@end example
+
+This ``builds'' your home environment and creates @file{~/.guix-home}
+pointing to it. Voilà!
+
@node Configuring the Shell
@section Configuring the Shell
This section is safe to skip if your shell or shells are managed by
@@ -36283,7 +36728,7 @@ guix home delete-generations
@end example
You can also select the generations you want to delete. The example below
-deletes all the home generations that are more than two month old:
+deletes all the home generations that are more than two months old:
@example
guix home delete-generations 2m
@@ -36313,6 +36758,38 @@ generations that are up to 10 days old:
$ guix home list-generations 10d
@end example
+@item import
+Generate a @dfn{home environment} from the packages in the default
+profile and configuration files found in the user's home directory. The
+configuration files will be copied to the specified directory. Note
+that not every home service that exists is supported (@pxref{Home
+Services}).
+
+@example
+$ guix home import ~/guix-config
+;; This "home-environment" file can be passed to 'guix home reconfigure'
+;; to reproduce the content of your profile. This is "symbolic": it only
+;; specifies package names. To reproduce the exact same profile, you also
+;; need to capture the channels being used, as returned by "guix describe".
+;; See the "Replicating Guix" section in the manual.
+
+(use-modules
+ (gnu home)
+ (gnu packages)
+ (gnu home services shells))
+
+(home-environment
+ (packages
+ (map specification->package
+ (list "glibc-locales" "nss-certs" "nss")))
+ (services
+ (list (service
+ home-bash-service-type
+ (home-bash-configuration
+ (bashrc
+ (list (local-file "/home/charlie/guix-config/.bashrc"))))))))
+@end example
+
@end table
@var{options} can contain any of the common build options (@pxref{Common
diff --git a/doc/local.mk b/doc/local.mk
index fff11f8183..d0cab306a4 100644
--- a/doc/local.mk
+++ b/doc/local.mk
@@ -110,18 +110,18 @@ endef
$(srcdir)/%D%/guix.%.texi: po/doc/guix-manual.%.po $(srcdir)/%D%/contributing.%.texi guix/build/po.go
-$(AM_V_PO4A)$(PO4A_TRANSLATE) $(PO4A_PARAMS) -m "%D%/guix.texi" -p "$<" -l "$@.tmp"
-sed -i "s|guix\.info|$$(basename "$@" | sed 's|texi$$|info|')|" "$@.tmp"
- -$(AM_V_POXREF)$(xref_command)
+ -$(AM_V_POXREF)LC_ALL=en_US.UTF-8 $(xref_command)
-mv "$@.tmp" "$@"
$(srcdir)/%D%/guix-cookbook.%.texi: po/doc/guix-cookbook.%.po guix/build/po.go
-$(AM_V_PO4A)$(PO4A_TRANSLATE) $(PO4A_PARAMS) -m "%D%/guix-cookbook.texi" -p "$<" -l "$@.tmp"
-sed -i "s|guix-cookbook\.info|$$(basename "$@" | sed 's|texi$$|info|')|" "$@.tmp"
- -$(AM_V_POXREF)$(xref_command)
+ -$(AM_V_POXREF)LC_ALL=en_US.UTF-8 $(xref_command)
-mv "$@.tmp" "$@"
$(srcdir)/%D%/contributing.%.texi: po/doc/guix-manual.%.po guix/build/po.go
-$(AM_V_PO4A)$(PO4A_TRANSLATE) $(PO4A_PARAMS) -m "%D%/contributing.texi" -p "$<" -l "$@.tmp"
- -$(AM_V_POXREF)$(xref_command)
+ -$(AM_V_POXREF)LC_ALL=en_US.UTF-8 $(xref_command)
-mv "$@.tmp" "$@"
%D%/os-config-%.texi: gnu/system/examples/%.tmpl
diff --git a/etc/completion/bash/guix b/etc/completion/bash/guix
index 87d9911e53..6a11e1b23b 100644
--- a/etc/completion/bash/guix
+++ b/etc/completion/bash/guix
@@ -1,5 +1,5 @@
# GNU Guix --- Functional package management for GNU
-# Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2021 Tobias Geerinck-Rice <me@tobias.gr>
#
# This file is part of GNU Guix.
@@ -28,10 +28,11 @@ _guix_complete_command ()
if [ -z "$_guix_commands" ]
then
# Cache the list of commands to speed things up.
- _guix_commands="$(guix --help 2> /dev/null \
+ _guix_commands="$(${COMP_WORDS[0]} --help 2> /dev/null \
| grep '^ ' \
| sed '-es/^ *\([a-z-]\+\).*$/\1/g')"
fi
+
COMPREPLY+=($(compgen -W "$_guix_commands" -- "$word_at_point"))
}
@@ -71,10 +72,16 @@ _guix_complete_option ()
{
local command="${COMP_WORDS[$1]}"
local subcommand="${COMP_WORDS[$(($1 + 1))]}"
- if _guix_is_option "$subcommand"
+
+ if [ $1 -le 1 ]
+ then
+ command=""
+ subcommand=""
+ elif _guix_is_option "$subcommand"
then
subcommand=""
fi
+
local options="$(${COMP_WORDS[0]} $command $subcommand --help 2> /dev/null \
| grep '^ \+-' \
| sed -e's/^.*--\([a-zA-Z0-9_-]\+\)\(=\?\).*/--\1\2/g')"
@@ -215,7 +222,7 @@ _guix_complete ()
if [[ "$word" = "--" ]]
then
case "$command" in
- environment)
+ environment|shell)
break
;;
time-machine)
@@ -228,6 +235,7 @@ _guix_complete ()
case $COMP_CWORD in
$command_index)
_guix_complete_command
+ _guix_complete_option 0 "$word_at_point"
;;
*)
if [[ "$command" = "package" ]]
@@ -265,7 +273,7 @@ _guix_complete ()
else
_guix_complete_available_package_or_store_file "$word_at_point"
fi
- elif [[ "$command" = "environment" ]]
+ elif [[ "$command" = "environment" || "$command" = "shell" ]]
then
if _guix_is_dash_L || _guix_is_dash_m || _guix_is_dash_p || _guix_is_dash_l
then
diff --git a/etc/completion/zsh/_guix b/etc/completion/zsh/_guix
index bbc13c6ca1..9b1f16c664 100644
--- a/etc/completion/zsh/_guix
+++ b/etc/completion/zsh/_guix
@@ -58,6 +58,7 @@ _guix_list_available_packages()
if ( [[ ${+_guix_available_packages} -eq 0 ]] || _cache_invalid GUIX_AVAILABLE_PACKAGES ) \
&& ! _retrieve_cache GUIX_AVAILABLE_PACKAGES; then
_guix_available_packages=(${${(f)"$(guix package -A | cut -f1)"}})
+ _guix_available_packages=("${_guix_available_packages[@]// /}")
_store_cache GUIX_AVAILABLE_PACKAGES _guix_available_packages
fi
}
diff --git a/etc/news.scm b/etc/news.scm
index d3a56865b6..494c78eded 100644
--- a/etc/news.scm
+++ b/etc/news.scm
@@ -23,7 +23,96 @@
(channel-news
(version 0)
-(entry (commit "a2324d8b56eabf8117bca220a507cc791edffd2e")
+
+ (entry (commit "746584e0ca200e7bf51b139ceb36c19ea81d6ef1")
+ (title
+ (en "New @command{guix shell} command supersedes @command{guix
+environment}")
+ (de "Neuer Befehl @command{guix shell} löst @command{guix
+environment} ab")
+ (fr "Nouvelle commande @command{guix shell} en remplacement de
+@command{guix environment}"))
+ (body
+ (en "A new @command{guix shell} command is now available. It is
+similar to @command{guix environment}, but with a more convenient interface
+(@command{guix environment} is deprecated but will remain available until May,
+1st 2023). The main difference compared to @command{guix environment} is that
+the \"ad hoc\" mode is the default. Thus, to create an interactive
+environment containing Python, NumPy, and SciPy, you would run:
+
+@example
+guix shell python python-numpy python-scipy
+@end example
+
+To get a development environment for, say, Inkscape, pass the @option{-D}
+flag:
+
+@example
+guix shell -D inkscape
+@end example
+
+Another difference is that running @command{guix shell} without arguments
+loads @file{manifest.scm} or @file{guix.scm} for the current directory or an
+ancestor, provided you allowed it. The command maintains a cache to speed up
+access to such environments.
+
+Run @command{info \"(guix) Invoking guix shell\"} for more information.")
+ (de "Ein neuer Befehl @command{guix shell} ist ab jetzt
+verfügbar. Er ähnelt @command{guix environment}, ist aber leichter zu
+benutzen (@command{guix environment} gilt als veraltet, bleibt aber
+bis zum 1.@: Mai 2023 verfügbar). Der größte Unterschied ist, dass das
+Verhalten mit @option{--ad-hoc} nun der Normalfall ist. D.h.@: um eine
+interaktive Umgebung mit Python, NumPy und SciPy zu bekommen, lautet
+der Befehl:
+
+@example
+guix shell python python-numpy python-scipy
+@end example
+
+Wenn Sie eine Entwicklungsumgebung für, sagen wir, Inkscape schaffen
+wollen, übergeben Sie die Option @option{-D}:
+
+@example
+guix shell -D inkscape
+@end example
+
+Noch ein Unterschied ist, dass wenn Sie @command{guix shell} ohne
+Argumente ausführen, @file{manifest.scm} oder @file{guix.scm} aus dem
+aktuellen Arbeitsverzeichnis oder einem übergeordneten Verzeichnis
+geladen wird, wenn Sie die Berechtigung dazu erteilt haben. Für den
+Befehl wird ein Zwischenspeicher vorgehalten, damit Sie schneller auf
+solche Umgebungen zugreifen können.
+
+Führen Sie @command{info \"(guix) Invoking guix shell\"} aus, um mehr
+zu erfahren.")
+ (fr "Une nouvelle commande, @command{guix shell}, est maintenant
+disponible. Elle est similaire à @command{guix environment}, mais avec une
+interface plus pratique (@command{guix environment} est désuet mais restera
+disponible jusqu'au 1er mai 2023). La principale différence par rapport à
+@command{guix environment} est que le mode par défaut est le mode \"ad hoc\".
+Pour créer un environnement interactif contenant Python, NumPy et SciPy, il
+faut donc lancer :
+
+@example
+guix shell python python-numpy python-scipy
+@end example
+
+Pour obtenir un environnement de développement pour Inkscape, par exemple,
+passer l'option @option{-D} :
+
+@example
+guix shell -D inkscape
+@end example
+
+Une autre différence est qu'en lançant @command{guix shell} sans argument, le
+fichier @file{manifest.scm} ou @file{guix.scm} du répertoire courant ou d'un
+parent est automatiquement chargé, à condition de l'avoir autorisé. La
+commande garde un cache pour accélérer l'accès à ces environnements.
+
+Lancer @command{info \"(guix.fr) Invoquer guix shell\"} pour plus
+d'informations.")))
+
+ (entry (commit "a2324d8b56eabf8117bca220a507cc791edffd2e")
(title
(en "Guix Home is a part of GNU Guix")
(de "Guix Home ist jetzt Teil von GNU Guix")
diff --git a/gnu/installer/newt/partition.scm b/gnu/installer/newt/partition.scm
index ea524eb4c3..70c11ed8ad 100644
--- a/gnu/installer/newt/partition.scm
+++ b/gnu/installer/newt/partition.scm
@@ -131,7 +131,11 @@ Be careful, all data on the disk will be lost.")
(run-listbox-selection-page
#:info-text (G_ "Please select the file-system type for this partition.")
#:title (G_ "File-system type")
- #:listbox-items '(ext4 btrfs fat16 fat32 jfs ntfs xfs swap)
+ #:listbox-items '(btrfs ext4 jfs xfs
+ swap
+ ;; These lack basic Unix features. Their only use
+ ;; on GNU is for interoperation, e.g., with UEFI.
+ fat32 fat16 ntfs)
#:listbox-item->text user-fs-type-name
#:sort-listbox-items? #f
#:button-text (G_ "Exit")
diff --git a/gnu/local.mk b/gnu/local.mk
index 3155338c39..3c90bb2549 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -612,6 +612,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/xdisorg.scm \
%D%/packages/xorg.scm \
%D%/packages/xfce.scm \
+ %D%/packages/zig.scm \
%D%/packages/zile.scm \
%D%/packages/zwave.scm \
\
@@ -1000,9 +1001,8 @@ dist_patch_DATA = \
%D%/packages/patches/desmume-gcc6-fixes.patch \
%D%/packages/patches/desmume-gcc7-fixes.patch \
%D%/packages/patches/dfu-programmer-fix-libusb.patch \
- %D%/packages/patches/diffoscope-fix-test_item3_deflate_llvm_bitcode.patch \
+ %D%/packages/patches/diffoscope-fix-llvm-test.patch \
%D%/packages/patches/diffutils-gets-undeclared.patch \
- %D%/packages/patches/disarchive-cross-compilation.patch \
%D%/packages/patches/dkimproxy-add-ipv6-support.patch \
%D%/packages/patches/docbook-xsl-nonrecursive-string-subst.patch \
%D%/packages/patches/docbook-xsl-support-old-url.patch \
@@ -1068,6 +1068,7 @@ dist_patch_DATA = \
%D%/packages/patches/fifo-map-remove-catch.hpp.patch \
%D%/packages/patches/findutils-localstatedir.patch \
%D%/packages/patches/flann-cmake-3.11.patch \
+ %D%/packages/patches/flatpak-fix-path.patch \
%D%/packages/patches/fontconfig-cache-ignore-mtime.patch \
%D%/packages/patches/foobillard++-pkg-config.patch \
%D%/packages/patches/foomatic-filters-CVE-2015-8327.patch \
@@ -1267,6 +1268,7 @@ dist_patch_DATA = \
%D%/packages/patches/hurd-cross.patch \
%D%/packages/patches/hurd-xattr.patch \
%D%/packages/patches/hydra-disable-darcs-test.patch \
+ %D%/packages/patches/icecat-78-makeicecat.patch \
%D%/packages/patches/icecat-makeicecat.patch \
%D%/packages/patches/icecat-avoid-bundled-libraries.patch \
%D%/packages/patches/icecat-use-older-reveal-hidden-html.patch \
@@ -1504,8 +1506,6 @@ dist_patch_DATA = \
%D%/packages/patches/mumps-shared-libseq.patch \
%D%/packages/patches/mumps-shared-mumps.patch \
%D%/packages/patches/mumps-shared-pord.patch \
- %D%/packages/patches/mupdf-fix-linkage.patch \
- %D%/packages/patches/mupdf-CVE-2021-3407.patch \
%D%/packages/patches/mupen64plus-ui-console-notice.patch \
%D%/packages/patches/mupen64plus-video-z64-glew-correct-path.patch \
%D%/packages/patches/musl-cross-locale.patch \
@@ -1675,6 +1675,7 @@ dist_patch_DATA = \
%D%/packages/patches/python-fixtures-remove-monkeypatch-test.patch \
%D%/packages/patches/python-flask-restful-werkzeug-compat.patch \
%D%/packages/patches/python-keras-integration-test.patch \
+ %D%/packages/patches/python-peachpy-determinism.patch \
%D%/packages/patches/python-pep8-stdlib-tokenize-compat.patch \
%D%/packages/patches/python-pyfakefs-remove-bad-test.patch \
%D%/packages/patches/python-flint-includes.patch \
@@ -1706,6 +1707,7 @@ dist_patch_DATA = \
%D%/packages/patches/qemu-CVE-2021-20203.patch \
%D%/packages/patches/qemu-glibc-2.27.patch \
%D%/packages/patches/qemu-glibc-2.30.patch \
+ %D%/packages/patches/qemu-fix-agent-paths.patch \
%D%/packages/patches/qpdfview-qt515-compat.patch \
%D%/packages/patches/qrcodegen-cpp-make-install.patch \
%D%/packages/patches/qt4-ldflags.patch \
@@ -1836,12 +1838,12 @@ dist_patch_DATA = \
%D%/packages/patches/tup-unbundle-dependencies.patch \
%D%/packages/patches/tuxpaint-stamps-path.patch \
%D%/packages/patches/twinkle-bcg729.patch \
+ %D%/packages/patches/u-boot-allow-disabling-openssl.patch \
%D%/packages/patches/u-boot-nintendo-nes-serial.patch \
%D%/packages/patches/u-boot-rockchip-inno-usb.patch \
%D%/packages/patches/u-boot-sifive-prevent-reloc-initrd-fdt.patch \
%D%/packages/patches/u-boot-riscv64-fix-extlinux.patch \
%D%/packages/patches/ucx-tcp-iface-ioctl.patch \
- %D%/packages/patches/udiskie-no-appindicator.patch \
%D%/packages/patches/ungoogled-chromium-extension-search-path.patch \
%D%/packages/patches/ungoogled-chromium-ffmpeg-compat.patch \
%D%/packages/patches/ungoogled-chromium-system-nspr.patch \
@@ -1939,7 +1941,9 @@ dist_patch_DATA = \
%D%/packages/patches/ytfzf-programs.patch \
%D%/packages/patches/ytfzf-updates.patch \
%D%/packages/patches/ytnef-CVE-2021-3403.patch \
- %D%/packages/patches/ytnef-CVE-2021-3404.patch
+ %D%/packages/patches/ytnef-CVE-2021-3404.patch \
+ %D%/packages/patches/zig-disable-libc-note-test.patch \
+ %D%/packages/patches/zig-use-system-paths.patch
MISC_DISTRO_FILES = \
%D%/packages/ld-wrapper.in
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index f77db63999..cc7cc812f8 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -12,7 +12,7 @@
;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
;;; 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 © 2020, 2021 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2021 Lars-Dominik Braun <ldb@leibniz-psychology.org>
;;;
;;; This file is part of GNU Guix.
@@ -343,7 +343,7 @@ precision.")
(define-public giac
(package
(name "giac")
- (version "1.7.0-37")
+ (version "1.7.0-39")
(source
(origin
(method url-fetch)
@@ -355,7 +355,7 @@ precision.")
"~parisse/debian/dists/stable/main/source/"
"giac_" version ".tar.gz"))
(sha256
- (base32 "1mzqf7r40ppmzixf4s6sjk76y0wpcf6xp7hklzrn2l1910ld61pz"))))
+ (base32 "0mmdzhnahiz6hr7a4brnjdmmm4mcaqkigrh1b6n9z5l46bilaii3"))))
(build-system gnu-build-system)
(arguments
`(#:modules ((ice-9 ftw)
@@ -988,6 +988,36 @@ Optional thin wrappers allow usage of the library from other languages.")
(license (list license:expat ;SymEngine
license:bsd-3)))) ;3rd party code
+(define-public ginac
+ (package
+ (name "ginac")
+ (version "1.8.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://www.ginac.de/ginac-"
+ version ".tar.bz2"))
+ (sha256
+ (base32 "1az1ypfcny4jdz0mic1kywwa9nynr547cl5s7zpn2w0qdfymssgi"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags (list "--disable-static")))
+ (native-inputs
+ `(("bison" ,bison)
+ ("flex" ,flex)
+ ("pkg-config" ,pkg-config)
+ ("python" ,python-wrapper))) ; Python is required
+ (inputs
+ `(("cln" ,cln)
+ ("readline" ,readline)))
+ (home-page "https://www.ginac.de/")
+ (synopsis "Library for symbolic computation")
+ (description "GiNaC is a C++ library for symbolic computation. Contrary
+to other CAS it does not try to provide extensive algebraic capabilities and a
+simple programming language but instead accepts a given language (C++) and
+extends it by a set of algebraic capabilities.")
+ (license license:gpl2+)))
+
(define-public eigen
(package
(name "eigen")
diff --git a/gnu/packages/animation.scm b/gnu/packages/animation.scm
index 62619e9c09..063103e433 100644
--- a/gnu/packages/animation.scm
+++ b/gnu/packages/animation.scm
@@ -179,7 +179,7 @@ C++ @dfn{Standard Template Library} (STL).")
("libxml++" ,libxml++)
("libsigc++" ,libsigc++)
("mlt" ,mlt-6)
- ("openexr" ,openexr)
+ ("openexr" ,openexr-2)
("pango" ,pango)))
(native-inputs
`(("intltool" ,intltool)
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index d1ab99528f..be8c8f824c 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -5433,14 +5433,14 @@ while still staying in time.")
(define-public butt
(package
(name "butt")
- (version "0.1.31")
+ (version "0.1.32")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/butt/butt/butt-"
version "/butt-" version ".tar.gz"))
(sha256
(base32
- "19zvdi5vr6vqnrpc60jir7550nz9a5x1c61lh13355cdny2zp28z"))
+ "1qwllkx9p1gb3syhbbck3agrk375m82l18fb81aqygi4g3dg3s9r"))
(modules '((guix build utils)))
(snippet
'(substitute* "src/butt.cpp"
@@ -5481,7 +5481,7 @@ while still staying in time.")
version "_manual.pdf"))
(sha256
(base32
- "0a0kgd069whfp1v8xgw6qm67w02n8b7b4h5ay5665wgq947hxanp"))))))
+ "0g70jyyxbx5nin3xs9q9zf878b2kyy7rn8gn9w91x1ychbjd6dhh"))))))
(home-page "https://danielnoethen.de/butt/")
(synopsis "Audio streaming tool")
(description "Butt is a tool to stream audio to a ShoutCast or
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 8c5ea07a9f..801d570bf4 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -1141,21 +1141,15 @@ backup.")
(define-public disarchive
(package
(name "disarchive")
- (version "0.2.1")
+ (version "0.3.0")
(source (origin
(method url-fetch)
(uri (string-append "https://files.ngyro.com/disarchive/"
"disarchive-" version ".tar.gz"))
(sha256
(base32
- "1jypk0gdwxqbqxiblww863nzq0kwnc676q68j32sprqd7ilnq02s"))
- (patches (search-patches "disarchive-cross-compilation.patch"))))
+ "0jgc53rrbas8i4z13l2ii99cpav1ma73spsjg70ygihf0635r3dh"))))
(build-system gnu-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (add-after 'unpack 'delete-configure
- (lambda _
- (delete-file "configure"))))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 4cbffac000..90a0e1f288 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -7331,6 +7331,37 @@ specified group of genes for a pathway has a coordinated association with a
phenotype of interest.")
(license license:gpl2)))
+(define-public r-fcscan
+ (package
+ (name "r-fcscan")
+ (version "1.6.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (bioconductor-uri "fcScan" version))
+ (sha256
+ (base32 "10fcz741dr3wbb9f63qywlrays4cnvfnsm6yw4bmkrwk6ccijg8h"))))
+ (properties `((upstream-name . "fcScan")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-genomicranges" ,r-genomicranges)
+ ("r-iranges" ,r-iranges)
+ ("r-plyr" ,r-plyr)
+ ("r-rtracklayer" ,r-rtracklayer)
+ ("r-summarizedexperiment" ,r-summarizedexperiment)
+ ("r-variantannotation" ,r-variantannotation)))
+ (native-inputs `(("r-knitr" ,r-knitr)))
+ (home-page "https://bioconductor.org/packages/fcScan")
+ (synopsis "Detect clusters of coordinates with user defined options")
+ (description
+ "This package is used to detect combination of genomic coordinates
+falling within a user defined window size along with user defined overlap
+between identified neighboring clusters. It can be used for genomic data
+where the clusters are built on a specific chromosome or specific strand.
+Clustering can be performed with a \"greedy\" option allowing thus the
+presence of additional sites within the allowed window size.")
+ (license license:artistic2.0)))
+
(define-public r-fgsea
(package
(name "r-fgsea")
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 229fd34d2a..3ddb91714a 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -106,6 +106,7 @@
#:use-module (gnu packages java-compression)
#:use-module (gnu packages jemalloc)
#:use-module (gnu packages jupyter)
+ #:use-module (gnu packages libffi)
#:use-module (gnu packages linux)
#:use-module (gnu packages logging)
#:use-module (gnu packages lsof)
@@ -1216,14 +1217,14 @@ sequencing.")
(define-public python-biopython
(package
(name "python-biopython")
- (version "1.73")
+ (version "1.76")
(source (origin
(method url-fetch)
;; use PyPi rather than biopython.org to ease updating
(uri (pypi-uri "biopython" version))
(sha256
(base32
- "1q55jhf76z3k6is3psis0ckbki7df26x7dikpcc3vhk1vhkwribh"))))
+ "0wlch9xpa0fpgjzyxi6jsfca6iakaq9a05927xg8vqnmvaccnwrq"))))
(build-system python-build-system)
(arguments
`(#:phases
@@ -1244,6 +1245,18 @@ dealing with alignments; code making it easy to split up parallelizable tasks
into separate processes; and more.")
(license (license:non-copyleft "http://www.biopython.org/DIST/LICENSE"))))
+(define-public python-biopython-1.73
+ (package
+ (inherit python-biopython)
+ (version "1.73")
+ (source (origin
+ (method url-fetch)
+ ;; use PyPi rather than biopython.org to ease updating
+ (uri (pypi-uri "biopython" version))
+ (sha256
+ (base32
+ "1q55jhf76z3k6is3psis0ckbki7df26x7dikpcc3vhk1vhkwribh"))))))
+
(define-public python2-biopython
(package-with-python2 python-biopython))
@@ -1270,6 +1283,133 @@ relying on a complex dependency tree.")
(define-public python2-fastalite
(package-with-python2 python-fastalite))
+(define-public ciri-long
+ (package
+ (name "ciri-long")
+ (version "1.0.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/bioinfo-biols/CIRI-long")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "10k88i1fcqchrrjv82rmylwvbwqfba0n51palhig9hsg71xs0dbi"))
+ ;; Delete bundled binary
+ (snippet '(delete-file "libs/ccs"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'relax-requirements
+ (lambda _
+ (substitute* "setup.py"
+ (("'argparse[^']*',") "") ; only for python2
+ (("==") ">="))))
+ (add-before 'build 'build-libssw
+ (lambda _
+ (with-directory-excursion "libs/striped_smith_waterman"
+ (invoke "make" "libssw.so")))))))
+ (inputs
+ `(("python-biopython" ,python-biopython)
+ ("python-bwapy" ,python-bwapy)
+ ("python-cython" ,python-cython)
+ ("python-levenshtein" ,python-levenshtein)
+ ("python-mappy" ,python-mappy)
+ ("python-numpy" ,python-numpy)
+ ("python-pandas" ,python-pandas)
+ ("python-pysam" ,python-pysam)
+ ("python-pyspoa" ,python-pyspoa)
+ ("python-scikit-learn" ,python-scikit-learn)
+ ("python-scipy" ,python-scipy)))
+ (native-inputs
+ `(("python-nose" ,python-nose)
+ ("python-setuptools" ,python-setuptools)))
+ (home-page "https://ciri-cookbook.readthedocs.io/")
+ (synopsis "Circular RNA identification for Nanopore sequencing")
+ (description "CIRI-long is a package for circular RNA identification using
+long-read sequencing data.")
+ (license license:expat)))
+
+(define-public qtltools
+ (package
+ (name "qtltools")
+ (version "1.3.1")
+ (source (origin
+ (method url-fetch/tarbomb)
+ (uri (string-append "https://qtltools.github.io/qtltools/"
+ "binaries/QTLtools_" version
+ "_source.tar.gz"))
+ (sha256
+ (base32
+ "13gdry5l43abn3464fmk8qzrxgxnxah2612r66p9dzhhl92j30cd"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; no tests included
+ #:make-flags
+ (list (string-append "BOOST_INC="
+ (assoc-ref %build-inputs "boost") "/include")
+ (string-append "BOOST_LIB="
+ (assoc-ref %build-inputs "boost") "/lib")
+ (string-append "HTSLD_INC="
+ (assoc-ref %build-inputs "htslib") "/include")
+ (string-append "HTSLD_LIB="
+ (assoc-ref %build-inputs "htslib") "/lib")
+ (string-append "RMATH_INC="
+ (assoc-ref %build-inputs "rmath-standalone")
+ "/include")
+ (string-append "RMATH_LIB="
+ (assoc-ref %build-inputs "rmath-standalone")
+ "/lib"))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-linkage
+ (lambda _
+ (substitute* "qtltools/Makefile"
+ (("libboost_iostreams.a")
+ "libboost_iostreams.so")
+ (("libboost_program_options.a")
+ "libboost_program_options.so")
+ (("-lblas") "-lopenblas"))))
+ (add-before 'build 'chdir
+ (lambda _ (chdir "qtltools")))
+ (replace 'configure
+ (lambda _
+ (substitute* "qtltools/Makefile"
+ (("LIB_FLAGS=-lz")
+ "LIB_FLAGS=-lz -lcrypto -lssl")
+ (("LIB_FILES=\\$\\(RMATH_LIB\\)/libRmath.a \
+\\$\\(HTSLD_LIB\\)/libhts.a \
+\\$\\(BOOST_LIB\\)/libboost_iostreams.a \
+\\$\\(BOOST_LIB\\)/libboost_program_options.a")
+ "LIB_FILES=$(RMATH_LIB)/libRmath.so \
+$(HTSLD_LIB)/libhts.so \
+$(BOOST_LIB)/libboost_iostreams.so \
+$(BOOST_LIB)/libboost_program_options.so"))))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
+ (mkdir-p bin)
+ (install-file "bin/QTLtools" bin)))))))
+ (inputs
+ `(("curl" ,curl)
+ ("gsl" ,gsl)
+ ("boost" ,boost)
+ ("rmath-standalone" ,rmath-standalone)
+ ("htslib" ,htslib-1.3)
+ ("openssl" ,openssl)
+ ("openblas" ,openblas)
+ ("zlib" ,zlib)))
+ (home-page "https://qtltools.github.io/qtltools/")
+ (synopsis "Tool set for molecular QTL discovery and analysis")
+ (description "QTLtools is a tool set for molecular QTL discovery
+and analysis. It allows to go from the raw genetic sequence data to
+collection of molecular @dfn{Quantitative Trait Loci} (QTLs) in few
+easy-to-perform steps.")
+ (license license:gpl3+)))
+
(define-public bpp-core
;; The last release was in 2014 and the recommended way to install from source
;; is to clone the git repository, so we do this.
@@ -7448,6 +7588,33 @@ clustering analysis, differential analysis, motif inference and exploration of
single cell ATAC-seq sequencing data.")
(license license:gpl3)))
+(define-public r-umi4cpackage
+ (let ((commit "88b07d896a137418ba6c31c2474b9dbe1d86fc20")
+ (revision "1"))
+ (package
+ (name "r-umi4cpackage")
+ (version (git-version "0.0.1" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/tanaylab/umi4cpackage")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0bjzamdw2lcfhlbzc0vdva87c3wwnij8jsvnrpx4wyyxvpcz13m5"))))
+ (properties `((upstream-name . "umi4cPackage")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-misha" ,r-misha)
+ ("r-zoo" ,r-zoo)))
+ (native-inputs `(("r-knitr" ,r-knitr)))
+ (home-page "https://github.com/tanaylab/umi4cpackage")
+ (synopsis "Processing and analysis of UMI-4C contact profiles.")
+ (description "This is a package that lets you process UMI-4C data from
+scratch to produce nice plots.")
+ (license license:expat))))
+
(define-public r-shinycell
(let ((commit
"aecbd56e66802f28e397f5ae1f19403aadd12163")
@@ -7576,6 +7743,86 @@ of transcriptional heterogeneity among single cells.")
;; See https://github.com/hms-dbmi/scde/issues/38
(license license:gpl2)))
+(define-public r-misha
+ (package
+ (name "r-misha")
+ (version "4.1.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/tanaylab/misha")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0bgivx3lzjh3173jsfrhb5kvhjsn53br0n4hmyx7i3dwy2cnnp2p"))
+ ;; Delete bundled executable.
+ (snippet
+ '(delete-file "exec/bigWigToWig"))))
+ (build-system r-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'do-not-use-bundled-bigWigToWig
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "R/misha.R"
+ (("get\\(\".GLIBDIR\"\\), \"/exec/bigWigToWig")
+ (string-append "\""
+ (assoc-ref inputs "kentutils")
+ "/bin/bigWigToWig"))))))))
+ (inputs
+ `(("kentutils" ,kentutils)))
+ (home-page "https://github.com/tanaylab/misha")
+ (synopsis "Toolkit for analysis of genomic data")
+ (description "This package is intended to help users to efficiently
+analyze genomic data resulting from various experiments.")
+ (license license:gpl2)))
+
+(define-public r-shaman
+ (let ((commit "d6944e8ac7bd1dbd5c6cec646eafc1d19d0ca96f")
+ (release "2.0")
+ (revision "2"))
+ (package
+ (name "r-shaman")
+ (version (git-version release revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/tanaylab/shaman")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "03sx138dzpfiq23j49z0m0s4j79855mrg64hpj9c83408wzphxi6"))
+ (snippet
+ ;; This file will be generated.
+ '(delete-file "inst/doc/shaman-package.R"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-data-table" ,r-data-table)
+ ("r-domc" ,r-domc)
+ ("r-ggplot2" ,r-ggplot2)
+ ("r-gviz" ,r-gviz)
+ ("r-misha" ,r-misha)
+ ("r-plyr" ,r-plyr)
+ ("r-rann" ,r-rann)
+ ("r-rcpp" ,r-rcpp)
+ ("r-reshape2" ,r-reshape2)
+ ;; For vignettes
+ ("r-rmarkdown" ,r-rmarkdown)
+ ("r-knitr" ,r-knitr)))
+ (home-page "https://github.com/tanaylab/shaman")
+ (synopsis "Sampling HiC contact matrices for a-parametric normalization")
+ (description "The Shaman package implements functions for
+resampling Hi-C matrices in order to generate expected contact
+distributions given constraints on marginal coverage and
+contact-distance probability distributions. The package also provides
+support for visualizing normalized matrices and statistical analysis
+of contact distributions around selected landmarks.")
+ ;; Any version of the GPL
+ (license license:gpl3+))))
+
(define-public r-centipede
(package
(name "r-centipede")
@@ -7639,6 +7886,46 @@ includes software to
")
(license license:cc0))))
+(define-public gdc-client
+ (package
+ (name "gdc-client")
+ (version "1.6.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/NCI-GDC/gdc-client.git")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0cagawlzjwj3wam10lv64xgbfx4zcnzxi5sjpsdhq7rn4z24mzc2"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'relax-requirements
+ (lambda _
+ (substitute* "requirements.txt"
+ (("==") ">=")))))))
+ (inputs
+ `(("python-cryptography" ,python-cryptography)
+ ("python-intervaltree" ,python-intervaltree)
+ ("python-jsonschema" ,python-jsonschema)
+ ("python-lxml" ,python-lxml)
+ ("python-ndg-httpsclient" ,python-ndg-httpsclient)
+ ("python-progressbar2" ,python-progressbar2)
+ ("python-pyasn1" ,python-pyasn1)
+ ("python-pyopenssl" ,python-pyopenssl)
+ ("python-pyyaml" ,python-pyyaml)
+ ("python-requests" ,python-requests)
+ ("python-termcolor" ,python-termcolor)))
+ (home-page "https://gdc.nci.nih.gov/access-data/gdc-data-transfer-tool")
+ (synopsis "GDC data transfer tool")
+ (description "The gdc-client provides several convenience functions over
+the GDC API which provides general download/upload via HTTPS.")
+ (license license:asl2.0)))
+
(define-public vsearch
(package
(name "vsearch")
@@ -11642,14 +11929,14 @@ set.")
(define-public instrain
(package
(name "instrain")
- (version "1.5.2")
+ (version "1.5.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "inStrain" version))
(sha256
(base32
- "0ykqlpf6yz4caihsaz3ys00cyvlr7wdj4s9a8rh56q5r8xf80ic0"))))
+ "05w1lw75x4lwkzg4qpi055g7hdjp9rnc4ksbxg2hfgksq9djk0hx"))))
(build-system python-build-system)
(arguments
`(#:phases
@@ -11662,7 +11949,7 @@ set.")
(("from job_utils")
"from .job_utils")))))))
(inputs
- `(("python-biopython" ,python-biopython)
+ `(("python-biopython" ,python-biopython-1.73)
("python-boto3" ,python-boto3)
("python-h5py" ,python-h5py)
("python-lmfit" ,python-lmfit)
@@ -14995,6 +15282,78 @@ line, interactively explore genomic data within Jupyter environment or web
browser.")
(license license:gpl3+)))
+(define-public python-pyspoa
+ (package
+ (name "python-pyspoa")
+ (version "0.0.5")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/nanoporetech/pyspoa")
+ (commit (string-append "v" version))
+ (recursive? #true)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1lgf2shzhxkcsircd6vy46h27pjljd5q95fyz1cm3lkk702qbnzx"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'build-libspoa
+ (lambda _
+ (mkdir-p "src/build")
+ (with-directory-excursion "src/build"
+ (invoke "cmake"
+ "-Dspoa_optimize_for_portability=ON"
+ "-DCMAKE_BUILD_TYPE=Release"
+ "-DCMAKE_CXX_FLAGS=\"-I ../vendor/cereal/include/\" -fPIC"
+ "..")
+ (invoke "make"))))
+ (replace 'check
+ (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+ (when tests?
+ (add-installed-pythonpath inputs outputs)
+ (invoke "python" "tests/test_pyspoa.py")))))))
+ (propagated-inputs
+ `(("pybind11" ,pybind11)))
+ (native-inputs
+ `(("cmake" ,cmake-minimal)))
+ (home-page "https://github.com/nanoporetech/pyspoa")
+ (synopsis "Python bindings for the SIMD partial order alignment library ")
+ (description
+ "This package provides Python bindings for spoa, a C++ implementation of
+the @dfn{partial order alignment} (POA) algorithm (as described in
+10.1093/bioinformatics/18.3.452) which is used to generate consensus
+sequences")
+ (license license:expat)))
+
+(define-public python-bwapy
+ (package
+ (name "python-bwapy")
+ (version "0.1.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "bwapy" version))
+ (sha256
+ (base32 "090qwx3vl729zn3a7sksbviyg04kc71gpbm3nd8dalqp673x1npw"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-cffi" ,python-cffi)
+ ("python-setuptools" ,python-setuptools)
+ ("python-wheel" ,python-wheel)))
+ (inputs
+ `(("zlib" ,zlib)))
+ (home-page "https://github.com/ACEnglish/bwapy")
+ (synopsis "Python bindings to bwa alinger")
+ (description "This package provides Python bindings to the bwa mem
+aligner.")
+ ;; These Python bindings are licensed under Mozilla Public License 2.0,
+ ;; bwa itself is licenced under GNU General Public License v3.0.
+ (license license:mpl2.0)))
+
(define-public scregseg
(package
(name "scregseg")
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 54d1f0acfe..bb668681eb 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -504,13 +504,19 @@ tree binary files. These are board description files used by Linux and BSD.")
;; https://bugs.launchpad.net/ubuntu/+source/u-boot/+bug/1937246
(search-patch "u-boot-sifive-prevent-reloc-initrd-fdt.patch"))
+(define %u-boot-allow-disabling-openssl-patch
+ ;; Fixes build of u-boot 2021.10 without openssl
+ ;; https://lists.denx.de/pipermail/u-boot/2021-October/462728.html
+ (search-patch "u-boot-allow-disabling-openssl.patch"))
+
(define u-boot
(package
(name "u-boot")
- (version "2021.07")
+ (version "2021.10")
(source (origin
(patches
(list %u-boot-rockchip-inno-usb-patch
+ %u-boot-allow-disabling-openssl-patch
%u-boot-sifive-prevent-relocating-initrd-fdt))
(method url-fetch)
(uri (string-append
@@ -518,7 +524,7 @@ tree binary files. These are board description files used by Linux and BSD.")
"u-boot-" version ".tar.bz2"))
(sha256
(base32
- "0zm7igkdnz0w4ir8rfl2dislfrl0ip104grs5hvd30a5wkm7wari"))))
+ "1m0bvwv8r62s4wk4w3cmvs888dhv9gnfa98dczr4drk2jbhj7ryd"))))
(native-inputs
`(("bc" ,bc)
("bison" ,bison)
@@ -590,7 +596,7 @@ def test_ctrl_c"))
;; See https://bugs.gnu.org/34717 for
;; details.
(("CONFIG_FIT_SIGNATURE=y")
- "CONFIG_FIT_SIGNATURE=n\nCONFIG_UT_LIB_ASN1=n")
+ "CONFIG_FIT_SIGNATURE=n\nCONFIG_UT_LIB_ASN1=n\nCONFIG_TOOLS_LIBCRYPTO=n")
;; This test requires a sound system, which is un-used
;; in u-boot-tools.
(("CONFIG_SOUND=y") "CONFIG_SOUND=n")))
@@ -689,6 +695,12 @@ board-independent tools.")))
suffix-len))))
(sort entries string-ci<)))
(error "Invalid boardname ~s." ,board))))))
+ (add-after 'configure 'disable-tools-libcrypto
+ ;; Disable libcrypto due to GPL and OpenSSL license
+ ;; incompatibilities
+ (lambda _
+ (substitute* ".config"
+ (("CONFIG_TOOLS_LIBCRYPTO=.*$") "CONFIG_TOOLS_LIBCRYPTO=n"))))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -899,7 +911,8 @@ to Novena upstream, does not load u-boot.img from the first partition.")
(source (origin
(inherit (package-source u-boot))
(patches
- (search-patches "u-boot-riscv64-fix-extlinux.patch")))))))
+ (search-patches "u-boot-riscv64-fix-extlinux.patch"
+ %u-boot-allow-disabling-openssl-patch)))))))
(define-public u-boot-sifive-unleashed
(make-u-boot-package "sifive_unleashed" "riscv64-linux-gnu"))
diff --git a/gnu/packages/browser-extensions.scm b/gnu/packages/browser-extensions.scm
index b643f40843..183b44f2c3 100644
--- a/gnu/packages/browser-extensions.scm
+++ b/gnu/packages/browser-extensions.scm
@@ -51,7 +51,7 @@ supported content to the Kodi media center.")
(define ublock-origin
(package
(name "ublock-origin")
- (version "1.38.4")
+ (version "1.38.6")
(home-page "https://github.com/gorhill/uBlock")
(source (origin
(method git-fetch)
@@ -60,7 +60,7 @@ supported content to the Kodi media center.")
(file-name (git-file-name name version))
(sha256
(base32
- "127b5mg54zfci86q66fss701y20b0mjpa4flx7iar7nviqg9fa1h"))))
+ "1jdi7p537dj0bpxsdnvs722cw8xv5ifh8mjj1ndwjvgasvj18fsd"))))
(build-system gnu-build-system)
(outputs '("xpi" "firefox" "chromium"))
(arguments
diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm
index c6399280f6..93d829391c 100644
--- a/gnu/packages/c.scm
+++ b/gnu/packages/c.scm
@@ -838,7 +838,7 @@ Service (S3) protocol for object storage.")
(define-public aws-c-mqtt
(package
(name "aws-c-mqtt")
- (version "0.7.6")
+ (version "0.7.8")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -847,7 +847,7 @@ Service (S3) protocol for object storage.")
(file-name (git-file-name name version))
(sha256
(base32
- "0qgblakp9n281z5w1kmmy9sjiz6s44kg487l76w7p43p1dp7s401"))
+ "19j6nw2v36c4yff4p0fbf0748s06fd5r9cp2yakry9ybn1ada99c"))
(patches (search-patches "aws-c-mqtt-cmake-prefix.patch"))))
(build-system cmake-build-system)
(arguments
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index 6c3873a21d..8faeedcfe9 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -231,13 +231,15 @@ files.")
'(begin
;; Make libraries respect LDFLAGS.
(substitute* '("paranoia/Makefile.in" "interface/Makefile.in")
- (("-Wl,-soname") "$(LDFLAGS) -Wl,-soname"))
- #t))))
+ (("-Wl,-soname") "$(LDFLAGS) -Wl,-soname"))))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; there is no check target
#:configure-flags ; Add $libdir to the RUNPATH of all the executables.
- (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))))
+ (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))
+ ;; Building in parallel is flaky: “ld: […]/cachetest.c:393: undefined
+ ;; reference to `paranoia_free'”.
+ #:parallel-build? #f))
(home-page "https://www.xiph.org/paranoia/")
(synopsis "Audio CD reading utility")
(description "Cdparanoia retrieves audio tracks from CDDA capable CDROM
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index 534b9a4ad9..9e5e516af5 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -336,8 +336,8 @@
(string-append "ungoogled-chromium-" category "-" name))))
(sha256 (base32 hash))))
-(define %chromium-version "94.0.4606.81")
-(define %ungoogled-revision "94.0.4606.81-1")
+(define %chromium-version "95.0.4638.69")
+(define %ungoogled-revision (string-append %chromium-version "-1"))
(define %arch-revision "db2157b84924ce84201a8245e68a02f7d55f6491")
(define %debian-revision "debian/90.0.4430.85-1")
@@ -367,7 +367,7 @@
(file-name (git-file-name "ungoogled-chromium" %ungoogled-revision))
(sha256
(base32
- "113abybh8kkw9a92lj6jww6dl6rc1sv5x7a7a1gjwsihzd2r0cik"))))
+ "19azr4m4rd6za9vgcggijyq9x54jrjp0n07y4falgjrdz9q4f7aj"))))
(define %guix-patches
(list (local-file
@@ -502,7 +502,7 @@
%chromium-version ".tar.xz"))
(sha256
(base32
- "16755mfqxxmvslm9ix060safrnml91ckj5p85960jj5g5hmslwbh"))
+ "1rzg48mbd5n75nq2rfwknyxpmfrddds199ic82c736kcgirpv8rq"))
(modules '((guix build utils)))
(snippet (force ungoogled-chromium-snippet))))
(build-system gnu-build-system)
@@ -598,7 +598,6 @@
"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"
@@ -651,15 +650,16 @@
""))
;; XXX: Should be unnecessary when use_system_lcms2=true.
- (substitute* "third_party/pdfium/core/fxcodec/icc/iccmodule.h"
+ (substitute* "third_party/pdfium/core/fxcodec/icc/icc_transform.h"
(("include \"third_party/lcms/include/lcms2\\.h\"")
"include \"lcms2.h\""))
- ;; Add missing include statement.
- (substitute* "third_party/pdfium/core/fxcodec/png/png_decoder.cpp"
- (("#include \"core/fxcodec/fx_codec.h\"" all)
- (string-append all
- "\n#include \"core/fxcodec/fx_codec_def.h\"")))
+ ;; Chromium bundles a pre-release of Harfbuzz 3.0 and uses an
+ ;; experimental API that was removed in 3.0. Adjust to use
+ ;; the updated API (taken from <https://crrev.com/c/3076563>).
+ (substitute* "components/paint_preview/common/subset_font.cc"
+ (("hb_subset_input_no_subset_tables_set\\(input\\.get\\(\\)\\)")
+ "hb_subset_input_set(input.get(), HB_SUBSET_SETS_NO_SUBSET_TABLE_TAG)"))
(substitute*
"third_party/breakpad/breakpad/src/common/linux/libcurl_wrapper.h"
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 5ef8813dd5..0280a51be5 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -31,7 +31,7 @@
;;; Copyright © 2020 Antoine Côté <antoine.cote@posteo.net>
;;; Copyright © 2020 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2020 Magali Lemes <magalilemes00@gmail.com>
-;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
+;;; Copyright © 2020, 2021 Simon Tournier <zimon.toutoune@gmail.com>
;;; Copyright © 2020 Aniket Patil <aniket112.patil@gmail.com>
;;; Copyright © 2021 Marcel Schilling <marcel.schilling@uni-luebeck.de>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
@@ -906,6 +906,27 @@ functions which can speed up workflow.")
control over dimensions and appearance.")
(license license:gpl2+)))
+(define-public r-pnwcolors
+ (package
+ (name "r-pnwcolors")
+ (version "0.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "PNWColors" version))
+ (sha256
+ (base32
+ "1phplnclkficfv8s6wsyrckk4ixzbayiy5iix6dddg40485l9nyj"))))
+ (properties `((upstream-name . "PNWColors")))
+ (build-system r-build-system)
+ (home-page "https://github.com/jakelawlor/PNWColors")
+ (synopsis "Color palettes for data visualizations")
+ (description
+ "This package provides color palettes. They are checked for colorblind
+accessibility from hue, saturation, and lightness value scaling using the
+Chroma.js Color Palette Helper. See @url{https://gka.github.io/palettes}.")
+ (license license:cc0)))
+
(define-public r-ecp
(package
(name "r-ecp")
@@ -23649,6 +23670,35 @@ univariate time series forecasts including exponential smoothing via state
space models and automatic ARIMA modelling.")
(license license:gpl3)))
+(define-public r-formattable
+ (package
+ (name "r-formattable")
+ (version "0.2.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "formattable" version))
+ (sha256
+ (base32 "1vdxi0xmg019qyzjrp8bkjxciz245jcxsrkhfzd44ynqcwi4s3ag"))))
+ (properties `((upstream-name . "formattable")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-htmltools" ,r-htmltools)
+ ("r-htmlwidgets" ,r-htmlwidgets)
+ ("r-lifecycle" ,r-lifecycle)
+ ("r-rmarkdown" ,r-rmarkdown)))
+ (native-inputs
+ `(("r-knitr" ,r-knitr)))
+ (home-page "https://github.com/renkun-ken/formattable")
+ (synopsis "Print vectors and data frames with text fromatting")
+ (description
+ "This R package provides functions to create formattable vectors and data
+frames. @emph{Formattable} vectors are printed with text formatting, and
+formattable data frames are printed with multiple types of formatting in HTML
+to improve the readability of data presented in tabular form rendered in web
+pages.")
+ (license license:expat)))
+
(define-public r-xmisc
(package
(name "r-xmisc")
@@ -28581,6 +28631,49 @@ algorithms; density clustering, hierarchical clustering, k-means, and the
discovery of differentially expressed genes and markers.")
(license license:gpl3)))
+(define-public r-seuratdisk
+ (let ((commit "163f1aade5bac38ed1e9e9c912283a7e74781610")
+ (revision "1"))
+ (package
+ (name "r-seuratdisk")
+ (version (git-version "0.0.0.9019" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/mojaveazure/seurat-disk")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1d1v8qi6kknzy5fj6bl8akwy74h5h143i00lyidsnqjbwp9n4qnw"))))
+ (properties `((upstream-name . "SeuratDisk")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-cli" ,r-cli)
+ ("r-crayon" ,r-crayon)
+ ("r-hdf5r" ,r-hdf5r)
+ ("r-matrix" ,r-matrix)
+ ("r-r6" ,r-r6)
+ ("r-rlang" ,r-rlang)
+ ("r-seurat" ,r-seurat)
+ ("r-seuratobject" ,r-seuratobject)
+ ("r-stringi" ,r-stringi)
+ ("r-withr" ,r-withr)))
+ (native-inputs
+ `(("r-knitr" ,r-knitr)))
+ (home-page "https://github.com/mojaveazure/seurat-disk")
+ (synopsis "Interfaces for HDF5-based single cell file formats")
+ (description
+ "The h5Seurat file format is specifically designed for the storage and
+analysis of multi-modal single-cell and spatially-resolved expression
+experiments, for example, from CITE-seq or 10X Visium technologies. It holds
+all molecular information and associated metadata, including (for example)
+nearest-neighbor graphs, dimensional reduction information, spatial
+coordinates and image data, and cluster labels. This package also supports
+rapid and on-disk conversion between h5Seurat and AnnData objects, with the
+goal of enhancing interoperability between Seurat and Scanpy.")
+ (license license:gpl3))))
+
(define-public r-phangorn
(package
(name "r-phangorn")
@@ -28836,6 +28929,26 @@ logging to plaintext, JSON, (rotating) files, memory buffers, and databases, as
well as email and push notifications.")
(license license:expat)))
+(define-public r-mhg
+ (package
+ (name "r-mhg")
+ (version "1.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "mHG" version))
+ (sha256
+ (base32
+ "1rz5ncrvvv9h9grls15apa63v2nh9j87fmp4mwjjil37jx6a5zki"))))
+ (properties `((upstream-name . "mHG")))
+ (build-system r-build-system)
+ (home-page "https://cran.r-project.org/package=mHG")
+ (synopsis "Minimum-hypergeometric test")
+ (description
+ "This package runs a minimum-hypergeometric (mHG) test as described in
+\"Discovering Motifs in Ranked Lists of DNA Sequences\" by Eran Eden.")
+ (license license:gpl2)))
+
(define-public r-mlr3measures
(package
(name "r-mlr3measures")
@@ -32033,6 +32146,71 @@ Python module, this utility provides a flexible and extensible way of
formatting and delivering log messages with low overhead.")
(license license:agpl3+)))
+(define-public r-fasterize
+ (package
+ (name "r-fasterize")
+ (version "1.0.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "fasterize" version))
+ (sha256
+ (base32 "10bzl77c1b9jhcn1xp467qzp2n8c7s3wpxn53qjh1nwvbri5kd32"))))
+ (properties `((upstream-name . "fasterize")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-raster" ,r-raster)
+ ("r-rcpp" ,r-rcpp)
+ ("r-rcpparmadillo" ,r-rcpparmadillo)
+ ("r-sp" ,r-sp)))
+ (native-inputs `(("r-knitr" ,r-knitr)))
+ (home-page "https://github.com/ecohealthalliance/fasterize")
+ (synopsis "Fast Polygon to Raster Conversion")
+ (description
+"This package provides a drop-in replacement for @code{rasterize} from
+the @code{raster} package that takes sf-type objects, and is much faster.
+There is support for the main options provided by the @code{rasterize}
+function, including setting the field used and background value, and
+options for aggregating multi-layer rasters.")
+ (license license:expat)))
+
+(define-public r-bien
+ (package
+ (name "r-bien")
+ (version "1.2.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "BIEN" version))
+ (sha256
+ (base32 "1dagrs54ciagm2mgqrvxl6k2akahr0qk63ifxqnks7iljm0x1gw6"))))
+ (properties `((upstream-name . "BIEN")))
+ (build-system r-build-system)
+ (native-inputs
+ `(("r-knitr" ,r-knitr)
+ ("r-testthat" ,r-testthat)))
+ (propagated-inputs
+ `(("r-ape" ,r-ape)
+ ("r-dbi" ,r-dbi)
+ ("r-doparallel" ,r-doparallel)
+ ("r-fasterize" ,r-fasterize)
+ ("r-foreach" ,r-foreach)
+ ("r-raster" ,r-raster)
+ ("r-rgdal" ,r-rgdal)
+ ("r-rgeos" ,r-rgeos)
+ ("r-rpostgresql" ,r-rpostgresql)
+ ("r-sf" ,r-sf)
+ ("r-sp" ,r-sp)))
+ (home-page "https://cran.r-project.org/package=BIEN")
+ (synopsis "Tools for accessing the BIEN database")
+ (description
+ "This package provides tools for accessing the Botanical Information and
+Ecology Network (BIEN) database. The BIEN database contains cleaned and
+standardized botanical data including occurrence, trait, plot and taxonomic
+data. This package provides functions that query the BIEN database by
+constructing and executing optimized SQL queries.")
+ (license license:expat)))
+
(define-public r-ggh4x
(package
(name "r-ggh4x")
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 87b165580c..78d2a22600 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -20509,7 +20509,7 @@ IEEE 754-2008 binary16 type.")
(("rust-winapi" ,rust-winapi-0.3))))
(home-page "https://github.com/brson/home")
(synopsis "Shared definitions of home directories")
- (description "This packages provides the definition of @code{home_dir}
+ (description "This package provides the definition of @code{home_dir}
used by @command{cargo} and @command{rustup}, as well as functions to find the
correct value of @samp{CARGO_HOME} and @samp{RUSTUP_HOME}.")
(license (list license:expat license:asl2.0))))
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 79086a9620..0f413b8b74 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 David Thompson <davet@gnu.org>
;;; Copyright © 2015, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016, 2017, 2018, 2019 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2016, 2017, 2018, 2019, 2021 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox>
;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
@@ -841,6 +841,41 @@ as the latest standard, SHA-3. It is an improved version of the SHA-3 finalist
BLAKE.")
(license license:public-domain)))
+(define-public b2sum
+ ;; Upstream doesn't seem to use a versioned release workflow, so build from
+ ;; a recent commit.
+ (let ((commit "54f4faa4c16ea34bcd59d16e8da46a64b259fc07")
+ (revision "0"))
+ (package
+ (name "b2sum")
+ (version (git-version "20190724" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/BLAKE2/BLAKE2")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "04z631v0vzl52g73v390ask5fnzi5wg83lcjkjhpmmymaz0jn152"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:make-flags (list (string-append "CC=" ,(cc-for-target))
+ (string-append "PREFIX=" (assoc-ref %outputs "out")))
+ #:tests? #f ; No test suite
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'change-directory
+ (lambda _
+ (chdir "b2sum")))
+ (delete 'configure)))) ; No ./configure script
+ (home-page "https://www.blake2.net/")
+ (synopsis "BLAKE2 checksum tool")
+ (description "BLAKE2 is a cryptographic hash function faster than MD5,
+SHA-1, SHA-2, and SHA-3, yet is at least as secure as SHA-3.")
+ ;; You may also choose to redistribute this program as Apache 2.0 or the
+ ;; OpenSSL license. See 'b2sum/b2sum.c' in the source distribution.
+ (license license:cc0))))
+
(define-public rhash
(package
(name "rhash")
@@ -898,14 +933,14 @@ SHA256, SHA512, SHA3, AICH, ED2K, Tiger, DC++ TTH, BitTorrent BTIH, GOST R
(define-public botan
(package
(name "botan")
- (version "2.18.1")
+ (version "2.18.2")
(source (origin
(method url-fetch)
(uri (string-append "https://botan.randombit.net/releases/"
"Botan-" version ".tar.xz"))
(sha256
(base32
- "0adf53drhk1hlpfih0175c9081bqpclw6p2afn51cmx849ib9izq"))))
+ "0zih8agygp39ff0dwi3fv8y7dnnzpz3y86kcgjbhzlxry49kn6jl"))))
(build-system gnu-build-system)
(arguments
'(#:phases
@@ -918,6 +953,8 @@ SHA256, SHA512, SHA3, AICH, ED2K, Tiger, DC++ TTH, BitTorrent BTIH, GOST R
(setenv "CXXFLAGS" "-O3")
(invoke "python" "./configure.py"
(string-append "--prefix=" out)
+ "--disable-static"
+
;; Otherwise, the `botan` executable cannot find
;; libbotan.
(string-append "--ldflags=-Wl,-rpath=" lib)
@@ -974,8 +1011,8 @@ security.")
(license license:gpl2)))
(define-public asignify
- (let ((commit "f58e7977a599f040797975d649ed318e25cbd2d5")
- (revision "0"))
+ (let ((commit "08af003e1f4833713db28b871759d94f9b2b1469")
+ (revision "1"))
(package
(name "asignify")
(version (git-version "1.1" revision commit))
@@ -987,7 +1024,7 @@ security.")
(file-name (git-file-name name version))
(sha256
(base32
- "1zl68qq6js6fdahxzyhvhrpyrwlv8c2zhdplycnfxyr1ckkhq8dw"))))
+ "1zacpqa8b5lg270z1g06r5ik9vnb91crb4ivyy20381dny82xvr1"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index fa3a449b7b..ffcbbe9eb4 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -5,7 +5,7 @@
;;; Copyright © 2018, 2019 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
-;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
+;;; Copyright © 2020, 2021 Morgan Smith <Morgan.J.Smith@outlook.com>
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
;;;
@@ -756,35 +756,38 @@ use than similar tools like @command{mtrace}.")
(license license:gpl2+)))
(define-public mspdebug
- (package
- (name "mspdebug")
- (version "0.25")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/dlbeer/mspdebug")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0prgwb5vx6fd4bj12ss1bbb6axj2kjyriyjxqrzd58s5jyyy8d3c"))))
- (build-system gnu-build-system)
- (arguments
- `(#:tests? #f ; no test suite
- #:phases
- (modify-phases %standard-phases
- (delete 'configure)) ; no configure script
- #:make-flags
- (list (string-append "CC=" ,(cc-for-target))
- "INSTALL=install"
- (string-append "PREFIX=" %output))))
- (inputs
- `(("libusb-compat" ,libusb-compat)
- ("readline" ,readline)))
- (synopsis "Debugging tool for MSP430 MCUs")
- (description "MspDebug supports FET430UIF, eZ430, RF2500 and Olimex
+ ;; Last official release was 24 July 2017
+ (let ((commit "4c4d94e43bc4a18ecf82070ff81cd38dd5641e3b")
+ (revision "0"))
+ (package
+ (name "mspdebug")
+ (version (git-version "0.25" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/dlbeer/mspdebug")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1lgw1dsc1aglyja610ichadvgs5b0df3wlarinczb0ykf431gjln"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; no test suite
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)) ; no configure script
+ #:make-flags
+ (list (string-append "CC=" ,(cc-for-target))
+ "INSTALL=install"
+ (string-append "PREFIX=" %output))))
+ (inputs
+ `(("libusb-compat" ,libusb-compat)
+ ("readline" ,readline)))
+ (synopsis "Debugging tool for MSP430 MCUs")
+ (description "MspDebug supports FET430UIF, eZ430, RF2500 and Olimex
MSP430-JTAG-TINY programmers, as well as many other compatible
devices. It can be used as a proxy for gdb or as an independent
debugger with support for programming, disassembly and reverse
engineering.")
- (home-page "https://github.com/dlbeer/mspdebug")
- (license license:gpl2+)))
+ (home-page "https://github.com/dlbeer/mspdebug")
+ (license license:gpl2+))))
diff --git a/gnu/packages/diffoscope.scm b/gnu/packages/diffoscope.scm
index b27ff40340..fb22381673 100644
--- a/gnu/packages/diffoscope.scm
+++ b/gnu/packages/diffoscope.scm
@@ -49,6 +49,7 @@
#:use-module (gnu packages mono)
#:use-module (gnu packages ocaml)
#:use-module (gnu packages package-management)
+ #:use-module (gnu packages pascal)
#:use-module (gnu packages patchutils)
#:use-module (gnu packages pdf)
#:use-module (gnu packages python-web)
@@ -72,7 +73,7 @@
(define-public diffoscope
(package
(name "diffoscope")
- (version "188")
+ (version "189")
(source
(origin
(method git-fetch)
@@ -81,9 +82,9 @@
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "1byd28ihni5g0ikjjcsq68smj1rw33vv9z0cymqa4ds670c77yvn"))
+ (base32 "0dai9gwsr9xnficjy8myq6xr301y4iy82aidm936qsqjwrp8q1sm"))
(patches
- (search-patches "diffoscope-fix-test_item3_deflate_llvm_bitcode.patch"))))
+ (search-patches "diffoscope-fix-llvm-test.patch"))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
@@ -183,6 +184,7 @@
("dtc" ,dtc)
("e2fsprogs" ,e2fsprogs)
("ffmpeg" ,ffmpeg)
+ ("fpc" ,fpc)
("gettext" ,gettext-minimal)
("ghostscript" ,ghostscript)
("giflib:bin" ,giflib "bin")
@@ -229,7 +231,7 @@ install.")
(define-public reprotest
(package
(name "reprotest")
- (version "0.7.16")
+ (version "0.7.18")
(source
(origin
(method git-fetch)
@@ -239,7 +241,7 @@ install.")
(file-name (git-file-name name version))
(sha256
(base32
- "0s7gyixk868dw6yqxsb1sq24mgg9ilz5s2yidd5j0zhl683n7dw9"))))
+ "19lwsxq53isgfkvlxvxqqmbjfcim3lhcxwk7m9ddfjiynhq74949"))))
(inputs
`(("python-debian" ,python-debian)
("python-distro" ,python-distro)
diff --git a/gnu/packages/display-managers.scm b/gnu/packages/display-managers.scm
index a3095f8bfa..1bfd85beae 100644
--- a/gnu/packages/display-managers.scm
+++ b/gnu/packages/display-managers.scm
@@ -41,6 +41,7 @@
#:use-module (guix gexp)
#:use-module (gnu packages)
#:use-module (gnu packages admin)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gl)
@@ -262,16 +263,16 @@ display manager which supports different greeters.")
(define-public lightdm-gtk-greeter
(package
(name "lightdm-gtk-greeter")
- (version "2.0.7")
+ (version "2.0.8")
(source (origin
(method url-fetch)
(uri (string-append
- "https://launchpad.net/lightdm-gtk-greeter/"
- (version-major+minor version) "/" version
- "/+download/lightdm-gtk-greeter-" version ".tar.gz"))
+ "https://github.com/xubuntu/lightdm-gtk-greeter"
+ "/releases/download/lightdm-gtk-greeter-" version "/"
+ "lightdm-gtk-greeter-" version ".tar.gz"))
(sha256
(base32
- "1g7wc3d3vqfa7mrdhx1w9ywydgjbffla6rbrxq9k3sc62br97qms"))))
+ "04q62mvr97l9gv8h37hfarygqc7p0498ig7xclcg4kxkqw0b7yxy"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
@@ -306,14 +307,16 @@ display manager which supports different greeters.")
(native-inputs
`(("exo" ,exo)
("intltool" ,intltool)
- ("pkg-config" ,pkg-config)))
+ ("pkg-config" ,pkg-config)
+ ("xfce4-dev-tools" ,xfce4-dev-tools)))
(inputs
- `(("lightdm" ,lightdm)
+ `(("bash" ,bash-minimal) ; for wrap-program
+ ("lightdm" ,lightdm)
("shared-mime-info" ,shared-mime-info)
("at-spi2-core" ,at-spi2-core)
("gtk+" ,gtk+)))
(synopsis "GTK+ greeter for LightDM")
- (home-page "https://launchpad.net/lightdm-gtk-greeter")
+ (home-page "https://github.com/xubuntu/lightdm-gtk-greeter")
(description "This package provides a LightDM greeter implementation using
GTK+, lets you select a desktop session and log in to it.")
(license license:gpl3+)))
diff --git a/gnu/packages/djvu.scm b/gnu/packages/djvu.scm
index 0d1cdf2b1d..39c2b20d7e 100644
--- a/gnu/packages/djvu.scm
+++ b/gnu/packages/djvu.scm
@@ -151,7 +151,7 @@ a continuous layout.")
(define-public pdf2djvu
(package
(name "pdf2djvu")
- (version "0.9.18")
+ (version "0.9.18.1")
(source
(origin
(method url-fetch)
@@ -159,7 +159,7 @@ a continuous layout.")
"https://github.com/jwilk/pdf2djvu/releases/download/" version
"/pdf2djvu-" version ".tar.xz"))
(sha256
- (base32 "0vxa0b3g7zhflc5m6ln4f0hi0shsqyqc3344y7azlllibxc5ba22"))))
+ (base32 "0c595yziz81c9izf9s5sskd00qmgz2n1hp2vdcgg0dx81g3xfidb"))))
(build-system gnu-build-system)
(native-inputs
`(("gettext" ,gettext-minimal)
@@ -177,9 +177,12 @@ a continuous layout.")
`(#:test-target "test"
#:phases
(modify-phases %standard-phases
- (add-before 'check 'set-home-for-tests
+ (add-after 'unpack 'fix-tests
(lambda _
- (setenv "HOME" "/tmp"))))))
+ (substitute* "tests/test-xmp-broken.py"
+ ;; Error message changed in recent versions of XML parser
+ (("XML parsing failure")
+ "Error in XMLValidator")))))))
(synopsis "PDF to DjVu converter")
(description
"@code{pdf2djvu} creates DjVu files from PDF files.
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index c770b880c8..89ebe588fd 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -1062,14 +1062,14 @@ synthesis, and on-the-fly re-configuration.")
(define-public knot-resolver
(package
(name "knot-resolver")
- (version "5.4.1")
+ (version "5.4.2")
(source (origin
(method url-fetch)
(uri (string-append "https://secure.nic.cz/files/knot-resolver/"
"knot-resolver-" version ".tar.xz"))
(sha256
(base32
- "0rixiqfj53rfabrz8qpnq4whx8y29d2m5w64a4jlwx7gv4nrd2zv"))))
+ "12x5cd09rv530pak5f2smxcfq2zdqg0g5qxsd5k0alm7f6aj2spa"))))
(build-system meson-build-system)
(outputs '("out" "doc"))
(arguments
diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm
index ee12f7edeb..4d15ac4812 100644
--- a/gnu/packages/docbook.scm
+++ b/gnu/packages/docbook.scm
@@ -459,8 +459,7 @@ the in DocBook SGML DTDs.")
(string-append (assoc-ref inputs input)
"/bin"))
'("libxslt" "texlive"
- "imagemagick" "inkscape"))))
- #t))))))
+ "imagemagick" "inkscape"))))))))))
(home-page "http://dblatex.sourceforge.net")
(synopsis "DocBook to LaTeX Publishing")
(description
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index c8515d729c..c901f7e711 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -102,6 +102,7 @@
;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org>
;;; Copyright © 2021 Noisytoot <noisytoot@disroot.org>
;;; Copyright © 2021 Simon South <simon@simonsouth.net>
+;;; Copyright © 2021 la snesne <lasnesne@lagunposprasihopre.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -456,16 +457,16 @@ a generic Scheme interaction mode for the GNU Emacs editor.")
(define-public emacs-vc-hgcmd
(package
(name "emacs-vc-hgcmd")
- (version "1.14")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/muffinmad/emacs-vc-hgcmd")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1mm8lnwii53j32v54aahl8sf3ciwymrvc1rgy4nw2m7hcrnjsb78"))))
+ (version "1.14.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/muffinmad/emacs-vc-hgcmd")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1nlaicza4ds325827ks5gb7zn0nc536k2chq8jwbq34ybvxi93wj"))))
(build-system emacs-build-system)
(home-page "https://github.com/muffinmad/emacs-vc-hgcmd")
(synopsis "Version control (VC) backend for the Mercurial command server")
@@ -1718,7 +1719,7 @@ directly.")
(home-page "https://bitbucket.org/agriggio/ahg")
(synopsis "Emacs front-end for the Mercurial SCM")
(description
- "This packages provides a simple Emacs front-end for the Mercurial
+ "This package provides a simple Emacs front-end for the Mercurial
Distributed @acronym{Source Control Management, SCM} system.")
(license license:gpl3+))))
@@ -6414,31 +6415,27 @@ for the current function or variable in the minibuffer.")
(license license:gpl3+)))
(define-public emacs-company-quickhelp
- ;; XXX: release version 2.3.0 is on an unmaintained branch for some reason,
- ;; so we use the latest 2.2.0 commit instead
- (let ((commit "479676cade80a9f03802ca3d956591820ed5c537")
- (revision "1"))
- (package
- (name "emacs-company-quickhelp")
- (version (git-version "2.2.0" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/expez/company-quickhelp")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0hbqpnaf4hnin3nmdzmfj3v22kk9a97b6zssqs96ns36d9h52xcp"))))
- (build-system emacs-build-system)
- (propagated-inputs
- `(("emacs-pos-tip" ,emacs-pos-tip)
- ("emacs-company" ,emacs-company)))
- (home-page "https://github.com/expez/company-quickhelp")
- (synopsis "Popup documentation for completion candidates")
- (description "@code{company-quickhelp} shows documentation for the
+ (package
+ (name "emacs-company-quickhelp")
+ (version "2.3.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/expez/company-quickhelp")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "08ccsfvwdpzpj0gai3xrdb2bv1nl6myjkxsc5774pbvlq9nkfdvr"))))
+ (build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-pos-tip" ,emacs-pos-tip)
+ ("emacs-company" ,emacs-company)))
+ (home-page "https://github.com/expez/company-quickhelp")
+ (synopsis "Popup documentation for completion candidates")
+ (description "@code{company-quickhelp} shows documentation for the
completion candidate when using the Company text completion framework.")
- (license license:gpl3+))))
+ (license license:gpl3+)))
(define-public emacs-math-symbol-lists
(package
@@ -8208,7 +8205,7 @@ them easier to distinguish from other, less important buffers.")
(define-public emacs-embark
(package
(name "emacs-embark")
- (version "0.10")
+ (version "0.12")
(source
(origin
(method git-fetch)
@@ -8216,7 +8213,7 @@ them easier to distinguish from other, less important buffers.")
(url "https://github.com/oantolin/embark")
(commit version)))
(sha256
- (base32 "063hc0hganws11vjdk3ic0mxm9i0vpw6s7hzbgxvja0gjkdxjldz"))
+ (base32 "16z7g6ynj4d64wsg49skhwypn5j6awlpsawbz61djsmpzlzjnv36"))
(file-name (git-file-name name version))))
(build-system emacs-build-system)
(propagated-inputs
@@ -18954,7 +18951,7 @@ powerful Org contents.")
(define-public emacs-org-re-reveal
(package
(name "emacs-org-re-reveal")
- (version "3.12.1")
+ (version "3.12.3")
(source
(origin
(method git-fetch)
@@ -18963,7 +18960,7 @@ powerful Org contents.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "0hi8lq9rj6i2m14dh75dzq7lq41i4f6qj4xbp2b8krqw6mk9xg7z"))))
+ (base32 "08ai87b6nybg0l7y8falb53wwvdv8hr3jzj5q995x48ylw6r1582"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-htmlize" ,emacs-htmlize)
@@ -21139,7 +21136,7 @@ file.")
(define-public emacs-packed
(package
(name "emacs-packed")
- (version "3.0.3")
+ (version "3.0.4")
(source
(origin
(method git-fetch)
@@ -21148,8 +21145,7 @@ file.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32
- "06blk8parnpq3qi6y5628q3v59c8dyi41glb289a0l16248qwphk"))))
+ (base32 "1gpv2vaci0m48fzn0sy7iwl1mnkkqc30bf05jjrqlpn9kpbjyf1p"))))
(build-system emacs-build-system)
(home-page "https://github.com/emacscollective/packed")
(synopsis "Package manager agnostic Emacs Lisp package utilities")
@@ -23439,16 +23435,16 @@ buffer and launches Magit from the status buffer for the project at point.")
(define-public emacs-alect-themes
(package
(name "emacs-alect-themes")
- (version "0.9")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/alezost/alect-themes")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0nffxpdm0sa7bynwi0rmlwpc4qmvbda5ankhzz7fmk4ap9fkjxv9"))))
+ (version "0.10")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/alezost/alect-themes")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "190clnm5x4hpzrq2wp18vxg6614ly3ciyv0y1sm9rfr9w9z5i0ya"))))
(build-system emacs-build-system)
(home-page "https://github.com/alezost/alect-themes")
(synopsis "Low contrast, light, dark and black color theme for Emacs")
@@ -23814,7 +23810,7 @@ processes for Emacs")
(define-public emacs-treemacs
(package
(name "emacs-treemacs")
- (version "2.9.3")
+ (version "2.9.4")
(source
(origin
(method git-fetch)
@@ -23823,7 +23819,7 @@ processes for Emacs")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "0ik7wkv6w5vga29pmj8zzn3lq9a2ww26gkl380hmaak809in6k65"))))
+ (base32 "1g2fy2qkscqx01av92hpjbr6qld8s1gk59cdjbff8fm0vlx8xk2p"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-ace-window" ,emacs-ace-window)
@@ -23895,9 +23891,11 @@ utilities.")
(name "emacs-treemacs-extra")
(propagated-inputs
`(,@(package-propagated-inputs emacs-treemacs)
+ ("emacs-all-the-icons" ,emacs-all-the-icons)
("emacs-evil" ,emacs-evil)
("emacs-magit" ,emacs-magit)
("emacs-projectile" ,emacs-projectile)
+ ("emacs-perspective" ,emacs-perspective)
("emacs-persp-mode" ,emacs-persp-mode)))
(arguments
(substitute-keyword-arguments
@@ -26066,14 +26064,14 @@ federated microblogging social network.")
(define-public emacs-ebdb
(package
(name "emacs-ebdb")
- (version "0.8.6")
+ (version "0.8.8")
(source
(origin
(method url-fetch)
(uri (string-append "https://elpa.gnu.org/packages/"
"ebdb-" version ".tar"))
(sha256
- (base32 "0amr1s1q5w4513qw31qsr8gpsfgj5b2j7qn017rmwbaf1mj0k6z0"))))
+ (base32 "035xakji5vypdpc06qp9yhg8ny7qn80h8kax6cl80p0lljplzrnn"))))
(build-system emacs-build-system)
(home-page "https://github.com/girzel/ebdb")
(synopsis "EIEIO port of BBDB, Emacs's contact-management package")
@@ -28655,26 +28653,29 @@ rather excellent completion provided by both Bash and Zsh.")
(license license:gpl3+)))
(define-public emacs-shell-command+
- (package
- (name "emacs-shell-command+")
- (version "2.2.0")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://git.sr.ht/~pkal/shell-command-plus")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1micvz6smhjma7qbka8h3w0crb3sgrxf9lz2548iqfgww50gb0lj"))))
- (build-system emacs-build-system)
- (home-page "http://elpa.gnu.org/packages/shell-command+.html")
- (synopsis "Extended Emacs @code{shell-command}")
- (description
- "Shell-command+ is a @code{shell-command} substitute that extends the
+ ;; XXX: Upstream did not tag last release. The commit below corresponds to
+ ;; the exact version bump.
+ (let ((commit "bf744c63bbd1e3bbb93407bd32d6da670b23e67e"))
+ (package
+ (name "emacs-shell-command+")
+ (version "2.3.2")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.sr.ht/~pkal/shell-command-plus")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0prlvcryq5ngrzn5f45rkw09wbr99v7nnwps2bjrjc3wvr2rp6h0"))))
+ (build-system emacs-build-system)
+ (home-page "http://elpa.gnu.org/packages/shell-command+.html")
+ (synopsis "Extended Emacs @code{shell-command}")
+ (description
+ "Shell-command+ is a @code{shell-command} substitute that extends the
regular Emacs command with several features. You can for example count all
the lines in a buffer with @code{> wc -l}, or delete all lower case letters in
the selected region with @code{| tr -d a-z}.")
- (license license:gpl3+)))
+ (license license:gpl3+))))
(define-public emacs-shell-pop
(let ((commit "4b4394037940a890a313d715d203d9ead2d156a6")
@@ -29204,14 +29205,14 @@ work on alists, hash-table and arrays. All functions are prefixed with
(define-public emacs-xref
(package
(name "emacs-xref")
- (version "1.3.0")
+ (version "1.3.2")
(source
(origin
(method url-fetch)
(uri (string-append "https://elpa.gnu.org/packages/xref-"
version ".tar"))
(sha256
- (base32 "0bw2cbxmjavzhmpd9gyl41d4c201p535jrfz3b7jb5zw12jdnppl"))))
+ (base32 "13bsaxdxwn14plaam0hsrswngh3rm2k29v5ybjgjyjy4d5vwz78j"))))
(build-system emacs-build-system)
(home-page "http://elpa.gnu.org/packages/xref.html")
(synopsis "Cross-referencing commands")
@@ -29499,7 +29500,7 @@ shorter than usual, using mostly unprefixed keys.")
`(("emacs-yaml-mode" ,emacs-yaml-mode)))
(home-page "https://github.com/tom-tan/cwl-mode")
(synopsis "Emacs mode for @acronym{CWL, Common Workflow Language} files")
- (description "This packages provides a major mode for editing
+ (description "This package provides a major mode for editing
@acronym{CWL, Common Workflow Language} files.")
(license license:gpl3+)))
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 61748d09e6..734f3dfaa3 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -183,15 +183,13 @@
(lambda* (#:key outputs target #:allow-other-keys)
(let* ((libexec (string-append (assoc-ref outputs "out")
"/libexec"))
- ;; each of these find-files should return one file
- (pdmp (find-files libexec "^emacs\\.pdmp$"))
- (pdmp-real (find-files libexec
- "^\\.emacs\\.pdmp-real$")))
- (for-each (lambda (wrapper real)
- (delete-file wrapper)
- (rename-file real wrapper))
- pdmp pdmp-real))
- #t))
+ ;; each of these ought to only match a single file,
+ ;; but even if not (find-files) sorts by string<,
+ ;; so the Nth element in one maps to the Nth element of
+ ;; the other
+ (pdmp (find-files libexec "\\.pdmp$"))
+ (pdmp-real (find-files libexec "\\.pdmp-real$")))
+ (for-each rename-file pdmp-real pdmp))))
(add-after 'glib-or-gtk-wrap 'strip-double-wrap
(lambda* (#:key outputs #:allow-other-keys)
;; Directly copy emacs-X.Y to emacs, so that it is not wrapped
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 3489b8eddb..407e9bec53 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -1752,7 +1752,7 @@ This is a part of the TiLP project.")
(define-public mame
(package
(name "mame")
- (version "0.236")
+ (version "0.237")
(source
(origin
(method git-fetch)
@@ -1761,7 +1761,7 @@ This is a part of the TiLP project.")
(commit (apply string-append "mame" (string-split version #\.)))))
(file-name (git-file-name name version))
(sha256
- (base32 "0pxvvdirbwakl5cy7lp0zib6z176ckxx8c3mazsd7q1ddxxd3l8x"))
+ (base32 "0syj7l262s2ac70dfg47pakd6fk8x3p3sasixmcwdmvnzkiqvmj4"))
(modules '((guix build utils)))
(snippet
;; Remove bundled libraries.
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index c698299b13..1cce0149a6 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -995,7 +995,7 @@ Emacs).")
("python" ,python-wrapper)
("wxwidgets" ,wxwidgets)
("wxpython" ,python-wxpython)))
- (home-page "https://kicad-pcb.org/")
+ (home-page "https://www.kicad.org/")
(synopsis "Electronics Design Automation Suite")
(description "Kicad is a program for the formation of printed circuit
boards and electrical circuits. The software has a number of programs that
diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index 2304482b33..7f88c34671 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -88,7 +88,7 @@
(define-public autofs
(package
(name "autofs")
- (version "5.1.7")
+ (version "5.1.8")
(source
(origin
(method url-fetch)
@@ -96,7 +96,7 @@
"v" (version-major version) "/"
"autofs-" version ".tar.xz"))
(sha256
- (base32 "1myfz6a3wj2c4j9h5g44zj796fdi82jhp1s92w2hg6xp2632csx3"))))
+ (base32 "1zf0fgf6kr9amxq5amlgsp1v13sizwl3wvx2xl7b4r2nhmci0gdk"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
@@ -118,8 +118,7 @@
(lambda _
(substitute* "configure"
(("^searchpath=\".*\"")
- "searchpath=\"$PATH\""))
- #t))
+ "searchpath=\"$PATH\""))))
(add-before 'configure 'fix-rpath
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
@@ -132,8 +131,7 @@
(lambda _
(substitute* "modules/Makefile"
(("ln -fs lookup_yp.so" match)
- (string-append "# " match)))
- #t)))))
+ (string-append "# " match))))))))
(native-inputs
`(("bison" ,bison)
("flex" ,flex)
@@ -416,8 +414,8 @@ from a mounted file system.")
(license license:gpl2+)))
(define-public bcachefs-tools
- (let ((commit "37850436dd7dfbe67738749c4d4a2506ffff1ec3")
- (revision "11"))
+ (let ((commit "f9f57789de567726f7cfa46bd13df4b0815d137a")
+ (revision "12"))
(package
(name "bcachefs-tools")
(version (git-version "0.1" revision commit))
@@ -429,7 +427,7 @@ from a mounted file system.")
(commit commit)))
(file-name (git-file-name name version))
(sha256
- (base32 "040vgxrimahmfs9rhlggfwg0bzl7h9j2ksx3563rh63asjwlhnhi"))))
+ (base32 "13442qpmv7hywkpbnbwlg2sfhlfh16qxry1xwlv35vch2qnzlhrq"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags
@@ -509,7 +507,17 @@ performance and other characteristics.")
(substitute-keyword-arguments (package-arguments bcachefs-tools)
((#:make-flags make-flags)
`(append ,make-flags
- (list "LDFLAGS=-static")))))
+ (list "LDFLAGS=-static")))
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-after 'unpack 'skip-shared-library
+ (lambda _
+ (substitute* "Makefile"
+ ;; Building the shared library with ‘-static’ obviously fails…
+ (("^((all|install):.*)\\blib\\b(.*)" _ prefix suffix)
+ (string-append prefix suffix "\n"))
+ ;; …as does installing a now non-existent file.
+ ((".*\\$\\(INSTALL\\).* lib.*") ""))))))))
(inputs
`(("eudev:static" ,eudev "static")
("libscrypt:static" ,libscrypt "static")
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 09b6646787..6cda53dc94 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -116,7 +116,7 @@
(define-public bitcoin-core-0.21
(package
(name "bitcoin-core")
- (version "0.21.1")
+ (version "0.21.2")
(source (origin
(method url-fetch)
(uri
@@ -124,7 +124,7 @@
version "/bitcoin-" version ".tar.gz"))
(sha256
(base32
- "1q51nqv64lhng5wh1cqb01jar7iswpnyyb1i7xslbkr0j9227zya"))))
+ "17nvir1yc6mf4wr1fn4xsabw49cd5p9vig8wj77vv4anzi8zfij1"))))
(build-system gnu-build-system)
(native-inputs
`(("autoconf" ,autoconf)
@@ -1778,7 +1778,17 @@ editing on the Web.")
(base32 "0lf69nna0aahwpgd9m9yjzbv2fbfn081djfznssa84f0n7y1xx4z"))))
(build-system gnu-build-system)
(arguments
- `(;; Parallel build fails with:
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'link-math-library
+ (lambda _
+ (substitute* "src/Makefile.am"
+ (("ta_common/libta_common.la")
+ "ta_common/libta_common.la -lm"))
+ (substitute* "src/Makefile.in"
+ (("\\$\\(libta_lib_la_LDFLAGS\\) \\$\\(LDFLAGS\\) -o \\$@")
+ "$(libta_lib_la_LDFLAGS) $(LDFLAGS) -lm -o $@")))))
+ ;; Parallel build fails with:
;; mv -f .deps/gen_code-gen_code.Tpo .deps/gen_code-gen_code.Po
;; mv: cannot stat '.deps/gen_code-gen_code.Tpo': No such file or directory
;; Makefile:254: recipe for target 'gen_code-gen_code.o' failed
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index ebcb89923c..e9083bc1c4 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -465,7 +465,7 @@ Virtual Machines. OVMF contains a sample UEFI firmware for QEMU and KVM.")
(define* (make-arm-trusted-firmware platform #:optional (arch "aarch64"))
(package
(name (string-append "arm-trusted-firmware-" platform))
- (version "2.4")
+ (version "2.5")
(source
(origin
(method git-fetch)
@@ -476,7 +476,7 @@ Virtual Machines. OVMF contains a sample UEFI firmware for QEMU and KVM.")
(file-name (git-file-name "arm-trusted-firmware" version))
(sha256
(base32
- "12k0n79j156bdzqws18kpbli04kn00nh6dy42pjv6gakqrkx9px3"))))
+ "0w3blkqgmyb5bahlp04hmh8abrflbzy0qg83kmj1x9nv4mw66f3b"))))
(build-system gnu-build-system)
(arguments
`(#:phases
diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm
index f4379e614a..bd65d01aa1 100644
--- a/gnu/packages/flashing-tools.scm
+++ b/gnu/packages/flashing-tools.scm
@@ -8,6 +8,7 @@
;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2021 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2021 Mathieu Othacehe <othacehe@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -50,7 +51,8 @@
#:use-module (gnu packages libusb)
#:use-module (gnu packages libftdi)
#:use-module (gnu packages pciutils)
- #:use-module (gnu packages qt))
+ #:use-module (gnu packages qt)
+ #:use-module (gnu packages tls))
(define-public flashrom
(package
@@ -196,7 +198,7 @@ ISP.")
(define-public dfu-util
(package
(name "dfu-util")
- (version "0.10")
+ (version "0.11")
(source (origin
(method url-fetch)
(uri (string-append
@@ -204,7 +206,7 @@ ISP.")
version ".tar.gz"))
(sha256
(base32
- "0hlvc47ccf5hry13saqhc1j5cdq5jyjv4i05kj0mdh3rzj6wagd0"))))
+ "17piiyp08pccqmbhnswv957lkypmmm92kps79hypxvw23ai3pddl"))))
(build-system gnu-build-system)
(inputs
`(("libusb" ,libusb)))
@@ -526,3 +528,55 @@ Unifinished Extensible Firmware Interface (UEFI) images.")
manipulating EPROM load files. It reads and writes numerous EPROM file
formats, and can perform many different manipulations.")
(license license:gpl3+)))
+
+(define-public uuu
+ (package
+ (name "uuu")
+ (version "1.4.165")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/NXPmicro/mfgtools")
+ (commit (string-append "uuu_" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0k309lp27d4k6x4qq0badbk8i47xsc6f3fffz73650iyfs4hcniw"))))
+ (arguments
+ `(#:tests? #f ; no tests
+ #:modules ((guix build utils)
+ (ice-9 popen)
+ (srfi srfi-26)
+ (guix build cmake-build-system))
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'fix-version-gen
+ (lambda _
+ (call-with-output-file ".tarball-version"
+ (lambda (port)
+ (display ,version port)))))
+ (add-after 'install 'install-udev-rules
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (uuu (string-append out "/bin/uuu"))
+ (pipe (open-pipe* OPEN_READ uuu "-udev"))
+ (rules
+ (string-append out "/lib/udev/rules.d/70-uuu.rules")))
+ (mkdir-p (string-append out "/lib/udev/rules.d"))
+ (call-with-output-file rules
+ (cut dump-port pipe <>))))))))
+ (build-system cmake-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("libusb" ,libusb)
+ ("bzip2" ,bzip2)
+ ("zlib" ,zlib)
+ ("libzip" ,libzip)
+ ("openssl" ,openssl)))
+ (home-page "https://github.com/NXPmicro/mfgtools")
+ (synopsis "Freescale/NXP I.MX chip image deploy tools")
+ (description "@code{uuu} is a command line tool, evolved out of MFGTools.
+It can be used to upload images to I.MX SoC's using at least their boot ROM.")
+ (license license:bsd-3)))
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index dc7add8667..793b86ced8 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -743,7 +743,7 @@ for use at smaller text sizes")))
(define-public font-gnu-unifont
(package
(name "font-gnu-unifont")
- (version "13.0.06")
+ (version "14.0.01")
(source
(origin
(method url-fetch)
@@ -753,22 +753,21 @@ for use at smaller text sizes")))
(string-append "mirror://gnu/unifont/unifont-"
version "/unifont-" version ".tar.gz")))
(sha256
- (base32 "09g91g0gv76sadslp70m5xwfk3jf8kh7rpk2pz3l2hpldnjggpk8"))))
+ (base32 "0wkdn8h20pprna5a3hbny0qk2mgksrbxs2y6ng6qarj6rkpdmlbs"))))
(build-system gnu-build-system)
(outputs '("out" ; TrueType version
"pcf" ; PCF (bitmap) version
"psf" ; PSF (console) version
"bin")) ; Utilities to manipulate '.hex' format
(arguments
- '(#:tests? #f ; no check target
+ `(#:tests? #f ; no check target
+ #:make-flags
+ (list (string-append "CC=" ,(cc-for-target)))
#:phases
(modify-phases %standard-phases
- (replace
- 'configure
- (lambda _ (setenv "CC" "gcc") #t))
- (replace
- 'install
- (lambda* (#:key outputs #:allow-other-keys)
+ (delete 'configure)
+ (replace 'install
+ (lambda* (#:key make-flags outputs #:allow-other-keys)
(let* ((ttf (string-append (assoc-ref outputs "out")
"/share/fonts/truetype"))
(pcf (string-append (assoc-ref outputs "pcf")
@@ -776,18 +775,17 @@ for use at smaller text sizes")))
(psf (string-append (assoc-ref outputs "psf")
"/share/consolefonts"))
(bin (assoc-ref outputs "bin")))
- (invoke "make"
- (string-append "PREFIX=" bin)
- (string-append "TTFDEST=" ttf)
- (string-append "PCFDEST=" pcf)
- (string-append "CONSOLEDEST=" psf)
- "install")
+ (apply invoke "make" "install"
+ (string-append "PREFIX=" bin)
+ (string-append "TTFDEST=" ttf)
+ (string-append "PCFDEST=" pcf)
+ (string-append "CONSOLEDEST=" psf)
+ make-flags)
;; Move Texinfo file to the right place.
(mkdir (string-append bin "/share/info"))
(invoke "gzip" "-9n" "doc/unifont.info")
(install-file "doc/unifont.info.gz"
- (string-append bin "/share/info"))
- #t))))))
+ (string-append bin "/share/info"))))))))
(inputs
`(("perl" ,perl))) ; for utilities
(synopsis
@@ -845,7 +843,7 @@ visual language \"Material Design\".")
(define-public font-borg-sans-mono
(package
(name "font-borg-sans-mono")
- (version "0.3.2")
+ (version "0.3.3")
(source
(origin
(method url-fetch)
@@ -854,7 +852,7 @@ visual language \"Material Design\".")
"/releases/download/v" version "/borg-sans-mono.zip"))
(sha256
(base32
- "0q16gw3ry9hpgbl2636qq00ap59xyx15jf3gzvx2ybz3gja164c4"))))
+ "0xzi866ag9w4q114bn984yjfy72pmfs563v5yy1rkbqycphgwwyp"))))
(build-system font-build-system)
(home-page "https://github.com/charje/borg-sans-mono")
(synopsis "The Borg Sans Mono font")
@@ -1968,25 +1966,25 @@ in small sizes, the text looks crisper.")
(define-public font-juliamono
(package
(name "font-juliamono")
- (version "0.031")
+ (version "0.043")
(source
(origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/cormullion/juliamono")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/cormullion/juliamono/releases/download/"
+ "v" version "/JuliaMono-ttf.tar.gz"))
(sha256
- (base32 "0pcz2qaw0g0gak4plvhgg3m76h4gamffa373r52dzx0qwn1i1cf1"))))
+ (base32
+ "0vb7n9yqgasnxzps13ckklay5bla6b0i79pzmfqvjms1r37079gh"))))
(build-system font-build-system)
(arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'delete-website-folder
- ;; This folder contains other unrelated fonts.
- (lambda _
- (delete-file-recursively "website")
- #t)))))
+ `(#:phases (modify-phases %standard-phases
+ (replace 'unpack
+ (lambda* (#:key source #:allow-other-keys)
+ (mkdir "source")
+ (chdir "source")
+ (invoke "tar" "xzf" source))))))
+ (native-inputs `(("tar" ,tar)))
(home-page "https://github.com/cormullion/juliamono")
(synopsis "Monospaced font for programming")
(description
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 053dc18a25..264450650d 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -846,7 +846,7 @@ maintain the Noto Fonts project.")
(define-public fcft
(package
(name "fcft")
- (version "2.4.5")
+ (version "2.4.6")
(home-page "https://codeberg.org/dnkl/fcft")
(source (origin
(method git-fetch)
@@ -854,7 +854,7 @@ maintain the Noto Fonts project.")
(file-name (git-file-name name version))
(sha256
(base32
- "0z4bqap88pydkgcxrsvm3fmcyhi9x7z8knliarvdcvqlk7qnyzfh"))))
+ "0jh05wzrif7z1xf9jzs8bgf49lpj5zs55agj414bmmwdddk7my7j"))))
(build-system meson-build-system)
(native-inputs
`(("check" ,check)
@@ -888,7 +888,7 @@ generated list of fallback fonts are checked.")
(define-public fontmanager
(package
(name "fontmanager")
- (version "0.8.4")
+ (version "0.8.7")
(source
(origin
(method git-fetch)
@@ -897,8 +897,7 @@ generated list of fallback fonts are checked.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32
- "09rv0srpj8ann2n1zpv1frlpxz0x10d2y21c5lys7pmfngljlxi9"))))
+ (base32 "0nyda2a6vbzyz4sn9mmrr8bkifzxmmjp7x9a3c4s6n925ccy79cn"))))
(build-system meson-build-system)
(arguments
`(#:glib-or-gtk? #t
@@ -935,7 +934,7 @@ work well with other GTK+ desktop environments.")
(define-public fntsample
(package
(name "fntsample")
- (version "5.3")
+ (version "5.4")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -944,7 +943,7 @@ work well with other GTK+ desktop environments.")
(file-name (git-file-name name version))
(sha256
(base32
- "02rx3gp7k472304vhjwb129nw10a29s4nvgs7i2m6bpjhlk2xgs5"))))
+ "0pcqqdriv6hq64zrqd9vhdd9p2vhimjnajcxdz10qnqgrkmm751v"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ; There are no tests.
@@ -965,8 +964,7 @@ work well with other GTK+ desktop environments.")
"/lib/perl5/site_perl/"
,(package-version perl))))
(wrap-program (string-append out "/bin/pdfoutline")
- `("PERL5LIB" ":" prefix (,perllib)))
- #t))))))
+ `("PERL5LIB" ":" prefix (,perllib)))))))))
(native-inputs
`(("pkg-config" ,pkg-config)
("gettext" ,gettext-minimal)))
@@ -979,13 +977,15 @@ work well with other GTK+ desktop environments.")
("perl-pdf-api2" ,perl-pdf-api2)
("perl-libintl-perl" ,perl-libintl-perl)
("unicode-blocks"
- ,(origin
- (method url-fetch)
- (uri "https://unicode.org/Public/UNIDATA/Blocks.txt")
- (file-name "unicode-blocks.txt")
- (sha256
- (base32
- "1xs8fnhh48gs41wg004r7m4r2azh9khmyjjlnvyzy9c6zrd212x2"))))))
+ ,(let ((version "14.0.0"))
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://unicode.org/Public/"
+ version "/ucd/Blocks.txt"))
+ (file-name (string-append "unicode-blocks-" version ".txt"))
+ (sha256
+ (base32
+ "05vzgrvfp35mgxjgkm4wnxjjgzva8n6545i9jxd4pczpvvfp122r")))))))
(home-page "https://github.com/eugmes/fntsample")
(synopsis "PDF and PostScript font samples generator")
(description "This package provides a tool that can be used to make font
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 4e1fa2e863..3c61e0b52c 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -26,6 +26,7 @@
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;; Copyright © 2021 Robby Zambito <contact@robbyzambito.me>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
+;;; Copyright © 2021 John Kehayias <john.kehayias@protonmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -2055,17 +2056,14 @@ Python, that binds to the C library @code{uchardet} to increase performance.")
(define-public udiskie
(package
(name "udiskie")
- (version "2.1.0")
+ (version "2.3.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "udiskie" version))
(sha256
(base32
- "0smib8vbs9q37n7ynhzyw97q16fgdkcdw7fw69lci0xvyq00v1dz"))
- ;; Remove support for the libappindicator library of the
- ;; Unity desktop environment which is not in Guix.
- (patches (search-patches "udiskie-no-appindicator.patch"))))
+ "0sagdmsc5km32h3jvgj843p8bicrrgfz26qhl04ibxmas6725zr0"))))
(build-system python-build-system)
(native-inputs
`(("asciidoc" ,asciidoc)
@@ -2074,6 +2072,7 @@ Python, that binds to the C library @code{uchardet} to increase performance.")
(inputs
`(("gobject-introspection" ,gobject-introspection)
("gtk+" ,gtk+)
+ ("libappindicator" ,libappindicator)
("libnotify" ,libnotify)
("udisks" ,udisks)))
(propagated-inputs
@@ -2350,16 +2349,15 @@ fallback to generic Systray support if none of those are available.")
(define-public xdg-desktop-portal
(package
(name "xdg-desktop-portal")
- (version "1.8.1")
+ (version "1.10.1")
(source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/flatpak/xdg-desktop-portal")
- (commit version)))
- (file-name (git-file-name name version))
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/flatpak/xdg-desktop-portal/releases/download/"
+ version "/xdg-desktop-portal-" version ".tar.xz"))
(sha256
(base32
- "0pq0kmvzk56my396vh97pzw4wizwmlmzvv2kr2xv047x3044mr5n"))))
+ "199lqr2plsy9qqnxx5a381ml8ygcbz4nkjla5pvljjcrwzlqsygd"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
@@ -2410,16 +2408,15 @@ and others.")
(define-public xdg-desktop-portal-gtk
(package
(name "xdg-desktop-portal-gtk")
- (version "1.7.1")
+ (version "1.10.0")
(source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/flatpak/xdg-desktop-portal-gtk")
- (commit version)))
- (file-name (git-file-name name version))
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/flatpak/xdg-desktop-portal-gtk/releases/download/"
+ version "/xdg-desktop-portal-gtk-" version ".tar.xz"))
(sha256
(base32
- "183iha9dxmvprn99ymgz17jx1lyn1fj5jyj6ghxl716zn9mxmird"))))
+ "0nlbnd6qvs92fanrmmn123vy0y2ml0v3ndxyk5x0cpfbnmxpa2f8"))))
(build-system glib-or-gtk-build-system)
(arguments
`(#:phases
@@ -2430,13 +2427,21 @@ and others.")
(for-each (lambda (po)
(chmod po #o666))
(find-files "po" "\\.po$"))
- #t)))))
+ #t)))
+ ;; Enable Gnome portal backends
+ #:configure-flags
+ (list
+ "--enable-appchooser"
+ "--enable-wallpaper"
+ "--enable-screenshot"
+ "--enable-screencast"
+ "--enable-background"
+ "--enable-settings")))
(native-inputs
`(("pkg-config" ,pkg-config)
("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)
- ("xdg-desktop-portal" ,xdg-desktop-portal)
("glib:bin" ,glib "bin")
("which" ,which)
("gettext" ,gettext-minimal)))
@@ -2446,10 +2451,8 @@ and others.")
("fontconfig" ,fontconfig)
("gnome-desktop" ,gnome-desktop)
("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
- (native-search-paths
- (list (search-path-specification
- (variable "XDG_DESKTOP_PORTAL_DIR")
- (files '("share/xdg-desktop-portal/portals")))))
+ (propagated-inputs
+ `(("xdg-desktop-portal" ,xdg-desktop-portal)))
(home-page "https://github.com/flatpak/xdg-desktop-portal-gtk")
(synopsis "GTK implementation of xdg-desktop-portal")
(description
@@ -2499,7 +2502,7 @@ compositors.")
(define-public waypipe
(package
(name "waypipe")
- (version "0.8.0")
+ (version "0.8.1")
(source
(origin
(method git-fetch)
@@ -2508,22 +2511,13 @@ compositors.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1qa47ljfvb1vv3h647xwn1j5j8gfmcmdfaz4j8ygnkvj36y87vnz"))))
+ (base32 "1v08dv3dfz420v51ahz7qgv3429073kmgrf8f66s4c3jlpch2pa1"))))
(build-system meson-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-sleep-path
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((coreutils (assoc-ref inputs "coreutils")))
- (substitute* "./test/startup_failure.py"
- (("sleep") (string-append coreutils "/bin/sleep")))))))))
(native-inputs
`(("pkg-config" ,pkg-config)
("scdoc" ,scdoc)
;; For tests
- ("python" ,python)
- ("coreutils" ,coreutils)))
+ ("python" ,python)))
(home-page "https://gitlab.freedesktop.org/mstoeckl/waypipe")
(synopsis "Proxy for Wayland protocol applications")
(description
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 4e0f75e79c..b74573ec11 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -866,7 +866,7 @@ package is the Nuklear bindings for LÖVE created by Kevin Harrison.")
(define-public allegro-4
(package
(name "allegro")
- (version "4.4.3")
+ (version "4.4.3.1")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/liballeg/allegro5/"
@@ -874,7 +874,7 @@ package is the Nuklear bindings for LÖVE created by Kevin Harrison.")
version ".tar.gz"))
(sha256
(base32
- "1d5ws3ihvpa6f4qc6a6drq31pajw6bblxifr4kcxzqj9br1nw28y"))))
+ "1m6lz35nk07dli26kkwz3wa50jsrxs1kb6w1nj14a911l34xn6gc"))))
(build-system cmake-build-system)
(arguments
'(#:phases
@@ -886,8 +886,7 @@ package is the Nuklear bindings for LÖVE created by Kevin Harrison.")
;; unconditionally clobbered in the build script.
(substitute* '("CMakeLists.txt")
(("ADDON_LINKAGE STATIC")
- "ADDON_LINKAGE SHARED"))
- #t)))))
+ "ADDON_LINKAGE SHARED")))))))
(inputs
`(("glu" ,glu)
("libpng" ,libpng)
@@ -1184,7 +1183,7 @@ to create fully featured games and multimedia programs in the python language.")
(define-public python-pygame-sdl2
(let ((real-version "2.1.0")
- (renpy-version "7.4.8"))
+ (renpy-version "7.4.10"))
(package
(inherit python-pygame)
(name "python-pygame-sdl2")
@@ -1194,7 +1193,7 @@ to create fully featured games and multimedia programs in the python language.")
(method url-fetch)
(uri (string-append "https://www.renpy.org/dl/" renpy-version
"/pygame_sdl2-" version ".tar.gz"))
- (sha256 (base32 "1yyqcg7khac17jif86vi2d4j9l8x2vfg4h5pasrwwsy0g8386zsm"))
+ (sha256 (base32 "0m0asrr722a4v24fm8199b0c53igagylay8bn9bz9rmc0r4v8si4"))
(modules '((guix build utils)))
(snippet
'(begin
@@ -1240,21 +1239,19 @@ developed mainly for Ren'py.")
(define-public python2-renpy
(package
(name "python2-renpy")
- (version "7.4.8")
+ (version "7.4.10")
(source
(origin
(method url-fetch)
(uri (string-append "https://www.renpy.org/dl/" version
"/renpy-" version "-source.tar.bz2"))
- (sha256 (base32 "1ml3gs87xxk1iflrg5ivffr4q8fi7d65l1cx462bvvpm1rs2sa8d"))
+ (sha256 (base32 "1yngs2kh1l8micg28mcp9580qsvgq3aa8bkhv2xqfkg9qqrbr8y4"))
(modules '((guix build utils)))
(patches
(search-patches
"renpy-use-system-fribidi.patch"))
(snippet
'(with-directory-excursion "module"
- ;; drop generated sources
- (delete-file-recursively "gen")
;; drop fribidi sources
(delete-file-recursively "fribidi-src")
#t))))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index c913d99334..34051b8fda 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -4136,7 +4136,7 @@ falling, themeable graphics and sounds, and replays.")
(define-public wesnoth
(package
(name "wesnoth")
- (version "1.14.17")
+ (version "1.16.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
@@ -4145,7 +4145,7 @@ falling, themeable graphics and sounds, and replays.")
"wesnoth-" version ".tar.bz2"))
(sha256
(base32
- "1qc4ylhc4ab51milclzhflpmzw6bg35knwqaj3b157700jkcniin"))))
+ "0qs102ws46z0cqyk3maxd1c4bywswlacbqkpmb51x9jd8c746vhz"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f)) ;no check target
@@ -6397,18 +6397,17 @@ with the mouse isn’t always trivial.")
(define-public chroma
(package
(name "chroma")
- (version "1.18")
+ (version "1.19")
(source (origin
(method url-fetch)
(uri (string-append "http://level7.org.uk/chroma/download/chroma-"
version ".tar.bz2"))
(sha256
(base32
- "12bjisf5nlqinw8n4r223vld52p0p2mw3fca92vi175c46bycbzn"))))
+ "19ybvv0dkql913xpgjgxyyy50s72vajc7hm83zsvy2lsq8lhg76q"))))
(build-system gnu-build-system)
(arguments
- `(#:tests? #f ; no tests included
- #:configure-flags '("CFLAGS=-fgnu89-inline"))) ; fix inlines
+ `(#:tests? #f)) ; no tests included
(inputs
`(("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
("freetype" ,freetype)
diff --git a/gnu/packages/genimage.scm b/gnu/packages/genimage.scm
index bd77e4dc33..fb994231dd 100644
--- a/gnu/packages/genimage.scm
+++ b/gnu/packages/genimage.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org>
;;; Copyright © 2021 Vincent Legoll <vincent.legoll@gmail.com>
+;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -56,97 +57,37 @@
(patches (search-patches "genimage-signedness.patch"))))
(build-system gnu-build-system)
(arguments
- `(#:phases
+ `(#:modules
+ ((ice-9 match)
+ ,@%gnu-build-system-modules)
+ #:phases
(modify-phases %standard-phases
(add-after 'unpack 'guixify
(lambda* (#:key inputs #:allow-other-keys)
- ;; Note to maintainers: Check ".def =" lines in source.
- (substitute* "config.c"
- (("\\.def = \"cpio\"")
- (string-append ".def = \""
- (assoc-ref inputs "cpio")
- "/bin/cpio\""))
- (("\\.def = \"dd\"")
- (string-append ".def = \""
- (assoc-ref inputs "coreutils")
- "/bin/dd\""))
- (("\\.def = \"debugfs\"")
- (string-append ".def = \""
- (assoc-ref inputs "e2fsprogs")
- "/sbin/debugfs\""))
- (("\\.def = \"e2fsck\"")
- (string-append ".def = \""
- (assoc-ref inputs "e2fsprogs")
- "/sbin/e2fsck\""))
- (("\\.def = \"genext2fs\"")
- (string-append ".def = \""
- (assoc-ref inputs "genext2fs")
- "/bin/genext2fs\""))
- (("\\.def = \"genisoimage\"")
- (string-append ".def = \""
- (assoc-ref inputs "cdrkit-libre")
- "/bin/genisoimage\""))
- (("\\.def = \"mcopy\"")
- (string-append ".def = \""
- (assoc-ref inputs "mtools")
- "/bin/mcopy\""))
- (("\\.def = \"mmd\"")
- (string-append ".def = \""
- (assoc-ref inputs "mtools")
- "/bin/mmd\""))
- ;;; Note: mkcramfs is obsolete.
- (("\\.def = \"mkdosfs\"")
- (string-append ".def = \""
- (assoc-ref inputs "dosfstools")
- "/sbin/mkfs.fat\""))
- (("\\.def = \"mke2fs\"")
- (string-append ".def = \""
- (assoc-ref inputs "e2fsprogs")
- "/sbin/mke2fs\""))
- (("\\.def = \"mkfs\\.jffs2\"")
- (string-append ".def = \""
- (assoc-ref inputs "mtd-utils")
- "/sbin/mkfs.jffs2\""))
- (("\\.def = \"mkfs\\.ubifs\"")
- (string-append ".def = \""
- (assoc-ref inputs "mtd-utils")
- "/sbin/mkfs.ubifs\""))
- (("\\.def = \"mksquashfs\"")
- (string-append ".def = \""
- (assoc-ref inputs "squashfs-tools")
- "/bin/mksquashfs\""))
- (("\\.def = \"qemu-img\"")
- (string-append ".def = \""
- (assoc-ref inputs "qemu")
- "/bin/qemu-img\""))
- (("\\.def = \"tar\"")
- (string-append ".def = \""
- (assoc-ref inputs "tar")
- "/bin/tar\""))
- (("\\.def = \"tune2fs\"")
- (string-append ".def = \""
- (assoc-ref inputs "e2fsprogs")
- "/sbin/tune2fs\""))
- (("\\.def = \"ubinize\"")
- (string-append ".def = \""
- (assoc-ref inputs "mtd-utils")
- "/sbin/ubinize\""))
- (("\\.def = \"mkimage\"")
- (string-append ".def = \""
- (assoc-ref inputs "u-boot-tools")
- "/bin/mkimage\"")))
- (substitute* "test/basic-images.test"
- ;; Work around bug in sharness.sh.
- (("mkdosfs")
- "mkfs.fat")
- ;; Work around bug in sharness.sh.
- (("dd,mkfs\\.fat,mcopy")
- "dd,mkfs_fat,mcopy")
- ;; Should be in the next upstream release.
- (("qemu_img") "qemu-img"))
+ (map (match-lambda
+ ((input directory regexp)
+ (substitute* "config.c"
+ (((format #f "\\.def = \"(~a)\"" regexp) _ command)
+ (format #f ".def = \"~a/~a/~a\""
+ (assoc-ref inputs input) directory command)))))
+ '(("cpio" "bin" "cpio")
+ ("coreutils" "bin" "dd")
+ ("e2fsprogs" "sbin" "debugfs|e2fsck|mke2fs|tune2fs")
+ ("genext2fs" "bin" "genext2fs")
+ ("cdrkit-libre" "bin" "genisoimage")
+ ("mtools" "bin" "mcopy|mmd")
+ ;; mkcramfs is obsolete.
+ ("dosfstools" "sbin" "mkdosfs")
+ ("mtd-utils" "sbin" "mkfs.(jffs2|ubifs)|ubinize")
+ ("squashfs-tools" "bin" "mksquashfs")
+ ("qemu" "bin" "qemu-img")
+ ("tar" "bin" "tar")
+ ("u-boot-tools" "bin" "mkimage")))
(substitute* "util.c"
- (("\"/bin/sh\"")
- (string-append "\"" (assoc-ref inputs "bash") "/bin/sh\"")))
+ (("\"/bin/sh\"")
+ (string-append "\"" (assoc-ref inputs "bash") "/bin/sh\"")))))
+ (add-before 'check 'fix-failing-tests
+ (lambda _
;; We don't have /etc/passwd so uid 0 is not known as "root".
;; Thus patch it out.
(substitute* '("test/ext2test.dump"
@@ -154,16 +95,14 @@
"test/ext4test.dump"
"test/ext2test-percent.dump"
"test/mke2fs.dump")
- (("root") "unknown"))
- #t))
+ (("root") "unknown"))))
(add-before 'check 'setenv-check
(lambda _
;; Our container doesn't provide access to /etc/mtab
(setenv "EXT2FS_NO_MTAB_OK" "1")
;; Make test reproducible
(setenv "GENIMAGE_MKFJFFS2" "mkfs.jffs2 -U")
- (setenv "GENIMAGE_MKE2FS" "mke2fs -E no_copy_xattrs")
- #t))
+ (setenv "GENIMAGE_MKE2FS" "mke2fs -E no_copy_xattrs")))
(replace 'check
(lambda _
(invoke "make" "TEST_LOG_COMPILER=" "check"))))))
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index 5f949a5af9..8c4f19d079 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -268,7 +268,7 @@ provided, as well as a framework to add new color models and data types.")
("libtiff" ,libtiff)
("libwebp" ,libwebp)
("maxflow" ,maxflow)
- ("openexr" ,openexr)
+ ("openexr" ,openexr-2)
("pango" ,pango)
("poppler" ,poppler)
("sdl2" ,sdl2)))
@@ -355,7 +355,7 @@ buffers.")
("libmng" ,libmng) ; optional, MNG support
("librsvg" ,librsvg) ; optional, SVG support
("libxcursor" ,libxcursor) ; optional, Mouse Cursor support
- ("openexr" ,openexr) ; optional, EXR support
+ ("openexr" ,openexr-2) ; optional, EXR support
("openjpeg" ,openjpeg) ; optional, JPEG 2000 support
("poppler" ,poppler) ; optional, PDF support
("poppler-data" ,poppler-data) ; optional, PDF support
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index b3553196dd..fe53c83741 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -4588,8 +4588,7 @@ and RDP protocols.")
;; much longer than the default of 30 seconds.
(substitute* "tests/meson.build"
(("test\\(unit_test\\[0\\], exe" all)
- (string-append all ", timeout : 90")))
- #t)))))
+ (string-append all ", timeout: 300"))))))))
(home-page "https://developer.gnome.org/dconf/")
(synopsis "Low-level GNOME configuration system")
(description "Dconf is a low-level configuration system. Its main purpose
@@ -12251,7 +12250,7 @@ integrated profiler via Sysprof, debugging support, and more.")
(define-public komikku
(package
(name "komikku")
- (version "0.35.1")
+ (version "0.35.2")
(source
(origin
(method git-fetch)
@@ -12261,7 +12260,7 @@ integrated profiler via Sysprof, debugging support, and more.")
(file-name (git-file-name name version))
(sha256
(base32
- "0975c55lmiwaqm0wj0ci91a90syjan3i99akrp0hl9m7r73jnfh9"))))
+ "11iq2mc8k7ny70vb0iqfjhj1hii0wvr4cv2p6b5rnjqdp6hc63n9"))))
(build-system meson-build-system)
(arguments
`(#:glib-or-gtk? #t
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index ce53695f87..db1c9b09c8 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -52,6 +52,7 @@
#:use-module (gnu packages admin)
#:use-module (gnu packages audio)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages m4)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages databases)
@@ -66,6 +67,7 @@
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages compression)
#:use-module (gnu packages fontutils)
+ #:use-module (gnu packages fonts)
#:use-module (gnu packages libevent)
#:use-module (gnu packages libreoffice) ;for hunspell
#:use-module (gnu packages image)
@@ -76,6 +78,7 @@
#:use-module (gnu packages node)
#:use-module (gnu packages xorg)
#:use-module (gnu packages gl)
+ #:use-module (gnu packages pciutils)
#:use-module (gnu packages assembly)
#:use-module (gnu packages rust)
#:use-module (gnu packages rust-apps)
@@ -583,9 +586,9 @@ in C/C++.")
(method hg-fetch)
(uri (hg-reference
(url "https://hg.mozilla.org/l10n/compare-locales/")
- (changeset "RELEASE_8_0_0")))
+ (changeset "RELEASE_8_1_0")))
(file-name "mozilla-compare-locales")
- (sha256 (base32 "0052wq92sg4i776x407b5838jx9h3phl9xy69m2q34f31n3gdyk2"))))
+ (sha256 (base32 "00bpkaqf2ng1nn9ajyb5mli0jq58q5fm2n3yy90jy0hp4q2gbs50"))))
(define (mozilla-locale locale changeset hash-string)
(origin
@@ -605,108 +608,110 @@ in C/C++.")
(mozilla-locales
;; sha256 changeset locale
;;---------------------------------------------------------------------------
- ("1q1p7nl97478hkf1msbbcdh98k6fn87xwqihbw8np00ll5gk9k4v" "97cf3c155484" "ach")
- ("0sajpblp639l448xywx7xlybjr5dm0rfrzx511a8pa9wn7dma4mf" "46929b4dda4e" "af")
- ("04s756aaf1yyli1dn1vfdjymgyjs1pz2n7jvz76j27x4nzdgss7l" "96ffd2b04ba3" "an")
- ("16nw7slm7irsnjf81r6zl273kbzri8sdbimzgzxwm0vh6xr61rgs" "1c4231166ddf" "ar")
- ("0i0qrj4j8zjv55cisbmr21dp8mz933hc9wkpn3abz5k5pn84gpry" "bc4384b8be78" "ast")
- ("1r77mmwg9x1jfa7g5lqa31rgyfrnix1zj80ibn5rq9gyhhsdrwbd" "dd56aead51fa" "az")
- ("1kzjpy5bnvps8di72ksynhbhc9bpw1ml6hvphm74z8dz55ai4c18" "9d2bff64ddfb" "be")
- ("1fygvjgph3siknfm7l0fh9y4ava72z1rxkip1zgmcdgq7jz8wzpf" "3808f4fe4db6" "bg")
- ("1x9nlqia441xh04rhkmkw6qrgpwnyqw0grrf5n2qw96939wnmgl7" "5ca8752ed8df" "bn")
- ("18yyxqzab44bgqx7h052d5nxyhv0l5bidgr16z1b3ak2crsfyx9q" "4c5d30ca9bf2" "br")
- ("11bschjz7pgsm4r1qan5l4s3nkzm5jb0kivpp186wd1xsjci5bjb" "cf2478a7eae1" "bs")
- ("12bak64nl6qi092l55xv330vh38mfsicrrf4wi693nn7zqb3mbpw" "4aa2cc349211" "ca")
- ("0p97d7pnxqs971rr5c57i6cw3mx1mp3iasa0xdmdk0zpz9pjd3s4" "806914072144" "ca-valencia")
- ("1rligf98h9r16mw3r3n5jalzi74xn2dnh6hkiixp7s2bvhjicwa4" "db2163383129" "cak")
- ("18y5j8ljh72mj2nbx0m64mi3fyjbwyx992i004sv3zvs4d4z18w4" "d1d09eedddde" "cs")
- ("12i4m9q6f8sl8arm8ja4gs4sl9m59p3kddlqi68srpz9mk66rqxz" "1caf58c64227" "cy")
- ("16wacsd23zd4j0yi6vbj033wylia8hlpswx949x5hy1h9817j4vn" "9ef3b56aa243" "da")
- ("1ddxnqpfi1wnciwmzkvvjinb51h22bg70r0dn7db17q64p4271rk" "a050b0eaec0a" "de")
- ("0gw5h52rw3bc2lwffnv845sjwwj22gmabchmpa1rw2y6087dc7zk" "613135cb0759" "dsb")
- ("0v17da37w1kbs73i6xql4c9xng6rfachyylpy3w8hpibpvi7i30n" "903db7c76b31" "el")
- ("0ky1nj4kp070nriw0igsa64l39plcv2365zl8lqpbydyp6clwc3m" "6bb74673e9aa" "en-CA")
- ("15jck6si2l4h5lrs8zjx56y97p70njpi26nnq6xfmvj1dk5qb4g2" "c06bd83a9295" "en-GB")
- ("1gc400n8j8qk70vdw7fkf4m9yviia35cmj6361pxnyvsjrgm4qvm" "ae0fda5114c4" "eo")
- ("0y01lahdrd3krsh6nrr3iw36r2x4advh5qw54vf92w11l3aiyvfz" "0c294dc9ce40" "es-AR")
- ("16jjbsfa62dxk36ccziv7nmh26c1s0b05960in6zs5nnfrv4yh35" "7c30b2981fb4" "es-CL")
- ("0qh8c8f8dsv1v56n1mcpn84l39bpnqfl8v8iacq12zh322srr549" "ad1444f4f833" "es-ES")
- ("1vh3hm5r4ch6mk3ymbk12b9rppwc75fmbi0i7cml82kxsi77bzw5" "0a26cdb23536" "es-MX")
- ("159l92jxx48lgba1g8ig3mdzhwsf3jpg3nx1g9blq4majk5hqr6q" "65a38a830795" "et")
- ("1ha8y1wbgb66dqm26x1q2xwygy7bblkjz40y9vh5d2qlpr3fn0av" "21e0930b221d" "eu")
- ("0rq4pcw6klm0bbljm1wdfvna8bpa35cm47hh2s63i2xdax4scahf" "5a4bb020cf09" "fa")
- ("1py2594gsvpgrxnplz278ffb7grsf384kzjskrl1zyps0jw8fb1x" "4a4f712cd4aa" "ff")
- ("1dyd55ngsglp1w2gh0yaacwb0vsq23gdvnj76f2x6g39h1li9s0z" "9c51cd915e2b" "fi")
- ("0kimwivpq6pr63jh1k9fszsv8bi8vns3scg76mmnvbhh2ca8q7wj" "4f9e24a696ee" "fr")
- ("1sbbnnp12lgy5qan2kix02942830b1969bd7jxrv7piwqfch9i06" "9e21a0eeb5b1" "fy-NL")
- ("0dsvvyfrzkx5h44gqgdci7arb8h4lq48w20cnr8fc7j17grvnkzz" "999a995bc09d" "ga-IE")
- ("1487msbsgrfzmyijhf6a4wbqdjpd7b7ki9nwrjjjjlnbw0h0ljpb" "6a9ddcab3240" "gd")
- ("1kzc4fwr18kgisdzba2acj1ag8mxbifqpk5p30jv68nmvqfsvl8d" "51eb5e352db9" "gl")
- ("13gy3wn44kcxr7j3sbl69fp415875f4vb0gm91hx0fysqlvryhcs" "b9de1ffe3224" "gn")
- ("0w5nvzpjn5vr35c1852rlff581vpy71nc096cz125852kyqkzkc3" "5b3307475ada" "gu-IN")
- ("1ycakc4qpy9vcy50j3ricryjfnjr9v3a5ijj6bbfl4y6aks157fy" "c742df968ffd" "he")
- ("1b2jf83c500wm5wcdnijq0b7y4m8n6271smq8pygahn5nq17f0gq" "1a3039a52b8a" "hi-IN")
- ("19bbw8ix5m83cf4yarcmjl7jqa8xfabwqnh3nj6vi52rwvn7whk5" "8dc50e269ef3" "hr")
- ("12rrsvgg6bb2h8fhni7jbx8pv983q8ym5fhfjim957n9q2yp5db6" "67e40f48dec7" "hsb")
- ("0apyh713p3hrlj8041xwblcssahbmsqp9v9hbmb50ayf4z850kr1" "40073a597b1b" "hu")
- ("0q0r076lq250d3vmnz9d92wj137c2v8i362c2avmkgp5zr3mcl0z" "2ea33335afdb" "hy-AM")
- ("0qza33gdc1i9259dwd2f7vd78s0a6rg34aqdkhcn7f2l6ybw6xd6" "930041db15eb" "ia")
- ("1211h0gp7gianh3qf76w04gfzk4n2bnyc9i8dviyz0vh4cjbx11m" "08811a49b41c" "id")
- ("12lcr841g1j7453s7gb51vrvxmshx4ha3h1jx4vh8wr891xv8l6a" "2f7a8d31e0ba" "is")
- ("1x585g0r2kcv0d3phnxx85bk5g0pi1yl0hwp4idv19yc9hslr04s" "188357cc04b4" "it")
- ("09v35g9v7j6x0p1hggydm3a1rmq2fh4z7g1l88z3w5k6wq2nhj1b" "45cee0ba4771" "ja")
- ("0prs3vycfvvaffjigdgyxiq41ak2rc34lnan5a6cwdqjgy7z450s" "d60a19d9bf17" "ja-JP-mac")
- ("1nskzm8rgczrbgcxlzzq5zqdfd456ad0cylq27nf0wjiyq6kjzcm" "00cb00e78672" "ka")
- ("0g6zznmhiam172nm7g2qzfpk415mna8kiihm73z2sdns64xb3ymg" "77a293a4bced" "kab")
- ("17dld9lrym7rpvpvnkssivp4wx1f11zpk86wczbq1h52qgd70p55" "2c9b33a56d5d" "kk")
- ("1nlzl8930c8ql3yq425wyqlxvq8arrjv20xpm5g7yfxd54av89ac" "9cddd42af05c" "km")
- ("07hkrcdksvrqk816yimd036dlw15nc4sjk4gmw16ywbp093v0mqq" "e0c2969a8398" "kn")
- ("08aqggvk3qbv5bzks9i1iba9akhkpm01d2c9k0zf41mpr2r5yfg2" "827567d0dafc" "ko")
- ("0vagaiwy80bs1k3gkacshlzb5zchkcshx0ypwirvayc63sw4yl8l" "694b2a24e868" "lij")
- ("1r43kp1kzahrbza0hiyavqplk9h08pzsb6rpjy79jr6l1iqb89sy" "d6728db7e060" "lt")
- ("0sq2wbsj79xl7fi454k6q5xdhxyck1whjz315rv37vphqpx86b9b" "61e9b33f4d94" "lv")
- ("0q8jxg1af22hs9wjdf0jd3bqk4rafxyzvsjl35k75am7l2y1fl3c" "9e482f6dd72c" "mk")
- ("1zsfzjrzbc58d30a9yz12h5vphywgpw8xg6y6zn3677a785dvr20" "1fd2763336a4" "mr")
- ("1rzygkkpn1a59daygd3hdaqph2np6sqvpgh68j0xr4il958ymnsm" "67ddab62dab4" "ms")
- ("16jp6w5gizfxs7jvncg3ly13m59vqvh4rlmjd0q23m5g5ff9sklc" "3ed015b51bf3" "my")
- ("1wfv023j67lb4iyf49fsknwm4z3xy0xqcf25b2nzanggxj26n01x" "d01801233a8f" "nb-NO")
- ("1946vfia58vbjfippb5pfsskbjj95w7hb340smn6ry2vmza99mxp" "582defb08fb2" "ne-NP")
- ("12w5ywh4c3s55y3zqc48cp1gcpwwjg444yfh1bghhhb9ni1xkh5i" "05f6359a29a6" "nl")
- ("17jb076320cgkw1ypwmws2vjxsqlv2ww8aaisa3j334vbrw1m4zx" "50b41a1ddded" "nn-NO")
- ("1y840j0v5zdgj94cbacy6j1snf44rynmzxq3yk8i26arcar62akl" "a6a138531a44" "oc")
- ("0jq1hq4xhqxpa26r8pb1bgbaljgfkhn9l6p5pbnslkllpbh70q6l" "e70a3afaef25" "pa-IN")
- ("1hih138skwy2gb8q10ngg6zalrk3aa3d549mg79gqzxbi5zy19fw" "e035f33389eb" "pl")
- ("1hhif4hx4k351wm1bzykzycfzb5q8msxmiwh5r1cy32rh8wkxwhh" "54098495f37f" "pt-BR")
- ("0gkjs12rxjml1m3mljskpz1gr6aph0c31nwpwdqybfg54w9qslib" "3fdf021f624e" "pt-PT")
- ("0anyvwd9v6mr8y3ww33s6qnxkawqn5lz65vrxx3m3kzky63ai1xk" "794f9374eb87" "rm")
- ("1p4drj25gsfv7lwgm5saazh38iqrh53952n8i4bmxpn0nadbm2n5" "71ce18bcf6cc" "ro")
- ("17yssf4axd3zvncl4ka4wkfnwcn0z0arp3390vb9cps67na29p36" "3a9587227699" "ru")
- ("0xk6rksspcw1222v4rgk5a6gzrpx64k29hm7p9qkqwd70s34yj46" "c020582a72ce" "si")
- ("1ax5ibydyn7sj208r66zcxlcr8dxdqrw28vqyjif4jx583rp4lfp" "745a699b7f51" "sk")
- ("13rin7hm1dv8g0hbcv8mp2hiwpk1k5bhzvkqpqajkkik4lx523mc" "8e437e2351ef" "sl")
- ("0yh5jkl5zw3f7x1w2w6zfj3dyvcl4wj1zv4di7qsq2nl2yyizf7x" "2d99e2eff94f" "son")
- ("0vzq7s27jsdbw5k59wfykysg1kd8w229ab5d4zjdf30l59igkahh" "69bbdf07bd80" "sq")
- ("1mwivvs8vrk6vjq6i33kwlrlisra7dy35521ayps9p2rz2dll4rr" "215df5c5125c" "sr")
- ("0g97yz1rg5cfflj8vvq3sqliyvm06x818z9yldfh5rjg1y6n9fjd" "8be00a1a50d4" "sv-SE")
- ("0ii02jn3lh2i6d0s95whx9aj6w3x8axc7w1rlzj0lc2s9n52krz3" "170a84339dbe" "ta")
- ("1ss7symad2crapxjqc0xhc0n17l79r5vf7flvkgk7npjky4vb7nv" "72a79a304f7f" "te")
- ("11iqmg8zamgscnvs4n2xpw3g9azn6w38qs313wiwm86pyx6694ss" "8e91ce3064c5" "th")
- ("1zgkvn9flb8by62ip9r3gmpgxwgkww1zhml5mwa0djq3ppfdgi1c" "0f914d0cda56" "tl")
- ("1filkhdak6dbrd83q602x1qw1703nlm53nm9gcyab8s16gsx6ylz" "62ca6a8eaeba" "tr")
- ("0cgagdy0ixprk3knczdmkqxkmx4ybmshhh0956kxbd0iab0dfcf6" "f110ccac4cde" "trs")
- ("1f1ghk67zwnwc5x3nk82vcv94nf8glngkfya1hg074q3088sj9pa" "56c0102d5f1c" "uk")
- ("0iyw1b2jjylkdwxv9sxvj4ikxl64sx612b2dvvmf1di8bw86w74r" "7d53bce5ae98" "ur")
- ("1q83cp5pfgs8l03zirwi8r5qp8qyh4zvxdx1ilgaqqlyg42yql7c" "9b500e1a054d" "uz")
- ("1d4nkybz2hk64ay04k965b9lc5nhhpmzcs5ww3b6q4n93rf9c2z7" "2a000025928a" "vi")
- ("1cnrsfnyl3sw3sxsggmjwydvphb2diy0vzknvxdhpnvq3ln18hga" "74724087c25b" "xh")
- ("1j6l66v1xw27z8w78mpsnmqgv8m277mf4r0hgqcrb4zx7xc2vqyy" "527e5e090608" "zh-CN")
- ("1frwx35klpyz3sdwrkz7945ivb2dwaawhhyfnz4092h9hn7rc4ky" "6cd366ad2947" "zh-TW")))
+ ("0f2lkv79gqf46f74905mab3zwyz1532chxlf9d28s548p1hw6lv9" "8312cd2e0777" "ach")
+ ("1v5jpmd0b04mizm9pjffp4r9q121vpq3yzkkxcgmrcwj4gc5jb2y" "21bf766c19d8" "af")
+ ("1fqjiq2la543z5pbbvd9kfs0wdc2phmqjbxascfsak854qy1z9f9" "34b6a4f0790d" "an")
+ ("0pl6j99xnali25glyr3g9fmj67v9vqmhd9k74i97f8q5n4xmv3ym" "513c3e8dac97" "ar")
+ ("0d1fbk9jcai19pi8b7i4y4r0gscqi1inr9dbahd6h0xbxfwc0zif" "19ca0cd0d1bf" "ast")
+ ("08f9b63wxxy28zaimjn1ab9w51bvrarc3pp75s7v6kzm5bk1jwic" "44aa0dad7964" "az")
+ ("15pksy9bgaxcbcnvvp8jwqnqxvvhq9vnljpai6jlh52yyrsglbwi" "5e4499355167" "be")
+ ("0gdg84jp1i4il4nc6gwaswdhc4ljbb9inyip7vhkng09v3pmwm0h" "98d006107851" "bg")
+ ("0i6vl0ag74phj4l38cvds1ds3jjdal1c8d7hy6pf4aqrp4ai32mh" "2ca52cbb680a" "bn")
+ ("16yavargwq8rhipzpmrrvyh68g3a6disz9g5m8xbhxvixhcsi5fr" "ce92556a0a90" "br")
+ ("1512dzp394pj66i13nsz76qh6fmjpz7r7fmvk8d0h7pjk0d6n0dy" "1c79dabdb120" "bs")
+ ("19wg0kbr2ihbn4lscsxg9agz04r8bsih4692vfgb6nyn1z8vx2i0" "a22912c01617" "ca")
+ ("1ixpzjb7caq1d9c7c044rxg3ymxs3hjw120kq85v004jrrb4d9c6" "34bf3fd631d4" "ca-valencia")
+ ("1abizdmd1c56syni1aanwwrfvmgzz25fmimbj2324bcw801ma9h0" "e2e4ba2c37bc" "cak")
+ ("0wgrg2wiz1jcj52nd4zl4shfkjhbngfj6p1gw1ywj266hk8g6pvw" "a60792bff6ff" "cs")
+ ("132f29111jd2z9yxpakkyri80mi2ggnik6zxaxqrp4vlcrd1fxd2" "66369fcad8c7" "cy")
+ ("04lpic3cxdj1imcwjkbk81avp9dpa1c9b1zcchrr1a4vyy4yfjpy" "af198d43f7d6" "da")
+ ("1h0rkwlsqls8k1qi1y68plw6xk0z2c5xc2y4nqywiirl71yz7fi5" "816fcef20c05" "de")
+ ("11lzdyl1h42zb1x2yxiv3r0wih8jy1gr0gzs5d1isdq53sa9cqnq" "962e5a544415" "dsb")
+ ("146jgrhl41k6zbxg58hxh1s088padsjz7ny8nm59i9i8d00jpv0a" "e7c49fd88463" "el")
+ ("1qppr44hdnrb1z1igcd1p0w5sy9vpihzilkl2w44y0v0v9rigppv" "5a0e35b08a48" "en-CA")
+ ("1v2irfms24cx9g5s6r1glmp2c000wi91axyca1pn37s7c01r0n4b" "72f8c5d8305d" "en-GB")
+ ("1y0rbbmax1w6jy4jacy27xgy4aqnd43izysw8qjwm0qhhfjvf3xh" "40994fca693d" "eo")
+ ("0kmjvinqpb3y81mqda1qq8k202aa36as9z1z775745bx6sbvkggz" "6cf3c836995d" "es-AR")
+ ("06rvd1z3l0r7hwnsnw90i0f5j2ysbv6wd3cl64g0bgifmwjk75hi" "8727dda3935e" "es-CL")
+ ("0gzw1rn9nzpgcrrc10indnbqqpax87azczrfxv8mn5n56j734hc0" "5351aba49895" "es-ES")
+ ("0bnmgisxfkb6rb12avhipbsj1yr0dyv56qjj9471gnc2ppq7k3c9" "dd834a4af402" "es-MX")
+ ("1951975h9w813qxanbk3frjz7c8knzx5rvq9i82j9i6x6a3fh6fi" "1f2150796079" "et")
+ ("1vkb5rd0k6vh9dbll3fhyzg8rfpkxxkd2rxwf66b8l3hg4fqd7f2" "2911663f4a7c" "eu")
+ ("1cj9zblfp94h86m7zd762bfmcfz0yxc1q4ra35s4wnnlqajarzwj" "04ec3c3bbe92" "fa")
+ ("1ininsyzaj7xd8ppmklm3zglgw1i0nhdy43iiyva32hb592zxy4m" "0cf866f9bc4e" "ff")
+ ("1hc308d71iygarrpliv7pxjz49gxwqg10d0pv8j4sbb2pw39bprl" "04a600fc54a4" "fi")
+ ("02nl54db9130rg59wmrrnh0z726fg5ir1njfcnhxagb4g5b7s69f" "64a3576df276" "fr")
+ ("1qbby23qlkxjz3vwlk8pd2w1w4cxdff8cq7j0ipk44mijkxkry0c" "c84177dfa254" "fy-NL")
+ ("1x23pg36ld5qnrmdn149rkl85ia8lmiqbzcac2bm0iqprnjdszii" "31590cffac56" "ga-IE")
+ ("005fpyr1lvw23dja3yrzx4y8wdih7vx6ljjpisf4pd3k5zai4x81" "ba4f274ac4a1" "gd")
+ ("0kdlb5q74n0fl5fxfy873s392kry69dmdl8b4gvqdyh5sy66vsqm" "56b41bdcd401" "gl")
+ ("0v8r8b0nrk1l4xipzhq16klmh0pinzcrma0s0gyhgzqqli6z7aym" "59e2afb65c08" "gn")
+ ("1grb1lq1f9p5jxgh9v78jl1wswxmsqxkcssm35l30k6y24pglr0m" "33b4409fb615" "gu-IN")
+ ("172fg55y8l90ix4c8s5x7f8mg6rc7779p6l852cnnkfqjgqa5a5f" "92f9f8238189" "he")
+ ("0i52nmg0yv3y1y3rkinxcyh51mgjksk7c3jlc8014801m3zvyxj7" "00090f7a2a3f" "hi-IN")
+ ("074q8n00yq54kzk632dwbs64r0sygvybbvwpd6hbvfpn38lz8hxf" "6e4a3fdc01f3" "hr")
+ ("1jxiz8zyxbpnwgk5xkwfxlr5f1zfyc88jcsajy8wcaifdkld3cwn" "7fd9bc25e49d" "hsb")
+ ("0ca11pmkzyd9ccrnrbmk0jrpcb03k88v4zivxblnxj4w03g0hyhq" "ce3b378ce950" "hu")
+ ("1yszljbh8f7w6lckfw22jwximy3yhis4430lfynfb8lh9nm0fw59" "c91a4a3e8821" "hy-AM")
+ ("0hhl8b8szqlhjdxhsa81zmgr303kr0jx5d6rzbi840qwf01h12sz" "4f235acc839e" "ia")
+ ("063yfk3nz3kignbri7r9sr3jwr5p9yyqc6sckgqs94hx6lvc355p" "fface86a34e4" "id")
+ ("1qszxkgliall4haaq6v0xayxikq43ddcdsn1d4m1mwyp7gdpbry5" "5978ae767b44" "is")
+ ("1fsfz9iz5pdd5r9ckdal6grvddchsc4r3r8gn4w6f2bja6vpbs05" "0c7d2a0e1304" "it")
+ ("1phkw0apiicgbw2nq3g392xncw1v2c4yac595h3nchs4q6rp9pd9" "1c923f3e88b9" "ja")
+ ("1y4gc4l6g72nphhsw4aqhcl80a7wi9qdy61h66c6jc6h14i7278d" "66f700940cfa" "ja-JP-mac")
+ ("0iqwj0y19zqcdclnn92z490s1g9vh2qr9gmkyfnpsz69llxidx1j" "49b4a7c6bb2c" "ka")
+ ("111nm2khff0zxnqqfc68rbi3j0b1nx5r4xai7b8yymyv1i0qbsxd" "4854facbd60b" "kab")
+ ("12p7lg2p6pcqdlb4bqbz5isxilw2r9vb8344sh8zrvv9cb9jq04f" "d2fda8a1b287" "kk")
+ ("142vpw9npqgc8b5zcg5cy2lh07s4mg8xfbaymg44fb4j3s6agw88" "3a5a1cae9b93" "km")
+ ("00v1sd2byj2ksxw1020z142cdlxa7ri2v1rzjrhay9l465bj3k8x" "6ed122b33cac" "kn")
+ ("1s07yhwzpxj0l5vj5lzbvgw115sjx1g2zgbqca5wln95dds39npl" "49bc07645a47" "ko")
+ ("1b4brfww0w7x1h3ff19i6xi8xq2cb1hxysilira6yq4rb6vhlmly" "93f04df12616" "lij")
+ ("1i30my0bbgm9z02rxxi7x4vc69bs3bnjs9l2q6jd8xvs1ga3vc7n" "e1f4e0d87509" "lt")
+ ("1bjh4xlx6562hxq527cqcn4b5295dsdpwn4c4y5ci902nlh6fc8l" "daea4ba4e7f4" "lv")
+ ("0vig42slcx6bhpisyc1bnyklr95lbv7vqd1ckiywp5c5qzfa9afi" "0c4ca0f4fc17" "mk")
+ ("10qfnkqi2snmgvm4vcrmp2489klchv3hn2c4rmkdhi5bilfk42jx" "9be8d5951976" "mr")
+ ("1bkn8ds3fyz710ck4gg4g5vpv23bi573ssm9xbiyl8y59pvbig9b" "0f44d0bcfda2" "ms")
+ ("1j9af3axbijn0s8y96310mvgaq5a36m0r3ij550jv5bv52862crj" "ccbf0c4355d6" "my")
+ ("0lspnp9jn3rrgz3djnmc0qrb6ymigvqnr3fb0jbhmf83r4yfs8z1" "a6cf2c6e3594" "nb-NO")
+ ("1xp2884m9gqm9gaakc747bd9j55wssrh3qsf4y4k02ijh08sfmwb" "c1636a1a7507" "ne-NP")
+ ("0y1fxp9pxia6x2wxdharh2ynvzdqcmzpya1gdb89pcv5qyrzqgcl" "60ed1c2397a6" "nl")
+ ("1nbp924p7fp2c76ym71wp34vk96z89i4g2rfgpsi54cgv42a6vgq" "a7f9a3d35875" "nn-NO")
+ ("1yrmhyvb6skypcyvi6j3py51sdkq9vn35zkryx6rdp8ygqwm1va7" "9ac29828960e" "oc")
+ ("0rn2414ji1icar627arf5rjwl9r9vxhznbfsyxgrmrf0p6dp72fv" "87720cc32205" "pa-IN")
+ ("09lam6yaprc8zyisq0pcdj4afpg930c2x3x47gdxnqfyhmcfygs7" "56b2c592ffba" "pl")
+ ("0mbc1a8wvjs3k928qh0k800d230251i0rw0myhdpc6mk3xjna7i5" "89f1b173c9b1" "pt-BR")
+ ("1v1qa5slllz78222rlqr4b8k7c8dapmx8d7s5nb90wdffic0zcqy" "27adc5dad781" "pt-PT")
+ ("04k6h5d7c740lz1hx1vavj6p0fmhgn9mm3nwvk4p9iccy5nw5pmf" "83e2e4833fc3" "rm")
+ ("0f0hz792wr17mgi6n190dliqx67479aqg3y2ak0jg0fiz2c8qr7p" "69cdc288966f" "ro")
+ ("17yngj0v30687m7fa1ls0g86vjg8jzxs7bnsca91jpxf3ij44xp6" "03046775600f" "ru")
+ ("1fvz23nphs9i4gdkx9fcy5ahdk2f879281pchclwi0qlciq7digr" "61ea93a50fff" "sco")
+ ("0yc1iwqbnpnf1i7yz3zqrx6g8pinc7l53pvbczywfkq3rz6wmmf5" "2b134d24c046" "si")
+ ("0kizljksn2vn4yw7qlv7c8h2m75f7n9ddg6n6ag3hwxxip83hn4y" "6d69c24dc8db" "sk")
+ ("1ll936b18wy464623jc5smf3c6dpimh0qwn28a991h7zcw31n3kp" "29e195d1d160" "sl")
+ ("14w9n994z9gf0wx7vrqisyxkngvhmmnayx8r0vwiq8k7jy81sxlm" "60a3b235fe1d" "son")
+ ("0z7bcfvq6x6dxf4d4bbjsg36r5npkr89087b0j360ljampk6c2fn" "8588cbc89847" "sq")
+ ("1fcq9g89lhzckzr2qb6x0w0z6q486n9jdqfi6h70dx8b069b3jfj" "198f7e89f10d" "sr")
+ ("0ap3m1sbibnaj9s2l139m7l8cc8s2ky4jlxwgzbxdzvqxfz7n954" "b098e2ebc049" "sv-SE")
+ ("0k93gnwfs5mahb9vz1c65ddcbkav0cwhxnrww3qk7gcmn7q88gqk" "25951b964d5b" "szl")
+ ("0b0v5pcwvhvhg8vlzy26g3j0m1r8svrpq07hq0q7lxldwlb48phz" "94659c83c9d8" "ta")
+ ("1v35cl6m3ikzsriq6zkjzjs3p9bhl8zmbp2gl14mga1f1zy4kcah" "eb59646a5d36" "te")
+ ("0y3r30mjgxngjraqmf5cm00kgqx2pvhbvy8sfxb3fhypv9vda3yr" "10d257301a2d" "th")
+ ("1inyqk495py20jwjvs4yl0n5ncf3hhb896bs1lwfsgpvbvr5hbq1" "9be6adca0e51" "tl")
+ ("0vsirjs655cia9n8dys2r84bvg303hcxkk2w6a9j3dkbifq5ymk6" "51354c936bf6" "tr")
+ ("050x882c0ywil290k4g861njw70ffw2y55dqk3w0kffi972mm909" "d7510f2d01dc" "trs")
+ ("001ykwxkwibavbi1k42b1hmysb3gmrwcs68zmw96m1vc80p29nz1" "4d1fa878042b" "uk")
+ ("0lsz6jlmmsqdg47pdx8b1djjvcavi0wlyr0mkpyhjgpginag21zx" "ad3035f28183" "ur")
+ ("0d3ggm3q76pkpg4n3lz2ji4pbb47n885byqxbp7sk6n9vlgzir7l" "8ea7a5a051db" "uz")
+ ("0v7d8y6xsr6yf2s1sjxnsjmw0hdnj91f0w2da6spkifb52lmbv6v" "67fe2acb306f" "vi")
+ ("0j8l09vzqlw4zlkyp6wkh44c5gr1xgbcmnawks1zj7xz02ambwii" "abc22dfb6d84" "xh")
+ ("1c01pbyswixkjg42714fvfy33b09mpdbf4d8f8kcs88c86jpf07z" "d6d6f9bb6113" "zh-CN")
+ ("0yq8fqdz862pnlbvfsqfc152rhpsqgncvp8bqkd653mdfv4qkwr4" "0cbdc5f1a048" "zh-TW")))
;; XXXX: Workaround 'snippet' limitations.
(define computed-origin-method (@@ (guix packages) computed-origin-method))
-(define %icecat-version "78.15.0-guix0-preview1")
-(define %icecat-build-id "20211005000000") ;must be of the form YYYYMMDDhhmmss
+(define %icecat-version "91.2.0-guix0-preview1")
+(define %icecat-build-id "20211006000000") ;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'
@@ -728,11 +733,11 @@ in C/C++.")
"firefox-" upstream-firefox-version ".source.tar.xz"))
(sha256
(base32
- "0l91cxdc5v9fps79ckb1kid4gw6v5qng1jd9zvaacwaiv628shx4"))))
+ "1hs2bvzl0d4kfir3gq997kwxm90ygapqn6xlw47cihnh479wzwry"))))
- (upstream-icecat-base-version "78.7.0") ; maybe older than base-version
+ (upstream-icecat-base-version "91.2.0") ; maybe older than base-version
;;(gnuzilla-commit (string-append "v" upstream-icecat-base-version))
- (gnuzilla-commit "abfe5eebaca3c2787f1a9505669393674493c177")
+ (gnuzilla-commit "1537880dac3087d3779543303f0df83432831166")
(gnuzilla-source
(origin
(method git-fetch)
@@ -744,7 +749,7 @@ in C/C++.")
(string-take gnuzilla-commit 8)))
(sha256
(base32
- "00ws3540x5whpicc5fx4k949ff73cqvajz6jp13ahn49wqdads47"))))
+ "16r42hp05qmiifw8ym89328w5b4flp3hngpjwbrzgq23q1qmixa9"))))
;; 'search-patch' returns either a valid file name or #f, so wrap it
;; in 'assume-valid-file-name' to avoid 'local-file' warnings.
@@ -769,10 +774,10 @@ in C/C++.")
(icecat-dir
(string-append "icecat-" #$%icecat-version)))
- (mkdir "/tmp/bin")
(set-path-environment-variable
"PATH" '("bin")
- (list "/tmp"
+ (list #+rename
+ #+python
#+(canonical-package bash)
#+(canonical-package coreutils)
#+(canonical-package findutils)
@@ -782,11 +787,20 @@ in C/C++.")
#+(canonical-package grep)
#+(canonical-package bzip2)
#+(canonical-package gzip)
- #+(canonical-package tar)
- #+rename))
+ #+(canonical-package tar)))
- (symlink #+(file-append rename "/bin/rename")
- "/tmp/bin/prename")
+ (set-path-environment-variable
+ "PYTHONPATH"
+ (list #+(format #f "lib/python~a/site-packages"
+ (version-major+minor
+ (package-version python))))
+ '#+(cons python-jsonschema
+ (map second
+ (package-transitive-propagated-inputs
+ python-jsonschema))))
+
+ ;; Needed by the 'makeicecat' script.
+ (setenv "RENAME_CMD" "rename")
;; We copy the gnuzilla source directory because it is
;; read-only in 'gnuzilla-source', and the makeicecat script
@@ -803,20 +817,22 @@ in C/C++.")
"-p1" "--input" #+makeicecat-patch)
(patch-shebang "makeicecat")
(substitute* "makeicecat"
- (("^FFMAJOR=(.*)" all ffmajor)
+ (("^readonly FFMAJOR=(.*)" all ffmajor)
(unless (string=? #$major-version
(string-trim-both ffmajor))
;; The makeicecat script cannot be expected to work
;; properly on a different version of Firefox, even if
;; no errors occur during execution.
(error "makeicecat major version mismatch"))
- (string-append "FFMAJOR=" #$major-version "\n"))
- (("^FFMINOR=.*")
- (string-append "FFMINOR=" #$minor-version "\n"))
- (("^FFSUB=.*")
- (string-append "FFSUB=" #$sub-version "\n"))
- (("^DATA=.*")
- "DATA=/tmp/gnuzilla/data\n")
+ (string-append "readonly FFMAJOR=" #$major-version "\n"))
+ (("^readonly FFMINOR=.*")
+ (string-append "readonly FFMINOR=" #$minor-version "\n"))
+ (("^readonly FFSUB=.*")
+ (string-append "readonly FFSUB=" #$sub-version "\n"))
+ (("^readonly DATADIR=.*")
+ "readonly DATADIR=/tmp/gnuzilla/data\n")
+ (("^readonly SOURCEDIR=.*")
+ (string-append "readonly SOURCEDIR=" icecat-dir "\n"))
(("/bin/sed")
#+(file-append (canonical-package sed) "/bin/sed"))))
@@ -854,11 +870,11 @@ in C/C++.")
#:log (%make-void-port "w"))
(delete-file "compare-locales/.gitignore")
(delete-file "compare-locales/.hgignore")
- (delete-file "compare-locales/.hgtags"))
+ (delete-file "compare-locales/.hgtags")))
- (format #t "Running makeicecat script...~%")
- (force-output)
- (invoke "bash" "/tmp/gnuzilla/makeicecat"))
+ (format #t "Running makeicecat script...~%")
+ (force-output)
+ (invoke "bash" "/tmp/gnuzilla/makeicecat")
(format #t "Packing IceCat source tarball...~%")
(force-output)
@@ -892,12 +908,15 @@ in C/C++.")
("gtk+" ,gtk+)
("gtk+-2" ,gtk+-2)
;; UNBUNDLE-ME! ("graphite2" ,graphite2)
+ ("cairo" ,cairo)
("pango" ,pango)
("freetype" ,freetype)
+ ("font-dejavu" ,font-dejavu)
;; UNBUNDLE-ME! ("harfbuzz" ,harfbuzz)
("libcanberra" ,libcanberra)
("libgnome" ,libgnome)
("libjpeg-turbo" ,libjpeg-turbo)
+ ("libpng-apng" ,libpng-apng)
;; UNBUNDLE-ME! ("libogg" ,libogg)
;; UNBUNDLE-ME! ("libtheora" ,libtheora) ; wants theora-1.2, not yet released
;; UNBUNDLE-ME! ("libvorbis" ,libvorbis)
@@ -909,29 +928,31 @@ in C/C++.")
("libxt" ,libxt)
("libffi" ,libffi)
("ffmpeg" ,ffmpeg)
- ;; UNBUNDLE-ME! ("libvpx" ,libvpx)
- ("icu4c" ,icu4c-67)
+ ("libvpx" ,libvpx)
+ ("icu4c" ,icu4c)
("pixman" ,pixman)
("pulseaudio" ,pulseaudio)
("mesa" ,mesa)
+ ("pciutils" ,pciutils)
("mit-krb5" ,mit-krb5)
+ ("hunspell" ,hunspell)
+ ("libnotify" ,libnotify)
;; See <https://bugs.gnu.org/32833>
;; and related comments in the 'remove-bundled-libraries' phase.
;; UNBUNDLE-ME! ("nspr" ,nspr)
;; UNBUNDLE-ME! ("nss" ,nss)
("shared-mime-info" ,shared-mime-info)
- ;; UNBUNDLE-ME! ("sqlite" ,sqlite)
+ ("sqlite" ,sqlite)
("eudev" ,eudev)
("unzip" ,unzip)
("zip" ,zip)
- ;; UNBUNDLE-ME! ("zlib" ,zlib)
- ))
+ ("zlib" ,zlib)))
(native-inputs
;; The following patches are specific to the Guix packaging of IceCat,
;; and therefore we prefer to leave them out of 'source', which should be
;; a tarball suitable for compilation on any system that IceCat supports.
;; (Bug fixes and security fixes, however, should go in 'source').
- `(;; XXX TODO: Adapt these patches to IceCat 68.
+ `(;; XXX TODO: Adapt these patches to IceCat 91.
;; ("icecat-avoid-bundled-libraries.patch"
;; ,(search-patch "icecat-avoid-bundled-libraries.patch"))
;; ("icecat-use-system-graphite2+harfbuzz.patch"
@@ -941,11 +962,11 @@ in C/C++.")
("patch" ,(canonical-package patch))
- ("rust" ,rust)
- ("cargo" ,rust "cargo")
- ("rust-cbindgen" ,rust-cbindgen-0.14)
- ("llvm" ,llvm)
- ("clang" ,clang)
+ ("rust" ,rust-1.51)
+ ("cargo" ,rust-1.51 "cargo")
+ ("rust-cbindgen" ,rust-cbindgen-0.19)
+ ("llvm" ,llvm-11)
+ ("clang" ,clang-11)
("perl" ,perl)
("node" ,node)
("python" ,python)
@@ -954,14 +975,15 @@ in C/C++.")
("yasm" ,yasm)
("nasm" ,nasm) ; XXX FIXME: only needed on x86_64 and i686
("pkg-config" ,pkg-config)
- ("autoconf" ,autoconf-2.13)
+ ("m4" ,m4)
("which" ,which)))
(arguments
- `(#:tests? #f ; no check target
- #:out-of-source? #t ; must be built outside of the source directory
+ `(#:tests? #f ;not worth the cost
- #:configure-flags `("--enable-default-toolkit=cairo-gtk3-wayland"
+ ;; Some dynamic lib was determined at runtime, so rpath check may fail.
+ #:validate-runpath? #f
+ #:configure-flags `("--enable-application=browser"
"--with-distribution-id=org.gnu"
;; Do not require addons in the global app or
@@ -981,6 +1003,12 @@ in C/C++.")
"--disable-debug"
"--disable-debug-symbols"
+ "--enable-rust-simd"
+ "--enable-release"
+ "--enable-optimize"
+ "--enable-strip"
+ "--disable-elf-hack"
+
;; Clang is needed to build Stylo, Mozilla's new
;; CSS engine. We must specify the clang paths
;; manually, because otherwise the Mozilla build
@@ -1001,7 +1029,8 @@ in C/C++.")
;; Avoid bundled libraries.
"--with-system-jpeg" ; must be libjpeg-turbo
- ;; UNBUNDLE-ME! "--with-system-zlib"
+ "--with-system-png" ; must be libpng-apng
+ "--with-system-zlib"
;; UNBUNDLE-ME! "--with-system-bz2"
;; UNBUNDLE-ME! "--with-system-libevent"
;; UNBUNDLE-ME! "--with-system-ogg"
@@ -1021,26 +1050,14 @@ in C/C++.")
"--enable-system-pixman"
"--enable-system-ffi"
;; UNBUNDLE-ME! "--enable-system-sqlite"
-
- ;; Fails with "--with-system-png won't work because
- ;; the system's libpng doesn't have APNG support".
- ;; According to
- ;; http://sourceforge.net/projects/libpng-apng/ ,
- ;; "the Animated Portable Network Graphics (APNG)
- ;; is an unofficial extension of the Portable
- ;; Network Graphics (PNG) format";
- ;; we probably do not wish to support it.
- ;; "--with-system-png"
)
#:imported-modules ,%cargo-utils-modules ;for `generate-all-checksums'
#:modules ((ice-9 ftw)
- (ice-9 rdelim)
- (ice-9 regex)
(ice-9 match)
- (srfi srfi-34)
- (srfi srfi-35)
+ (srfi srfi-1)
+ (srfi srfi-26)
(rnrs bytevectors)
(rnrs io ports)
(guix elf)
@@ -1112,22 +1129,7 @@ in C/C++.")
;; UNBUNDLE-ME! "db/sqlite3"
))
#t))
- (add-after 'remove-bundled-libraries 'link-libxul-with-libraries
- (lambda _
- ;; libxul.so dynamically opens libraries, so here we explicitly
- ;; link them into libxul.so instead.
- ;;
- ;; TODO: It might be preferable to patch in absolute file names in
- ;; calls to dlopen or PR_LoadLibrary, but that didn't seem to
- ;; work. More investigation is needed.
- (substitute* "toolkit/library/moz.build"
- (("^# This library needs to be last" all)
- (string-append "OS_LIBS += [
- 'GL', 'gnome-2', 'canberra', 'Xss', 'cups', 'gssapi_krb5',
- 'avcodec', 'avutil', 'pulse' ]\n\n"
- all)))
- #t))
- (add-after 'link-libxul-with-libraries 'fix-ffmpeg-runtime-linker
+ (add-after 'remove-bundled-libraries 'fix-ffmpeg-runtime-linker
(lambda* (#:key inputs #:allow-other-keys)
(let* ((ffmpeg (assoc-ref inputs "ffmpeg"))
(libavcodec (string-append ffmpeg "/lib/libavcodec.so")))
@@ -1135,31 +1137,37 @@ in C/C++.")
(substitute* "dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp"
(("libavcodec\\.so")
libavcodec))
- ;; Populate the sandbox read-path whitelist as needed by ffmpeg.
- (let* ((mime-info (assoc-ref inputs "shared-mime-info"))
- (libavcodec-runpath (call-with-input-file libavcodec
- (compose elf-dynamic-info-runpath
- elf-dynamic-info
- parse-elf
- get-bytevector-all)))
- (whitelist (cons (string-append mime-info "/share/mime/")
- (map (lambda (dir)
- (string-append dir "/"))
- libavcodec-runpath)))
- (whitelist-string (string-join whitelist ","))
- (port (open-file "browser/app/profile/icecat.js" "a")))
- (format #t "setting 'security.sandbox.content.read_path_whitelist' to '~a'~%"
- whitelist-string)
- (format port "~%pref(\"security.sandbox.content.read_path_whitelist\", ~S);~%"
- whitelist-string)
- (close-output-port port))
#t)))
- (replace 'bootstrap
- (lambda _
- (invoke "sh" "-c" "autoconf old-configure.in > old-configure")
- ;; 'configure' must be newer than 'old-configure.in', or else the
- ;; build system will raise an alarm and abort.
- (invoke "touch" "configure")))
+ (add-after 'fix-ffmpeg-runtime-linker 'build-sandbox-whitelist
+ (lambda* (#:key inputs #:allow-other-keys)
+ (define (runpath-of lib)
+ (call-with-input-file lib
+ (compose elf-dynamic-info-runpath
+ elf-dynamic-info
+ parse-elf
+ get-bytevector-all)))
+ (define (runpaths-of-input label)
+ (let* ((dir (string-append (assoc-ref inputs label) "/lib"))
+ (libs (find-files dir "\\.so$")))
+ (append-map runpath-of libs)))
+ ;; Populate the sandbox read-path whitelist as needed by ffmpeg.
+ (let* ((whitelist
+ (map (cut string-append <> "/")
+ (delete-duplicates
+ `(,(string-append (assoc-ref inputs "shared-mime-info")
+ "/share/mime")
+ ,(string-append (assoc-ref inputs "font-dejavu")
+ "/share/fonts")
+ ,@(append-map runpaths-of-input
+ '("mesa" "ffmpeg"))))))
+ (whitelist-string (string-join whitelist ","))
+ (port (open-file "browser/app/profile/icecat.js" "a")))
+ (format #t "setting 'security.sandbox.content.read_path_whitelist' to '~a'~%"
+ whitelist-string)
+ (format port "~%pref(\"security.sandbox.content.read_path_whitelist\", ~S);~%"
+ whitelist-string)
+ (close-output-port port))
+ #t))
(add-after 'patch-source-shebangs 'patch-cargo-checksums
(lambda _
(use-modules (guix build cargo-utils))
@@ -1190,6 +1198,7 @@ in C/C++.")
"security/manager/ssl"
"build")))
#t))
+ (delete 'bootstrap)
(replace 'configure
;; configure does not work followed by both "SHELL=..." and
;; "CONFIG_SHELL=..."; set environment variables instead
@@ -1197,57 +1206,88 @@ in C/C++.")
(let* ((out (assoc-ref outputs "out"))
(bash (which "bash"))
(abs-srcdir (getcwd))
- (srcdir (string-append "../" (basename abs-srcdir)))
(flags `(,(string-append "--prefix=" out)
,(string-append "--with-l10n-base="
abs-srcdir "/l10n")
,@configure-flags)))
(setenv "SHELL" bash)
(setenv "CONFIG_SHELL" bash)
- (setenv "AUTOCONF" (which "autoconf")) ; must be autoconf-2.13
- (setenv "CC" "gcc") ; apparently needed when Stylo is enabled
- (setenv "MOZ_BUILD_DATE" ,%icecat-build-id) ; avoid timestamp
+
+ (setenv "AR" "llvm-ar")
+ (setenv "NM" "llvm-nm")
+ (setenv "CC" "clang")
+ (setenv "CXX" "clang++")
(setenv "LDFLAGS" (string-append "-Wl,-rpath="
(assoc-ref outputs "out")
"/lib/icecat"))
- (mkdir "../build")
- (chdir "../build")
+
+ (setenv "MACH_USE_SYSTEM_PYTHON" "1")
+ (setenv "MOZ_NOSPAM" "1")
+ (setenv "MOZ_BUILD_DATE" ,%icecat-build-id) ; avoid timestamp
+
(format #t "build directory: ~s~%" (getcwd))
(format #t "configure flags: ~s~%" flags)
- (apply invoke bash
- (string-append srcdir "/configure")
- flags))))
+
+ (call-with-output-file "mozconfig"
+ (lambda (out)
+ (for-each (lambda (flag)
+ (format out "ac_add_options ~a\n" flag))
+ flags)))
+
+ (invoke "./mach" "configure"))))
(replace 'build
- ;; The build system often spuriously fails. See
- ;; <https://bugs.gentoo.org/show_bug.cgi?id=680934>. To
- ;; work around this, we try the standard 'build' phase up
- ;; to 5 times.
- (lambda args
- (let ((build (assoc-ref %standard-phases 'build)))
- (let retry ((remaining-attempts 5))
- (if (= remaining-attempts 1)
- (apply build args)
- (guard (c ((invoke-error? c)
- (format #t "~%Retrying build! (~a attempts remaining)~%~%"
- (- remaining-attempts 1))
- (force-output)
- (retry (- remaining-attempts 1))))
- (apply build args)))))))
+ (lambda* (#:key (make-flags '()) (parallel-build? #t)
+ #:allow-other-keys)
+ (apply invoke "./mach" "build"
+ ;; mach will use parallel build if possible by default
+ `(,@(if parallel-build?
+ '()
+ '("-j1"))
+ ,@make-flags))))
(add-after 'build 'neutralise-store-references
(lambda _
;; Mangle the store references to compilers & other build tools in
;; about:buildconfig, reducing IceCat's closure by 1 GiB on x86-64.
- (substitute*
- "dist/bin/chrome/toolkit/content/global/buildconfig.html"
- (((format #f "(~a/)([0-9a-df-np-sv-z]{32})"
- (regexp-quote (%store-directory)))
- _ store hash)
- (string-append store
- (string-take hash 8)
- "<!-- Guix: not a runtime dependency -->"
- (string-drop hash 8))))
+ (let* ((obj-dir (match (scandir "." (cut string-prefix? "obj-" <>))
+ ((dir) dir)))
+ (file (string-append
+ obj-dir
+ "/dist/bin/chrome/toolkit/content/global/buildconfig.html")))
+ (substitute* file
+ (("[0-9a-df-np-sv-z]{32}" hash)
+ (string-append (string-take hash 8)
+ "<!-- Guix: not a runtime dependency -->"
+ (string-drop hash 8)))))
#t))
- (add-before 'configure 'install-desktop-entry
+ (replace 'install
+ (lambda _ (invoke "./mach" "install")))
+ (add-after 'install 'wrap-program
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (lib (string-append out "/lib"))
+ (gtk (assoc-ref inputs "gtk+"))
+ (gtk-share (string-append gtk "/share"))
+ (ld-libs (map (lambda (label)
+ (string-append (assoc-ref inputs label)
+ "/lib"))
+ '("libpng-apng"
+ "libxscrnsaver"
+ "mesa"
+ "pciutils"
+ "mit-krb5"
+ "eudev"
+ "pulseaudio"
+ ;; For the integration of native notifications
+ "libnotify"))))
+ (wrap-program (car (find-files lib "^icecat$"))
+ `("XDG_DATA_DIRS" prefix (,gtk-share))
+ ;; The following line is commented out because the icecat
+ ;; package on guix has been observed to be unstable when
+ ;; using wayland, and the bundled extensions stop working.
+ ;; `("MOZ_ENABLE_WAYLAND" = ("1"))
+ `("LD_LIBRARY_PATH" prefix ,ld-libs))
+ #t)))
+ (add-after 'wrap-program 'install-desktop-entry
(lambda* (#:key outputs #:allow-other-keys)
;; Install the '.desktop' file.
(let* ((desktop-file "taskcluster/docker/icecat-snap/icecat.desktop")
@@ -1275,30 +1315,7 @@ in C/C++.")
'("default16.png" "default22.png" "default24.png"
"default32.png" "default48.png" "content/icon64.png"
"mozicon128.png" "default256.png"))
- #t))))
- ;; This fixes the file chooser crash that happens with GTK 3.
- (add-after 'install 'wrap-program
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (lib (string-append out "/lib"))
- (gtk (assoc-ref inputs "gtk+"))
- (gtk-share (string-append gtk "/share"))
- (ld-libs (map (lambda (lib)
- (string-append (assoc-ref inputs lib)
- "/lib"))
- '("libxscrnsaver"
- "mesa"
- "mit-krb5"
- "eudev"
- "pulseaudio"))))
- (wrap-program (car (find-files lib "^icecat$"))
- `("XDG_DATA_DIRS" prefix (,gtk-share))
- ;; The following line is commented out because the icecat
- ;; package on guix has been observed to be unstable when
- ;; using wayland, and the bundled extensions stop working.
- ;; `("MOZ_ENABLE_WAYLAND" = ("1"))
- `("LD_LIBRARY_PATH" prefix ,ld-libs))
- #t))))))
+ #t)))))))
(home-page "https://www.gnu.org/software/gnuzilla/")
(synopsis "Entirely free browser derived from Mozilla Firefox")
(description
@@ -1306,7 +1323,7 @@ in C/C++.")
software, which does not recommend non-free plugins and addons. It also
features built-in privacy-protecting features.
-WARNING: IceCat 78 has not yet been released by the upstream IceCat project.
+WARNING: IceCat 91 has not yet been released by the upstream IceCat project.
This is a preview release, and does not currently meet the privacy-respecting
standards of the IceCat project.")
(license license:mpl2.0) ;and others, see toolkit/content/license.html
@@ -1315,13 +1332,290 @@ standards of the IceCat project.")
(cpe-name . "firefox_esr")
(cpe-version . ,(first (string-split version #\-)))))))
+(define mozilla-78-compare-locales
+ (origin
+ (method hg-fetch)
+ (uri (hg-reference
+ (url "https://hg.mozilla.org/l10n/compare-locales/")
+ (changeset "RELEASE_8_0_0")))
+ (file-name "mozilla-compare-locales")
+ (sha256 (base32 "0052wq92sg4i776x407b5838jx9h3phl9xy69m2q34f31n3gdyk2"))))
+
+(define all-mozilla-78-locales
+ (mozilla-locales
+ ;; sha256 changeset locale
+ ;;---------------------------------------------------------------------------
+ ("1q1p7nl97478hkf1msbbcdh98k6fn87xwqihbw8np00ll5gk9k4v" "97cf3c155484" "ach")
+ ("0sajpblp639l448xywx7xlybjr5dm0rfrzx511a8pa9wn7dma4mf" "46929b4dda4e" "af")
+ ("04s756aaf1yyli1dn1vfdjymgyjs1pz2n7jvz76j27x4nzdgss7l" "96ffd2b04ba3" "an")
+ ("16nw7slm7irsnjf81r6zl273kbzri8sdbimzgzxwm0vh6xr61rgs" "1c4231166ddf" "ar")
+ ("0i0qrj4j8zjv55cisbmr21dp8mz933hc9wkpn3abz5k5pn84gpry" "bc4384b8be78" "ast")
+ ("1r77mmwg9x1jfa7g5lqa31rgyfrnix1zj80ibn5rq9gyhhsdrwbd" "dd56aead51fa" "az")
+ ("1kzjpy5bnvps8di72ksynhbhc9bpw1ml6hvphm74z8dz55ai4c18" "9d2bff64ddfb" "be")
+ ("1fygvjgph3siknfm7l0fh9y4ava72z1rxkip1zgmcdgq7jz8wzpf" "3808f4fe4db6" "bg")
+ ("1x9nlqia441xh04rhkmkw6qrgpwnyqw0grrf5n2qw96939wnmgl7" "5ca8752ed8df" "bn")
+ ("18yyxqzab44bgqx7h052d5nxyhv0l5bidgr16z1b3ak2crsfyx9q" "4c5d30ca9bf2" "br")
+ ("11bschjz7pgsm4r1qan5l4s3nkzm5jb0kivpp186wd1xsjci5bjb" "cf2478a7eae1" "bs")
+ ("12bak64nl6qi092l55xv330vh38mfsicrrf4wi693nn7zqb3mbpw" "4aa2cc349211" "ca")
+ ("0p97d7pnxqs971rr5c57i6cw3mx1mp3iasa0xdmdk0zpz9pjd3s4" "806914072144" "ca-valencia")
+ ("1rligf98h9r16mw3r3n5jalzi74xn2dnh6hkiixp7s2bvhjicwa4" "db2163383129" "cak")
+ ("18y5j8ljh72mj2nbx0m64mi3fyjbwyx992i004sv3zvs4d4z18w4" "d1d09eedddde" "cs")
+ ("12i4m9q6f8sl8arm8ja4gs4sl9m59p3kddlqi68srpz9mk66rqxz" "1caf58c64227" "cy")
+ ("16wacsd23zd4j0yi6vbj033wylia8hlpswx949x5hy1h9817j4vn" "9ef3b56aa243" "da")
+ ("1ddxnqpfi1wnciwmzkvvjinb51h22bg70r0dn7db17q64p4271rk" "a050b0eaec0a" "de")
+ ("0gw5h52rw3bc2lwffnv845sjwwj22gmabchmpa1rw2y6087dc7zk" "613135cb0759" "dsb")
+ ("0v17da37w1kbs73i6xql4c9xng6rfachyylpy3w8hpibpvi7i30n" "903db7c76b31" "el")
+ ("0ky1nj4kp070nriw0igsa64l39plcv2365zl8lqpbydyp6clwc3m" "6bb74673e9aa" "en-CA")
+ ("15jck6si2l4h5lrs8zjx56y97p70njpi26nnq6xfmvj1dk5qb4g2" "c06bd83a9295" "en-GB")
+ ("1gc400n8j8qk70vdw7fkf4m9yviia35cmj6361pxnyvsjrgm4qvm" "ae0fda5114c4" "eo")
+ ("0y01lahdrd3krsh6nrr3iw36r2x4advh5qw54vf92w11l3aiyvfz" "0c294dc9ce40" "es-AR")
+ ("16jjbsfa62dxk36ccziv7nmh26c1s0b05960in6zs5nnfrv4yh35" "7c30b2981fb4" "es-CL")
+ ("0qh8c8f8dsv1v56n1mcpn84l39bpnqfl8v8iacq12zh322srr549" "ad1444f4f833" "es-ES")
+ ("1vh3hm5r4ch6mk3ymbk12b9rppwc75fmbi0i7cml82kxsi77bzw5" "0a26cdb23536" "es-MX")
+ ("159l92jxx48lgba1g8ig3mdzhwsf3jpg3nx1g9blq4majk5hqr6q" "65a38a830795" "et")
+ ("1ha8y1wbgb66dqm26x1q2xwygy7bblkjz40y9vh5d2qlpr3fn0av" "21e0930b221d" "eu")
+ ("0rq4pcw6klm0bbljm1wdfvna8bpa35cm47hh2s63i2xdax4scahf" "5a4bb020cf09" "fa")
+ ("1py2594gsvpgrxnplz278ffb7grsf384kzjskrl1zyps0jw8fb1x" "4a4f712cd4aa" "ff")
+ ("1dyd55ngsglp1w2gh0yaacwb0vsq23gdvnj76f2x6g39h1li9s0z" "9c51cd915e2b" "fi")
+ ("0kimwivpq6pr63jh1k9fszsv8bi8vns3scg76mmnvbhh2ca8q7wj" "4f9e24a696ee" "fr")
+ ("1sbbnnp12lgy5qan2kix02942830b1969bd7jxrv7piwqfch9i06" "9e21a0eeb5b1" "fy-NL")
+ ("0dsvvyfrzkx5h44gqgdci7arb8h4lq48w20cnr8fc7j17grvnkzz" "999a995bc09d" "ga-IE")
+ ("1487msbsgrfzmyijhf6a4wbqdjpd7b7ki9nwrjjjjlnbw0h0ljpb" "6a9ddcab3240" "gd")
+ ("1kzc4fwr18kgisdzba2acj1ag8mxbifqpk5p30jv68nmvqfsvl8d" "51eb5e352db9" "gl")
+ ("13gy3wn44kcxr7j3sbl69fp415875f4vb0gm91hx0fysqlvryhcs" "b9de1ffe3224" "gn")
+ ("0w5nvzpjn5vr35c1852rlff581vpy71nc096cz125852kyqkzkc3" "5b3307475ada" "gu-IN")
+ ("1ycakc4qpy9vcy50j3ricryjfnjr9v3a5ijj6bbfl4y6aks157fy" "c742df968ffd" "he")
+ ("1b2jf83c500wm5wcdnijq0b7y4m8n6271smq8pygahn5nq17f0gq" "1a3039a52b8a" "hi-IN")
+ ("19bbw8ix5m83cf4yarcmjl7jqa8xfabwqnh3nj6vi52rwvn7whk5" "8dc50e269ef3" "hr")
+ ("12rrsvgg6bb2h8fhni7jbx8pv983q8ym5fhfjim957n9q2yp5db6" "67e40f48dec7" "hsb")
+ ("0apyh713p3hrlj8041xwblcssahbmsqp9v9hbmb50ayf4z850kr1" "40073a597b1b" "hu")
+ ("0q0r076lq250d3vmnz9d92wj137c2v8i362c2avmkgp5zr3mcl0z" "2ea33335afdb" "hy-AM")
+ ("0qza33gdc1i9259dwd2f7vd78s0a6rg34aqdkhcn7f2l6ybw6xd6" "930041db15eb" "ia")
+ ("1211h0gp7gianh3qf76w04gfzk4n2bnyc9i8dviyz0vh4cjbx11m" "08811a49b41c" "id")
+ ("12lcr841g1j7453s7gb51vrvxmshx4ha3h1jx4vh8wr891xv8l6a" "2f7a8d31e0ba" "is")
+ ("1x585g0r2kcv0d3phnxx85bk5g0pi1yl0hwp4idv19yc9hslr04s" "188357cc04b4" "it")
+ ("09v35g9v7j6x0p1hggydm3a1rmq2fh4z7g1l88z3w5k6wq2nhj1b" "45cee0ba4771" "ja")
+ ("0prs3vycfvvaffjigdgyxiq41ak2rc34lnan5a6cwdqjgy7z450s" "d60a19d9bf17" "ja-JP-mac")
+ ("1nskzm8rgczrbgcxlzzq5zqdfd456ad0cylq27nf0wjiyq6kjzcm" "00cb00e78672" "ka")
+ ("0g6zznmhiam172nm7g2qzfpk415mna8kiihm73z2sdns64xb3ymg" "77a293a4bced" "kab")
+ ("17dld9lrym7rpvpvnkssivp4wx1f11zpk86wczbq1h52qgd70p55" "2c9b33a56d5d" "kk")
+ ("1nlzl8930c8ql3yq425wyqlxvq8arrjv20xpm5g7yfxd54av89ac" "9cddd42af05c" "km")
+ ("07hkrcdksvrqk816yimd036dlw15nc4sjk4gmw16ywbp093v0mqq" "e0c2969a8398" "kn")
+ ("08aqggvk3qbv5bzks9i1iba9akhkpm01d2c9k0zf41mpr2r5yfg2" "827567d0dafc" "ko")
+ ("0vagaiwy80bs1k3gkacshlzb5zchkcshx0ypwirvayc63sw4yl8l" "694b2a24e868" "lij")
+ ("1r43kp1kzahrbza0hiyavqplk9h08pzsb6rpjy79jr6l1iqb89sy" "d6728db7e060" "lt")
+ ("0sq2wbsj79xl7fi454k6q5xdhxyck1whjz315rv37vphqpx86b9b" "61e9b33f4d94" "lv")
+ ("0q8jxg1af22hs9wjdf0jd3bqk4rafxyzvsjl35k75am7l2y1fl3c" "9e482f6dd72c" "mk")
+ ("1zsfzjrzbc58d30a9yz12h5vphywgpw8xg6y6zn3677a785dvr20" "1fd2763336a4" "mr")
+ ("1rzygkkpn1a59daygd3hdaqph2np6sqvpgh68j0xr4il958ymnsm" "67ddab62dab4" "ms")
+ ("16jp6w5gizfxs7jvncg3ly13m59vqvh4rlmjd0q23m5g5ff9sklc" "3ed015b51bf3" "my")
+ ("1wfv023j67lb4iyf49fsknwm4z3xy0xqcf25b2nzanggxj26n01x" "d01801233a8f" "nb-NO")
+ ("1946vfia58vbjfippb5pfsskbjj95w7hb340smn6ry2vmza99mxp" "582defb08fb2" "ne-NP")
+ ("12w5ywh4c3s55y3zqc48cp1gcpwwjg444yfh1bghhhb9ni1xkh5i" "05f6359a29a6" "nl")
+ ("17jb076320cgkw1ypwmws2vjxsqlv2ww8aaisa3j334vbrw1m4zx" "50b41a1ddded" "nn-NO")
+ ("1y840j0v5zdgj94cbacy6j1snf44rynmzxq3yk8i26arcar62akl" "a6a138531a44" "oc")
+ ("0jq1hq4xhqxpa26r8pb1bgbaljgfkhn9l6p5pbnslkllpbh70q6l" "e70a3afaef25" "pa-IN")
+ ("1hih138skwy2gb8q10ngg6zalrk3aa3d549mg79gqzxbi5zy19fw" "e035f33389eb" "pl")
+ ("1hhif4hx4k351wm1bzykzycfzb5q8msxmiwh5r1cy32rh8wkxwhh" "54098495f37f" "pt-BR")
+ ("0gkjs12rxjml1m3mljskpz1gr6aph0c31nwpwdqybfg54w9qslib" "3fdf021f624e" "pt-PT")
+ ("0anyvwd9v6mr8y3ww33s6qnxkawqn5lz65vrxx3m3kzky63ai1xk" "794f9374eb87" "rm")
+ ("1p4drj25gsfv7lwgm5saazh38iqrh53952n8i4bmxpn0nadbm2n5" "71ce18bcf6cc" "ro")
+ ("17yssf4axd3zvncl4ka4wkfnwcn0z0arp3390vb9cps67na29p36" "3a9587227699" "ru")
+ ("0xk6rksspcw1222v4rgk5a6gzrpx64k29hm7p9qkqwd70s34yj46" "c020582a72ce" "si")
+ ("1ax5ibydyn7sj208r66zcxlcr8dxdqrw28vqyjif4jx583rp4lfp" "745a699b7f51" "sk")
+ ("13rin7hm1dv8g0hbcv8mp2hiwpk1k5bhzvkqpqajkkik4lx523mc" "8e437e2351ef" "sl")
+ ("0yh5jkl5zw3f7x1w2w6zfj3dyvcl4wj1zv4di7qsq2nl2yyizf7x" "2d99e2eff94f" "son")
+ ("0vzq7s27jsdbw5k59wfykysg1kd8w229ab5d4zjdf30l59igkahh" "69bbdf07bd80" "sq")
+ ("1mwivvs8vrk6vjq6i33kwlrlisra7dy35521ayps9p2rz2dll4rr" "215df5c5125c" "sr")
+ ("0g97yz1rg5cfflj8vvq3sqliyvm06x818z9yldfh5rjg1y6n9fjd" "8be00a1a50d4" "sv-SE")
+ ("0ii02jn3lh2i6d0s95whx9aj6w3x8axc7w1rlzj0lc2s9n52krz3" "170a84339dbe" "ta")
+ ("1ss7symad2crapxjqc0xhc0n17l79r5vf7flvkgk7npjky4vb7nv" "72a79a304f7f" "te")
+ ("11iqmg8zamgscnvs4n2xpw3g9azn6w38qs313wiwm86pyx6694ss" "8e91ce3064c5" "th")
+ ("1zgkvn9flb8by62ip9r3gmpgxwgkww1zhml5mwa0djq3ppfdgi1c" "0f914d0cda56" "tl")
+ ("1filkhdak6dbrd83q602x1qw1703nlm53nm9gcyab8s16gsx6ylz" "62ca6a8eaeba" "tr")
+ ("0cgagdy0ixprk3knczdmkqxkmx4ybmshhh0956kxbd0iab0dfcf6" "f110ccac4cde" "trs")
+ ("1f1ghk67zwnwc5x3nk82vcv94nf8glngkfya1hg074q3088sj9pa" "56c0102d5f1c" "uk")
+ ("0iyw1b2jjylkdwxv9sxvj4ikxl64sx612b2dvvmf1di8bw86w74r" "7d53bce5ae98" "ur")
+ ("1q83cp5pfgs8l03zirwi8r5qp8qyh4zvxdx1ilgaqqlyg42yql7c" "9b500e1a054d" "uz")
+ ("1d4nkybz2hk64ay04k965b9lc5nhhpmzcs5ww3b6q4n93rf9c2z7" "2a000025928a" "vi")
+ ("1cnrsfnyl3sw3sxsggmjwydvphb2diy0vzknvxdhpnvq3ln18hga" "74724087c25b" "xh")
+ ("1j6l66v1xw27z8w78mpsnmqgv8m277mf4r0hgqcrb4zx7xc2vqyy" "527e5e090608" "zh-CN")
+ ("1frwx35klpyz3sdwrkz7945ivb2dwaawhhyfnz4092h9hn7rc4ky" "6cd366ad2947" "zh-TW")))
+
+(define %icecat-78-version "78.15.0-guix0-preview1")
+
+(define icecat-78-source
+ (let* ((base-version (first (string-split %icecat-78-version #\-)))
+
+ (major-version (first (string-split base-version #\.)))
+ (minor-version (second (string-split base-version #\.)))
+ (sub-version (third (string-split base-version #\.)))
+
+ (upstream-firefox-version (string-append base-version "esr"))
+ (upstream-firefox-source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://ftp.mozilla.org/pub/firefox/releases/"
+ upstream-firefox-version "/source/"
+ "firefox-" upstream-firefox-version ".source.tar.xz"))
+ (sha256
+ (base32
+ "0l91cxdc5v9fps79ckb1kid4gw6v5qng1jd9zvaacwaiv628shx4"))))
+
+ (upstream-icecat-base-version "78.7.0") ; maybe older than base-version
+ ;;(gnuzilla-commit (string-append "v" upstream-icecat-base-version))
+ (gnuzilla-commit "abfe5eebaca3c2787f1a9505669393674493c177")
+ (gnuzilla-source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "git://git.savannah.gnu.org/gnuzilla.git")
+ (commit gnuzilla-commit)))
+ (file-name (git-file-name "gnuzilla"
+ ;;upstream-icecat-base-version
+ (string-take gnuzilla-commit 8)))
+ (sha256
+ (base32
+ "00ws3540x5whpicc5fx4k949ff73cqvajz6jp13ahn49wqdads47"))))
+
+ ;; 'search-patch' returns either a valid file name or #f, so wrap it
+ ;; in 'assume-valid-file-name' to avoid 'local-file' warnings.
+ (gnuzilla-fixes-patch
+ (local-file (assume-valid-file-name
+ (search-patch "icecat-use-older-reveal-hidden-html.patch"))))
+ (makeicecat-patch
+ (local-file (assume-valid-file-name
+ (search-patch "icecat-78-makeicecat.patch")))))
+
+ (origin
+ (method computed-origin-method)
+ (file-name (string-append "icecat-" %icecat-78-version ".tar.xz"))
+ (sha256 #f)
+ (uri
+ (delay
+ (with-imported-modules '((guix build utils))
+ #~(begin
+ (use-modules (guix build utils))
+ (let ((firefox-dir
+ (string-append "firefox-" #$base-version))
+ (icecat-dir
+ (string-append "icecat-" #$%icecat-78-version)))
+
+ (mkdir "/tmp/bin")
+ (set-path-environment-variable
+ "PATH" '("bin")
+ (list "/tmp"
+ #+(canonical-package bash)
+ #+(canonical-package coreutils)
+ #+(canonical-package findutils)
+ #+(canonical-package patch)
+ #+(canonical-package xz)
+ #+(canonical-package sed)
+ #+(canonical-package grep)
+ #+(canonical-package bzip2)
+ #+(canonical-package gzip)
+ #+(canonical-package tar)
+ #+rename))
+
+ (symlink #+(file-append rename "/bin/rename")
+ "/tmp/bin/prename")
+
+ ;; We copy the gnuzilla source directory because it is
+ ;; read-only in 'gnuzilla-source', and the makeicecat script
+ ;; uses "cp -a" to copy parts of it and assumes that the
+ ;; copies will be writable.
+ (copy-recursively #+gnuzilla-source "/tmp/gnuzilla"
+ #:log (%make-void-port "w"))
+
+ (with-directory-excursion "/tmp/gnuzilla"
+ (make-file-writable "makeicecat")
+ (invoke "patch" "--force" "--no-backup-if-mismatch"
+ "-p1" "--input" #+gnuzilla-fixes-patch)
+ (invoke "patch" "--force" "--no-backup-if-mismatch"
+ "-p1" "--input" #+makeicecat-patch)
+ (patch-shebang "makeicecat")
+ (substitute* "makeicecat"
+ (("^FFMAJOR=(.*)" all ffmajor)
+ (unless (string=? #$major-version
+ (string-trim-both ffmajor))
+ ;; The makeicecat script cannot be expected to work
+ ;; properly on a different version of Firefox, even if
+ ;; no errors occur during execution.
+ (error "makeicecat major version mismatch"))
+ (string-append "FFMAJOR=" #$major-version "\n"))
+ (("^FFMINOR=.*")
+ (string-append "FFMINOR=" #$minor-version "\n"))
+ (("^FFSUB=.*")
+ (string-append "FFSUB=" #$sub-version "\n"))
+ (("^DATA=.*")
+ "DATA=/tmp/gnuzilla/data\n")
+ (("/bin/sed")
+ #+(file-append (canonical-package sed) "/bin/sed"))))
+
+ (format #t "Unpacking upstream firefox tarball...~%")
+ (force-output)
+ (invoke "tar" "xf" #+upstream-firefox-source)
+ (rename-file firefox-dir icecat-dir)
+
+ (with-directory-excursion icecat-dir
+ (format #t "Populating l10n directory...~%")
+ (force-output)
+ (mkdir "l10n")
+ (with-directory-excursion "l10n"
+ (for-each
+ (lambda (locale-dir)
+ (let ((locale
+ (string-drop (basename locale-dir)
+ (+ 32 ; length of hash
+ (string-length "-mozilla-locale-")))))
+ (format #t " ~a~%" locale)
+ (force-output)
+ (copy-recursively locale-dir locale
+ #:log (%make-void-port "w"))
+ (for-each make-file-writable (find-files locale))
+ (with-directory-excursion locale
+ (when (file-exists? ".hgtags")
+ (delete-file ".hgtags"))
+ (mkdir-p "browser/chrome/browser/preferences")
+ (call-with-output-file
+ "browser/chrome/browser/preferences/advanced-scripts.dtd"
+ (lambda (port) #f)))))
+ '#+all-mozilla-78-locales)
+ (copy-recursively #+mozilla-78-compare-locales
+ "compare-locales"
+ #:log (%make-void-port "w"))
+ (delete-file "compare-locales/.gitignore")
+ (delete-file "compare-locales/.hgignore")
+ (delete-file "compare-locales/.hgtags"))
+
+ (format #t "Running makeicecat script...~%")
+ (force-output)
+ (invoke "bash" "/tmp/gnuzilla/makeicecat"))
+
+ (format #t "Packing IceCat source tarball...~%")
+ (force-output)
+ (invoke "tar" "cfa" #$output
+ ;; Avoid non-determinism in the archive. We set the
+ ;; mtime of files in the archive to early 1980 because
+ ;; the build process fails if the mtime of source
+ ;; files is pre-1980, due to the creation of zip
+ ;; archives.
+ "--mtime=@315619200" ; 1980-01-02 UTC
+ "--owner=root:0"
+ "--group=root:0"
+ "--sort=name"
+ icecat-dir)
+
+ #t))))))))
+
;; Update this together with icecat!
(define %icedove-build-id "20211008000000") ;must be of the form YYYYMMDDhhmmss
(define-public icedove
(package
(name "icedove")
(version "78.15.0")
- (source icecat-source)
+ (source icecat-78-source)
(properties
`((cpe-name . "thunderbird_esr")))
(build-system gnu-build-system)
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 6b6cc85afe..a49310c467 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -26,6 +26,7 @@
;;; Copyright © 2021 Antoine Côté <antoine.cote@posteo.net>
;;; Copyright © 2021 Andy Tai <atai@atai.org>
;;; Copyright © 2021 Ekaitz Zarraga <ekaitz@elenq.tech>
+;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -573,7 +574,7 @@ typically encountered in feature film production.")
("libxrender" ,libxrender)
("opencolorio" ,opencolorio)
("openimageio" ,openimageio)
- ("openexr" ,openexr)
+ ("openexr" ,openexr-2)
("opensubdiv" ,opensubdiv)
("ilmbase" ,ilmbase)
("openjpeg" ,openjpeg)
@@ -672,7 +673,7 @@ application can be customized via its API for Python scripting.")
("libx11" ,libx11)
("opencolorio" ,opencolorio)
("openimageio" ,openimageio)
- ("openexr" ,openexr)
+ ("openexr" ,openexr-2)
("ilmbase" ,ilmbase)
("openjpeg" ,openjpeg)
("libjpeg" ,libjpeg-turbo)
@@ -800,6 +801,28 @@ many more.")
;; permissive licenses.
(license license:gpl3+)))
+(define-public imath
+ (package
+ (name "imath")
+ (version "3.1.3")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/AcademySoftwareFoundation/Imath")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1nyld18mf220ghm1vidnfnn0rdns9z5i4l9s66xgd0kfdgarb31f"))))
+ (build-system cmake-build-system)
+ (home-page "https://github.com/AcademySoftwareFoundation/Imath")
+ (synopsis "Library of math operations for computer graphics")
+ (description
+ "Imath is a C++ representation of 2D and 3D vectors and matrices and other
+mathematical objects, functions, and data types common in computer graphics
+applications, including the \"half\" 16-bit floating-point type.")
+ (license license:bsd-3)))
+
(define-public ilmbase
(package
(name "ilmbase")
@@ -1089,17 +1112,47 @@ graphics.")
(define-public openexr
(package
(name "openexr")
+ (version "3.1.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/AcademySoftwareFoundation/openexr")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0vyclrrikphwkkpyjg8kzh3qzflzk3d6xsidgqllgfdgllr9wmgv"))))
+ (build-system cmake-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ ;; /var/tmp does not exist in the Guix build environment
+ (add-after 'unpack 'patch-test-directory
+ (lambda _
+ (substitute* '("src/test/OpenEXRUtilTest/tmpDir.h"
+ "src/test/OpenEXRFuzzTest/tmpDir.h"
+ "src/test/OpenEXRTest/tmpDir.h"
+ "src/test/OpenEXRCoreTest/main.cpp")
+ (("/var/tmp") "/tmp")))))))
+ (inputs
+ `(("imath" ,imath)
+ ("zlib" ,zlib)))
+ (home-page "https://www.openexr.com/")
+ (synopsis "High-dynamic-range file format library")
+ (description
+ "OpenEXR provides the specification and reference implementation of the
+EXR file format. The purpose of EXR format is to accurately and efficiently
+represent high-dynamic-range scene-linear image data and associated metadata,
+with strong support for multi-part, multi-channel use cases.")
+ (license license:bsd-3)))
+
+(define-public openexr-2
+ (package
+ (name "openexr")
(version (package-version ilmbase))
(source (origin
(inherit (package-source ilmbase))
- (file-name (git-file-name "openexr" version))
- (modules '((guix build utils)))
- (snippet
- '(begin
- (substitute* (find-files "OpenEXR" "tmpDir\\.h")
- (("\"/var/tmp/\"")
- "\"/tmp/\""))
- #t))))
+ (file-name (git-file-name "openexr" version))))
(build-system cmake-build-system)
(arguments
`(#:phases
@@ -1108,6 +1161,12 @@ graphics.")
(lambda _
(chdir "OpenEXR")
#t))
+ (add-after 'change-directory 'patch-test-directory
+ (lambda _
+ (substitute* '("IlmImfFuzzTest/tmpDir.h"
+ "IlmImfTest/tmpDir.h"
+ "IlmImfUtilTest/tmpDir.h")
+ (("/var/tmp") "/tmp"))))
(add-after 'change-directory 'increase-test-timeout
(lambda _
;; On armhf-linux, we need to override the CTest default
@@ -1133,13 +1192,10 @@ graphics.")
(propagated-inputs
`(("ilmbase" ,ilmbase) ;used in public headers
("zlib" ,zlib))) ;OpenEXR.pc reads "-lz"
- (home-page "https://www.openexr.com/")
- (synopsis "High-dynamic range file format library")
- (description
- "OpenEXR is a high dynamic-range (HDR) image file format developed for
-use in computer imaging applications. The IlmImf C++ libraries support
-storage of the \"EXR\" file format for storing 16-bit floating-point images.")
- (license license:bsd-3)))
+ (home-page (package-home-page openexr))
+ (synopsis (package-synopsis openexr))
+ (description (package-description openexr))
+ (license (package-license openexr))))
(define-public openimageio
(package
@@ -1171,7 +1227,7 @@ storage of the \"EXR\" file format for storing 16-bit floating-point images.")
("libjpeg" ,libjpeg-turbo)
("libtiff" ,libtiff)
("giflib" ,giflib)
- ("openexr" ,openexr)
+ ("openexr" ,openexr-2)
("ilmbase" ,ilmbase)
("pugixml" ,pugixml)
("python" ,python-wrapper)
@@ -1259,6 +1315,56 @@ virtual reality, scientific visualization and modeling.")
`(("libjpeg" ,libjpeg-turbo)
,@(package-inputs openscenegraph)))))
+(define-public gr-framework
+ (package
+ (name "gr-framework")
+ (version "0.58.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/sciapp/gr")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0q1rz4iyxbh0dc22y4w28ry3hr0yypdwdm6pw2zlwgjya7wkbvsw"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (delete-file-recursively "3rdparty")
+ #t))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f)) ; no test target
+ (inputs
+ `(("bzip2" ,bzip2)
+ ("cairo" ,cairo)
+ ("fontconfig" ,fontconfig)
+ ("ffmpeg" ,ffmpeg)
+ ("freetype" ,freetype)
+ ("ghostscript" ,ghostscript)
+ ("glfw" ,glfw)
+ ("libjpeg-turbo" ,libjpeg-turbo)
+ ("libpng" ,libpng)
+ ("libtiff" ,libtiff)
+ ("libx11" ,libx11)
+ ("libxft" ,libxft)
+ ("libxt" ,libxt)
+ ("pixman" ,pixman)
+ ("qtbase" ,qtbase-5)
+ ("qhull" ,qhull)
+ ("zlib" ,zlib)))
+ (home-page "https://gr-framework.org/")
+ (synopsis "Graphics library for visualisation applications")
+ (description "GR is a universal framework for cross-platform visualization
+applications. It offers developers a compact, portable and consistent graphics
+library for their programs. Applications range from publication quality 2D
+graphs to the representation of complex 3D scenes. GR is essentially based on
+an implementation of a @acronym{GKS, Graphical Kernel System}. As a
+self-contained system it can quickly and easily be integrated into existing
+applications (i.e. using the @code{ctypes} mechanism in Python or @code{ccall}
+in Julia).")
+ (license license:expat)))
(define-public openmw-openscenegraph
;; OpenMW prefers its own fork of openscenegraph:
@@ -1324,7 +1430,7 @@ virtual reality, scientific visualization and modeling.")
("libjpeg" ,libjpeg-turbo)
("libpng" ,libpng)
("libtiff" ,libtiff)
- ("openexr" ,openexr)
+ ("openexr" ,openexr-2)
("sdl" ,sdl)
("zlib" ,zlib)))
(arguments
@@ -1445,7 +1551,7 @@ and is connected to the programming logic using data bindings and commands.")
(arguments '(#:tests? #f)) ;no 'test' target
;; Headers include OpenEXR and IlmBase headers.
- (propagated-inputs `(("openexr" ,openexr)))
+ (propagated-inputs `(("openexr" ,openexr-2)))
(home-page "http://ampasctl.sourceforge.net")
(synopsis "Color Transformation Language")
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index 9e7525bea5..d6c2fb3f46 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -773,7 +773,7 @@ model to base your own plug-in on, here it is.")
("mesa" ,mesa)
("neon" ,neon)
("openal" ,openal)
- ("openexr" ,openexr)
+ ("openexr" ,openexr-2)
("openjpeg" ,openjpeg)
("openssl" ,openssl)
("opus" ,opus)
diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm
index e64055c4a5..2bf3576d5a 100644
--- a/gnu/packages/hardware.scm
+++ b/gnu/packages/hardware.scm
@@ -7,6 +7,7 @@
;;; Copyright © 2021 Denis Carikli <GNUtoo@cyberdimension.org>
;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
+;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -59,6 +60,7 @@
#:use-module (gnu packages xorg)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system meson)
#:use-module (guix build-system python)
#:use-module (guix download)
#:use-module (guix git-download)
@@ -568,6 +570,32 @@ MSR addresses differ (greatly) between processors, and any such modification can
be dangerous and may void your CPU or system board's warranty.")
(license license:gpl2))) ; cpuid.c is gpl2, {rd,wr}msr.c are gpl2+
+(define-public openhmd
+ (package
+ (name "openhmd")
+ (version "0.3.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/OpenHMD/OpenHMD")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1hkpdl4zgycag5k8njvqpx01apxmm8m8pvhlsxgxpqiqy9a38ccg"))))
+ (build-system meson-build-system)
+ (arguments
+ `(#:tests? #f)) ; no test target although there is a test folder
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("hidapi" ,hidapi)))
+ (home-page "http://www.openhmd.net/")
+ (synopsis "API and drivers for immersive technology")
+ (description "OpenHMD aims to provide an API and drivers for immersive
+technology, such as head mounted displays with built in head tracking.")
+ (license license:boost1.0)))
+
(define-public wavemon
(package
(name "wavemon")
diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm
index 16dfebb1b7..bfa2fb4cf7 100644
--- a/gnu/packages/image-processing.scm
+++ b/gnu/packages/image-processing.scm
@@ -18,6 +18,7 @@
;;; Copyright © 2021 Ekaitz Zarraga <ekaitz@elenq.tech>
;;; Copyright © 2021 Paul Garlick <pgarlick@tourbillion-technology.com>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2021 Ivan Gankevich <i.gankevich@spbu.ru>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -57,6 +58,7 @@
#:use-module (gnu packages fontutils)
#:use-module (gnu packages geo)
#:use-module (gnu packages ghostscript)
+ #:use-module (gnu packages gimp)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
@@ -161,7 +163,7 @@ licences similar to the Modified BSD licence."))))
("maxflow" ,maxflow)
("niftilib" ,niftilib)
("nlopt" ,nlopt)
- ("openexr" ,openexr)
+ ("openexr" ,openexr-2)
("python-lxml" ,python2-lxml)
("vtk" ,vtk)))
(native-inputs
@@ -231,7 +233,7 @@ of external libraries that provide additional functionality.")
;; ocioconvert fails: error: conflicting declaration ?typedef void
;; (* PFNGLGETFRAGMENTMATERIALFVSGIXPROC)(GLenum, GLenum, GLfloat*)
`(("lcms" ,lcms)
- ("openexr" ,openexr)
+ ("openexr" ,openexr-2)
("tinyxml" ,tinyxml)))
(home-page "https://opencolorio.org")
(synopsis "Color management for visual effects and animation")
@@ -635,7 +637,7 @@ integrates with various databases on GUI toolkits such as Qt and Tk.")
("libwebp" ,libwebp)
("zlib" ,zlib)
("gtkglext" ,gtkglext)
- ("openexr" ,openexr)
+ ("openexr" ,openexr-2)
("ilmbase" ,ilmbase)
("gtk+" ,gtk+-2)
("python-numpy" ,python-numpy)
@@ -701,7 +703,7 @@ vision algorithms. It can be used to do things like:
("libwebp" ,libwebp)
("matio" ,matio)
("niftilib" ,niftilib)
- ("openexr" ,openexr)
+ ("openexr" ,openexr-2)
("orc" ,orc)
("pango" ,pango)
("poppler" ,poppler)))
@@ -753,7 +755,7 @@ due to its architecture which automatically parallelises the image workflows.")
("libtiff" ,libtiff)
("libx11" ,libx11)
;;("opencv" ,opencv) ;OpenCV is currently broken in the CI
- ("openexr" ,openexr)
+ ("openexr" ,openexr-2)
("zlib" ,zlib)))
(home-page "https://gmic.eu/")
(synopsis "Full-featured framework for digital image processing")
@@ -801,6 +803,25 @@ including 2D color images.")
(assoc-ref %build-inputs "gmic") "/lib")))))
(synopsis "Krita plugin for the G'MIC image processing framework")))
+(define-public gmic-qt-gimp
+ (package
+ (inherit gmic-qt)
+ (name "gmic-qt-gimp")
+ (inputs
+ ;; GIMP and its dependencies.
+ `(("gimp" ,gimp)
+ ("gdk-pixbuf" ,gdk-pixbuf)
+ ("cairo" ,cairo)
+ ("gegl" ,gegl)
+ ,@(package-inputs gmic-qt)))
+ (arguments
+ (substitute-keyword-arguments (package-arguments gmic-qt)
+ ((#:configure-flags flags)
+ '(list "-DGMIC_QT_HOST=gimp" "-DENABLE_DYNAMIC_LINKING=ON"
+ (string-append "-DGMIC_LIB_PATH="
+ (assoc-ref %build-inputs "gmic") "/lib")))))
+ (synopsis "GIMP plugin for the G'MIC image processing framework")))
+
(define-public nip2
(package
(name "nip2")
@@ -840,7 +861,7 @@ including 2D color images.")
("matio" ,matio)
("lcms" ,lcms)
("libwebp" ,libwebp)
- ("openexr" ,openexr)
+ ("openexr" ,openexr-2)
("poppler" ,poppler)
("gsl" ,gsl)))
(native-inputs
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 75372ecf73..3917540744 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -546,7 +546,7 @@ It supports JPEG, PNG and GIF formats.")
("libpng" ,libpng)
("libjpeg" ,libjpeg-turbo)
("lcms" ,lcms)
- ("openexr" ,openexr)
+ ("openexr" ,openexr-2)
("fftw" ,fftwf)
("gsl" ,gsl)
("libtiff" ,libtiff)))
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index fce2212c5d..21fba15baa 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -11,7 +11,7 @@
;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2016, 2017, 2020 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2016, 2017, 2020, 2021 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
;;; Copyright © 2017 Nikita <nikita@n0.is>
;;; Copyright © 2017,2019,2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
@@ -1168,7 +1168,7 @@ supplies a generic doubly-linked list and some string functions.")
("libraw" ,libraw)
("libtiff" ,libtiff)
("libwebp" ,libwebp)
- ("openexr" ,openexr)
+ ("openexr" ,openexr-2)
("openjpeg" ,openjpeg)
("zlib" ,zlib)))
(synopsis "Library for handling popular graphics image formats")
@@ -1209,7 +1209,7 @@ graphics image formats like PNG, BMP, JPEG, TIFF and others.")
("libjpeg" ,libjpeg-turbo)
("libpng" ,libpng)
("libtiff" ,libtiff)
- ("openexr" ,openexr)
+ ("openexr" ,openexr-2)
("python" ,python-wrapper)
("python-numpy" ,python-numpy)
("zlib" ,zlib)))
@@ -1362,18 +1362,25 @@ channels.")
(define-public exiv2
(package
(name "exiv2")
- (version "0.27.4")
+ (version "0.27.5")
(source
(origin
(method url-fetch)
(uri (string-append "https://www.exiv2.org/builds/exiv2-" version
"-Source.tar.gz"))
(sha256
- (base32 "0klhxkxvkzzzcqpzv8jb56pykq0gyhb6rk9vc2kzjahngjx6sdl4"))))
+ (base32 "1qm6bvj28l42km009nc60gffn1qhngc0m2wjlhf90si3mcc8d99m"))))
(build-system cmake-build-system)
(arguments
'(#:test-target "tests"
- #:configure-flags (list "-DEXIV2_BUILD_UNIT_TESTS=ON")))
+ #:configure-flags (list "-DEXIV2_BUILD_UNIT_TESTS=ON")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'delete-static-libraries
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (lib (string-append out "/lib")))
+ (for-each delete-file (find-files lib "\\.a$"))))))))
(propagated-inputs
`(("expat" ,expat)
("zlib" ,zlib)))
@@ -1421,7 +1428,7 @@ and XMP metadata of images in various formats.")
("libmng" ,libmng)
("libpng" ,libpng)
("libtiff" ,libtiff)
- ("openexr" ,openexr)
+ ("openexr" ,openexr-2)
("zlib" ,zlib)))
(synopsis "Library for manipulating many image formats")
(description "Developer's Image Library (DevIL) is a library to develop
@@ -1433,7 +1440,7 @@ convert, manipulate, filter and display a wide variety of image formats.")
(define-public jasper
(package
(name "jasper")
- (version "2.0.32")
+ (version "2.0.33")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -1442,7 +1449,7 @@ convert, manipulate, filter and display a wide variety of image formats.")
(file-name (git-file-name name version))
(sha256
(base32
- "0hhggh2jxp1wn7nwzvbx2z1vi1ih8wmz4av17bljyn0c3mxjs22k"))))
+ "0p3fj89gkhd2ys5ci75cwb6p7rvb2pf52jd8c9d4g76qp846njnx"))))
(build-system cmake-build-system)
(inputs
`(("libjpeg" ,libjpeg-turbo)))
@@ -2364,7 +2371,7 @@ Wacom-style graphics tablets.")
(define-public phockup
(package
(name "phockup")
- (version "1.5.9")
+ (version "1.7.1")
(source
(origin
(method git-fetch)
@@ -2374,7 +2381,7 @@ Wacom-style graphics tablets.")
(file-name (git-file-name name version))
(sha256
(base32
- "13ajj0xch7yfqaaxbw0awxs0fz17n1rxir4gqh2wcgxjysqk1j2y"))))
+ "0nqd89g4ppwc96gxyh9npain7ipnzj66p6n3irsvhrpi4k54h388"))))
(build-system copy-build-system)
(arguments
`(#:install-plan '(("src" "share/phockup/")
@@ -2394,11 +2401,18 @@ Wacom-style graphics tablets.")
(let ((out (assoc-ref outputs "out")))
(mkdir (string-append out "/bin"))
(symlink (string-append out "/share/phockup/phockup.py")
- (string-append out "/bin/phockup")))
- #t)))))
+ (string-append out "/bin/phockup")))))
+ (add-after 'install-bin 'wrap-program
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (wrap-program (string-append out "/bin/phockup")
+ `("GUIX_PYTHONPATH" prefix
+ ,(search-path-as-string->list
+ (getenv "GUIX_PYTHONPATH"))))))))))
(inputs
`(("perl-image-exiftool" ,perl-image-exiftool)
- ("python" ,python)))
+ ("python" ,python)
+ ("python-tqdm" ,python-tqdm)))
(native-inputs
`(("python-pytest" ,python-pytest)
("python-pytest-mock" ,python-pytest-mock)))
diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index 694b12adae..49ada1aedd 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -553,7 +553,7 @@ external server.")
(define-public mujs
(package
(name "mujs")
- (version "1.1.1")
+ (version "1.1.3")
(source
(origin
(method git-fetch)
@@ -562,7 +562,7 @@ external server.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "0ivqz06fq8v36p2gkjh64vgv0gm7nghds0n42vrv7vm46phdffvb"))))
+ (base32 "0qizld89qw24i9v6i2j9cxjyqn425xbiqfp1b7qfrkyxqkn0byws"))))
(build-system gnu-build-system)
(arguments
`(#:phases
diff --git a/gnu/packages/julia-jll.scm b/gnu/packages/julia-jll.scm
index d3677d0a33..51643819ae 100644
--- a/gnu/packages/julia-jll.scm
+++ b/gnu/packages/julia-jll.scm
@@ -36,6 +36,7 @@
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnupg)
+ #:use-module (gnu packages graphics)
#:use-module (gnu packages gtk)
#:use-module (gnu packages image)
#:use-module (gnu packages imagemagick)
@@ -522,6 +523,55 @@ rendering library.")
(description "This package provides a wrapper for the glib library.")
(license license:expat)))
+(define-public julia-gr-jll
+ (package
+ (name "julia-gr-jll")
+ (version "0.58.1+0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaBinaryWrappers/GR_jll.jl")
+ (commit (string-append "GR-v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "16m22n0wh86v3lh0im2pc9bg381djbmqji5hjx42j6aaz634gqiq"))))
+ (build-system julia-build-system)
+ (arguments
+ '(#:tests? #f ; no runtests
+ #: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(\"GR\", \""
+ (assoc-ref inputs "gr-framework") "\")\n"))))
+ ;; There's a Julia file for each platform, override them all
+ (find-files "src/wrappers/" "\\.jl$")))))))
+ (inputs
+ `(("gr-framework" ,gr-framework)))
+ (propagated-inputs
+ `(("julia-jllwrappers" ,julia-jllwrappers)
+ ("julia-bzip2-jll" ,julia-bzip2-jll)
+ ("julia-cairo-jll" ,julia-cairo-jll)
+ ("julia-ffmpeg-jll" ,julia-ffmpeg-jll)
+ ("julia-fontconfig-jll" ,julia-fontconfig-jll)
+ ("julia-glfw-jll" ,julia-glfw-jll)
+ ("julia-jpegturbo-jll" ,julia-jpegturbo-jll)
+ ("julia-libpng-jll" ,julia-libpng-jll)
+ ("julia-libtiff-jll" ,julia-libtiff-jll)
+ ("julia-pixman-jll" ,julia-pixman-jll)
+ ("julia-qt5base-jll" ,julia-qt5base-jll)
+ ("julia-zlib-jll" ,julia-zlib-jll)))
+ (home-page "https://github.com/JuliaBinaryWrappers/GR_jll.jl")
+ (synopsis "GR framework library wrappers")
+ (description "This package provides a wrapper for the GR framework.")
+ (license license:expat)))
+
(define-public julia-gumbo-jll
(package
(name "julia-gumbo-jll")
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index c1ebc0fba1..93fadf318c 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -561,6 +561,38 @@ can be a test-only dependency, allowing it to have potentially heavy
dependencies, while keeping @code{ChainRulesCore.jl} as light-weight as possible.")
(license license:expat)))
+(define-public julia-codeczlib
+ (package
+ (name "julia-codeczlib")
+ (version "0.7.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaIO/CodecZlib.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0xm603nylkwk4bzx66zv1g3syzrvn3jh9spdx7kvcvgszzyrrgh4"))))
+ (build-system julia-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'reset-gzip-timestamps 'make-files-writable
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (for-each make-file-writable
+ (find-files out "\\.gz$"))
+ #t))))))
+ (propagated-inputs
+ `(("julia-zlib-jll" ,julia-zlib-jll)
+ ("julia-transcodingstreams" ,julia-transcodingstreams)))
+ (home-page "https://github.com/JuliaIO/CodecZlib.jl")
+ (synopsis "Zlib codecs for @code{TranscodingStreams.jl}")
+ (description "This package provides zlib codecs for
+@code{TranscodingStreams.jl}.")
+ (license license:expat)))
+
(define-public julia-colors
(package
(name "julia-colors")
@@ -624,11 +656,11 @@ color scales for graphics.")
(file-name (git-file-name name version))
(sha256
(base32 "0n7h70caqv7yd0khjhn90iax62r73mcif8qzkwj5b4q46li1r8ih"))))
- (arguments
- '(#:tests? #f)) ;require Documenter, not packaged yet
(build-system julia-build-system)
(propagated-inputs
`(("julia-fixedpointnumbers" ,julia-fixedpointnumbers)))
+ (native-inputs
+ `(("julia-documenter" ,julia-documenter)))
(home-page "https://github.com/JuliaGraphics/ColorTypes.jl")
(synopsis "Basic color types and constructor")
(description "This minimalistic package serves as the foundation for
@@ -806,14 +838,12 @@ for construction of objects.")
(sha256
(base32 "15zbkn32v7xlz7559s0r5a0vkwmjwsswxaqpzijly4lky4jnp33d"))))
(build-system julia-build-system)
- (arguments
- `(#:tests? #f)) ; Documenter.jl not packaged yet.
(propagated-inputs
`(("julia-staticarrays" ,julia-staticarrays)))
- ;(native-inputs
- ; `(("julia-documenter" ,julia-documenter)
- ; ("julia-forwarddiff" ,julia-forwarddiff)
- ; ("julia-unitful" ,julia-unitful)))
+ (native-inputs
+ `(("julia-documenter" ,julia-documenter)
+ ("julia-forwarddiff" ,julia-forwarddiff)
+ ("julia-unitful" ,julia-unitful)))
(home-page "https://github.com/JuliaGeometry/CoordinateTransformations.jl")
(synopsis "Coordinate transformations in Julia")
(description "@code{CoordinateTransformations} is a Julia package to manage
@@ -1745,6 +1775,31 @@ differentiation (AD).")
arbitrary functions.")
(license license:expat)))
+(define-public julia-functors
+ (package
+ (name "julia-functors")
+ (version "0.2.7")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/FluxML/Functors.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "03ry1wn1y2jssq65l29bi6q4ki041aa6gl1nd2w6cgl00k2mrxf3"))))
+ (build-system julia-build-system)
+ (home-page "https://fluxml.ai/Functors.jl/stable/")
+ (synopsis "Design pattern for structures as in machine learning")
+ (description "This package provides tools to express a design pattern for
+dealing with large/ nested structures, as in machine learning and
+optimisation. For large machine learning models it can be cumbersome or
+inefficient to work with parameters as one big, flat vector, and structs help
+in managing complexity; but it is also desirable to easily operate over all
+parameters at once, e.g. for changing precision or applying an optimiser
+update step.")
+ (license license:expat)))
+
(define-public julia-fuzzycompletions
(package
(name "julia-fuzzycompletions")
@@ -1840,6 +1895,73 @@ analysis of dense matrices. The diagonal eigen-decomposition of normal
matrices the Schur form is often more useful.")
(license license:expat)))
+(define-public julia-geometrybasics
+ (package
+ (name "julia-geometrybasics")
+ (version "0.4.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaGeometry/GeometryBasics.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "057j3hjpli3q5b98cqkpi4p10x2k9pyksrz62hjmv1kb5qzdvhsj"))))
+ (build-system julia-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'remove-earcut
+ (lambda _
+ (substitute* '("Project.toml"
+ "src/GeometryBasics.jl")
+ ((".*EarCut.*") ""))
+ #t))
+ (add-after 'unpack 'skip-incompatible-test
+ (lambda _
+ (substitute* "test/runtests.jl"
+ (("@testset.*MetaT and heterogeneous data.*" all)
+ (string-append all "return\n")))
+ #t)))))
+ (propagated-inputs
+ `(("julia-itertools" ,julia-itertools)
+ ("julia-staticarrays" ,julia-staticarrays)
+ ("julia-structarrays" ,julia-structarrays)
+ ("julia-tables" ,julia-tables)))
+ (native-inputs
+ `(("julia-offsetarrays" ,julia-offsetarrays)))
+ (home-page "https://github.com/JuliaGeometry/GeometryBasics.jl")
+ (synopsis "Basic Geometry Types")
+ (description "This package aims to offer a standard set of Geometry types,
+which easily work with metadata, query frameworks on geometries and different
+memory layouts. The aim is to create a solid basis for Graphics/Plotting,
+finite elements analysis, Geo applications, and general geometry manipulations
+- while offering a Julian API, that still allows performant C-interop.")
+ (license license:expat)))
+
+(define-public julia-gr
+ (package
+ (name "julia-gr")
+ (version "0.58.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/jheinen/GR.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "18zxa1w2wmrf44c5l10qbh99zjdp7h94gxlymh47cf5kj5fc4xmx"))))
+ (build-system julia-build-system)
+ (propagated-inputs
+ `(("julia-gr-jll" ,julia-gr-jll)))
+ (home-page "https://github.com/jheinen/GR.jl")
+ (synopsis "Plotting for Julia based on GR")
+ (description "This module provides a Julia interface to GR, a framework for
+visualisation applications.")
+ (license license:expat)))
+
(define-public julia-graphics
(package
(name "julia-graphics")
@@ -2326,6 +2448,39 @@ assigned its own index, which is used to retrieve the value from the
indexed images, sometimes called \"colormap images\" or \"paletted images.\"")
(license license:expat)))
+(define-public julia-infinity
+ (package
+ (name "julia-infinity")
+ (version "0.2.4")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/cjdoris/Infinity.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1941lwvrdjnrynigzixxin3chpg1ba6xplvcwc89x0f6z658hwmm"))))
+ (build-system julia-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'remove-timezones.jl
+ (lambda _
+ (substitute* "test/runtests.jl"
+ (("using TimeZones.*") "")
+ ((".*infextendedtime.*") ""))
+ #t)))))
+ (propagated-inputs
+ `(("julia-requires" ,julia-requires)))
+ (native-inputs
+ `(("julia-compat" ,julia-compat)))
+ (home-page "https://docs.juliahub.com/Infinity/")
+ (synopsis "Representation of infinity in Julia")
+ (description "This package provides representations for infinity and
+negative infinity in Julia.")
+ (license license:expat)))
+
(define-public julia-inifile
(package
(name "julia-inifile")
@@ -2463,11 +2618,11 @@ as a string together with the return value.")
(file-name (git-file-name name version))
(sha256
(base32 "11334fcg2slpwcj0raxf457brhf7pxglgxc6cy8q58ggrpxqfqql"))))
- (arguments
- '(#:tests? #f)) ;require Documenter, not packaged yet
(build-system julia-build-system)
(propagated-inputs
`(("julia-macrotools" ,julia-macrotools)))
+ (native-inputs
+ `(("julia-documenter" ,julia-documenter)))
(home-page "https://github.com/FluxML/IRTools.jl")
(synopsis "Simple and flexible IR format")
(description "This package provides a simple and flexible IR format,
@@ -2810,6 +2965,32 @@ expressions involving differing types of units that are then evaluated,
resolving them into absolute units.")
(license license:expat)))
+(define-public julia-media
+ (package
+ (name "julia-media")
+ (version "0.5.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JunoLab/Media.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "05jq9j3vs8yfj2lwz3sh1vk5rha06xdcikp9s2q3dn316vryy6di"))))
+ (build-system julia-build-system)
+ ;; Package without Project.toml
+ (arguments
+ '(#:julia-package-name "Media"))
+ (propagated-inputs
+ `(("julia-macrotools" ,julia-macrotools)))
+ (home-page "https://github.com/JunoLab/Media.jl")
+ (synopsis "Unified measure and coordinates types")
+ (description "This package provides a display system which enables the
+user handle multiple input/output devices and decide what media types get
+displayed where.")
+ (license license:expat)))
+
(define-public julia-missings
(package
(name "julia-missings")
@@ -3125,10 +3306,10 @@ languages like Fortran.")
(sha256
(base32 "0ran2vj6ahlzib0g77y7g0jhavy3k9s2mqq23ybpgp9z677wf26h"))))
(build-system julia-build-system)
- (arguments
- '(#:tests? #f)) ;require Documenter, not packaged yet
(propagated-inputs
`(("julia-offsetarrays" ,julia-offsetarrays)))
+ (native-inputs
+ `(("julia-documenter" ,julia-documenter)))
(home-page "https://github.com/JuliaArrays/PaddedViews.jl")
(synopsis "Add virtual padding to the edges of an array")
(description "@code{PaddedViews} provides a simple wrapper type,
@@ -4125,8 +4306,7 @@ some performance improvements).")
(base32 "1fwiaxdpx1z9dli3jr8kyraych0jbdiny3qklynf0r13px25r6i7"))))
(build-system julia-build-system)
(arguments
- `(#:tests? #f ; Documenter.jl not packaged yet
- #:phases
+ `(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'skip-doctest
(lambda _
@@ -4135,9 +4315,9 @@ some performance improvements).")
#t)))))
(propagated-inputs
`(("julia-offsetarrays" ,julia-offsetarrays)))
- ;(native-inputs
- ; `(("julia-aqua" ,julia-aqua)
- ; ("julia-documenter" ,julia-documenter)))
+ (native-inputs
+ `(("julia-aqua" ,julia-aqua)
+ ("julia-documenter" ,julia-documenter)))
(home-page "https://github.com/JuliaArrays/StackViews.jl")
(synopsis "No more catcat")
(description "StackViews provides only one array type: @code{StackView}.
@@ -4541,6 +4721,34 @@ package.")
automatic differentiation for its machine learning platform.")
(license license:expat)))
+(define-public julia-transcodingstreams
+ (package
+ (name "julia-transcodingstreams")
+ (version "0.9.6")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaIO/TranscodingStreams.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1w3klii293caqiclfh28jggv7f53xclm9fr6xmw38brwrn1hjb48"))))
+ (build-system julia-build-system)
+ (arguments
+ `(#:tests? #f)) ; Circular dependency with various codecs.
+ (home-page "https://github.com/JuliaIO/TranscodingStreams.jl")
+ (synopsis "Fast I/O transcoding data streams")
+ (description "This package provides tools for transcoding data streams
+which are:
+@itemize
+@item fast: small overhead and specialized methods
+@item consistent: basic I/O operations work as expected
+@item generic: support any I/O objects like files, buffers, pipes, etc.
+@item extensible: easy definition for new codec to transcode data
+@end itemize")
+ (license license:expat)))
+
(define-public julia-typedtables
(package
(name "julia-typedtables")
diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index f7af1f58a9..fe343b19cf 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -1814,7 +1814,7 @@ by applications to write metadata.")
("pkg-config" ,pkg-config)))
(inputs
`(("karchive" ,karchive) ; for Krita and OpenRaster images
- ("openexr" ,openexr) ; for OpenEXR high dynamic-range images
+ ("openexr" ,openexr-2) ; for OpenEXR high dynamic-range images
("qtbase" ,qtbase-5)))
(arguments
`(#:phases
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index dcb91fdb0b..b5c2357cb4 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -522,7 +522,7 @@ illustrate project schedules.")
("libx11" ,libx11)
("libxcb" ,libxcb)
("libxi" ,libxi)
- ("openexr" ,openexr)
+ ("openexr" ,openexr-2)
("perl" ,perl)
("poppler-qt5" ,poppler-qt5)
("qtbase" ,qtbase-5)
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 83761e5955..fb7c6f2f09 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -57,6 +57,7 @@
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
;;; Copyright © 2021 Josselin Poiret <josselin.poiret@protonmail.ch>
+;;; Copyright © 2021 Olivier Dion <olivier.dion@polymtl.ca>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -351,17 +352,17 @@ 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.14-version "5.14.12")
+(define-public linux-libre-5.14-version "5.14.15")
(define-public linux-libre-5.14-gnu-revision "gnu")
(define deblob-scripts-5.14
(linux-libre-deblob-scripts
linux-libre-5.14-version
linux-libre-5.14-gnu-revision
- (base32 "00vv2a51cvw2nx8iazmiy9i4h3jj9gvvpwz9gxp2v1hcmrsxq935")
+ (base32 "11zax57brk8bl75q68c71xsdlvslj48wpmrv8rh34sb8wym9n4mc")
(base32 "024rz0bp3n3r5nkwbib7byx10d72c2fh5cw9iv00diyzgnp819g7")))
(define-public linux-libre-5.14-pristine-source
(let ((version linux-libre-5.14-version)
- (hash (base32 "0dswxf1qk70lms5lph15i7nz3ybwiia58v8zzrmi71ajviwjc9wd")))
+ (hash (base32 "01m4qw1z7xn3ngsbm1bvcvikqpkjjr9n8585556wkmz9d469mwvl")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-5.14)))
@@ -369,92 +370,92 @@ 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.73")
+(define-public linux-libre-5.10-version "5.10.76")
(define-public linux-libre-5.10-gnu-revision "gnu1")
(define deblob-scripts-5.10
(linux-libre-deblob-scripts
linux-libre-5.10-version
linux-libre-5.10-gnu-revision
- (base32 "19d1pdsilq1ycnx1zw3vhf9mwdxbi5nmgzm0g1kj1lkkf1y4i1mv")
+ (base32 "1swy3y851jnnmk3hc0khllpsifb98camlwyskpn1dyvjsgjljd8x")
(base32 "024rz0bp3n3r5nkwbib7byx10d72c2fh5cw9iv00diyzgnp819g7")))
(define-public linux-libre-5.10-pristine-source
(let ((version linux-libre-5.10-version)
- (hash (base32 "0xhf0g5pra27hnavpy0y3mn05m5hqn5rd3d6fx0a3vr35c1jicpd")))
+ (hash (base32 "140qkvs88b5zh6mxxzpf36z1r8bbvyh3yigripqjz1k236x0j2j8")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-5.10)))
-(define-public linux-libre-5.4-version "5.4.153")
+(define-public linux-libre-5.4-version "5.4.156")
(define-public linux-libre-5.4-gnu-revision "gnu1")
(define deblob-scripts-5.4
(linux-libre-deblob-scripts
linux-libre-5.4-version
linux-libre-5.4-gnu-revision
- (base32 "1cdxljvmivdwcy9v9fr5iv0x0d1884pf3876p9nzrly599lz2wnl")
+ (base32 "1nlgk8ajb5wl3aa96h9a0pb9j5a5wmrbpk63varn557x1d00r7wj")
(base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
(define-public linux-libre-5.4-pristine-source
(let ((version linux-libre-5.4-version)
- (hash (base32 "0jaz57sd51xqc7w8k3f43bfc5mdsh1413mdngqqsgr8isv4hg7vd")))
+ (hash (base32 "1zkpqfhrc5n0yiij3jzvzywgabva53c8668f1ly1pkrzcbj77zh6")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-5.4)))
-(define-public linux-libre-4.19-version "4.19.211")
+(define-public linux-libre-4.19-version "4.19.214")
(define-public linux-libre-4.19-gnu-revision "gnu1")
(define deblob-scripts-4.19
(linux-libre-deblob-scripts
linux-libre-4.19-version
linux-libre-4.19-gnu-revision
- (base32 "1hiaagdyfy6b0f9ivdy7zq0cd6akaj6v3c4nzikrgsk12vgc1a1q")
+ (base32 "06pqv050bkii0hc2v7ymny5264w1bca8db0dp1pw9mfmjg865am5")
(base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
(define-public linux-libre-4.19-pristine-source
(let ((version linux-libre-4.19-version)
- (hash (base32 "1m3y5gsf5s8bb4jxkri20dlxi8aiqabzaijj2h1svz4r19ca8j7v")))
+ (hash (base32 "0i08np4gxiks7chp6j328pdqb02apbba53mj4zvxb9v37qpxzqgz")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.19)))
-(define-public linux-libre-4.14-version "4.14.250")
+(define-public linux-libre-4.14-version "4.14.253")
(define-public linux-libre-4.14-gnu-revision "gnu1")
(define deblob-scripts-4.14
(linux-libre-deblob-scripts
linux-libre-4.14-version
linux-libre-4.14-gnu-revision
- (base32 "0cnax38650m9sxiwvc1xm5saymlsmx427j3jqpx34df2ah2rnrwf")
+ (base32 "02rxvr0gmxb3zfsyyzdmzgfq04gkdkv1cc38md0xfl0mxzdzdfyk")
(base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
(define-public linux-libre-4.14-pristine-source
(let ((version linux-libre-4.14-version)
- (hash (base32 "0zbf6gxm8iwf7cra310gfd0zyj8l9ckdahky9w6wb9wlznwkvd54")))
+ (hash (base32 "1mgl55c8fa2ry4qp0phkdkzjhwfnkbhvi266n348kyjyqnjl234f")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.14)))
-(define-public linux-libre-4.9-version "4.9.286")
+(define-public linux-libre-4.9-version "4.9.288")
(define-public linux-libre-4.9-gnu-revision "gnu1")
(define deblob-scripts-4.9
(linux-libre-deblob-scripts
linux-libre-4.9-version
linux-libre-4.9-gnu-revision
- (base32 "1n74ddrifnw06hx7ih2sk8jaiqlm1jyyhswyjpxiyhrrcvjcilch")
+ (base32 "0nai5m4rbh37qaj1xf2qj7656l2gacfh0847q5d07y22b048fq5n")
(base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
(define-public linux-libre-4.9-pristine-source
(let ((version linux-libre-4.9-version)
- (hash (base32 "0id62p43dmkl9ir278p0dsfg3q7m1d8rlxv0c9qi1pzalkygv8p2")))
+ (hash (base32 "0v5592v565bl924c23m1n7p5zddr0w7zn8m97pmikk6p7cyhjq9n")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.9)))
-(define-public linux-libre-4.4-version "4.4.288")
+(define-public linux-libre-4.4-version "4.4.290")
(define-public linux-libre-4.4-gnu-revision "gnu1")
(define deblob-scripts-4.4
(linux-libre-deblob-scripts
linux-libre-4.4-version
linux-libre-4.4-gnu-revision
- (base32 "11397dgj6cdfv6anxrj7jwgvnqvwh5i0ci6c8mb85ry6h4fnfmq4")
+ (base32 "1mmnv77432la5dkhpy1n8w59c0v6l08fyf2ggh294gyrx8nbci11")
(base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p")))
(define-public linux-libre-4.4-pristine-source
(let ((version linux-libre-4.4-version)
- (hash (base32 "028w3yzmzymy7l1nf3n1pfbg95hfi4ilphkyl00ddgj8sfm542c7")))
+ (hash (base32 "1dcx58nmzkcc5nz2b5b7mgw4w7y28v3s9wd8h78czdqfa0kxrl20")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.4)))
@@ -1226,7 +1227,7 @@ and should be used with caution, especially on untested models.")
(define-public corefreq
(package
(name "corefreq")
- (version "1.86.7")
+ (version "1.87.4")
(source
(origin
(method git-fetch)
@@ -1235,7 +1236,7 @@ and should be used with caution, especially on untested models.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "1k8pyxcahc78kcc8q1h76dr91i1r33jciqhgkajkz3xa28qx8mhn"))))
+ (base32 "01g1smhfzb02gmfjm8c7rchc79dan9jc9pv9c0f8f7fly2hy5zvs"))))
(build-system linux-module-build-system)
(outputs (list "out" "linux-module"))
(arguments
@@ -5820,7 +5821,7 @@ feature, and a laptop with an accelerometer. It has no effect on SSDs.")
(define-public thinkfan
(package
(name "thinkfan")
- (version "1.2.2")
+ (version "1.3.0")
(source
(origin
(method git-fetch)
@@ -5829,7 +5830,7 @@ feature, and a laptop with an accelerometer. It has no effect on SSDs.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "01l1pnj1cgy3dwgyys2s5iqzyv6kk47vlpy09qjafk8py21ijik3"))))
+ (base32 "1whdhf3aw0g4xwbn1csy2wz6g1hw5nlw64r91nnxba9qn25nl9k4"))))
(build-system cmake-build-system)
(arguments
`(#:modules ((guix build cmake-build-system)
@@ -8288,6 +8289,71 @@ enable and disable specific instrumentation points, and writes event records
to ring buffers shared with a consumer daemon.")
(license license:lgpl2.1+)))
+(define-public lttng-tools
+ (package
+ (name "lttng-tools")
+ (version "2.12.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://lttng.org/files/lttng-tools/"
+ "lttng-tools-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "0bgk35423v6z17j1w80m7dcza7gigs1pwyq24sdmgqwg6j2d1zmc"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(;; FIXME - Currently there's a segmentation fault by swig when enabling
+ ;; Python's bindings. Thus, bindings are disable here. Replace
+ ;; `disable` by `enable` in #:configure-flags when this is fixed.
+ #:configure-flags '("--disable-python-bindings")
+ ;; FIXME - Tests are disabled for now because one test hangs
+ ;; indefinetely. Also, parallel testing is not possible because of how
+ ;; the lttng-daemon handles sessions. Thus, keep parallel testing
+ ;; disabled even after tests are enabled!
+ #:tests? #f
+ #:parallel-tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'set-environment-variables
+ (lambda _
+ (setenv "HOME" "/tmp")
+ (setenv "LTTNG_HOME" "/tmp")))
+ ;; We don't put (which "man") here because LTTng uses execlp.
+ (add-after 'unpack 'patch-default-man-path
+ (lambda _
+ (substitute* "src/common/defaults.h"
+ (("/usr/bin/man") "man")))))))
+ ;; NOTE - Users have to install python-3 in their profile to use the
+ ;; bindings. We don't put it in the inputs, because the rest of the tools
+ ;; can work without it.
+ (inputs
+ `(("liburcu" ,liburcu)
+ ("popt" ,popt)
+ ("numactl" ,numactl)))
+ (propagated-inputs
+ `(("kmod" ,kmod)
+ ("module-init-tools" ,module-init-tools)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("perl" ,perl)
+ ("libpfm4" ,libpfm4)
+ ("python-3" ,python-3)
+ ("swig" ,swig)
+ ("procps" ,procps)
+ ("which" ,which)
+ ("flex" ,flex)
+ ("bison" ,bison)
+ ("asciidoc" ,asciidoc)
+ ("libxml2" ,libxml2)
+ ("lttng-ust" ,lttng-ust)))
+ (home-page "https://lttng.org/")
+ (synopsis "LTTng userspace tracer libraries")
+ (description "The lttng-tools project provides a session
+daemon @code{lttng-sessiond} that acts as a tracing registry, the @command{lttng} command
+line for tracing control, a @code{lttng-ctl} library for tracing control and a
+@code{lttng-relayd} for network streaming.")
+ (license (list license:gpl2 license:lgpl2.1))))
+
(define-public kexec-tools
(package
(name "kexec-tools")
diff --git a/gnu/packages/lisp-check.scm b/gnu/packages/lisp-check.scm
index 95918433c4..ca00e5054e 100644
--- a/gnu/packages/lisp-check.scm
+++ b/gnu/packages/lisp-check.scm
@@ -1,5 +1,13 @@
;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca>
+;;; Copyright © 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018, 2019, 2020, 2021 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019, 2020 Katherine Cox-Buday <cox.katherine.e@gmail.com>
+;;; Copyright © 2019, 2020, 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
+;;; Copyright © 2021 Charles Jackson <charles.b.jackson@protonmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -16,6 +24,9 @@
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+;;; This module only contains Common Lisp libraries related to code testing
+;;; facilities.
+
(define-module (gnu packages lisp-check)
#:use-module (gnu packages)
#:use-module ((guix licenses) #:prefix license:)
@@ -24,10 +35,474 @@
#:use-module (guix git-download)
#:use-module (guix build-system asdf))
-;;; Commentary:
-;;;
-;;; This module only contains Common Lisp libraries related to code testing
-;;; facilities.
+(define-public sbcl-1am
+ (let ((commit "8b1da94eca4613fd8a20bdf63f0e609e379b0ba5"))
+ (package
+ (name "sbcl-1am")
+ (version (git-version "0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/lmj/1am")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "05ss4nz1jb9kb796295482b62w5cj29msfj8zis33sp2rw2vmv2g"))))
+ (build-system asdf-build-system/sbcl)
+ (home-page "https://github.com/lmj/1am")
+ (synopsis "Minimal testing framework for Common Lisp")
+ (description "A minimal testing framework for Common Lisp.")
+ (license license:expat))))
+
+(define-public cl-1am
+ (sbcl-package->cl-source-package sbcl-1am))
+
+(define-public ecl-1am
+ (sbcl-package->ecl-package sbcl-1am))
+
+(define-public sbcl-check-it
+ (let ((commit "b79c9103665be3976915b56b570038f03486e62f"))
+ (package
+ (name "sbcl-check-it")
+ (version (git-version "0.1.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/DalekBaldwin/check-it/")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1kbjwpniffdpv003igmlz5r0vy65m7wpfnhg54fhwirp1227hgg7"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("closer-mop" ,sbcl-closer-mop)
+ ("optima" ,sbcl-optima)))
+ (native-inputs
+ `(("stefil" ,sbcl-stefil)))
+ (home-page "https://github.com/arclanguage/Clamp")
+ (synopsis "Randomized specification-based testing for Common Lisp")
+ (description
+ "This is a randomized property-based testing library for Common Lisp.
+Rather than being a full-fledged general test framework in its own right, it's
+designed to embed randomized tests in whatever framework you like.")
+ (license license:llgpl))))
+
+(define-public cl-check-it
+ (sbcl-package->cl-source-package sbcl-check-it))
+
+(define-public ecl-check-it
+ (sbcl-package->ecl-package sbcl-check-it))
+
+(define-public sbcl-checkl
+ (let ((commit "80328800d047fef9b6e32dfe6bdc98396aee3cc9")
+ (revision "1"))
+ (package
+ (name "sbcl-checkl")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/rpav/CheckL")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0bpisihx1gay44xmyr1dmhlwh00j0zzi04rp9fy35i95l2r4xdlx"))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ ;; Error while trying to load definition for system checkl-test from
+ ;; pathname [...]/checkl-test.asd: The function CHECKL:DEFINE-TEST-OP
+ ;; is undefined.
+ '(#:asd-files '("checkl.asd")
+ #:tests? #f))
+ (native-inputs
+ `(("sbcl-fiveam" ,sbcl-fiveam)))
+ (inputs
+ `(("sbcl-marshal" ,sbcl-marshal)))
+ (home-page "https://github.com/rpav/CheckL/")
+ (synopsis "Dynamic testing for Common Lisp")
+ (description
+ "CheckL lets you write tests dynamically, it checks resulting values
+against the last run.")
+ ;; The author specifies both LLGPL and "BSD", but the "BSD" license
+ ;; isn't specified anywhere, so I don't know which kind. LLGPL is the
+ ;; stronger of the two and so I think only listing this should suffice.
+ (license license:llgpl))))
+
+(define-public cl-checkl
+ (sbcl-package->cl-source-package sbcl-checkl))
+
+(define-public ecl-checkl
+ (sbcl-package->ecl-package sbcl-checkl))
+
+(define-public sbcl-cl-mock
+ ;; .asd version only got updated recently, despired the old GitHug "1.0.1" release.
+ (let ((commit "7988dca2093358911b67597a2cd1570c785dfe76"))
+ (package
+ (name "sbcl-cl-mock")
+ (version (git-version "1.0.1" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Ferada/cl-mock/")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0f40wikcf783jx26ip0nnhwjjfjvjiw7njqsqrb6kaphc8bgw0i1"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("closer-mop" ,sbcl-closer-mop)
+ ("trivia" ,sbcl-trivia)))
+ (native-inputs
+ `(("fiveam" ,sbcl-fiveam)))
+ (home-page "https://github.com/Ferada/cl-mock")
+ (synopsis "Mocking functions for Common Lisp testing")
+ (description
+ "This small library provides a way to replace the actual implementation
+of either regular or generic functions with mocks.")
+ (license license:agpl3))))
+
+(define-public ecl-cl-mock
+ (sbcl-package->ecl-package sbcl-cl-mock))
+
+(define-public cl-mock
+ (sbcl-package->cl-source-package sbcl-cl-mock))
+
+(define-public sbcl-cl-quickcheck
+ (let ((commit "807b2792a30c883a2fbecea8e7db355b50ba662f")
+ (revision "1"))
+ (package
+ (name "sbcl-cl-quickcheck")
+ (version (git-version "0.0.4" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/mcandre/cl-quickcheck")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "165lhypq5xkcys6hvzb3jq7ywnmqvzaflda29qk2cbs3ggas4767"))))
+ (build-system asdf-build-system/sbcl)
+ (synopsis
+ "Common Lisp port of the QuickCheck unit test framework")
+ (description
+ "Common Lisp port of the QuickCheck unit test framework")
+ (home-page "https://github.com/mcandre/cl-quickcheck")
+ ;; MIT
+ (license license:expat))))
+
+(define-public cl-quickcheck
+ (sbcl-package->cl-source-package sbcl-cl-quickcheck))
+
+(define-public ecl-cl-quickcheck
+ (sbcl-package->ecl-package sbcl-cl-quickcheck))
+
+(define-public sbcl-clunit
+ (let ((commit "6f6d72873f0e1207f037470105969384f8380628")
+ (revision "1"))
+ (package
+ (name "sbcl-clunit")
+ (version (git-version "0.2.3" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/tgutu/clunit")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1idf2xnqzlhi8rbrqmzpmb3i1l6pbdzhhajkmhwbp6qjkmxa4h85"))))
+ (build-system asdf-build-system/sbcl)
+ (synopsis "CLUnit is a Common Lisp unit testing framework")
+ (description
+ "CLUnit is a Common Lisp unit testing framework. It is designed
+to be easy to use so that you can quickly start testing. CLUnit
+provides a rich set of features aimed at improving your unit testing
+experience.")
+ (home-page "https://tgutu.github.io/clunit/")
+ ;; MIT License
+ (license license:expat))))
+
+(define-public cl-clunit
+ (sbcl-package->cl-source-package sbcl-clunit))
+
+(define-public ecl-clunit
+ (sbcl-package->ecl-package sbcl-clunit))
+
+(define-public sbcl-clunit2
+ (let ((commit "5e28343734eb9b7aee39306a614af92c1062d50b")
+ (revision "1"))
+ (package
+ (name "sbcl-clunit2")
+ (version (git-version "0.2.4" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://notabug.org/cage/clunit2.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1ngiapfki6nm8a555mzhb5p7ch79i3w665za5bmb5j7q34fy80vw"))))
+ (build-system asdf-build-system/sbcl)
+ (synopsis "Unit testing framework for Common Lisp")
+ (description
+ "CLUnit is a Common Lisp unit testing framework. It is designed to be
+easy to use so that you can quickly start testing.")
+ (home-page "https://notabug.org/cage/clunit2")
+ (license license:expat))))
+
+(define-public cl-clunit2
+ (sbcl-package->cl-source-package sbcl-clunit2))
+
+(define-public ecl-clunit2
+ (sbcl-package->ecl-package sbcl-clunit2))
+
+(define-public sbcl-eos
+ (let ((commit "b4413bccc4d142cbe1bf49516c3a0a22c9d99243")
+ (revision "2"))
+ (package
+ (name "sbcl-eos")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/adlai/Eos")
+ (commit commit)))
+ (sha256
+ (base32 "1afllvmlnx97yzz404gycl3pa3kwx427k3hrbf37rpmjlv47knhk"))
+ (file-name (git-file-name "eos" version))))
+ (build-system asdf-build-system/sbcl)
+ (synopsis "Unit Testing for Common Lisp")
+ (description
+ "Eos was a unit testing library for Common Lisp.
+It began as a fork of FiveAM; however, FiveAM development has continued, while
+that of Eos has not. Thus, Eos is now deprecated in favor of FiveAM.")
+ (home-page "https://github.com/adlai/Eos")
+ (license license:expat))))
+
+(define-public cl-eos
+ (sbcl-package->cl-source-package sbcl-eos))
+
+(define-public ecl-eos
+ (sbcl-package->ecl-package sbcl-eos))
+
+(define-public sbcl-fiasco
+ (let ((commit "d62f7558b21addc89f87e306f65d7f760632655f")
+ (revision "1"))
+ (package
+ (name "sbcl-fiasco")
+ (version (git-version "0.0.1" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/joaotavora/fiasco")
+ (commit commit)))
+ (file-name (git-file-name "fiasco" version))
+ (sha256
+ (base32
+ "1zwxs3d6iswayavcmb49z2892xhym7n556d8dnmvalc32pm9bkjh"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
+ (synopsis "Simple and powerful test framework for Common Lisp")
+ (description "A Common Lisp test framework that treasures your failures,
+logical continuation of Stefil. It focuses on interactive debugging.")
+ (home-page "https://github.com/joaotavora/fiasco")
+ ;; LICENCE specifies this is public-domain unless the legislation
+ ;; doesn't allow or recognize it. In that case it falls back to a
+ ;; permissive licence.
+ (license (list license:public-domain
+ (license:x11-style "file://LICENCE"))))))
+
+(define-public cl-fiasco
+ (sbcl-package->cl-source-package sbcl-fiasco))
+
+(define-public ecl-fiasco
+ (sbcl-package->ecl-package sbcl-fiasco))
+
+(define-public sbcl-fiveam
+ (package
+ (name "sbcl-fiveam")
+ (version "1.4.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/sionescu/fiveam")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name "fiveam" version))
+ (sha256
+ (base32 "04mh5plmlb15jbq3dkd8b9jl1dmbbg4hnd3k7859vpf6s12k5p4j"))))
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("net.didierverna.asdf-flv" ,sbcl-net.didierverna.asdf-flv)
+ ("trivial-backtrace" ,sbcl-trivial-backtrace)))
+ (build-system asdf-build-system/sbcl)
+ (synopsis "Common Lisp testing framework")
+ (description "FiveAM is a simple (as far as writing and running tests
+goes) regression testing framework. It has been designed with Common Lisp's
+interactive development model in mind.")
+ (home-page "https://common-lisp.net/project/fiveam/")
+ (license license:bsd-3)))
+
+(define-public cl-fiveam
+ (sbcl-package->cl-source-package sbcl-fiveam))
+
+(define-public ecl-fiveam
+ (sbcl-package->ecl-package sbcl-fiveam))
+
+(define-public sbcl-hu.dwim.stefil
+ (let ((commit "414902c6f575818c39a8a156b8b61b1adfa73dad"))
+ (package
+ (name "sbcl-hu.dwim.stefil")
+ (version (git-version "0.0.0" "2" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://github.com/hu-dwim/hu.dwim.stefil")
+ (commit commit)))
+ (sha256
+ (base32 "14izmjjim590rh74swrssavdmdznj2z8vhqixy780sjhpcr5pmkc"))
+ (file-name (git-file-name "hu.dwim.stefil" version))))
+ (build-system asdf-build-system/sbcl)
+ (native-inputs
+ `(("asdf:cl-hu.dwim.asdf" ,sbcl-hu.dwim.asdf)))
+ (inputs
+ `(("sbcl-alexandria" ,sbcl-alexandria)))
+ (home-page "http://dwim.hu/project/hu.dwim.stefil")
+ (synopsis "Simple test framework")
+ (description "Stefil is a simple test framework for Common Lisp,
+with a focus on interactive development.")
+ (license license:public-domain))))
+
+(define-public cl-hu.dwim.stefil
+ (sbcl-package->cl-source-package sbcl-hu.dwim.stefil))
+
+(define-public ecl-hu.dwim.stefil
+ (sbcl-package->ecl-package sbcl-hu.dwim.stefil))
+
+(define-public sbcl-lift
+ (let ((commit "2594160d6ca3a77d8750110dfa63214256aab852")
+ (revision "2"))
+ (package
+ (name "sbcl-lift")
+ (version (git-version "1.7.1" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/gwkkwg/lift")
+ (commit commit)))
+ (sha256
+ (base32 "01xvz9sl5l5lai4h9dabmcjnm659wf5zllaxqbs55lffskp6jwq3"))
+ (file-name (git-file-name "lift" version))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Don't keep the bundled website
+ `(begin
+ (delete-file-recursively "website")
+ #t))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ ;; The tests require a debugger, but we run with the debugger disabled.
+ '(#:tests? #f))
+ (synopsis "LIsp Framework for Testing")
+ (description
+ "The LIsp Framework for Testing (LIFT) is a unit and system test tool for LISP.
+Though inspired by SUnit and JUnit, it's built with Lisp in mind. In LIFT,
+testcases are organized into hierarchical testsuites each of which can have
+its own fixture. When run, a testcase can succeed, fail, or error. LIFT
+supports randomized testing, benchmarking, profiling, and reporting.")
+ (home-page "https://github.com/gwkkwg/lift")
+ (license license:expat))))
+
+(define-public cl-lift
+ (sbcl-package->cl-source-package sbcl-lift))
+
+(define-public ecl-lift
+ (sbcl-package->ecl-package sbcl-lift))
+
+(define-public sbcl-lisp-unit
+ (let ((commit "89653a232626b67400bf9a941f9b367da38d3815"))
+ (package
+ (name "sbcl-lisp-unit")
+ (version (git-version "0.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/OdonataResearchLLC/lisp-unit")
+ (commit commit)))
+ (sha256
+ (base32
+ "0p6gdmgr7p383nvd66c9y9fp2bjk4jx1lpa5p09g43hr9y9pp9ry"))
+ (file-name (git-file-name "lisp-unit" version))))
+ (build-system asdf-build-system/sbcl)
+ (synopsis "Common Lisp Test framework inspired by JUnit to be simple of use")
+ (description
+ "@command{lisp-unit} is a Common Lisp library that supports unit
+testing. It is an extension of the library written by Chris Riesbeck.")
+ (home-page "https://github.com/OdonataResearchLLC/lisp-unit")
+ (license license:expat))))
+
+(define-public cl-lisp-unit
+ (sbcl-package->cl-source-package sbcl-lisp-unit))
+
+(define-public ecl-lisp-unit
+ (sbcl-package->ecl-package sbcl-lisp-unit))
+
+(define-public sbcl-lisp-unit2
+ ;; There is a cyclical dependency between symbol-munger and lisp-unit2.
+ ;; See https://github.com/AccelerationNet/symbol-munger/issues/4
+ (let ((commit "fb9721524d1e4e73abb223ee036d74ce14a5505c")
+ (revision "1"))
+ (package
+ (name "sbcl-lisp-unit2")
+ (version (git-version "0.2.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/AccelerationNet/lisp-unit2")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1rsqy8y0jqll6xn9a593848f5wvd5ribv4csry1ly0hmdhfnqzlp"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("cl-interpol" ,sbcl-cl-interpol)
+ ("iterate" ,sbcl-iterate)
+ ("symbol-munger" ,sbcl-symbol-munger)))
+ (synopsis "Test Framework for Common Lisp")
+ (description
+ "LISP-UNIT2 is a Common Lisp library that supports unit testing in the
+style of JUnit for Java. It is a new version of the lisp-unit library written
+by Chris Riesbeck.")
+ (home-page "https://github.com/AccelerationNet/lisp-unit2")
+ (license license:expat))))
+
+(define-public cl-lisp-unit2
+ (sbcl-package->cl-source-package sbcl-lisp-unit2))
+
+(define-public ecl-lisp-unit2
+ (sbcl-package->ecl-package sbcl-lisp-unit2))
(define-public sbcl-nst
(let ((commit "6c0990f594abcf5887e8d80f1035e3b60454b61b")
@@ -60,4 +535,313 @@
(define-public cl-nst
(sbcl-package->cl-source-package sbcl-nst))
-;;; lisp-check.scm ends here
+(define-public sbcl-parachute
+ (let ((commit "ca04dd8e43010a6dfffa26dbe1d62af86008d666")
+ (revision "0"))
+ (package
+ (name "sbcl-parachute")
+ (version (git-version "1.1.1" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://github.com/Shinmera/parachute")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1mvsm3r0r6a2bg75nw0q7n9vlby3ch45qjl7hnb5k1z2n5x5lh60"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("documentation-utils" ,sbcl-documentation-utils)
+ ("form-fiddle" ,sbcl-form-fiddle)))
+ (synopsis "Extensible and cross-compatible testing framework for Common Lisp")
+ (description
+ "Parachute is a simple-to-use and extensible testing framework.
+In Parachute, things are organised as a bunch of named tests within a package.
+Each test can contain a bunch of test forms that make up its body.")
+ (home-page "https://shinmera.github.io/parachute/")
+ (license license:zlib))))
+
+(define-public cl-parachute
+ (sbcl-package->cl-source-package sbcl-parachute))
+
+(define-public ecl-parachute
+ (sbcl-package->ecl-package sbcl-parachute))
+
+(define-public sbcl-prove
+ (let ((commit "5d71f02795b89e36f34e8c7d50e69b67ec6ca2de")
+ (revision "2"))
+ (package
+ (name "sbcl-prove")
+ (version (git-version "1.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/fukamachi/prove")
+ (commit commit)))
+ (sha256
+ (base32 "0ca6ha3zhmckq3ad9lxm6sbg4i0hg3m81xhan4dkxd3x9898jzpc"))
+ (file-name (git-file-name "prove" version))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("cl-colors" ,sbcl-cl-colors)
+ ("cl-ppcre" ,sbcl-cl-ppcre)
+ ("cl-ansi-text" ,sbcl-cl-ansi-text)))
+ (synopsis "Yet another unit testing framework for Common Lisp")
+ (description
+ "This project was originally called @command{cl-test-more}.
+@command{prove} is yet another unit testing framework for Common Lisp. The
+advantages of @command{prove} are:
+
+@itemize
+@item Various simple functions for testing and informative error messages
+@item ASDF integration
+@item Extensible test reporters
+@item Colorizes the report if it's available (note for SLIME)
+@item Reports test durations
+@end itemize\n")
+ (home-page "https://github.com/fukamachi/prove")
+ (license license:expat))))
+
+(define-public cl-prove
+ (sbcl-package->cl-source-package sbcl-prove))
+
+(define-public ecl-prove
+ (sbcl-package->ecl-package sbcl-prove))
+
+(define-public sbcl-ptester
+ (let ((commit "fe69fde54f4bce00ce577feb918796c293fc7253")
+ (revision "1"))
+ (package
+ (name "sbcl-ptester")
+ (version (git-version "2.1.3" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "http://git.kpe.io/ptester.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1l0lfl7cdnr2qf4zh38hi4llxg22c49zkm639bdkmvlkzwj3ndwf"))))
+ (build-system asdf-build-system/sbcl)
+ (home-page "http://quickdocs.org/ptester/")
+ (synopsis "Portable test harness package")
+ (description
+ "@command{ptester} is a portable testing framework based on Franz's
+tester module.")
+ (license license:llgpl))))
+
+(define-public cl-ptester
+ (sbcl-package->cl-source-package sbcl-ptester))
+
+(define-public ecl-ptester
+ (sbcl-package->ecl-package sbcl-ptester))
+
+(define-public sbcl-rove
+ (package
+ (name "sbcl-rove")
+ (version "0.9.6")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/fukamachi/rove")
+ (commit "f3695db08203bf26f3b861dc22ac0f4257d3ec21")))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "07ala4l2fncxf540fzxj3h5mhi9i4wqllhj0rqk8m2ljl5zbz89q"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("bordeaux-threads" ,sbcl-bordeaux-threads)
+ ("dissect" ,sbcl-dissect)
+ ("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
+ (home-page "https://github.com/fukamachi/rove")
+ (synopsis
+ "Yet another common lisp testing library")
+ (description
+ "Rove is a unit testing framework for Common Lisp applications.
+This is intended to be a successor of Prove.")
+ (license license:bsd-3)))
+
+(define-public cl-rove
+ (sbcl-package->cl-source-package sbcl-rove))
+
+(define-public ecl-rove
+ (sbcl-package->ecl-package sbcl-rove))
+
+(define-public sbcl-rt
+ (let ((commit "a6a7503a0b47953bc7579c90f02a6dba1f6e4c5a")
+ (revision "1"))
+ (package
+ (name "sbcl-rt")
+ (version (git-version "1990.12.19" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "http://git.kpe.io/rt.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "13si2rrxaagbr0bkvg6sqicxxpyshabx6ad6byc9n2ik5ysna69b"))))
+ (build-system asdf-build-system/sbcl)
+ (synopsis "MIT Regression Tester")
+ (description
+ "RT provides a framework for writing regression test suites.")
+ (home-page "https://www.cliki.net/rt")
+ (license license:expat))))
+
+(define-public cl-rt
+ (sbcl-package->cl-source-package sbcl-rt))
+
+(define-public ecl-rt
+ (sbcl-package->ecl-package sbcl-rt))
+
+(define-public sbcl-should-test
+ (let ((commit "48facb9f9c07aeceb71fc0c48ce17fd7d54a09d4")
+ (revision "0"))
+ (package
+ (name "sbcl-should-test")
+ (version (git-version "1.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/vseloved/should-test")
+ (commit commit)))
+ (file-name (git-file-name "should-test" version))
+ (sha256
+ (base32 "1fqqa7lhf28qg60ji9libkylkcy747x576qpjn1y7c945j2fxmnm"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("cl-ppcre" ,sbcl-cl-ppcre)
+ ("local-time" ,sbcl-local-time)
+ ("osicat" ,sbcl-osicat)
+ ("rutils" ,sbcl-rutils)))
+ (home-page "https://github.com/vseloved/should-test")
+ (synopsis "Minimal yet feature-rich Common Lisp test framework")
+ (description
+ "SHOULD-TEST is a methodology-agnostic and non-opinionated Common Lisp
+test framework, i.e. it doesn't care what kind of test approach you'd like to
+take.")
+ (license license:expat))))
+
+(define-public cl-should-test
+ (sbcl-package->cl-source-package sbcl-should-test))
+
+(define-public ecl-should-test
+ (sbcl-package->ecl-package sbcl-should-test))
+
+(define-public sbcl-stefil
+ (let ((commit "0398548ec95dceb50fc2c2c03e5fb0ce49b86c7a")
+ (revision "0"))
+ (package
+ (name "sbcl-stefil")
+ (version (git-version "0.1" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.common-lisp.net/stefil/stefil.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0bqz64q2szzhf91zyqyssmvrz7da6442rs01808pf3wrdq28bclh"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("iterate" ,sbcl-iterate)
+ ("metabang-bind" ,sbcl-metabang-bind)
+ ("swank" ,sbcl-slime-swank)))
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'drop-unnecessary-dependency
+ (lambda _
+ (substitute* "package.lisp"
+ ((":stefil-system") ""))
+ #t)))))
+ (home-page "https://common-lisp.net/project/stefil/index-old.shtml")
+ (synopsis "Simple test framework")
+ (description
+ "Stefil is a simple test framework for Common Lisp, with a focus on
+interactive development.")
+ (license license:public-domain))))
+
+(define-public cl-stefil
+ (sbcl-package->cl-source-package sbcl-stefil))
+
+(define-public ecl-stefil
+ (sbcl-package->ecl-package sbcl-stefil))
+
+(define-public sbcl-unit-test
+ (let ((commit "266afaf4ac091fe0e8803bac2ae72d238144e735")
+ (revision "1"))
+ (package
+ (name "sbcl-unit-test")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hanshuebner/unit-test")
+ (commit commit)))
+ (file-name (git-file-name "unit-test" version))
+ (sha256
+ (base32 "11hpksz56iqkv7jw25p2a8r3n9dj922fyarn16d98589g6hdskj9"))))
+ (build-system asdf-build-system/sbcl)
+ (home-page "https://github.com/hanshuebner/unit-test")
+ (synopsis "Unit-testing framework for Common Lisp")
+ (description "This is a unit-testing framework for Common Lisp.")
+ (license license:unlicense))))
+
+(define-public ecl-unit-test
+ (sbcl-package->ecl-package sbcl-unit-test))
+
+(define-public cl-unit-test
+ (sbcl-package->cl-source-package sbcl-unit-test))
+
+(define-public sbcl-xlunit
+ (let ((commit "3805d34b1d8dc77f7e0ee527a2490194292dd0fc")
+ (revision "1"))
+ (package
+ (name "sbcl-xlunit")
+ (version (git-version "0.6.3" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "http://git.kpe.io/xlunit.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0argfmp9nghs4sihyj3f8ch9qfib2b7ll07v5m9ziajgzsfl5xw3"))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-tests
+ (lambda _
+ (substitute* "xlunit.asd"
+ ((" :force t") ""))
+ #t)))))
+ (synopsis "Unit testing package for Common Lisp")
+ (description
+ "The XLUnit package is a toolkit for building test suites. It is based
+on the XPTest package by Craig Brozensky and the JUnit package by Kent Beck.")
+ (home-page "http://quickdocs.org/xlunit/")
+ (license license:bsd-3))))
+
+(define-public cl-xlunit
+ (sbcl-package->cl-source-package sbcl-xlunit))
+
+(define-public ecl-xlunit
+ (sbcl-package->ecl-package sbcl-xlunit))
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index cee2bbe37b..6521a1add3 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -78,6 +78,7 @@
#:use-module (gnu packages libffi)
#:use-module (gnu packages linux)
#:use-module (gnu packages lisp)
+ #:use-module (gnu packages lisp-check)
#:use-module (gnu packages maths)
#:use-module (gnu packages mp3)
#:use-module (gnu packages ncurses)
@@ -333,37 +334,6 @@ or cl-launch for portable processing of command-line arguments.")
(define-public cl-command-line-arguments
(sbcl-package->cl-source-package sbcl-command-line-arguments))
-(define-public sbcl-fiveam
- (package
- (name "sbcl-fiveam")
- (version "1.4.2")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/sionescu/fiveam")
- (commit (string-append "v" version))))
- (file-name (git-file-name "fiveam" version))
- (sha256
- (base32 "04mh5plmlb15jbq3dkd8b9jl1dmbbg4hnd3k7859vpf6s12k5p4j"))))
- (inputs
- `(("alexandria" ,sbcl-alexandria)
- ("net.didierverna.asdf-flv" ,sbcl-net.didierverna.asdf-flv)
- ("trivial-backtrace" ,sbcl-trivial-backtrace)))
- (build-system asdf-build-system/sbcl)
- (synopsis "Common Lisp testing framework")
- (description "FiveAM is a simple (as far as writing and running tests
-goes) regression testing framework. It has been designed with Common Lisp's
-interactive development model in mind.")
- (home-page "https://common-lisp.net/project/fiveam/")
- (license license:bsd-3)))
-
-(define-public cl-fiveam
- (sbcl-package->cl-source-package sbcl-fiveam))
-
-(define-public ecl-fiveam
- (sbcl-package->ecl-package sbcl-fiveam))
-
(define-public sbcl-cl-irc
(let ((commit "963823537c7bfcda2edd4c44d172192da6722175")
(revision "0"))
@@ -512,42 +482,6 @@ thin compatibility layer for gray streams.")
(define-public ecl-trivial-gray-streams
(sbcl-package->ecl-package sbcl-trivial-gray-streams))
-(define-public sbcl-fiasco
- (let ((commit "d62f7558b21addc89f87e306f65d7f760632655f")
- (revision "1"))
- (package
- (name "sbcl-fiasco")
- (version (git-version "0.0.1" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/joaotavora/fiasco")
- (commit commit)))
- (file-name (git-file-name "fiasco" version))
- (sha256
- (base32
- "1zwxs3d6iswayavcmb49z2892xhym7n556d8dnmvalc32pm9bkjh"))))
- (build-system asdf-build-system/sbcl)
- (inputs
- `(("alexandria" ,sbcl-alexandria)
- ("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
- (synopsis "Simple and powerful test framework for Common Lisp")
- (description "A Common Lisp test framework that treasures your failures,
-logical continuation of Stefil. It focuses on interactive debugging.")
- (home-page "https://github.com/joaotavora/fiasco")
- ;; LICENCE specifies this is public-domain unless the legislation
- ;; doesn't allow or recognize it. In that case it falls back to a
- ;; permissive licence.
- (license (list license:public-domain
- (license:x11-style "file://LICENCE"))))))
-
-(define-public cl-fiasco
- (sbcl-package->cl-source-package sbcl-fiasco))
-
-(define-public ecl-fiasco
- (sbcl-package->ecl-package sbcl-fiasco))
-
(define-public sbcl-flexi-streams
(package
(name "sbcl-flexi-streams")
@@ -1427,38 +1361,6 @@ documentation system, explicit development support, etc.")
(define-public ecl-hu.dwim.asdf
(sbcl-package->ecl-package sbcl-hu.dwim.asdf))
-(define-public sbcl-hu.dwim.stefil
- (let ((commit "414902c6f575818c39a8a156b8b61b1adfa73dad"))
- (package
- (name "sbcl-hu.dwim.stefil")
- (version (git-version "0.0.0" "2" commit))
- (source
- (origin
- (method git-fetch)
- (uri
- (git-reference
- (url "https://github.com/hu-dwim/hu.dwim.stefil")
- (commit commit)))
- (sha256
- (base32 "14izmjjim590rh74swrssavdmdznj2z8vhqixy780sjhpcr5pmkc"))
- (file-name (git-file-name "hu.dwim.stefil" version))))
- (build-system asdf-build-system/sbcl)
- (native-inputs
- `(("asdf:cl-hu.dwim.asdf" ,sbcl-hu.dwim.asdf)))
- (inputs
- `(("sbcl-alexandria" ,sbcl-alexandria)))
- (home-page "http://dwim.hu/project/hu.dwim.stefil")
- (synopsis "Simple test framework")
- (description "Stefil is a simple test framework for Common Lisp,
-with a focus on interactive development.")
- (license license:public-domain))))
-
-(define-public cl-hu.dwim.stefil
- (sbcl-package->cl-source-package sbcl-hu.dwim.stefil))
-
-(define-public ecl-hu.dwim.stefil
- (sbcl-package->ecl-package sbcl-hu.dwim.stefil))
-
(define-public sbcl-babel
;; No release since 2014.
(let ((commit "aeed2d1b76358db48e6b70a64399c05678a6b9ea"))
@@ -1785,36 +1687,6 @@ libraries such as Bordeaux-Threads and Eager Future.")
(define-public ecl-calispel
(sbcl-package->ecl-package sbcl-calispel))
-(define-public sbcl-eos
- (let ((commit "b4413bccc4d142cbe1bf49516c3a0a22c9d99243")
- (revision "2"))
- (package
- (name "sbcl-eos")
- (version (git-version "0.0.0" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/adlai/Eos")
- (commit commit)))
- (sha256
- (base32 "1afllvmlnx97yzz404gycl3pa3kwx427k3hrbf37rpmjlv47knhk"))
- (file-name (git-file-name "eos" version))))
- (build-system asdf-build-system/sbcl)
- (synopsis "Unit Testing for Common Lisp")
- (description
- "Eos was a unit testing library for Common Lisp.
-It began as a fork of FiveAM; however, FiveAM development has continued, while
-that of Eos has not. Thus, Eos is now deprecated in favor of FiveAM.")
- (home-page "https://github.com/adlai/Eos")
- (license license:expat))))
-
-(define-public cl-eos
- (sbcl-package->cl-source-package sbcl-eos))
-
-(define-public ecl-eos
- (sbcl-package->ecl-package sbcl-eos))
-
(define-public sbcl-esrap
(let ((commit "866f28fa7a2c1d3fb6d0d0423850d1f9d955750f")
(revision "2"))
@@ -2060,34 +1932,6 @@ than the body of the lambda.")
(define-public cl-fn
(sbcl-package->cl-source-package sbcl-fn))
-(define-public sbcl-rt
- (let ((commit "a6a7503a0b47953bc7579c90f02a6dba1f6e4c5a")
- (revision "1"))
- (package
- (name "sbcl-rt")
- (version (git-version "1990.12.19" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "http://git.kpe.io/rt.git")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "13si2rrxaagbr0bkvg6sqicxxpyshabx6ad6byc9n2ik5ysna69b"))))
- (build-system asdf-build-system/sbcl)
- (synopsis "MIT Regression Tester")
- (description
- "RT provides a framework for writing regression test suites.")
- (home-page "https://www.cliki.net/rt")
- (license license:expat))))
-
-(define-public cl-rt
- (sbcl-package->cl-source-package sbcl-rt))
-
-(define-public ecl-rt
- (sbcl-package->ecl-package sbcl-rt))
-
(define-public sbcl-nibbles
;; No tagged release since 2018.
(let ((commit "dad25240928d5cf8f7df69c4398244e03570bb35")
@@ -2388,35 +2232,6 @@ project.")
(define-public cl-mssql
(sbcl-package->cl-source-package sbcl-mssql))
-(define-public sbcl-lisp-unit
- (let ((commit "89653a232626b67400bf9a941f9b367da38d3815"))
- (package
- (name "sbcl-lisp-unit")
- (version (git-version "0.0.0" "1" commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/OdonataResearchLLC/lisp-unit")
- (commit commit)))
- (sha256
- (base32
- "0p6gdmgr7p383nvd66c9y9fp2bjk4jx1lpa5p09g43hr9y9pp9ry"))
- (file-name (git-file-name "lisp-unit" version))))
- (build-system asdf-build-system/sbcl)
- (synopsis "Common Lisp Test framework inspired by JUnit to be simple of use")
- (description
- "@command{lisp-unit} is a Common Lisp library that supports unit
-testing. It is an extension of the library written by Chris Riesbeck.")
- (home-page "https://github.com/OdonataResearchLLC/lisp-unit")
- (license license:expat))))
-
-(define-public cl-lisp-unit
- (sbcl-package->cl-source-package sbcl-lisp-unit))
-
-(define-public ecl-lisp-unit
- (sbcl-package->ecl-package sbcl-lisp-unit))
-
(define-public sbcl-anaphora
(package
(name "sbcl-anaphora")
@@ -2448,47 +2263,6 @@ new fiends in addition to old friends like @command{aif} and
(define-public ecl-anaphora
(sbcl-package->ecl-package sbcl-anaphora))
-(define-public sbcl-lift
- (let ((commit "2594160d6ca3a77d8750110dfa63214256aab852")
- (revision "2"))
- (package
- (name "sbcl-lift")
- (version (git-version "1.7.1" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/gwkkwg/lift")
- (commit commit)))
- (sha256
- (base32 "01xvz9sl5l5lai4h9dabmcjnm659wf5zllaxqbs55lffskp6jwq3"))
- (file-name (git-file-name "lift" version))
- (modules '((guix build utils)))
- (snippet
- ;; Don't keep the bundled website
- `(begin
- (delete-file-recursively "website")
- #t))))
- (build-system asdf-build-system/sbcl)
- (arguments
- ;; The tests require a debugger, but we run with the debugger disabled.
- '(#:tests? #f))
- (synopsis "LIsp Framework for Testing")
- (description
- "The LIsp Framework for Testing (LIFT) is a unit and system test tool for LISP.
-Though inspired by SUnit and JUnit, it's built with Lisp in mind. In LIFT,
-testcases are organized into hierarchical testsuites each of which can have
-its own fixture. When run, a testcase can succeed, fail, or error. LIFT
-supports randomized testing, benchmarking, profiling, and reporting.")
- (home-page "https://github.com/gwkkwg/lift")
- (license license:expat))))
-
-(define-public cl-lift
- (sbcl-package->cl-source-package sbcl-lift))
-
-(define-public ecl-lift
- (sbcl-package->ecl-package sbcl-lift))
-
(define-public sbcl-let-plus
(let ((commit "5f14af61d501ecead02ec6b5a5c810efc0c9fdbb"))
(package
@@ -2609,49 +2383,6 @@ named color.")
(define-public ecl-cl-ansi-text
(sbcl-package->ecl-package sbcl-cl-ansi-text))
-(define-public sbcl-prove
- (let ((commit "5d71f02795b89e36f34e8c7d50e69b67ec6ca2de")
- (revision "2"))
- (package
- (name "sbcl-prove")
- (version (git-version "1.0.0" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/fukamachi/prove")
- (commit commit)))
- (sha256
- (base32 "0ca6ha3zhmckq3ad9lxm6sbg4i0hg3m81xhan4dkxd3x9898jzpc"))
- (file-name (git-file-name "prove" version))))
- (build-system asdf-build-system/sbcl)
- (inputs
- `(("alexandria" ,sbcl-alexandria)
- ("cl-colors" ,sbcl-cl-colors)
- ("cl-ppcre" ,sbcl-cl-ppcre)
- ("cl-ansi-text" ,sbcl-cl-ansi-text)))
- (synopsis "Yet another unit testing framework for Common Lisp")
- (description
- "This project was originally called @command{cl-test-more}.
-@command{prove} is yet another unit testing framework for Common Lisp. The
-advantages of @command{prove} are:
-
-@itemize
-@item Various simple functions for testing and informative error messages
-@item ASDF integration
-@item Extensible test reporters
-@item Colorizes the report if it's available (note for SLIME)
-@item Reports test durations
-@end itemize\n")
- (home-page "https://github.com/fukamachi/prove")
- (license license:expat))))
-
-(define-public cl-prove
- (sbcl-package->cl-source-package sbcl-prove))
-
-(define-public ecl-prove
- (sbcl-package->ecl-package sbcl-prove))
-
(define-public sbcl-proc-parse
(let ((commit "ac3636834d561bdc2686c956dbd82494537285fd"))
(package
@@ -2773,35 +2504,6 @@ utilities that make it even easier to manipulate text in Common Lisp. It has
(define-public ecl-cl-string-match
(sbcl-package->ecl-package sbcl-cl-string-match))
-(define-public sbcl-ptester
- (let ((commit "fe69fde54f4bce00ce577feb918796c293fc7253")
- (revision "1"))
- (package
- (name "sbcl-ptester")
- (version (git-version "2.1.3" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "http://git.kpe.io/ptester.git")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1l0lfl7cdnr2qf4zh38hi4llxg22c49zkm639bdkmvlkzwj3ndwf"))))
- (build-system asdf-build-system/sbcl)
- (home-page "http://quickdocs.org/ptester/")
- (synopsis "Portable test harness package")
- (description
- "@command{ptester} is a portable testing framework based on Franz's
-tester module.")
- (license license:llgpl))))
-
-(define-public cl-ptester
- (sbcl-package->cl-source-package sbcl-ptester))
-
-(define-public ecl-ptester
- (sbcl-package->ecl-package sbcl-ptester))
-
(define-public sbcl-puri
(let ((commit "4bbab89d9ccbb26346899d1f496c97604fec567b")
(revision "2"))
@@ -3191,6 +2893,59 @@ relational database engine.")
(define-public ecl-cl-sqlite
(sbcl-package->ecl-package sbcl-cl-sqlite))
+(define-public sbcl-cl-redis
+ (let ((commit "7d592417421cf7cd1cffa96043b457af0490df7d")
+ (revision "0"))
+ (package
+ (name "sbcl-cl-redis")
+ (version (git-version "2.3.8" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/vseloved/cl-redis")
+ (commit commit)))
+ (file-name (git-file-name "cl-redis" version))
+ (sha256
+ (base32 "0x5ahxb5cx37biyn3cjycshhm1rr9p5cf1a9l5hd1n1xjxm2f8vi"))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'start-redis
+ (lambda _
+ (system "redis-server --port 6379 &"))))))
+ (native-inputs
+ `(("bordeaux-threads" ,sbcl-bordeaux-threads)
+ ("flexi-streams" ,sbcl-flexi-streams)
+ ("redis" ,redis)
+ ("should-test" ,sbcl-should-test)))
+ (inputs
+ `(("babel" ,sbcl-babel)
+ ("cl-ppcre" ,sbcl-cl-ppcre)
+ ("flexi-streams" ,sbcl-flexi-streams)
+ ("rutils" ,sbcl-rutils)
+ ("usocket" ,sbcl-usocket)))
+ (home-page "https://github.com/vseloved/cl-redis")
+ (synopsis "Common Lisp client for Redis")
+ (description "This is a Common Lisp wrapper for interacting with the
+Redis data structure store.")
+ (license license:expat))))
+
+(define-public cl-redis
+ (sbcl-package->cl-source-package sbcl-cl-redis))
+
+(define-public ecl-cl-redis
+ (let ((pkg (sbcl-package->ecl-package sbcl-cl-redis)))
+ (package
+ (inherit pkg)
+ (arguments
+ (substitute-keyword-arguments (package-arguments pkg)
+ ;; Tests are failing on ECL with:
+ ;; Test L-COMMANDS: An error occurred during initialization:
+ ;; Protocol not found: "tcp".
+ ((#:tests? _ #f) #f))))))
+
(define-public sbcl-parenscript
;; Source archives are overwritten on every release, we use the Git repo instead.
(let ((commit "7a1ac46353cecd144fc91915ba9f122aafcf4766"))
@@ -4755,48 +4510,6 @@ Only minimal changes required to make your CLOS objects serializable.")
(define-public ecl-marshal
(sbcl-package->ecl-package sbcl-marshal))
-(define-public sbcl-checkl
- (let ((commit "80328800d047fef9b6e32dfe6bdc98396aee3cc9")
- (revision "1"))
- (package
- (name "sbcl-checkl")
- (version (git-version "0.0.0" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/rpav/CheckL")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0bpisihx1gay44xmyr1dmhlwh00j0zzi04rp9fy35i95l2r4xdlx"))))
- (build-system asdf-build-system/sbcl)
- (arguments
- ;; Error while trying to load definition for system checkl-test from
- ;; pathname [...]/checkl-test.asd: The function CHECKL:DEFINE-TEST-OP
- ;; is undefined.
- '(#:asd-files '("checkl.asd")
- #:tests? #f))
- (native-inputs
- `(("sbcl-fiveam" ,sbcl-fiveam)))
- (inputs
- `(("sbcl-marshal" ,sbcl-marshal)))
- (home-page "https://github.com/rpav/CheckL/")
- (synopsis "Dynamic testing for Common Lisp")
- (description
- "CheckL lets you write tests dynamically, it checks resulting values
-against the last run.")
- ;; The author specifies both LLGPL and "BSD", but the "BSD" license
- ;; isn't specified anywhere, so I don't know which kind. LLGPL is the
- ;; stronger of the two and so I think only listing this should suffice.
- (license license:llgpl))))
-
-(define-public cl-checkl
- (sbcl-package->cl-source-package sbcl-checkl))
-
-(define-public ecl-checkl
- (sbcl-package->ecl-package sbcl-checkl))
-
(define-public sbcl-fast-io
(let ((commit "603f4903dd74fb221859da7058ae6ca3853fe64b")
(revision "2"))
@@ -5451,39 +5164,6 @@ port within a range.")
(define-public ecl-find-port
(sbcl-package->ecl-package sbcl-find-port))
-(define-public sbcl-clunit
- (let ((commit "6f6d72873f0e1207f037470105969384f8380628")
- (revision "1"))
- (package
- (name "sbcl-clunit")
- (version (git-version "0.2.3" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/tgutu/clunit")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1idf2xnqzlhi8rbrqmzpmb3i1l6pbdzhhajkmhwbp6qjkmxa4h85"))))
- (build-system asdf-build-system/sbcl)
- (synopsis "CLUnit is a Common Lisp unit testing framework")
- (description
- "CLUnit is a Common Lisp unit testing framework. It is designed
-to be easy to use so that you can quickly start testing. CLUnit
-provides a rich set of features aimed at improving your unit testing
-experience.")
- (home-page "https://tgutu.github.io/clunit/")
- ;; MIT License
- (license license:expat))))
-
-(define-public cl-clunit
- (sbcl-package->cl-source-package sbcl-clunit))
-
-(define-public ecl-clunit
- (sbcl-package->ecl-package sbcl-clunit))
-
(define-public sbcl-py4cl
(let ((commit "4c8a2b0814fd311f978964f825ce012290f60136")
(revision "1"))
@@ -5615,37 +5295,6 @@ high-level way. This library provides such operators.")
(define-public ecl-parse-declarations
(sbcl-package->ecl-package sbcl-parse-declarations))
-(define-public sbcl-cl-quickcheck
- (let ((commit "807b2792a30c883a2fbecea8e7db355b50ba662f")
- (revision "1"))
- (package
- (name "sbcl-cl-quickcheck")
- (version (git-version "0.0.4" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/mcandre/cl-quickcheck")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "165lhypq5xkcys6hvzb3jq7ywnmqvzaflda29qk2cbs3ggas4767"))))
- (build-system asdf-build-system/sbcl)
- (synopsis
- "Common Lisp port of the QuickCheck unit test framework")
- (description
- "Common Lisp port of the QuickCheck unit test framework")
- (home-page "https://github.com/mcandre/cl-quickcheck")
- ;; MIT
- (license license:expat))))
-
-(define-public cl-quickcheck
- (sbcl-package->cl-source-package sbcl-cl-quickcheck))
-
-(define-public ecl-cl-quickcheck
- (sbcl-package->ecl-package sbcl-cl-quickcheck))
-
(define-public sbcl-burgled-batteries3
(let ((commit "f65f454d13bb6c40e17e9ec62e41eb5069e09760")
(revision "2"))
@@ -7087,44 +6736,6 @@ decisions becomes significantly easier.")
(define-public ecl-cl-containers
(sbcl-package->ecl-package sbcl-cl-containers))
-(define-public sbcl-xlunit
- (let ((commit "3805d34b1d8dc77f7e0ee527a2490194292dd0fc")
- (revision "1"))
- (package
- (name "sbcl-xlunit")
- (version (git-version "0.6.3" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "http://git.kpe.io/xlunit.git")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0argfmp9nghs4sihyj3f8ch9qfib2b7ll07v5m9ziajgzsfl5xw3"))))
- (build-system asdf-build-system/sbcl)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-tests
- (lambda _
- (substitute* "xlunit.asd"
- ((" :force t") ""))
- #t)))))
- (synopsis "Unit testing package for Common Lisp")
- (description
- "The XLUnit package is a toolkit for building test suites. It is based
-on the XPTest package by Craig Brozensky and the JUnit package by Kent Beck.")
- (home-page "http://quickdocs.org/xlunit/")
- (license license:bsd-3))))
-
-(define-public cl-xlunit
- (sbcl-package->cl-source-package sbcl-xlunit))
-
-(define-public ecl-xlunit
- (sbcl-package->ecl-package sbcl-xlunit))
-
(define-public sbcl-cambl
(let ((commit "7016d1a98215f82605d1c158e7a16504ca1f4636")
(revision "1"))
@@ -7735,6 +7346,47 @@ supplement, not a competitor, to Alexandria.")
(define-public ecl-serapeum
(sbcl-package->ecl-package sbcl-serapeum))
+(define-public sbcl-rutils
+ (let ((commit "db3c3f4ae897025b5f0cd81042ca147da60ca0c5")
+ (revision "0"))
+ (package
+ (name "sbcl-rutils")
+ (version (git-version "5.2.1" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/vseloved/rutils")
+ (commit commit)))
+ (file-name (git-file-name "rutils" version))
+ (sha256
+ (base32 "1d2whscknh1zga2vdqvfqri8wx0gnml3sfqz62igq0ppap6q07y3"))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ `(#:asd-systems '("rutils" "rutilsx")
+ ;; Tests disabled because of a circular dependency with should-test.
+ #:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-build
+ (lambda _
+ ;; File faild to load, and we don't use it as tests are
+ ;; disabled, so let's delete it.
+ (delete-file "rutilsx-test.asd"))))))
+ (inputs
+ `(("closer-mop" ,sbcl-closer-mop)
+ ("named-readtables" ,sbcl-named-readtables)))
+ (home-page "https://github.com/vseloved/rutils")
+ (synopsis "Radical Utilities for Common Lisp")
+ (description "RUTILS is a syntactic utilities package for Common Lisp.")
+ (license license:bsd-3))))
+
+(define-public cl-rutils
+ (sbcl-package->cl-source-package sbcl-rutils))
+
+(define-public ecl-rutils
+ (sbcl-package->ecl-package sbcl-rutils))
+
(define-public sbcl-arrows
(let ((commit "df7cf0067e0132d9697ac8b1a4f1b9c88d4f5382")
(revision "0"))
@@ -7894,49 +7546,6 @@ JSON interchange format.")
(define-public ecl-yason
(sbcl-package->ecl-package sbcl-yason))
-(define-public sbcl-stefil
- (let ((commit "0398548ec95dceb50fc2c2c03e5fb0ce49b86c7a")
- (revision "0"))
- (package
- (name "sbcl-stefil")
- (version (git-version "0.1" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://gitlab.common-lisp.net/stefil/stefil.git")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0bqz64q2szzhf91zyqyssmvrz7da6442rs01808pf3wrdq28bclh"))))
- (build-system asdf-build-system/sbcl)
- (inputs
- `(("alexandria" ,sbcl-alexandria)
- ("iterate" ,sbcl-iterate)
- ("metabang-bind" ,sbcl-metabang-bind)
- ("swank" ,sbcl-slime-swank)))
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'drop-unnecessary-dependency
- (lambda _
- (substitute* "package.lisp"
- ((":stefil-system") ""))
- #t)))))
- (home-page "https://common-lisp.net/project/stefil/index-old.shtml")
- (synopsis "Simple test framework")
- (description
- "Stefil is a simple test framework for Common Lisp, with a focus on
-interactive development.")
- (license license:public-domain))))
-
-(define-public cl-stefil
- (sbcl-package->cl-source-package sbcl-stefil))
-
-(define-public ecl-stefil
- (sbcl-package->ecl-package sbcl-stefil))
-
(define-public sbcl-graph
(let ((commit "78bf9ec930d8eae4f0861b5be76765fb1e45e24f")
(revision "0"))
@@ -8120,41 +7729,6 @@ macro. This library provides a set of simple utilities to help with that.")
(define-public ecl-form-fiddle
(sbcl-package->ecl-package sbcl-form-fiddle))
-(define-public sbcl-parachute
- (let ((commit "ca04dd8e43010a6dfffa26dbe1d62af86008d666")
- (revision "0"))
- (package
- (name "sbcl-parachute")
- (version (git-version "1.1.1" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri
- (git-reference
- (url "https://github.com/Shinmera/parachute")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1mvsm3r0r6a2bg75nw0q7n9vlby3ch45qjl7hnb5k1z2n5x5lh60"))))
- (build-system asdf-build-system/sbcl)
- (inputs
- `(("documentation-utils" ,sbcl-documentation-utils)
- ("form-fiddle" ,sbcl-form-fiddle)))
- (synopsis "Extensible and cross-compatible testing framework for Common Lisp")
- (description
- "Parachute is a simple-to-use and extensible testing framework.
-In Parachute, things are organised as a bunch of named tests within a package.
-Each test can contain a bunch of test forms that make up its body.")
- (home-page "https://shinmera.github.io/parachute/")
- (license license:zlib))))
-
-(define-public cl-parachute
- (sbcl-package->cl-source-package sbcl-parachute))
-
-(define-public ecl-parachute
- (sbcl-package->ecl-package sbcl-parachute))
-
(define-public sbcl-array-utils
(let ((commit "f90eb9070d0b2205af51126a35033574725e5c56")
(revision "0"))
@@ -8470,44 +8044,6 @@ and camel-case rules.")
(define-public ecl-symbol-munger
(sbcl-package->ecl-package sbcl-symbol-munger))
-(define-public sbcl-lisp-unit2
- ;; There is a cyclical dependency between symbol-munger and lisp-unit2.
- ;; See https://github.com/AccelerationNet/symbol-munger/issues/4
- (let ((commit "fb9721524d1e4e73abb223ee036d74ce14a5505c")
- (revision "1"))
- (package
- (name "sbcl-lisp-unit2")
- (version (git-version "0.2.0" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/AccelerationNet/lisp-unit2")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1rsqy8y0jqll6xn9a593848f5wvd5ribv4csry1ly0hmdhfnqzlp"))))
- (build-system asdf-build-system/sbcl)
- (inputs
- `(("alexandria" ,sbcl-alexandria)
- ("cl-interpol" ,sbcl-cl-interpol)
- ("iterate" ,sbcl-iterate)
- ("symbol-munger" ,sbcl-symbol-munger)))
- (synopsis "Test Framework for Common Lisp")
- (description
- "LISP-UNIT2 is a Common Lisp library that supports unit testing in the
-style of JUnit for Java. It is a new version of the lisp-unit library written
-by Chris Riesbeck.")
- (home-page "https://github.com/AccelerationNet/lisp-unit2")
- (license license:expat))))
-
-(define-public cl-lisp-unit2
- (sbcl-package->cl-source-package sbcl-lisp-unit2))
-
-(define-public ecl-lisp-unit2
- (sbcl-package->ecl-package sbcl-lisp-unit2))
-
(define-public sbcl-cl-csv
(let ((commit "68ecb5d816545677513d7f6308d9e5e8d2265651")
(revision "2"))
@@ -9294,35 +8830,6 @@ be used with @code{cl-yacc}.")
(define-public ecl-cl-lex
(sbcl-package->ecl-package sbcl-cl-lex))
-(define-public sbcl-clunit2
- (let ((commit "5e28343734eb9b7aee39306a614af92c1062d50b")
- (revision "1"))
- (package
- (name "sbcl-clunit2")
- (version (git-version "0.2.4" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://notabug.org/cage/clunit2.git")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1ngiapfki6nm8a555mzhb5p7ch79i3w665za5bmb5j7q34fy80vw"))))
- (build-system asdf-build-system/sbcl)
- (synopsis "Unit testing framework for Common Lisp")
- (description
- "CLUnit is a Common Lisp unit testing framework. It is designed to be
-easy to use so that you can quickly start testing.")
- (home-page "https://notabug.org/cage/clunit2")
- (license license:expat))))
-
-(define-public cl-clunit2
- (sbcl-package->cl-source-package sbcl-clunit2))
-
-(define-public ecl-clunit2
- (sbcl-package->ecl-package sbcl-clunit2))
-
(define-public sbcl-cl-colors2
(let ((commit "795aedee593b095fecde574bd999b520dd03ed24")
(revision "1"))
@@ -11269,39 +10776,6 @@ and active restarts.")
(define-public ecl-dissect
(sbcl-package->ecl-package sbcl-dissect))
-(define-public sbcl-rove
- (package
- (name "sbcl-rove")
- (version "0.9.6")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/fukamachi/rove")
- (commit "f3695db08203bf26f3b861dc22ac0f4257d3ec21")))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "07ala4l2fncxf540fzxj3h5mhi9i4wqllhj0rqk8m2ljl5zbz89q"))))
- (build-system asdf-build-system/sbcl)
- (inputs
- `(("bordeaux-threads" ,sbcl-bordeaux-threads)
- ("dissect" ,sbcl-dissect)
- ("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
- (home-page "https://github.com/fukamachi/rove")
- (synopsis
- "Yet another common lisp testing library")
- (description
- "Rove is a unit testing framework for Common Lisp applications.
-This is intended to be a successor of Prove.")
- (license license:bsd-3)))
-
-(define-public cl-rove
- (sbcl-package->cl-source-package sbcl-rove))
-
-(define-public ecl-rove
- (sbcl-package->ecl-package sbcl-rove))
-
(define-public sbcl-exponential-backoff
(let ((commit "8d9e8444d8b3184a524c12ce3449f91613ab714f"))
(package
@@ -11368,33 +10842,6 @@ learn about each of the parameters.")
(define-public ecl-sxql
(sbcl-package->ecl-package sbcl-sxql))
-(define-public sbcl-1am
- (let ((commit "8b1da94eca4613fd8a20bdf63f0e609e379b0ba5"))
- (package
- (name "sbcl-1am")
- (version (git-version "0.0" "1" commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/lmj/1am")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "05ss4nz1jb9kb796295482b62w5cj29msfj8zis33sp2rw2vmv2g"))))
- (build-system asdf-build-system/sbcl)
- (home-page "https://github.com/lmj/1am")
- (synopsis "Minimal testing framework for Common Lisp")
- (description "A minimal testing framework for Common Lisp.")
- (license license:expat))))
-
-(define-public cl-1am
- (sbcl-package->cl-source-package sbcl-1am))
-
-(define-public ecl-1am
- (sbcl-package->ecl-package sbcl-1am))
-
(define-public sbcl-cl-ascii-table
(let ((commit "d9f5e774a56fad1b416e4dadb8f8a5b0e84094e2")
(revision "1"))
@@ -13994,41 +13441,6 @@ latitude/longitude and Open Location Code.")
(define-public ecl-clawk
(sbcl-package->ecl-package sbcl-clawk))
-(define-public sbcl-check-it
- (let ((commit "b79c9103665be3976915b56b570038f03486e62f"))
- (package
- (name "sbcl-check-it")
- (version (git-version "0.1.0" "1" commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/DalekBaldwin/check-it/")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1kbjwpniffdpv003igmlz5r0vy65m7wpfnhg54fhwirp1227hgg7"))))
- (build-system asdf-build-system/sbcl)
- (inputs
- `(("alexandria" ,sbcl-alexandria)
- ("closer-mop" ,sbcl-closer-mop)
- ("optima" ,sbcl-optima)))
- (native-inputs
- `(("stefil" ,sbcl-stefil)))
- (home-page "https://github.com/arclanguage/Clamp")
- (synopsis "Randomized specification-based testing for Common Lisp")
- (description
- "This is a randomized property-based testing library for Common Lisp.
-Rather than being a full-fledged general test framework in its own right, it's
-designed to embed randomized tests in whatever framework you like.")
- (license license:llgpl))))
-
-(define-public cl-check-it
- (sbcl-package->cl-source-package sbcl-check-it))
-
-(define-public ecl-check-it
- (sbcl-package->ecl-package sbcl-check-it))
-
(define-public sbcl-clamp
(let ((commit "02b8f3953e5753cc61a719807c82f3795cd28fe1"))
(package
@@ -16517,33 +15929,6 @@ color spaces, which supports many color models.")
(define-public cl-dufy
(sbcl-package->cl-source-package sbcl-dufy))
-(define-public sbcl-unit-test
- (let ((commit "266afaf4ac091fe0e8803bac2ae72d238144e735")
- (revision "1"))
- (package
- (name "sbcl-unit-test")
- (version (git-version "0.0.0" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/hanshuebner/unit-test")
- (commit commit)))
- (file-name (git-file-name "unit-test" version))
- (sha256
- (base32 "11hpksz56iqkv7jw25p2a8r3n9dj922fyarn16d98589g6hdskj9"))))
- (build-system asdf-build-system/sbcl)
- (home-page "https://github.com/hanshuebner/unit-test")
- (synopsis "Unit-testing framework for Common Lisp")
- (description "This is a unit-testing framework for Common Lisp.")
- (license license:unlicense))))
-
-(define-public ecl-unit-test
- (sbcl-package->ecl-package sbcl-unit-test))
-
-(define-public cl-unit-test
- (sbcl-package->cl-source-package sbcl-unit-test))
-
(define-public sbcl-bknr-datastore
(let ((commit "c98d44f47cc88d19ff91ca3eefbd9719a8ace022")
(revision "1"))
@@ -17819,41 +17204,6 @@ implementations offer.")
(define-public cl-atomics
(sbcl-package->cl-source-package sbcl-atomics))
-(define-public sbcl-cl-mock
- ;; .asd version only got updated recently, despired the old GitHug "1.0.1" release.
- (let ((commit "7988dca2093358911b67597a2cd1570c785dfe76"))
- (package
- (name "sbcl-cl-mock")
- (version (git-version "1.0.1" "1" commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/Ferada/cl-mock/")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0f40wikcf783jx26ip0nnhwjjfjvjiw7njqsqrb6kaphc8bgw0i1"))))
- (build-system asdf-build-system/sbcl)
- (inputs
- `(("alexandria" ,sbcl-alexandria)
- ("closer-mop" ,sbcl-closer-mop)
- ("trivia" ,sbcl-trivia)))
- (native-inputs
- `(("fiveam" ,sbcl-fiveam)))
- (home-page "https://github.com/Ferada/cl-mock")
- (synopsis "Mocking functions for Common Lisp testing")
- (description
- "This small library provides a way to replace the actual implementation
-of either regular or generic functions with mocks.")
- (license license:agpl3))))
-
-(define-public ecl-cl-mock
- (sbcl-package->ecl-package sbcl-cl-mock))
-
-(define-public cl-mock
- (sbcl-package->cl-source-package sbcl-cl-mock))
-
(define-public sbcl-cl-murmurhash
;; No release.
(let ((commit "5433f5e95f1cce63a81259a471150834c6a59364")
@@ -19231,3 +18581,70 @@ higher-level lispier interface.")
(define-public ecl-cl-charms
(sbcl-package->ecl-package sbcl-cl-charms))
+
+(define-public sbcl-clinenoise
+ (let ((commit "46e21f99d06a55d93eaa382cf652d55d457032ef")
+ (revision "1"))
+ (package
+ (name "sbcl-clinenoise")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/jasom/clinenoise")
+ (commit commit)))
+ (file-name (git-file-name "clinenoise" version))
+ (sha256
+ (base32 "0ydlirfk4dbpqqjwwph99v5swcrhd8v9g8q24fvs35wn2vm08lh1"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("cffi" ,sbcl-cffi)
+ ("split-sequence" ,sbcl-split-sequence)))
+ (home-page "https://github.com/jasom/clinenoise")
+ (synopsis "Port of linenoise to Common Lisp")
+ (description
+ "This package provides a trivial line-input library for VT-like
+terminals.")
+ (license license:bsd-2))))
+
+(define-public cl-clinenoise
+ (sbcl-package->cl-source-package sbcl-clinenoise))
+
+(define-public ecl-clinenoise
+ (sbcl-package->ecl-package sbcl-clinenoise))
+
+(define-public sbcl-cl-pass
+ (let ((commit "e58e97c0c0588dc742c061208afb9bc31e4dbd34")
+ (revision "1"))
+ (package
+ (name "sbcl-cl-pass")
+ (version (git-version "0.1" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/eudoxia0/cl-pass")
+ (commit commit)))
+ (file-name (git-file-name "cl-pass" version))
+ (sha256
+ (base32 "05qx4jrkxqbqi72cxgswbpnifbdvp9mh7apc7566v522899bh0hb"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("ironclad" ,sbcl-ironclad)
+ ("trivial-utf-8" ,sbcl-trivial-utf-8)
+ ("split-sequence" ,sbcl-split-sequence)))
+ (native-inputs
+ `(("fiveam" ,sbcl-fiveam)))
+ (home-page "https://github.com/eudoxia0/cl-pass")
+ (synopsis "Password hashing and verification library")
+ (description
+ "@code{cl-pass} is a password hashing and verification library.")
+ (license license:expat))))
+
+(define-public cl-pass
+ (sbcl-package->cl-source-package sbcl-cl-pass))
+
+(define-public ecl-cl-pass
+ (sbcl-package->ecl-package sbcl-cl-pass))
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 23a8710b9b..900011ddaa 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1896,7 +1896,7 @@ facilities for checking incoming mail.")
(package
(name "dovecot")
;; Also update dovecot-pigeonhole when updating to a new minor version.
- (version "2.3.16")
+ (version "2.3.17")
(source
(origin
(method url-fetch)
@@ -1904,7 +1904,7 @@ facilities for checking incoming mail.")
(version-major+minor version) "/"
"dovecot-" version ".tar.gz"))
(sha256
- (base32 "04ngqv5mml5z0i4p7fkchp4xw2awy7x7mq2mim9frnav0m9iv9q3"))))
+ (base32 "1y9dpn4jgzrfjibp5zrc11bdk0q843d998kxhpxkyfm2fz6i4i12"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
@@ -1939,8 +1939,7 @@ facilities for checking incoming mail.")
(("sleep") (which "sleep")))
(substitute* (list "src/lib-smtp/test-bin/sendmail-exit-1.sh"
"src/lib-smtp/test-bin/sendmail-success.sh")
- (("cat") (which "cat")))
- #t))
+ (("cat") (which "cat")))))
(replace 'install
(lambda* (#:key make-flags #:allow-other-keys)
;; Simple hack to avoid installing a trivial README in /etc.
@@ -1961,7 +1960,7 @@ It supports mbox/Maildir and its own dbox/mdbox formats.")
(let ((dovecot-version (version-major+minor (package-version dovecot))))
(package
(name "dovecot-pigeonhole")
- (version "0.5.16")
+ (version "0.5.17")
(source
(origin
(method url-fetch)
@@ -1969,7 +1968,7 @@ It supports mbox/Maildir and its own dbox/mdbox formats.")
"https://pigeonhole.dovecot.org/releases/" dovecot-version "/"
"dovecot-" dovecot-version "-pigeonhole-" version ".tar.gz"))
(sha256
- (base32 "0f79qsiqnhaxn7mrrfcrnsjyv6357kzb7wa0chhfd69vwa06g8sw"))
+ (base32 "0j6ng173hh5iiqxdkxfb5v9djpn39gxdrv5ki7i22cf5cqwq47h3"))
(modules '((guix build utils)))
(snippet
'(begin
@@ -1978,8 +1977,7 @@ It supports mbox/Maildir and its own dbox/mdbox formats.")
(substitute* "configure"
(("doc/rfc/Makefile") ""))
(substitute* "doc/Makefile.in"
- (("rfc ") ""))
- #t))))
+ (("rfc ") ""))))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
@@ -2007,8 +2005,7 @@ It supports mbox/Maildir and its own dbox/mdbox formats.")
(substitute* "src/managesieve-login/managesieve-login-settings.c"
(("\\.executable = \"managesieve-login\"")
(string-append ".executable = \"" libexec
- "/managesieve-login\"")))
- #t))))))
+ "/managesieve-login\"")))))))))
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 39608709cb..c7a3b67721 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -1315,7 +1315,7 @@ extremely large and complex data collections.")
(define-public hdf5-1.12
(package
(inherit hdf5-1.8)
- (version "1.12.0")
+ (version "1.12.1")
(source
(origin
(method url-fetch)
@@ -1329,7 +1329,7 @@ extremely large and complex data collections.")
(take (string-split version #\.) 2))
"/src/hdf5-" version ".tar.bz2")))
(sha256
- (base32 "0qazfslkqbmzg495jafpvqp0khws3jkxa0z7rph9qvhacil6544p"))
+ (base32 "074g3z504xf77ff38igs30i1aqxpm508p7yw78ykva7dncrgbyda"))
(patches (search-patches "hdf5-config-date.patch"))))))
(define-public hdf5
@@ -2224,6 +2224,163 @@ Computational Engineering and Sciences} at The University of Texas at Austin.
includes a complete LAPACK implementation.")
(license license:bsd-3)))
+(define-public libpotassco
+ ;; No public release, update together with clasp
+ (let ((revision "1")
+ (commit "2f9fb7ca2c202f1b47643aa414054f2f4f9c1821"))
+ (package
+ (name "libpotassco")
+ (version (git-version "0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/potassco/libpotassco")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1c32f9gqclf7qx07lpx8wd720vfhkjqhzc6nyy8mjmgwpmb3iyyn"))))
+ (arguments
+ `(#:configure-flags '("-DLIB_POTASSCO_BUILD_TESTS=on"
+ "-DLIB_POTASSCO_INSTALL_LIB=on"
+ "-DBUILD_SHARED_LIBS=on")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-cmake
+ (lambda _
+ (substitute* "CMakeLists.txt"
+ ;; clasp expects lowercase potassco and include directory is
+ ;; lowercase as well, so let's use that
+ (("\"cmake/Potassco\"") "\"cmake/potassco\"")
+ (("PotasscoConfig\\.cmake") "potassco-config.cmake")
+ (("PotasscoConfigVersion\\.cmake")
+ "potassco-config-version.cmake"))
+ (rename-file "cmake/PotasscoConfig.cmake.in"
+ "cmake/potassco-config.cmake.in"))))))
+ (build-system cmake-build-system)
+ (home-page "https://potassco.org/")
+ (synopsis "Utility library for Potassco's projects")
+ (description "@code{libpotassco} is a utility library providing functions
+and datatypes for
+@itemize
+@item parsing, writing, and converting logic programs in aspif and smodels
+format,
+@item passing information between a grounder and a solver,
+@item and defining and parsing command-line options and for creating
+command-line applications.
+@end itemize
+Furthermore, it comes with the tool @command{lpconvert} that converts either
+between aspif and smodels format or to a human-readable text format.")
+ (license license:expat))))
+
+(define-public clasp
+ (package
+ (name "clasp")
+ (version "3.3.6")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/potassco/clasp")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0rahqiq530jckvx717858h1q5p8znp1kb6sjm95p8blkr4n3pvmj"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags '("-DCLASP_BUILD_TESTS=on"
+ "-DCLASP_INSTALL_LIB=on"
+ "-DCLASP_USE_LOCAL_LIB_POTASSCO=off"
+ "-DBUILD_SHARED_LIBS=on")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-cmake
+ (lambda _
+ (substitute* "CMakeLists.txt"
+ ;; Use lowercase to be consistent with libpotassco
+ (("\"cmake/Clasp\"") "\"cmake/clasp\"")
+ (("ClaspConfig\\.cmake") "clasp-config.cmake")
+ (("ClaspConfigVersion\\.cmake")
+ "clasp-config-version.cmake"))
+ (substitute* "cmake/ClaspConfig.cmake.in"
+ (("find_package\\(Potassco") "find_package(potassco"))
+ (rename-file "cmake/ClaspConfig.cmake.in"
+ "cmake/clasp-config.cmake.in"))))))
+ (inputs
+ `(("libpotassco" ,libpotassco)))
+ (home-page "https://potassco.org/")
+ (synopsis "Answer set solver")
+ (description "clasp is an answer set solver for (extended) normal and
+disjunctive logic programs. The primary algorithm of clasp relies on
+conflict-driven nogood learning, a technique that proved very successful for
+satisfiability checking (SAT).")
+ (license license:expat)))
+
+(define-public clingo
+ (package
+ (name "clingo")
+ (version "5.5.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/potassco/clingo")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0rfjwkcwm0mmf3r4i7asyjwb6cia4i7px7fn2kdbi9j85qvas4pb"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags `("-DCLINGO_BUILD_TESTS=on"
+ "-DCLINGO_INSTALL_LIB=on"
+ "-DCLINGO_BUILD_STATIC=off"
+ "-DCLINGO_BUILD_SHARED=on"
+ ;; XXX: Clingo requries private headers and
+ ;; sources from clasp
+ ,(string-append
+ "-DCLASP_SOURCE_DIR="
+ (assoc-ref %build-inputs "clasp-src")))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-cmake
+ (lambda _
+ (substitute* "CMakeLists.txt"
+ (("add_subdirectory\\(clasp\\)")
+ "find_package(clasp REQUIRED)"))
+ (substitute* "libclingo/CMakeLists.txt"
+ (("\"cmake/Clingo\"") "\"cmake/clingo\"")
+ (("ClingoConfig\\.cmake") "clingo-config.cmake")
+ (("ClingoConfigVersion\\.cmake")
+ "clingo-config-version.cmake"))
+ (substitute* "cmake/ClingoConfig.cmake.in"
+ (("find_package\\(Clasp") "find_package(clasp"))
+ (rename-file "cmake/ClingoConfig.cmake.in"
+ "cmake/clingo-config.cmake.in")))
+ (add-after 'unpack 'skip-failing-tests
+ (lambda _
+ (with-directory-excursion "libclingo/tests"
+ (substitute* "CMakeLists.txt"
+ (("COMMAND test_clingo" all)
+ (string-append all
+ " -f "
+ "\"${CMAKE_CURRENT_SOURCE_DIR}/good.txt\"")))
+ (call-with-output-file "good.txt"
+ (lambda (port)
+ (for-each (lambda (test) (format port "~s~%" test))
+ '("parse-ast-v2" "add-ast-v2" "build-ast-v2"
+ "unpool-ast-v2" "parse_term"
+ "propagator" "propgator-sequence-mining"
+ "symbol" "visitor"))))))))))
+ (inputs
+ `(("clasp" ,clasp)
+ ("libpotassco" ,libpotassco)))
+ (native-inputs
+ `(("clasp-src" ,(package-source clasp))))
+ (home-page "https://potassco.org/")
+ (synopsis "Grounder and solver for logic programs")
+ (description "Clingo computes answer sets for a given logic program.")
+ (license license:expat)))
+
(define-public ceres
(package
(name "ceres-solver")
@@ -5663,6 +5820,65 @@ as equations, scalars, vectors, and matrices.")
theories} (SMT) solver. It provides a C/C++ API, as well as Python bindings.")
(license license:expat)))
+(define-public ocaml-z3
+ (package
+ (inherit z3)
+ (name "ocaml-z3")
+ (arguments
+ `(#:imported-modules ((guix build python-build-system)
+ ,@%gnu-build-system-modules)
+ #:modules (((guix build python-build-system) #:select (site-packages))
+ (guix build gnu-build-system)
+ (guix build utils))
+ #:tests? #f; no ml tests
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'bootstrap
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (setenv "OCAMLFIND_LDCONF" "ignore")
+ (setenv "OCAMLFIND_DESTDIR" (string-append out "/lib/ocaml/site-lib"))
+ (mkdir-p (string-append out "/lib/ocaml/site-lib"))
+ (substitute* "scripts/mk_util.py"
+ (("LIBZ3 = LIBZ3")
+ (string-append "LIBZ3 = LIBZ3 + ' -dllpath " out "/lib'"))
+ ;; Do not build z3 again, use the library passed as input
+ ;; instead
+ (("z3linkdep,") "\"\",")
+ (("z3linkdep)") "\"\")"))
+ (invoke "python" "scripts/mk_make.py"))))
+ (replace 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (invoke "./configure"
+ "--ml"
+ (string-append "--prefix=" (assoc-ref outputs "out")))))
+ (add-after 'configure 'change-directory
+ (lambda _
+ (chdir "build")
+ #t))
+ (replace 'build
+ (lambda _
+ (invoke "make" "ml")))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (invoke "ocamlfind" "install" "-destdir"
+ (string-append (assoc-ref outputs "out") "/lib/ocaml/site-lib")
+ "z3" "api/ml/META" "api/ml/z3enums.mli" "api/ml/z3enums.cmi"
+ "api/ml/z3enums.cmx" "api/ml/z3native.mli"
+ "api/ml/z3native.cmi" "api/ml/z3native.cmx"
+ "../src/api/ml/z3.mli" "api/ml/z3.cmi" "api/ml/z3.cmx"
+ "api/ml/libz3ml.a" "api/ml/z3ml.a" "api/ml/z3ml.cma"
+ "api/ml/z3ml.cmxa" "api/ml/z3ml.cmxs" "api/ml/dllz3ml.so"))))))
+ (native-inputs
+ `(("which" ,which)
+ ("python" ,python-wrapper)
+ ("ocaml" ,ocaml)
+ ("ocaml-findlib" ,ocaml-findlib)))
+ (propagated-inputs
+ `(("ocaml-zarith" ,ocaml-zarith)))
+ (inputs
+ `(("z3" ,z3)))))
+
(define-public elpa
(package
(name "elpa")
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 9cd5481bd8..8f67e6628c 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -1039,14 +1039,14 @@ simultaneously and therefore appear under the same nickname on IRC.")
(define-public python-nbxmpp
(package
(name "python-nbxmpp")
- (version "2.0.2")
+ (version "2.0.4")
(source
(origin
(method url-fetch)
(uri
(pypi-uri "nbxmpp" version))
(sha256
- (base32 "1482fva70i01w60fk70c0fhqmqgzi1fb4xflllz2v6c8mdqkd1m3"))))
+ (base32 "1s2phiipq7ks8vrd93p96dzd5wgmgg8q9h2rxsnh2gg7iy06gj9c"))))
(build-system python-build-system)
(native-inputs
`(("glib:bin" ,glib "bin")))
@@ -1068,7 +1068,7 @@ of xmpppy.")
(define-public gajim
(package
(name "gajim")
- (version "1.3.2")
+ (version "1.3.3")
(source
(origin
(method url-fetch)
@@ -1077,7 +1077,7 @@ of xmpppy.")
(version-major+minor version)
"/gajim-" version ".tar.gz"))
(sha256
- (base32 "1vjzv8zg9s393xw81klcgbkn4h6j2blzla9iil5kqfrw7wmldskh"))
+ (base32 "1337qkpcv7j0fgws9scnk82mn2l7s17060vmrbh3ihinmxmbxg6x"))
(patches (search-patches "gajim-honour-GAJIM_PLUGIN_PATH.patch"))))
(build-system python-build-system)
(arguments
@@ -1091,13 +1091,6 @@ of xmpppy.")
(guix build utils))
#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'disable-failing-tests
- (lambda _
- ;; 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
(lambda _
;; Tests require a running X server.
@@ -1105,8 +1098,7 @@ of xmpppy.")
(setenv "DISPLAY" ":1")
;; For missing '/etc/machine-id'.
(setenv "DBUS_FATAL_WARNINGS" "0")
- (invoke "dbus-launch" "python" "./setup.py" "test")
- #t))
+ (invoke "dbus-launch" "python" "./setup.py" "test")))
(add-after 'install 'glib-or-gtk-compile-schemas
(assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
(add-after 'install 'glib-or-gtk-wrap
@@ -1122,8 +1114,7 @@ of xmpppy.")
(wrap-program file
`("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))
`("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
- '("gajim" "gajim-remote" "gajim-history-manager")))
- #t)))))
+ '("gajim" "gajim-remote" "gajim-history-manager"))))))))
(native-search-paths
(list
(search-path-specification
diff --git a/gnu/packages/multiprecision.scm b/gnu/packages/multiprecision.scm
index bc03427e0a..c7307da0cf 100644
--- a/gnu/packages/multiprecision.scm
+++ b/gnu/packages/multiprecision.scm
@@ -7,6 +7,7 @@
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2018, 2019, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -256,6 +257,29 @@ and (for Fortran-90 programs) read/write statements need to be changed. PSLQ
and numerical quadrature programs are included.")
(license bsd-3)))
+(define-public cln
+ (package
+ (name "cln")
+ (version "1.3.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://www.ginac.de/CLN/cln-"
+ version ".tar.bz2"))
+ (sha256
+ (base32 "0jlq9l4hphk7qqlgqj9ihjp4m3rwjbhk6q4v00lsbgbri07574pl"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags (list "--disable-static")))
+ (inputs
+ `(("gmp" ,gmp)))
+ (home-page "https://www.ginac.de/CLN/")
+ (synopsis "Library for arbitrary precision computations")
+ (description "CLN is a C++ library for efficient computations with all
+kinds of numbers in arbitrary precision. It provides a rich set of number
+classes and elementary, logical and transcendental functions.")
+ (license gpl2+)))
+
(define-public tomsfastmath
(package
(name "tomsfastmath")
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 83e5a3991d..73118f4c79 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -1865,7 +1865,7 @@ device supports.")
(define-public bsequencer
(package
(name "bsequencer")
- (version "1.8.0")
+ (version "1.8.10")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -1874,12 +1874,13 @@ device supports.")
(file-name (git-file-name name version))
(sha256
(base32
- "0w7iwzz2r4a699fi24qk71vv2k3jpl9ylzlgmvyc3rlgad0m01k1"))))
+ "0w3m7x0619iq8rafcy0bal4gwh9m9h7iq93q7gkpxhv6dq58ix6l"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags
- (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
- #:tests? #f ; there are none
+ (list (string-append "CC=" ,(cc-for-target))
+ (string-append "PREFIX=" (assoc-ref %outputs "out")))
+ #:tests? #f ; there are none
#:phases
(modify-phases %standard-phases
(delete 'configure))))
@@ -1900,7 +1901,7 @@ with a selectable pattern matrix size.")
(package
(inherit bsequencer)
(name "bchoppr")
- (version "1.8.0")
+ (version "1.10.10")
(source
(origin
(method git-fetch)
@@ -1909,8 +1910,7 @@ with a selectable pattern matrix size.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32
- "1nd6byy75f0rbz9dm9drhxmpsfhxhg0y7q3v2m3098llynhy9k2j"))))
+ (base32 "0gxz0cpxdfj7ajcd9yg05d26i7p24mx5865vy3ph76ni8kycdlrc"))))
(synopsis "Audio stream-chopping LV2 plugin")
(description "B.Choppr cuts the audio input stream into a repeated
sequence of up to 16 chops. Each chop can be leveled up or down (gating).
@@ -1922,7 +1922,7 @@ B.Choppr is the successor of B.Slizr.")
(package
(inherit bsequencer)
(name "bshapr")
- (version "0.9")
+ (version "0.13")
(source
(origin
(method git-fetch)
@@ -1931,7 +1931,7 @@ B.Choppr is the successor of B.Slizr.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "04zd3a178i2nivg5rjailzqvc5mlnilmhj1ziygmbhshbrywplri"))))
+ (base32 "1qr3fxqcplgb6iqi2vxc27jghhv6qsidww2by15zb2vs34yh73pl"))))
(synopsis "Beat/envelope shaper LV2 plugin")
(description "B.Shapr is a beat/envelope shaper LV2 plugin.")
(home-page "https://github.com/sjaehn/BShapr")
@@ -1941,7 +1941,7 @@ B.Choppr is the successor of B.Slizr.")
(package
(inherit bsequencer)
(name "bjumblr")
- (version "1.4.2")
+ (version "1.6.8")
(source
(origin
(method git-fetch)
@@ -1950,8 +1950,7 @@ B.Choppr is the successor of B.Slizr.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32
- "0kl6hrxmqrdf0195bfnzsa2h1073fgiqrfhg2276fm1954sm994v"))))
+ (base32 "00fgax8aqqggs54pjpagw5pc30kgxaghh8mrzpqwhs06cnchcam9"))))
(inputs
`(("cairo" ,cairo)
("libsndfile" ,libsndfile)
@@ -1966,7 +1965,7 @@ re-sequencer LV2 plugin.")
(package
(inherit bsequencer)
(name "bschaffl")
- (version "1.2.0")
+ (version "1.4.8")
(source
(origin
(method git-fetch)
@@ -1975,8 +1974,7 @@ re-sequencer LV2 plugin.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32
- "1c09acqrbd387ba41f8ch1qykdap5h6cg9if5pgd16i4dmjnpghj"))))
+ (base32 "1kfc75xhj365fwl8cbvhg5chwz1snzcvf4929flds02ljylc7k6d"))))
(inputs
`(("cairo" ,cairo)
("fontconfig" ,fontconfig)
@@ -6271,7 +6269,7 @@ ones.")
(define-public dpf-plugins
(package
(name "dpf-plugins")
- (version "1.3")
+ (version "1.4")
(source
(origin
(method git-fetch)
@@ -6281,17 +6279,15 @@ ones.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32
- "1hsfmpv3kvpiwk8nfw9xpaipzy0n27i83y2v1yr93lznwm5rqrbs"))))
+ (base32 "0y7qvpfm34g6f7d786c6c9043dlbg5c4h71l2s24dsc9m8i7x2ww"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no "check" target
#:make-flags
- (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
+ (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+ (string-append "CC=" ,(cc-for-target)))
#:phases
(modify-phases %standard-phases
- (add-before 'build 'set-CC-variable
- (lambda _ (setenv "CC" "gcc") #t))
(delete 'configure))))
(inputs
`(("cairo" ,cairo)
@@ -6487,7 +6483,7 @@ plugin support, JACK support and chord assistance.")
(define-public dragonfly-reverb
(package
(name "dragonfly-reverb")
- (version "3.2.1")
+ (version "3.2.5")
(source
(origin
(method git-fetch)
@@ -6499,11 +6495,12 @@ plugin support, JACK support and chord assistance.")
(recursive? #t)))
(file-name (git-file-name name version))
(sha256
- (base32 "0vfm2510shah67k87mdyar4wr4vqwii59y9lqfhwm6blxparkrqa"))))
+ (base32 "14kia9wjs0nqfx4psnr3vf4x6hihkf80gb0mjzmdnnnk4cnrdydm"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no check target
- #:make-flags (list "CC=gcc")
+ #:make-flags
+ (list (string-append "CC=" ,(cc-for-target)))
#:phases
(modify-phases %standard-phases
(delete 'configure) ;no configure target
@@ -6527,8 +6524,7 @@ plugin support, JACK support and chord assistance.")
(and
(equal? (dirname name) "bin")
(not (string-suffix? ".so" name))
- (not (string-suffix? ".lv2" name))))))
- #t))))))
+ (not (string-suffix? ".lv2" name))))))))))))
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 260399e253..e5bce448dc 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -649,14 +649,14 @@ systems with no further dependencies.")
(define-public blueman
(package
(name "blueman")
- (version "2.2.2")
+ (version "2.2.3")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/blueman-project/blueman/releases"
"/download/" version "/blueman-" version ".tar.xz"))
(sha256
- (base32 "1xnhxhr2l4cf703j76wvzl4rf2k4xxgjjisz03y89x9ll6qmkv8r"))))
+ (base32 "1s86w4mklzr8hvbgl3nkg8jycl6grww533dhzw8gdn5glqfpkpbf"))))
(build-system glib-or-gtk-build-system)
(arguments
`(#:configure-flags (list "--enable-polkit"
@@ -1219,14 +1219,14 @@ receiving NDP messages.")
(define-public ethtool
(package
(name "ethtool")
- (version "5.12")
+ (version "5.14")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/software/network/"
"ethtool/ethtool-" version ".tar.xz"))
(sha256
(base32
- "01vgyczgldrfss98cqrgjz8krj6kwb29xjf8p08q0g85fnfgmpgm"))))
+ "11kns8imm55i0miggsnv9nblnzm60zgnanxnjajdgb2wj68xn4xv"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 48fbea7394..7b1363a5c3 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -7258,8 +7258,8 @@ these missing pieces.")
(synopsis
"Backport new syntax to older OCaml versions")
(description
- "This packages backports new features of the language to older
-compilers, such as let+.")
+ "This package backports new language features such as @code{let+} to older
+OCaml compilers.")
(license license:expat)))
(define-public ocaml-angstrom
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 65cd7087b4..660c43604d 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -145,8 +145,8 @@
;; Note: the 'update-guix-package.scm' script expects this definition to
;; start precisely like this.
(let ((version "1.3.0")
- (commit "c3c502896b1454b345ee9f17d20063853652a35a")
- (revision 10))
+ (commit "014f1b607f1d88a8e733017afaca006545b7d99b")
+ (revision 11))
(package
(name "guix")
@@ -162,7 +162,7 @@
(commit commit)))
(sha256
(base32
- "037nlr5z8qmq2zp0slcg5lyhcdp7v6vxl1f36wkqrw9xzgq8k6kf"))
+ "0mmq0ypkxj6dc1r9j1mdgih87h6fc0mk05hp481cjp8shdc1w6gw"))
(file-name (string-append "guix-" version "-checkout"))))
(build-system gnu-build-system)
(arguments
@@ -1584,14 +1584,15 @@ the boot loader configuration.")
(define-public flatpak
(package
(name "flatpak")
- (version "1.10.2")
+ (version "1.12.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/flatpak/flatpak/releases/download/"
version "/flatpak-" version ".tar.xz"))
(sha256
- (base32 "1r6xw7r3ir2vaa30n3mily6m7d51cf4qv22fkqlzzy3js0wjf5fv"))))
+ (base32 "0my82ijg1ipa4lwrvh88jlrxbabfqfz2ssfb8cn6k0pfgz53p293"))
+ (patches (search-patches "flatpak-fix-path.patch"))))
;; Wrap 'flatpak' so that GIO_EXTRA_MODULES is set, thereby allowing GIO to
;; find the TLS backend in glib-networking.
@@ -1626,6 +1627,16 @@ cp -r /tmp/locale/*/en_US.*")))
(("/bin/kill") (which "kill"))
(("/usr/bin/python3") (which "python3")))
#t))
+ (add-after 'unpack 'p11-kit-fix
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((p11-path (string-append (assoc-ref inputs "p11-kit-next")
+ "/bin/p11-kit")))
+ (substitute* "session-helper/flatpak-session-helper.c"
+ (("\"p11-kit\",")
+ (string-append "\"" p11-path "\","))
+ (("if \\(g_find_program_in_path \\(\"p11-kit\"\\)\\)")
+ (string-append "if (g_find_program_in_path (\""
+ p11-path "\"))"))))))
;; Many tests fail for unknown reasons, so we just run a few basic
;; tests.
(replace 'check
@@ -1664,6 +1675,7 @@ cp -r /tmp/locale/*/en_US.*")))
("libsoup" ,libsoup)
("libxau" ,libxau)
("libxml2" ,libxml2)
+ ("p11-kit-next" ,p11-kit-next)
("util-linux" ,util-linux)
("xdg-dbus-proxy" ,xdg-dbus-proxy)))
(home-page "https://flatpak.org")
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 6730772f24..e3813b1512 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -61,14 +61,14 @@
(define-public parallel
(package
(name "parallel")
- (version "20210922")
+ (version "20211022")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/parallel/parallel-"
version ".tar.bz2"))
(sha256
- (base32 "0rjd9636sgmnhaww2q8rbnpwhpq1aqg3df6rmpdm880zqi7skp6y"))))
+ (base32 "16yyjvlm70lj7csaz4am98dlyqrc588xydnfnabxm71awby90wfs"))))
(build-system gnu-build-system)
(arguments
`(#:phases
@@ -82,8 +82,7 @@
;; $Global::shell = $ENV{'PARALLEL_SHELL'} ||
;; parent_shell($$) || $ENV{'SHELL'} || "/bin/sh";
(("/bin/sh\\\";\n$") (string-append (which "sh") "\";\n"))))
- (list "src/parallel" "src/sem"))
- #t))
+ (list "src/parallel" "src/sem"))))
(add-after 'install 'wrap-program
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
@@ -92,8 +91,7 @@
,(map (lambda (input)
(string-append (assoc-ref inputs input) "/bin"))
'("perl"
- "procps"))))
- #t)))
+ "procps")))))))
(add-after 'wrap-program 'post-install-test
(lambda* (#:key outputs #:allow-other-keys)
(invoke (string-append
diff --git a/gnu/packages/patches/diffoscope-fix-test_item3_deflate_llvm_bitcode.patch b/gnu/packages/patches/diffoscope-fix-llvm-test.patch
index 45e496a128..45e496a128 100644
--- a/gnu/packages/patches/diffoscope-fix-test_item3_deflate_llvm_bitcode.patch
+++ b/gnu/packages/patches/diffoscope-fix-llvm-test.patch
diff --git a/gnu/packages/patches/disarchive-cross-compilation.patch b/gnu/packages/patches/disarchive-cross-compilation.patch
deleted file mode 100644
index 8061262168..0000000000
--- a/gnu/packages/patches/disarchive-cross-compilation.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From dc0f8f8bf8608c39da32e3c8ca1484b766fc7452 Mon Sep 17 00:00:00 2001
-From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
-Date: Mon, 17 May 2021 16:47:19 -0400
-Subject: [PATCH] build: Fix cross-compilation.
-
-The cross-compilation issues corrected by this change were discovered
-when attempting to cross-compile disarchive for the i586-gnu target on
-GNU Guix.
-
-* configure.ac [O_NOFOLLOW]: Rewrite test using AC_COMPUTE_INT, which
-is supported even when cross-compiling.
-(GUILD_TARGET_OPTION): New computed variable.
-* build-aux/guile.am ($(AM_V_GUILEC)GUILE_AUTO_COMPILE): Use it.
----
- build-aux/guile.am | 6 +++---
- configure.ac | 24 +++++++++++++++---------
- 2 files changed, 18 insertions(+), 12 deletions(-)
-
-diff --git a/build-aux/guile.am b/build-aux/guile.am
-index bec04ea..7745125 100644
---- a/build-aux/guile.am
-+++ b/build-aux/guile.am
-@@ -54,7 +54,7 @@ AM_V_GUILEC_0 = @echo " GUILEC" $@;
- SUFFIXES = .scm .go
-
- .scm.go:
-- $(AM_V_GUILEC)GUILE_AUTO_COMPILE=0 \
-- $(top_builddir)/pre-inst-env \
-- $(GUILD) compile $(GUILE_WARNINGS) \
-+ $(AM_V_GUILEC)GUILE_AUTO_COMPILE=0 \
-+ $(top_builddir)/pre-inst-env \
-+ $(GUILD) compile $(GUILE_WARNINGS) $(GUILD_TARGET_OPTION) \
- -o "$@" "$<"
-diff --git a/configure.ac b/configure.ac
-index 99c5ac5..0cd0173 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -39,21 +39,27 @@ AS_IF([test "x$GUILD" = "x"],
- [AC_MSG_ERROR(m4_normalize([
- 'guild' binary not found; please check your Guile installation.]))])])
-
-+dnl This argument is passed to guild; it ensures cross-compiling uses
-+dnl the right target.
-+if test -n "$host_alias"; then
-+ AC_SUBST([GUILD_TARGET_OPTION], [--target=$host_alias])
-+fi
-+
- GUILE_MODULE_REQUIRED(gcrypt hash)
-
- dnl Guile defines a handful of values from <fcntl.h>, but it is
- dnl missing O_NOFOLLOW.
- AC_ARG_VAR([O_NOFOLLOW], [value to use for O_NOFOLLOW (cf. <fcntl.h>)])
- AS_IF([test "x$O_NOFOLLOW" = "x"],
-- [AC_MSG_CHECKING([the value of O_NOFOLLOW])
-- AC_RUN_IFELSE([AC_LANG_PROGRAM([[
-- #include <fcntl.h>
-- #include <stdio.h>
-- ]], [[
-- printf("%d\n", O_NOFOLLOW)
-- ]])],
-- [O_NOFOLLOW=`./conftest$EXEEXT`],
-- [AC_MSG_FAILURE([could find value for O_NOFOLLOW])])])
-+ [AC_MSG_CHECKING([the value of O_NOFOLLOW])]
-+ [AC_COMPUTE_INT([O_NOFOLLOW],
-+ [O_NOFOLLOW],
-+ [[
-+ #include <fcntl.h>
-+ #include <stdio.h>
-+ ]],
-+ [AC_MSG_FAILURE([could find value for O_NOFOLLOW])])]
-+ [AC_MSG_RESULT([$O_NOFOLLOW])])
-
- AC_ARG_VAR([TAR], [tar utility])
- AS_IF([test "x$TAR" = "x"], [AC_PATH_PROG([TAR], [tar])])
---
-2.31.1
-
diff --git a/gnu/packages/patches/flatpak-fix-path.patch b/gnu/packages/patches/flatpak-fix-path.patch
new file mode 100644
index 0000000000..e87a08a7fe
--- /dev/null
+++ b/gnu/packages/patches/flatpak-fix-path.patch
@@ -0,0 +1,29 @@
+Flatpak writes files for installed applications with the full Flatpak (store) path. This patch makes it write just "flatpak", using Flatpak from PATH. This is similar to the NixOS [0] patch, updated for Flatpak 1.12.1
+
+[0] https://github.com/NixOS/nixpkgs/blob/bf4167861d0f864b0fc457778d54feb4a2675ea2/pkgs/development/libraries/flatpak/use-flatpak-from-path.patch
+
+diff --git a/common/flatpak-dir.c b/common/flatpak-dir.c
+index 80ff5e5f..0c111c31 100644
+--- a/common/flatpak-dir.c
++++ b/common/flatpak-dir.c
+@@ -7134,8 +7134,7 @@ export_desktop_file (const char *app,
+ flatpak = FLATPAK_BINDIR "/flatpak";
+
+ g_string_append_printf (new_exec,
+- "%s run --branch=%s --arch=%s",
+- flatpak,
++ "flatpak run --branch=%s --arch=%s",
+ escaped_branch,
+ escaped_arch);
+
+@@ -8467,8 +8466,8 @@ flatpak_dir_deploy (FlatpakDir *self,
+ if ((flatpak = g_getenv ("FLATPAK_BINARY")) == NULL)
+ flatpak = FLATPAK_BINDIR "/flatpak";
+
+- bin_data = g_strdup_printf ("#!/bin/sh\nexec %s run --branch=%s --arch=%s %s \"$@\"\n",
+- flatpak, escaped_branch, escaped_arch, escaped_app);
++ bin_data = g_strdup_printf ("#!/bin/sh\nexec flatpak run --branch=%s --arch=%s %s \"$@\"\n",
++ escaped_branch, escaped_arch, escaped_app);
+ if (!g_file_replace_contents (wrapper, bin_data, strlen (bin_data), NULL, FALSE,
+ G_FILE_CREATE_REPLACE_DESTINATION, NULL, cancellable, error))
+ return FALSE;
diff --git a/gnu/packages/patches/icecat-78-makeicecat.patch b/gnu/packages/patches/icecat-78-makeicecat.patch
new file mode 100644
index 0000000000..edd1ced257
--- /dev/null
+++ b/gnu/packages/patches/icecat-78-makeicecat.patch
@@ -0,0 +1,110 @@
+Make some of the changes needed to the 'makeicecat' script, to allow it to run
+in a snippet without network access. After this patch is applied, some
+additional changes will be made using 'substitute*'.
+
+diff --git a/makeicecat b/makeicecat
+index 8be2362..48716f2 100755
+--- a/makeicecat
++++ b/makeicecat
+@@ -31,55 +31,55 @@ SOURCEDIR=icecat-$FFVERSION
+
+ DATA="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"/data
+
+-mkdir -p output
+-cd output
++# mkdir -p output
++# cd output
+
+ ###############################################################################
+ # Retrieve FF source code
+ ###############################################################################
+
+-rm mozilla-esr${FFMAJOR} $SOURCEDIR -rf
+-
+-wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz
+-wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc
+-gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353
+-gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
+-echo -n 1aa041db28cd742e93d663a9da8defd33040b38d8b9470350538473251621643 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
+-
+-echo Extracting Firefox tarball
+-tar -xf firefox-${FFVERSION}esr.source.tar.xz
+-
+-mv firefox-${FFVERSION} $SOURCEDIR
++# rm mozilla-esr${FFMAJOR} $SOURCEDIR -rf
++#
++# wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz
++# wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc
++# gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353
++# gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
++# echo -n 1aa041db28cd742e93d663a9da8defd33040b38d8b9470350538473251621643 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
++#
++# echo Extracting Firefox tarball
++# tar -xf firefox-${FFVERSION}esr.source.tar.xz
++#
++# mv firefox-${FFVERSION} $SOURCEDIR
+
+ ###############################################################################
+ # Retrieve l10n
+ ###############################################################################
+
+-mkdir l10n
+-cd l10n
+-while read line;do
+- line=$(echo $line |cut -d' ' -f1)
+- #[ $line = "es-ES" ] || continue # To speed up testing
+- [ $line = "en-US" ] && continue
+- hg clone https://hg.mozilla.org/l10n-central/$line
+- mkdir -p $line/browser/chrome/browser/preferences
+- touch $line/browser/chrome/browser/preferences/advanced-scripts.dtd
+- rm -rf $line/.hg*
+-done < ../$SOURCEDIR/browser/locales/shipped-locales
+-cd ..
+-
+-mv l10n $SOURCEDIR
+-
+-hg clone https://hg.mozilla.org/l10n/compare-locales/
+-cd compare-locales/
+-hg checkout RELEASE_8_0_0
+-cd ..
+-rm compare-locales/.hg* compare-locales/.git* -rf
+-mv compare-locales $SOURCEDIR/l10n
++# mkdir l10n
++# cd l10n
++# while read line;do
++# line=$(echo $line |cut -d' ' -f1)
++# #[ $line = "es-ES" ] || continue # To speed up testing
++# [ $line = "en-US" ] && continue
++# hg clone https://hg.mozilla.org/l10n-central/$line
++# mkdir -p $line/browser/chrome/browser/preferences
++# touch $line/browser/chrome/browser/preferences/advanced-scripts.dtd
++# rm -rf $line/.hg*
++# done < ../$SOURCEDIR/browser/locales/shipped-locales
++# cd ..
++#
++# mv l10n $SOURCEDIR
++#
++# hg clone https://hg.mozilla.org/l10n/compare-locales/
++# cd compare-locales/
++# hg checkout RELEASE_8_0_0
++# cd ..
++# rm compare-locales/.hg* compare-locales/.git* -rf
++# mv compare-locales $SOURCEDIR/l10n
+
+ #######################################################
+
+-cd $SOURCEDIR
++# cd $SOURCEDIR
+
+ shopt -s nullglob
+ for patch in $DATA/patches/*.patch; do
+@@ -598,6 +598,6 @@ sed 's/777/755/;' -i toolkit/crashreporter/google-breakpad/Makefile.in
+ # Fix CVE-2012-3386
+ /bin/sed 's/chmod a+w/chmod u+w/' -i ./js/src/ctypes/libffi/Makefile.in ./toolkit/crashreporter/google-breakpad/Makefile.in ./toolkit/crashreporter/google-breakpad/src/third_party/glog/Makefile.in || true
+
+-cd ..
+-echo Packaging tarball
+-tar cfj icecat-$ICECATVERSION.tar.bz2 $SOURCEDIR
++# cd ..
++# echo Packaging tarball
++# tar cfj icecat-$ICECATVERSION.tar.bz2 $SOURCEDIR
diff --git a/gnu/packages/patches/icecat-makeicecat.patch b/gnu/packages/patches/icecat-makeicecat.patch
index edd1ced257..c46cb27ff6 100644
--- a/gnu/packages/patches/icecat-makeicecat.patch
+++ b/gnu/packages/patches/icecat-makeicecat.patch
@@ -3,108 +3,49 @@ in a snippet without network access. After this patch is applied, some
additional changes will be made using 'substitute*'.
diff --git a/makeicecat b/makeicecat
-index 8be2362..48716f2 100755
+index bf2b7a6..bc3b19b 100755
--- a/makeicecat
+++ b/makeicecat
-@@ -31,55 +31,55 @@ SOURCEDIR=icecat-$FFVERSION
+@@ -58,7 +58,7 @@ readonly SOURCEDIR=icecat-${FFVERSION}
+ # debug/shell options
+ readonly DEVEL=0
+ set -euo pipefail
+-(( DEVEL )) && set -x
++set -x
- DATA="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"/data
--mkdir -p output
--cd output
-+# mkdir -p output
-+# cd output
-
- ###############################################################################
- # Retrieve FF source code
###############################################################################
+@@ -459,7 +459,7 @@ configure_search()
+ sed 's|ddg@|ddg-html@|' -i browser/components/search/extensions/ddg-html/manifest.json
--rm mozilla-esr${FFMAJOR} $SOURCEDIR -rf
--
--wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz
--wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc
--gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353
--gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
--echo -n 1aa041db28cd742e93d663a9da8defd33040b38d8b9470350538473251621643 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
--
--echo Extracting Firefox tarball
--tar -xf firefox-${FFVERSION}esr.source.tar.xz
--
--mv firefox-${FFVERSION} $SOURCEDIR
-+# rm mozilla-esr${FFMAJOR} $SOURCEDIR -rf
-+#
-+# wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz
-+# wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc
-+# gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353
-+# gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
-+# echo -n 1aa041db28cd742e93d663a9da8defd33040b38d8b9470350538473251621643 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
-+#
-+# echo Extracting Firefox tarball
-+# tar -xf firefox-${FFVERSION}esr.source.tar.xz
-+#
-+# mv firefox-${FFVERSION} $SOURCEDIR
+ # Process various JSON pre-configuration dumps.
+- python3 ../../tools/process-json-files.py . browser/components/extensions/schemas/
++ python3 "${DATADIR}"/../tools/process-json-files.py . browser/components/extensions/schemas/
+ }
+ configure_mobile()
+@@ -855,12 +855,12 @@ finalize_sourceball()
+ # entry point
###############################################################################
- # Retrieve l10n
- ###############################################################################
-
--mkdir l10n
--cd l10n
--while read line;do
-- line=$(echo $line |cut -d' ' -f1)
-- #[ $line = "es-ES" ] || continue # To speed up testing
-- [ $line = "en-US" ] && continue
-- hg clone https://hg.mozilla.org/l10n-central/$line
-- mkdir -p $line/browser/chrome/browser/preferences
-- touch $line/browser/chrome/browser/preferences/advanced-scripts.dtd
-- rm -rf $line/.hg*
--done < ../$SOURCEDIR/browser/locales/shipped-locales
--cd ..
--
--mv l10n $SOURCEDIR
--
--hg clone https://hg.mozilla.org/l10n/compare-locales/
--cd compare-locales/
--hg checkout RELEASE_8_0_0
--cd ..
--rm compare-locales/.hg* compare-locales/.git* -rf
--mv compare-locales $SOURCEDIR/l10n
-+# mkdir l10n
-+# cd l10n
-+# while read line;do
-+# line=$(echo $line |cut -d' ' -f1)
-+# #[ $line = "es-ES" ] || continue # To speed up testing
-+# [ $line = "en-US" ] && continue
-+# hg clone https://hg.mozilla.org/l10n-central/$line
-+# mkdir -p $line/browser/chrome/browser/preferences
-+# touch $line/browser/chrome/browser/preferences/advanced-scripts.dtd
-+# rm -rf $line/.hg*
-+# done < ../$SOURCEDIR/browser/locales/shipped-locales
-+# cd ..
-+#
-+# mv l10n $SOURCEDIR
-+#
-+# hg clone https://hg.mozilla.org/l10n/compare-locales/
-+# cd compare-locales/
-+# hg checkout RELEASE_8_0_0
-+# cd ..
-+# rm compare-locales/.hg* compare-locales/.git* -rf
-+# mv compare-locales $SOURCEDIR/l10n
-
- #######################################################
-
--cd $SOURCEDIR
-+# cd $SOURCEDIR
-
- shopt -s nullglob
- for patch in $DATA/patches/*.patch; do
-@@ -598,6 +598,6 @@ sed 's/777/755/;' -i toolkit/crashreporter/google-breakpad/Makefile.in
- # Fix CVE-2012-3386
- /bin/sed 's/chmod a+w/chmod u+w/' -i ./js/src/ctypes/libffi/Makefile.in ./toolkit/crashreporter/google-breakpad/Makefile.in ./toolkit/crashreporter/google-breakpad/src/third_party/glog/Makefile.in || true
--cd ..
--echo Packaging tarball
--tar cfj icecat-$ICECATVERSION.tar.bz2 $SOURCEDIR
-+# cd ..
-+# echo Packaging tarball
-+# tar cfj icecat-$ICECATVERSION.tar.bz2 $SOURCEDIR
+-validate_env || exit 1
+-prepare_env
+-fetch_source
+-verify_sources
+-extract_sources
+-fetch_l10n
++# validate_env || exit 1
++# prepare_env
++# fetch_source
++# verify_sources
++# extract_sources
++# fetch_l10n
+ apply_patches
+ configure
+ configure_search
+@@ -872,4 +872,4 @@ prepare_macos_packaging
+ configure_extensions
+ configure_onboarding
+ apply_bugfixes
+-finalize_sourceball
++# finalize_sourceball
diff --git a/gnu/packages/patches/mupdf-CVE-2021-3407.patch b/gnu/packages/patches/mupdf-CVE-2021-3407.patch
deleted file mode 100644
index 9f901517c5..0000000000
--- a/gnu/packages/patches/mupdf-CVE-2021-3407.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-This patch came from https://git.ghostscript.com/?p=mupdf.git;a=patch;h=cee7cefc610d42fd383b3c80c12cbc675443176a
-and fixes CVE-2021-3407.
-
-From cee7cefc610d42fd383b3c80c12cbc675443176a Mon Sep 17 00:00:00 2001
-From: Robin Watts <Robin.Watts@artifex.com>
-Date: Fri, 22 Jan 2021 17:05:15 +0000
-Subject: [PATCH] Bug 703366: Fix double free of object during linearization.
-
-This appears to happen because we parse an illegal object from
-a broken file and assign it to object 0, which is defined to
-be free.
-
-Here, we fix the parsing code so this can't happen.
----
- source/pdf/pdf-parse.c | 6 ++++++
- source/pdf/pdf-xref.c | 2 ++
- 2 files changed, 8 insertions(+)
-
-diff --git a/source/pdf/pdf-parse.c b/source/pdf/pdf-parse.c
-index 7abc8c3d4..5761c3351 100644
---- a/source/pdf/pdf-parse.c
-+++ b/source/pdf/pdf-parse.c
-@@ -749,6 +749,12 @@ pdf_parse_ind_obj(fz_context *ctx, pdf_document *doc,
- fz_throw(ctx, FZ_ERROR_SYNTAX, "expected generation number (%d ? obj)", num);
- }
- gen = buf->i;
-+ if (gen < 0 || gen >= 65536)
-+ {
-+ if (try_repair)
-+ *try_repair = 1;
-+ fz_throw(ctx, FZ_ERROR_SYNTAX, "invalid generation number (%d)", gen);
-+ }
-
- tok = pdf_lex(ctx, file, buf);
- if (tok != PDF_TOK_OBJ)
-diff --git a/source/pdf/pdf-xref.c b/source/pdf/pdf-xref.c
-index 1b2bdcd59..30197b4b8 100644
---- a/source/pdf/pdf-xref.c
-+++ b/source/pdf/pdf-xref.c
-@@ -1190,6 +1190,8 @@ pdf_read_new_xref(fz_context *ctx, pdf_document *doc, pdf_lexbuf *buf)
- {
- ofs = fz_tell(ctx, doc->file);
- trailer = pdf_parse_ind_obj(ctx, doc, doc->file, buf, &num, &gen, &stm_ofs, NULL);
-+ if (num == 0)
-+ fz_throw(ctx, FZ_ERROR_GENERIC, "Trailer object number cannot be 0\n");
- }
- fz_catch(ctx)
- {
---
-2.17.1
-
diff --git a/gnu/packages/patches/mupdf-fix-linkage.patch b/gnu/packages/patches/mupdf-fix-linkage.patch
deleted file mode 100644
index 4ffd1c6a77..0000000000
--- a/gnu/packages/patches/mupdf-fix-linkage.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From: Tobias Geerinckx-Rice <me@tobias.gr>
-Date: Tue, 24 Nov 2020 10:29:28 +0000
-Subject: [PATCH] gnu: mupdf: Fix linkage.
-
-Replace broken linkage to ‘build/shared-release/libmupdf.so’ with the
-proper ‘-L$(libdir) -lmupdf’ incantation, and fix libmupdf.so's mode.
-
---- mupdf-1.18.0-source.org/Makefile
-+++ mupdf-1.18.0-source/Makefile
-@@ -61,7 +61,7 @@
- ifdef RANLIB
- RANLIB_CMD = $(QUIET_RANLIB) $(RANLIB) $@
- endif
--LINK_CMD = $(QUIET_LINK) $(MKTGTDIR) ; $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
-+LINK_CMD = $(QUIET_LINK) $(MKTGTDIR) ; $(CC) $(LDFLAGS) -o $@ $(subst $(MUPDF_LIB),-L$(libdir) -L$(OUT) -lmupdf,$^) $(LIBS)
- TAGS_CMD = $(QUIET_TAGS) ctags -R --c-kinds=+p
- WINDRES_CMD = $(QUIET_WINDRES) $(MKTGTDIR) ; $(WINDRES) $< $@
- OBJCOPY_CMD = $(QUIET_OBJCOPY) $(MKTGTDIR) ; $(LD) -r -b binary -z noexecstack -o $@ $<
-@@ -364,7 +364,7 @@ install: libs apps
- install -m 644 include/mupdf/pdf/*.h $(DESTDIR)$(incdir)/mupdf/pdf
-
- install -d $(DESTDIR)$(libdir)
-- install -m 644 $(INSTALL_LIBS) $(DESTDIR)$(libdir)
-+ install -m 755 $(INSTALL_LIBS) $(DESTDIR)$(libdir)
-
- install -d $(DESTDIR)$(bindir)
- install -m 755 $(TOOL_APPS) $(VIEW_APPS) $(DESTDIR)$(bindir)
diff --git a/gnu/packages/patches/python-peachpy-determinism.patch b/gnu/packages/patches/python-peachpy-determinism.patch
new file mode 100644
index 0000000000..f326a4b6b0
--- /dev/null
+++ b/gnu/packages/patches/python-peachpy-determinism.patch
@@ -0,0 +1,25 @@
+Make PeachPy processes deterministic:
+
+ https://github.com/Maratyszcza/PeachPy/issues/88
+ https://issues.guix.gnu.org/50672
+
+diff --git a/peachpy/name.py b/peachpy/name.py
+index b6a03dc..412079d 100644
+--- a/peachpy/name.py
++++ b/peachpy/name.py
+@@ -86,13 +86,13 @@ def add_scoped_name(self, scoped_name):
+ self.names[scope_name.name] = scope
+ else:
+ assert scope_name.name is None
+- self.prenames.setdefault(scope_name.prename, set())
++ self.prenames.setdefault(scope_name.prename, {})
+ if subscoped_name:
+ for subscope in iter(self.prenames[scope_name.prename]):
+ if isinstance(subscope, Namespace) and subscope.scope_name is scope_name:
+ subscope.add_scoped_name(subscoped_name)
+ return
+- self.prenames[scope_name.prename].add(scope)
++ self.prenames[scope_name.prename][scope] = None
+
+ def assign_names(self):
+ # Step 1: assign names to symbols with prenames with no conflicts
diff --git a/gnu/packages/patches/qemu-fix-agent-paths.patch b/gnu/packages/patches/qemu-fix-agent-paths.patch
new file mode 100644
index 0000000000..bae62fadbf
--- /dev/null
+++ b/gnu/packages/patches/qemu-fix-agent-paths.patch
@@ -0,0 +1,66 @@
+Allow a QEMU host to set the time and shutdown Guix guests. Styled
+after the patch from the Nix package:
+
+https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/virtualization/qemu/fix-qemu-ga.patch
+
+diff --git a/qga/commands-posix.c b/qga/commands-posix.c
+index 75dbaab..b416b03 100644
+--- a/qga/commands-posix.c
++++ b/qga/commands-posix.c
+@@ -84,6 +84,7 @@ static void ga_wait_child(pid_t pid, int *status, Error **errp)
+ void qmp_guest_shutdown(bool has_mode, const char *mode, Error **errp)
+ {
+ const char *shutdown_flag;
++ const char *command;
+ Error *local_err = NULL;
+ pid_t pid;
+ int status;
+@@ -91,10 +92,13 @@ void qmp_guest_shutdown(bool has_mode, const char *mode, Error **errp)
+ slog("guest-shutdown called, mode: %s", mode);
+ if (!has_mode || strcmp(mode, "powerdown") == 0) {
+ shutdown_flag = "-P";
++ command = "shutdown";
+ } else if (strcmp(mode, "halt") == 0) {
+ shutdown_flag = "-H";
++ command = "halt";
+ } else if (strcmp(mode, "reboot") == 0) {
+ shutdown_flag = "-r";
++ command = "reboot";
+ } else {
+ error_setg(errp,
+ "mode is invalid (valid values are: halt|powerdown|reboot");
+@@ -109,6 +113,11 @@ void qmp_guest_shutdown(bool has_mode, const char *mode, Error **errp)
+ reopen_fd_to_null(1);
+ reopen_fd_to_null(2);
+
++ /* try Guix’s shutdown/halt/reboot first */
++ char *path = g_strdup_printf("/run/current-system/profile/sbin/%s", command);
++ execle(path, command, (char *)NULL, environ);
++ g_free(path);
++
+ execle("/sbin/shutdown", "shutdown", "-h", shutdown_flag, "+0",
+ "hypervisor initiated shutdown", (char *)NULL, environ);
+ _exit(EXIT_FAILURE);
+@@ -158,10 +167,12 @@ void qmp_guest_set_time(bool has_time, int64_t time_ns, Error **errp)
+ Error *local_err = NULL;
+ struct timeval tv;
+ static const char hwclock_path[] = "/sbin/hwclock";
++ static const char hwclock_path_guix[] = "/run/current-system/profile/sbin/hwclock";
+ static int hwclock_available = -1;
+
+ if (hwclock_available < 0) {
+- hwclock_available = (access(hwclock_path, X_OK) == 0);
++ hwclock_available = (access(hwclock_path_guix, X_OK) == 0) ||
++ (access(hwclock_path, X_OK) == 0);
+ }
+
+ if (!hwclock_available) {
+@@ -207,6 +218,8 @@ void qmp_guest_set_time(bool has_time, int64_t time_ns, Error **errp)
+
+ /* Use '/sbin/hwclock -w' to set RTC from the system time,
+ * or '/sbin/hwclock -s' to set the system time from RTC. */
++ execle(hwclock_path_guix, "hwclock", has_time ? "-w" : "-s",
++ NULL, environ);
+ execle(hwclock_path, "hwclock", has_time ? "-w" : "-s",
+ NULL, environ);
+ _exit(EXIT_FAILURE);
diff --git a/gnu/packages/patches/u-boot-allow-disabling-openssl.patch b/gnu/packages/patches/u-boot-allow-disabling-openssl.patch
new file mode 100644
index 0000000000..e3ec92be84
--- /dev/null
+++ b/gnu/packages/patches/u-boot-allow-disabling-openssl.patch
@@ -0,0 +1,164 @@
+From f060e90d148270307228315e2759a0065ec1d796 Mon Sep 17 00:00:00 2001
+From: Vagrant Cascadian <vagrant@debian.org>
+Date: Fri, 22 Oct 2021 17:34:53 -0700
+Subject: [PATCH] Revert "tools: kwbimage: Do not hide usage of secure header
+ under CONFIG_ARMADA_38X"
+
+This reverts commit b4f3cc2c42d97967a3a3c8796c340f6b07ecccac.
+---
+ tools/Makefile | 8 ++++++++
+ tools/kwbimage.c | 22 ++++++++++++++++++++++
+ 2 files changed, 30 insertions(+)
+
+diff --git a/tools/Makefile b/tools/Makefile
+index 4a86321f64..9517f203fd 100644
+--- a/tools/Makefile
++++ b/tools/Makefile
+@@ -169,6 +169,14 @@ HOST_EXTRACFLAGS += -DCONFIG_FIT_SIGNATURE_MAX_SIZE=0xffffffff
+ HOST_EXTRACFLAGS += -DCONFIG_FIT_CIPHER
+ endif
+
++ifneq ($(CONFIG_SYS_U_BOOT_OFFS),)
++HOSTCFLAGS_kwbimage.o += -DCONFIG_SYS_U_BOOT_OFFS=$(CONFIG_SYS_U_BOOT_OFFS)
++endif
++
++ifneq ($(CONFIG_ARMADA_38X),)
++HOSTCFLAGS_kwbimage.o += -DCONFIG_KWB_SECURE
++endif
++
+ # MXSImage needs LibSSL
+ ifneq ($(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_ARMADA_38X)$(CONFIG_TOOLS_LIBCRYPTO),)
+ HOSTCFLAGS_kwbimage.o += \
+diff --git a/tools/kwbimage.c b/tools/kwbimage.c
+index d200ff2425..23d6be3c9a 100644
+--- a/tools/kwbimage.c
++++ b/tools/kwbimage.c
+@@ -14,6 +14,7 @@
+ #include <stdint.h>
+ #include "kwbimage.h"
+
++#ifdef CONFIG_KWB_SECURE
+ #include <openssl/bn.h>
+ #include <openssl/rsa.h>
+ #include <openssl/pem.h>
+@@ -39,10 +40,13 @@ void EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx)
+ EVP_MD_CTX_reset(ctx);
+ }
+ #endif
++#endif
+
+ static struct image_cfg_element *image_cfg;
+ static int cfgn;
++#ifdef CONFIG_KWB_SECURE
+ static int verbose_mode;
++#endif
+
+ struct boot_mode {
+ unsigned int id;
+@@ -237,6 +241,8 @@ image_count_options(unsigned int optiontype)
+ return count;
+ }
+
++#if defined(CONFIG_KWB_SECURE)
++
+ static int image_get_csk_index(void)
+ {
+ struct image_cfg_element *e;
+@@ -259,6 +265,8 @@ static bool image_get_spezialized_img(void)
+ return e->sec_specialized_img;
+ }
+
++#endif
++
+ /*
+ * Compute a 8-bit checksum of a memory area. This algorithm follows
+ * the requirements of the Marvell SoC BootROM specifications.
+@@ -353,6 +361,7 @@ static uint8_t baudrate_to_option(unsigned int baudrate)
+ }
+ }
+
++#if defined(CONFIG_KWB_SECURE)
+ static void kwb_msg(const char *fmt, ...)
+ {
+ if (verbose_mode) {
+@@ -847,6 +856,8 @@ done:
+ return ret;
+ }
+
++#endif
++
+ static void *image_create_v0(size_t *imagesz, struct image_tool_params *params,
+ int payloadsz)
+ {
+@@ -977,11 +988,13 @@ static size_t image_headersz_v1(int *hasext)
+ *hasext = 1;
+ }
+
++#if defined(CONFIG_KWB_SECURE)
+ if (image_get_csk_index() >= 0) {
+ headersz += sizeof(struct secure_hdr_v1);
+ if (hasext)
+ *hasext = 1;
+ }
++#endif
+
+ /*
+ * The payload should be aligned on some reasonable
+@@ -1058,6 +1071,8 @@ err_close:
+ return -1;
+ }
+
++#if defined(CONFIG_KWB_SECURE)
++
+ int export_pub_kak_hash(RSA *kak, struct secure_hdr_v1 *secure_hdr)
+ {
+ FILE *hashf;
+@@ -1170,6 +1185,7 @@ int add_secure_header_v1(struct image_tool_params *params, uint8_t *ptr,
+
+ return 0;
+ }
++#endif
+
+ static void *image_create_v1(size_t *imagesz, struct image_tool_params *params,
+ uint8_t *ptr, int payloadsz)
+@@ -1177,7 +1193,9 @@ static void *image_create_v1(size_t *imagesz, struct image_tool_params *params,
+ struct image_cfg_element *e;
+ struct main_hdr_v1 *main_hdr;
+ struct register_set_hdr_v1 *register_set_hdr;
++#if defined(CONFIG_KWB_SECURE)
+ struct secure_hdr_v1 *secure_hdr = NULL;
++#endif
+ size_t headersz;
+ uint8_t *image, *cur;
+ int hasext = 0;
+@@ -1253,6 +1271,7 @@ static void *image_create_v1(size_t *imagesz, struct image_tool_params *params,
+ if (main_hdr->blockid == IBR_HDR_PEX_ID)
+ main_hdr->srcaddr = cpu_to_le32(0xFFFFFFFF);
+
++#if defined(CONFIG_KWB_SECURE)
+ if (image_get_csk_index() >= 0) {
+ /*
+ * only reserve the space here; we fill the header later since
+@@ -1263,6 +1282,7 @@ static void *image_create_v1(size_t *imagesz, struct image_tool_params *params,
+ *next_ext = 1;
+ next_ext = &secure_hdr->next;
+ }
++#endif
+
+ datai = 0;
+ register_set_hdr = (struct register_set_hdr_v1 *)cur;
+@@ -1310,9 +1330,11 @@ static void *image_create_v1(size_t *imagesz, struct image_tool_params *params,
+ return NULL;
+ }
+
++#if defined(CONFIG_KWB_SECURE)
+ if (secure_hdr && add_secure_header_v1(params, ptr, payloadsz,
+ headersz, image, secure_hdr))
+ return NULL;
++#endif
+
+ /* Calculate and set the header checksum */
+ main_hdr->checksum = image_checksum8(main_hdr, headersz);
+--
+2.30.2
+
diff --git a/gnu/packages/patches/udiskie-no-appindicator.patch b/gnu/packages/patches/udiskie-no-appindicator.patch
deleted file mode 100644
index df3efe104b..0000000000
--- a/gnu/packages/patches/udiskie-no-appindicator.patch
+++ /dev/null
@@ -1,155 +0,0 @@
-Remove the support for Unity's appindicator.
-
-diff -Naur udiskie-2.0.4/completions/zsh/_udiskie udiskie-2.0.4-new/completions/zsh/_udiskie
---- udiskie-2.0.4/completions/zsh/_udiskie 2020-01-21 01:12:40.000000000 +0100
-+++ udiskie-2.0.4-new/completions/zsh/_udiskie 2020-01-23 10:15:46.956141667 +0100
-@@ -18,8 +18,6 @@
- '(-a)'{-A,--no-automount}"[disable automounting]"
- '(-N)'{-n,--notify}"[show popup notifications]"
- '(-n)'{-N,--no-notify}"[disable notifications]"
-- '(--no-appindicator)'--appindicator"[use appindicator for status icon]"
-- '(--appindicator)'--no-appindicator"[don't use appindicator]"
- '(-T -s)'{-t,--tray}"[show tray icon]"
- '(-T -t)'{-s,--smart-tray}"[auto hide tray icon]"
- '(-t -s)'{-T,--no-tray}"[disable tray icon]"
-diff -Naur udiskie-2.0.4/doc/udiskie.8.txt udiskie-2.0.4-new/doc/udiskie.8.txt
---- udiskie-2.0.4/doc/udiskie.8.txt 2020-01-21 01:12:40.000000000 +0100
-+++ udiskie-2.0.4-new/doc/udiskie.8.txt 2020-01-23 10:16:12.636290647 +0100
-@@ -92,12 +92,6 @@
- *--no-terminal*::
- Disable terminal action.
-
--*--appindicator*::
-- Use AppIndicator3 for the status icon. Use this on Ubuntu/Unity if no icon is shown.
--
--*--no-appindicator*::
-- Use Gtk.StatusIcon for the status icon (default).
--
- *--password-cache MINUTES*::
- Cache passwords for LUKS partitions and set the timeout.
-
-diff -Naur udiskie-2.0.4/udiskie/appindicator.py udiskie-2.0.4-new/udiskie/appindicator.py
---- udiskie-2.0.4/udiskie/appindicator.py 2020-01-21 01:12:40.000000000 +0100
-+++ udiskie-2.0.4-new/udiskie/appindicator.py 1970-01-01 01:00:00.000000000 +0100
-@@ -1,61 +0,0 @@
--"""
--Status icon using AppIndicator3.
--"""
--
--from gi.repository import Gtk
--from gi.repository import AppIndicator3
--
--from .async_ import Future
--
--
--class AppIndicatorIcon:
--
-- """
-- Show status icon using AppIndicator as backend. Replaces
-- `udiskie.tray.StatusIcon` on ubuntu/unity.
-- """
--
-- def __init__(self, menumaker, _icons):
-- self._maker = menumaker
-- self._menu = Gtk.Menu()
-- self._indicator = AppIndicator3.Indicator.new(
-- 'udiskie',
-- _icons.get_icon_name('media'),
-- AppIndicator3.IndicatorCategory.HARDWARE)
-- self._indicator.set_status(AppIndicator3.IndicatorStatus.PASSIVE)
-- self._indicator.set_menu(self._menu)
-- # Get notified before menu is shown, see:
-- # https://bugs.launchpad.net/screenlets/+bug/522152/comments/15
-- dbusmenuserver = self._indicator.get_property('dbus-menu-server')
-- self._dbusmenuitem = dbusmenuserver.get_property('root-node')
-- self._conn = self._dbusmenuitem.connect('about-to-show', self._on_show)
-- self.task = Future()
-- menumaker._quit_action = self.destroy
-- # Populate menu initially, so libdbusmenu does not ignore the
-- # 'about-to-show':
-- self._maker(self._menu)
--
-- def destroy(self):
-- self.show(False)
-- self._dbusmenuitem.disconnect(self._conn)
-- self.task.set_result(True)
--
-- @property
-- def visible(self):
-- status = self._indicator.get_status()
-- return status == AppIndicator3.IndicatorStatus.ACTIVE
--
-- def show(self, show=True):
-- if show == self.visible:
-- return
-- status = (AppIndicator3.IndicatorStatus.ACTIVE if show else
-- AppIndicator3.IndicatorStatus.PASSIVE)
-- self._indicator.set_status(status)
--
-- def _on_show(self, menu):
-- # clear menu:
-- for item in self._menu.get_children():
-- self._menu.remove(item)
-- # repopulate:
-- self._maker(self._menu)
-- self._menu.show_all()
-diff -Naur udiskie-2.0.4/udiskie/cli.py udiskie-2.0.4-new/udiskie/cli.py
---- udiskie-2.0.4/udiskie/cli.py 2020-01-21 01:12:40.000000000 +0100
-+++ udiskie-2.0.4-new/udiskie/cli.py 2020-01-23 10:17:13.064810617 +0100
-@@ -287,9 +287,6 @@
- -T, --no-tray Disable tray icon
- -m MENU, --menu MENU Tray menu [flat/nested]
-
-- --appindicator Use appindicator for status icon
-- --no-appindicator Don't use appindicator
--
- --password-cache MINUTES Set password cache timeout
- --no-password-cache Disable password cache
-
-@@ -312,7 +309,6 @@
- 'notify': True,
- 'tray': False,
- 'menu': 'flat',
-- 'appindicator': False,
- 'file_manager': 'xdg-open',
- 'terminal': '',
- 'password_prompt': 'builtin:gui',
-@@ -328,7 +324,6 @@
- '--no-tray': False,
- '--smart-tray': 'auto'}),
- 'menu': Value('--menu'),
-- 'appindicator': Switch('appindicator'),
- 'file_manager': OptionalValue('--file-manager'),
- 'password_prompt': OptionalValue('--password-prompt'),
- 'password_cache': OptionalValue('--password-cache'),
-@@ -459,11 +454,7 @@
-
- menu_maker = udiskie.tray.UdiskieMenu(self, icons, actions, flat,
- config.quickmenu_actions)
-- if options['appindicator']:
-- import udiskie.appindicator
-- TrayIcon = udiskie.appindicator.AppIndicatorIcon
-- else:
-- TrayIcon = udiskie.tray.TrayIcon
-+ TrayIcon = udiskie.tray.TrayIcon
- trayicon = TrayIcon(menu_maker, icons)
- return udiskie.tray.UdiskieStatusIcon(trayicon, menu_maker, smart)
-
-diff -Naur udiskie-2.0.4/udiskie.egg-info/SOURCES.txt udiskie-2.0.4-new/udiskie.egg-info/SOURCES.txt
---- udiskie-2.0.4/udiskie.egg-info/SOURCES.txt 2020-01-21 01:12:41.000000000 +0100
-+++ udiskie-2.0.4-new/udiskie.egg-info/SOURCES.txt 2020-01-23 10:17:50.657205798 +0100
-@@ -25,7 +25,6 @@
- test/test_cache.py
- test/test_match.py
- udiskie/__init__.py
--udiskie/appindicator.py
- udiskie/async_.py
- udiskie/automount.py
- udiskie/cache.py
-@@ -47,4 +46,4 @@
- udiskie.egg-info/entry_points.txt
- udiskie.egg-info/requires.txt
- udiskie.egg-info/top_level.txt
--udiskie.egg-info/zip-safe
-\ Pas de fin de ligne à la fin du fichier
-+udiskie.egg-info/zip-safe
diff --git a/gnu/packages/patches/zig-disable-libc-note-test.patch b/gnu/packages/patches/zig-disable-libc-note-test.patch
new file mode 100644
index 0000000000..4d76139efb
--- /dev/null
+++ b/gnu/packages/patches/zig-disable-libc-note-test.patch
@@ -0,0 +1,31 @@
+This test fails with "error.CompilationIncorrectlySucceeded".
+
+diff --git a/test/compile_errors.zig b/test/compile_errors.zig
+index fd1255c..20d5548 100644
+--- a/test/compile_errors.zig
++++ b/test/compile_errors.zig
+@@ -2751,15 +2751,15 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
+ "tmp.zig:3:5: error: dependency on libc must be explicitly specified in the build command",
+ });
+
+- cases.addTest("libc headers note",
+- \\const c = @cImport(@cInclude("stdio.h"));
+- \\export fn entry() void {
+- \\ _ = c.printf("hello, world!\n");
+- \\}
+- , &[_][]const u8{
+- "tmp.zig:1:11: error: C import failed",
+- "tmp.zig:1:11: note: libc headers not available; compilation does not link against libc",
+- });
++// cases.addTest("libc headers note",
++// \\const c = @cImport(@cInclude("stdio.h"));
++// \\export fn entry() void {
++// \\ _ = c.printf("hello, world!\n");
++// \\}
++// , &[_][]const u8{
++// "tmp.zig:1:11: error: C import failed",
++// "tmp.zig:1:11: note: libc headers not available; compilation does not link against libc",
++// });
+ }
+
+ cases.addTest("comptime vector overflow shows the index",
diff --git a/gnu/packages/patches/zig-use-system-paths.patch b/gnu/packages/patches/zig-use-system-paths.patch
new file mode 100644
index 0000000000..33b7da1e0d
--- /dev/null
+++ b/gnu/packages/patches/zig-use-system-paths.patch
@@ -0,0 +1,143 @@
+This patch replaces the OS-specific detection mechanism by one that solely
+relies on environment variables. This has the benefit that said environment
+variables can be used as search paths in Guix.
+
+Index: zig-0.8.1/lib/std/zig/system.zig
+===================================================================
+--- zig-0.8.1.orig/lib/std/zig/system.zig
++++ zig-0.8.1/lib/std/zig/system.zig
+@@ -39,101 +39,57 @@ pub const NativePaths = struct {
+ };
+ errdefer self.deinit();
+
+- var is_nix = false;
+- if (process.getEnvVarOwned(allocator, "NIX_CFLAGS_COMPILE")) |nix_cflags_compile| {
+- defer allocator.free(nix_cflags_compile);
+-
+- is_nix = true;
+- var it = mem.tokenize(nix_cflags_compile, " ");
++ // TODO: Support cross-compile paths?
++ if (process.getEnvVarOwned(allocator, "C_INCLUDE_PATH")) |c_include_path| {
++ defer allocator.free(c_include_path);
++ var it = mem.tokenize(c_include_path, ":");
+ while (true) {
+- const word = it.next() orelse break;
+- if (mem.eql(u8, word, "-isystem")) {
+- const include_path = it.next() orelse {
+- try self.addWarning("Expected argument after -isystem in NIX_CFLAGS_COMPILE");
+- break;
+- };
+- try self.addIncludeDir(include_path);
+- } else {
+- if (mem.startsWith(u8, word, "-frandom-seed=")) {
+- continue;
+- }
+- try self.addWarningFmt("Unrecognized C flag from NIX_CFLAGS_COMPILE: {s}", .{word});
+- }
++ const dir = it.next() orelse break;
++ try self.addIncludeDir(dir);
+ }
+ } else |err| switch (err) {
+ error.InvalidUtf8 => {},
+ error.EnvironmentVariableNotFound => {},
+ error.OutOfMemory => |e| return e,
+ }
+- if (process.getEnvVarOwned(allocator, "NIX_LDFLAGS")) |nix_ldflags| {
+- defer allocator.free(nix_ldflags);
+
+- is_nix = true;
+- var it = mem.tokenize(nix_ldflags, " ");
++ if (process.getEnvVarOwned(allocator, "CPLUS_INCLUDE_PATH")) |cplus_include_path| {
++ defer allocator.free(cplus_include_path);
++ var it = mem.tokenize(cplus_include_path, ":");
+ while (true) {
+- const word = it.next() orelse break;
+- if (mem.eql(u8, word, "-rpath")) {
+- const rpath = it.next() orelse {
+- try self.addWarning("Expected argument after -rpath in NIX_LDFLAGS");
+- break;
+- };
+- try self.addRPath(rpath);
+- } else if (word.len > 2 and word[0] == '-' and word[1] == 'L') {
+- const lib_path = word[2..];
+- try self.addLibDir(lib_path);
+- } else {
+- try self.addWarningFmt("Unrecognized C flag from NIX_LDFLAGS: {s}", .{word});
+- break;
+- }
++ const dir = it.next() orelse break;
++ try self.addIncludeDir(dir);
+ }
+ } else |err| switch (err) {
+ error.InvalidUtf8 => {},
+ error.EnvironmentVariableNotFound => {},
+ error.OutOfMemory => |e| return e,
+ }
+- if (is_nix) {
+- return self;
+- }
+-
+- if (comptime Target.current.isDarwin()) {
+- try self.addIncludeDir("/usr/include");
+- try self.addIncludeDir("/usr/local/include");
+
+- try self.addLibDir("/usr/lib");
+- try self.addLibDir("/usr/local/lib");
+-
+- try self.addFrameworkDir("/Library/Frameworks");
+- try self.addFrameworkDir("/System/Library/Frameworks");
+-
+- return self;
++ if (process.getEnvVarOwned(allocator, "LIBRARY_PATH")) |library_path| {
++ defer allocator.free(library_path);
++ var it = mem.tokenize(library_path, ":");
++ while (true) {
++ const dir = it.next() orelse break;
++ try self.addLibDir(dir);
++ }
++ } else |err| switch (err) {
++ error.InvalidUtf8 => {},
++ error.EnvironmentVariableNotFound => {},
++ error.OutOfMemory => |e| return e,
+ }
+
+- if (native_target.os.tag != .windows) {
+- const triple = try native_target.linuxTriple(allocator);
+- const qual = native_target.cpu.arch.ptrBitWidth();
+-
+- // TODO: $ ld --verbose | grep SEARCH_DIR
+- // the output contains some paths that end with lib64, maybe include them too?
+- // TODO: what is the best possible order of things?
+- // TODO: some of these are suspect and should only be added on some systems. audit needed.
+-
+- try self.addIncludeDir("/usr/local/include");
+- try self.addLibDirFmt("/usr/local/lib{d}", .{qual});
+- try self.addLibDir("/usr/local/lib");
+-
+- try self.addIncludeDirFmt("/usr/include/{s}", .{triple});
+- try self.addLibDirFmt("/usr/lib/{s}", .{triple});
+-
+- try self.addIncludeDir("/usr/include");
+- try self.addLibDirFmt("/lib{d}", .{qual});
+- try self.addLibDir("/lib");
+- try self.addLibDirFmt("/usr/lib{d}", .{qual});
+- try self.addLibDir("/usr/lib");
+-
+- // example: on a 64-bit debian-based linux distro, with zlib installed from apt:
+- // zlib.h is in /usr/include (added above)
+- // libz.so.1 is in /lib/x86_64-linux-gnu (added here)
+- try self.addLibDirFmt("/lib/{s}", .{triple});
++ if (process.getEnvVarOwned(allocator, "DYLD_FRAMEWORK_PATH")) |dyld_framework_path| {
++ defer allocator.free(dyld_framework_path);
++ var it = mem.tokenize(dyld_framework_path, ":");
++ while (true) {
++ const dir = it.next() orelse break;
++ try self.addFrameworkDir(dir);
++ }
++ } else |err| switch (err) {
++ error.InvalidUtf8 => {},
++ error.EnvironmentVariableNotFound => {},
++ error.OutOfMemory => |e| return e,
+ }
+
+ return self;
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 042003e898..80f62946ea 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -721,21 +721,20 @@ extracting content or merging files.")
(define-public mupdf
(package
(name "mupdf")
- (version "1.18.0")
+ (version "1.19.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://mupdf.com/downloads/archive/"
"mupdf-" version "-source.tar.xz"))
(sha256
- (base32 "16m5sksil22sshxy70xkslsb2qhvcqb1d95i9savnhds1xn4ybar"))
- (patches (search-patches "mupdf-fix-linkage.patch"
- "mupdf-CVE-2021-3407.patch"))
+ (base32 "1i98xqgnzp168hnnhradl8658qsif06wlbvcglz0mmh8wi1rkwrq"))
(modules '((guix build utils)))
(snippet
'(begin
;; Remove bundled software.
- (let* ((keep (list "lcms2")) ; different from our lcms2 package
+ (let* ((keep (list "extract"
+ "lcms2")) ; different from our lcms2 package
(from "thirdparty")
(kept (string-append from "~temp")))
(mkdir-p kept)
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index e85af9305a..a3b8f471dc 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -413,7 +413,7 @@ overlapping images, as well as some command line tools.")
("libjpeg" ,libjpeg-turbo)
("libpng" ,libpng)
("libtiff" ,libtiff)
- ("openexr" ,openexr)
+ ("openexr" ,openexr-2)
("vigra" ,vigra)
("zlib" ,zlib)))
(arguments
@@ -568,7 +568,7 @@ photographic equipment.")
("libxslt" ,libxslt)
("lua" ,lua) ;optional, for plugins
("opencl-icd-loader" ,opencl-icd-loader) ;optional, for OpenCL support
- ("openexr" ,openexr) ;optional, for EXR import/export
+ ("openexr" ,openexr-2) ;optional, for EXR import/export
("openjpeg" ,openjpeg) ;optional, for JPEG2000 export
("osm-gps-map" ,osm-gps-map) ;optional, for geotagging view
("pugixml" ,pugixml)
@@ -726,7 +726,7 @@ off' shooting directly from the controlling computer.")
("libxi" ,libxi)
("libxmu" ,libxmu)
("mesa" ,mesa)
- ("openexr" ,openexr)
+ ("openexr" ,openexr-2)
("sqlite" ,sqlite)
("vigra" ,vigra)
("wxwidgets" ,wxwidgets)
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index fcdc1a309b..44eab76918 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -60,7 +60,7 @@
(define-public php
(package
(name "php")
- (version "7.4.22")
+ (version "7.4.25")
(home-page "https://secure.php.net/")
(source (origin
(method url-fetch)
@@ -68,7 +68,7 @@
"php-" version ".tar.xz"))
(sha256
(base32
- "1s5xjy1cchlg0vfxic73wy2wip8spfjr094hzzyc76plsbbqq1wf"))
+ "02iw75niazf3zh3ry15k5yjy6ivg49rwzlr8g8w49rgyszqmi9qj"))
(patches (search-patches "php-bug-74093-test.patch"))
(modules '((guix build utils)))
(snippet
@@ -82,8 +82,7 @@
;;"fileinfo/libmagic" ; a patched version of libmagic
'("gd/libgd"
"pcre/pcre2lib"
- "xmlrpc/libxmlrpc"))
- #t))))
+ "xmlrpc/libxmlrpc"))))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 9ae697d85f..cb812762c9 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -120,7 +120,7 @@ interfaces with pytest.")
("python-six" ,python-six)))
(home-page "https://github.com/nicoulaj/pytest-csv")
(synopsis "CSV reporter for Pytest")
- (description "This packages provides a plugin for Pytest that enables a
+ (description "This package provides a plugin for Pytest that enables a
CSV output mode for Pytest. It can be enabled via the @option{--csv} option
it adds to the Pytest command line interface (CLI).")
(license license:gpl3+)))
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 8783c75037..164886ce79 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -4571,13 +4571,13 @@ Python.")
(define-public python-slugify
(package
(name "python-slugify")
- (version "4.0.1")
+ (version "5.0.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "python-slugify" version))
(sha256
- (base32 "0w22fapghmzk3xdasc4dn7h8sl58l08d1h5zbf72dh80drv1g9b9"))))
+ (base32 "1aww2ncglyii4jkbfjxqhinivawf9zmwifcj32d69gpwp6h86czi"))))
(propagated-inputs
`(("python-unidecode" ,python-unidecode)
("python-text-unidecode" ,python-text-unidecode)))
@@ -4585,8 +4585,9 @@ Python.")
`(#:phases
(modify-phases %standard-phases
(replace 'check
- (lambda _
- (invoke "python" "test.py"))))))
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "python" "test.py")))))))
(build-system python-build-system)
(home-page "https://github.com/un33k/python-slugify")
(synopsis "Python Slugify application that handles Unicode")
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index b2aaef14d3..5f46e52472 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -110,6 +110,7 @@
;;; Copyright © 2021 Pradana Aumars <paumars@courrier.dev>
;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
;;; Copyright © 2021 Sébastien Lerique <sl@eauchat.org>
+;;; Copyright © 2021 Raphaël Mélotte <raphael.melotte@mind.be>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -4332,7 +4333,7 @@ software version simply.")
(define-public python-deprecated
(package
(name "python-deprecated")
- (version "1.2.5")
+ (version "1.2.13")
(source
(origin
(method git-fetch)
@@ -4342,13 +4343,14 @@ software version simply.")
(file-name (git-file-name name version))
(sha256
(base32
- "14909glxxwwc4b9qpz2b9jdriwzi5n65ichw85xqppap5f79wcwz"))))
+ "0v4ys9xr8lski2r98da99spsj6hjlnnqgnhhmyhrm66myiix885c"))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
(replace 'check
- (lambda _
- (invoke "pytest"))))))
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "pytest")))))))
(propagated-inputs
`(("python-wrapt" ,python-wrapt)))
(native-inputs
@@ -18389,14 +18391,14 @@ perform the operations required for synchronizing plain text.")
(define-public python-levenshtein
(package
(name "python-levenshtein")
- (version "0.12.0")
+ (version "0.12.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "python-Levenshtein" version))
(sha256
(base32
- "1c9ybqcja31nghfcc8xxbbz9h60s9qi12b9hr4jyl69xbvg12fh3"))))
+ "1xj60gymwx1jl2ra9razx2wk8nb9cv1i7l8d14qsp8a8s7xra8yw"))))
(build-system python-build-system)
(home-page "https://github.com/ztane/python-Levenshtein")
(synopsis "Fast computation of Levenshtein distance and string similarity")
@@ -27051,8 +27053,8 @@ result.")
(home-page "https://github.com/readthedocs/recommonmark")
(synopsis "Docutils-compatibility bridge to CommonMark")
(description
- "This packages provides a docutils-compatibility bridge to CommonMark,
-enabling you to write CommonMark inside of Docutils & Sphinx projects.")
+ "This package provides a docutils-compatibility bridge to CommonMark that
+lets you write CommonMark inside of Docutils & Sphinx projects.")
(license license:expat)))
(define-public python-pyhull
@@ -27125,7 +27127,8 @@ and BMI2).")
(file-name (git-file-name name version))
(sha256
(base32
- "1yy62k3cjr6556nbp651w6v4hzl7kz4y75wy2dfqgndgbnixskx2"))))
+ "1yy62k3cjr6556nbp651w6v4hzl7kz4y75wy2dfqgndgbnixskx2"))
+ (patches (search-patches "python-peachpy-determinism.patch"))))
(build-system python-build-system)
(arguments
'(#:phases (modify-phases %standard-phases
@@ -27660,3 +27663,38 @@ and decorators library. It is useful when changing behavior in existing
code is desired. It includes tools for debugging and testing:
simple mock/record and a complete capture/replay framework.")
(license license:bsd-2)))
+
+(define-public python-ijson
+ (package
+ (name "python-ijson")
+ (version "3.1.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "ijson" version))
+ (sha256
+ (base32 "1sp463ywj4jv5cp6hsv2qwiima30d09xsabxb2dyq5b17jp0640x"))))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ ;; the tests run by the default setup.py require yajl 1.x,
+ ;; but we have 2.x. yajl 1.x support is going to be removed
+ ;; anyway, so use pytest to avoid running the yajl1-related
+ ;; tests. See: https://github.com/ICRAR/ijson/issues/55
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "pytest" "-vv")))))))
+ (inputs
+ ;; libyajl is optional, but compiling with it makes faster
+ ;; backends available to ijson:
+ `(("libyajl", libyajl)))
+ (native-inputs
+ `(("python-pytest", python-pytest)))
+ (build-system python-build-system)
+ (home-page "https://github.com/ICRAR/ijson")
+ (synopsis "Iterative JSON parser with Python iterator interfaces")
+ (description
+ "Ijson is an iterative JSON parser with standard Python iterator
+interfaces.")
+ (license license:bsd-3)))
diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm
index 09878f1669..69ecba4054 100644
--- a/gnu/packages/radio.scm
+++ b/gnu/packages/radio.scm
@@ -380,14 +380,14 @@ SoapySDR library.")
(define-public chirp
(package
(name "chirp")
- (version "20201121")
+ (version "20211016")
(source
(origin
(method url-fetch)
(uri (string-append "https://trac.chirp.danplanet.com/chirp_daily/daily-"
version "/chirp-daily-" version ".tar.gz"))
(sha256
- (base32 "092jryb1jn9li6zj243awv6piz1lhghqsm4phrz7j0rgqf76dy4n"))))
+ (base32 "13xzqnhvnw6yipv4izkq0s9ykyl9pc5ifpr1ii8xfp28ch706qyw"))))
(build-system python-build-system)
(inputs
`(("python2-libxml2" ,python2-libxml2)
@@ -954,7 +954,7 @@ or USB connection.")
(define-public flamp
(package
(name "flamp")
- (version "2.2.05")
+ (version "2.2.07")
(source
(origin
(method git-fetch)
@@ -963,7 +963,7 @@ or USB connection.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "0ll2wbhyh1sb4iqsypwrd118mrgw3vbsdbz442qhk4r6l8kjzblq"))))
+ (base32 "0rygd5w04nspxdj8qj81gpb3mgijvlmii74s1f4mihqs5kb8nwh6"))))
(build-system gnu-build-system)
(native-inputs
`(("autoconf" ,autoconf)
@@ -1070,7 +1070,7 @@ you must extend 'udev-service-type' with this package. E.g.:
(define-public hamlib
(package
(name "hamlib")
- (version "4.2")
+ (version "4.3.1")
(source
(origin
(method url-fetch)
@@ -1078,7 +1078,7 @@ you must extend 'udev-service-type' with this package. E.g.:
"https://github.com/Hamlib/Hamlib/releases/download/"
version "/hamlib-" version ".tar.gz"))
(sha256
- (base32 "1m8gb20i8ga6ndnnw187ry1h4z8wx27v1hl7c610r6ky60pv4072"))))
+ (base32 "0c578m04zs8dllbd4cv6nxb44y0dn8kiapzkih84ycfjzmnkhdrl"))))
(build-system gnu-build-system)
(native-inputs
`(("doxygen" ,doxygen)
@@ -2130,6 +2130,7 @@ various hardware.")
(inputs
`(("airspyhf" ,airspyhf)
("alsa-lib" ,alsa-lib)
+ ("codec2" ,codec2)
("fftwf" ,fftwf)
("glew" ,glew)
("glfw" ,glfw)
@@ -2144,7 +2145,8 @@ various hardware.")
(arguments
`(#:tests? #f ; No test suite.
#:configure-flags '("-DOPT_BUILD_AIRSPY_SOURCE=OFF"
- "-DOPT_BUILD_PLUTOSDR_SOURCE=OFF")
+ "-DOPT_BUILD_PLUTOSDR_SOURCE=OFF"
+ "-DOPT_BUILD_M17_DECODER=ON")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-paths
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 332a03f96b..1cbc3d84f5 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -8684,6 +8684,8 @@ application.")
(build-system ruby-build-system)
(arguments
'(#:tests? #f)) ; test suite tries to connect to google.com
+ (inputs
+ `(("openssl" ,openssl)))
(native-inputs
`(("ruby-rake-compiler" ,ruby-rake-compiler)))
(synopsis "Single-threaded network event framework for Ruby")
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index ea1adb99ee..4bced0a611 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -440,7 +440,7 @@ mixed.")
(define-public chibi-scheme
(package
(name "chibi-scheme")
- (version "0.9")
+ (version "0.10")
(home-page "https://github.com/ashinn/chibi-scheme")
(source
(origin
@@ -448,17 +448,15 @@ mixed.")
(uri (git-reference (url home-page) (commit version)))
(file-name (git-file-name name version))
(sha256
- (base32
- "1lnap41gl9vg82h557f4rlr69jgmd2gh0iqs6cxm77d39kv1scb8"))))
+ (base32 "0yhmj0lws3r3bl4ivs31dhlzxqc7f0dinixi904mraz1fmrg3w7f"))))
(build-system gnu-build-system)
(arguments
- `(#:phases (modify-phases %standard-phases
- (delete 'configure)
- (add-before 'build 'set-cc
- (lambda _
- (setenv "CC" "gcc"))))
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'configure)) ; no configure script
#:make-flags (let ((out (assoc-ref %outputs "out")))
(list (string-append "PREFIX=" out)
+ (string-append "CC=" ,(cc-for-target))
(string-append "LDFLAGS=-Wl,-rpath=" out "/lib")))
#:test-target "test"))
(synopsis "Small embeddable Scheme implementation")
diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm
index df6a8b2dfc..14b21e644f 100644
--- a/gnu/packages/search.scm
+++ b/gnu/packages/search.scm
@@ -2,7 +2,7 @@
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
-;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017, 2021 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com>
;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
@@ -36,19 +36,26 @@
#:use-module (guix build-system python)
#:use-module (guix build-system meson)
#:use-module (gnu packages)
+ #:use-module (gnu packages aspell)
+ #:use-module (gnu packages base)
#:use-module (gnu packages compression)
#:use-module (gnu packages check)
#:use-module (gnu packages databases)
+ #:use-module (gnu packages ebook)
#:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages gawk)
+ #:use-module (gnu packages groff)
#:use-module (gnu packages less)
#:use-module (gnu packages linux)
#:use-module (gnu packages pcre)
#:use-module (gnu packages perl)
#:use-module (gnu packages pdf)
+ #:use-module (gnu packages photo)
#:use-module (gnu packages python)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
+ #:use-module (gnu packages qt)
#:use-module (gnu packages sphinx)
#:use-module (gnu packages time)
#:use-module (gnu packages web)
@@ -286,6 +293,104 @@ accounting for new lines and paragraph changes. It also has robust support
for parsing HTML files.")
(license gpl3+)))
+(define-public recoll
+ (package
+ (name "recoll")
+ (version "1.31.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://www.lesbonscomptes.com/recoll/"
+ "recoll-" version ".tar.gz"))
+ (sha256
+ (base32 "0m1w5hf2n09lbzmzvlrm2lks4lci9vvjxy2mcmgb2avgly7v5vfk"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags
+ (list "--disable-webkit"
+ "--disable-python-module"
+ "--without-systemd"
+ (string-append "QMAKEPATH=" (assoc-ref %build-inputs "qtbase")
+ "/bin/qmake"))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-default-data-dir
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "python/recoll/recoll/rclconfig.py"
+ (("/opt/local")
+ (assoc-ref outputs "out")))))
+ (add-after 'install 'wrap-filters
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (mapping
+ '(("rclps"
+ "poppler")
+ ("rclpdf.py"
+ "poppler")
+ ("rclpurple"
+ "gawk")
+ ("rcllyx"
+ "libiconv")
+ ("rcltex"
+ "libiconv")
+ ("rclkwd"
+ "unzip" "gzip" "tar" "libxslt")
+ ("rclman"
+ "groff")
+ ("rclgaim"
+ "gawk" "libiconv")
+ ("rclaptosidman"
+ "sed")
+ ("rclscribus"
+ "grep" "gawk" "sed"))))
+ (for-each
+ (lambda (program packages)
+ (wrap-program (string-append out "/share/recoll/filters/" program)
+ `("PATH" ":" prefix
+ ,(map (lambda (i)
+ (string-append (assoc-ref inputs i) "/bin"))
+ packages))))
+ (map car mapping)
+ (map cdr mapping))
+
+ (wrap-program (string-append out "/share/recoll/filters/rclimg")
+ `("PERL5LIB" ":" prefix
+ (,(getenv "PERL5LIB"))))))))))
+ (inputs
+ `(("aspell" ,aspell)
+ ("chmlib" ,chmlib)
+ ("inotify-tools" ,inotify-tools)
+ ("libxslt" ,libxslt)
+ ("libxml2" ,libxml2)
+ ("python" ,python)
+ ("qtbase" ,qtbase-5)
+ ("unzip" ,unzip)
+ ("xapian" ,xapian)
+ ("zlib" ,zlib)
+
+ ;; For filters
+ ("gawk" ,gawk)
+ ("grep" ,grep)
+ ("groff" ,groff)
+ ("gzip" ,gzip)
+ ("libiconv" ,libiconv)
+ ("perl" ,perl)
+ ("perl-image-exiftool" ,perl-image-exiftool)
+ ("poppler" ,poppler)
+ ("sed" ,sed)
+ ("tar" ,tar)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("which" ,which)))
+ (home-page "https://www.lesbonscomptes.com/recoll/")
+ (synopsis "Find documents based on their contents or file names")
+ (description "Recoll finds documents based on their contents as well as
+their file names. It can search most document formats, but you may need
+external applications for text extraction. It can reach any storage place:
+files, archive members, email attachments, transparently handling
+decompression.")
+ (license gpl2+)))
+
(define-public hyperestraier
(package
(name "hyperestraier")
diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm
index 319cdee0ef..cc8840bb10 100644
--- a/gnu/packages/security-token.scm
+++ b/gnu/packages/security-token.scm
@@ -53,6 +53,7 @@
#:use-module (gnu packages graphviz)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages gtk)
+ #:use-module (gnu packages libbsd)
#:use-module (gnu packages libusb)
#:use-module (gnu packages linux)
#:use-module (gnu packages man)
@@ -112,7 +113,8 @@ readers and is needed to communicate with such devices through the
(define-public eid-mw
(package
(name "eid-mw")
- (version "5.0.14")
+ ;; When updating, remove the short-lived libbsd input and module import!
+ (version "5.0.28")
(source
(origin
(method git-fetch)
@@ -121,7 +123,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 "1hyxsbxjjn9hh5p7jlcfb5yplf3n8dg49dfgi8fjp95phis3gbd4"))))
+ (base32 "0fmpdx09a60ndbsvy3m6w77naqy3j6k2ydq6jdcmdvxnr31z7fmf"))))
(build-system glib-or-gtk-build-system)
(native-inputs
`(("autoconf" ,autoconf)
@@ -134,6 +136,7 @@ readers and is needed to communicate with such devices through the
("perl" ,perl)))
(inputs
`(("curl" ,curl)
+ ("libbsd" ,libbsd)
("openssl" ,openssl)
("gtk+" ,gtk+)
("pcsc-lite" ,pcsc-lite)
@@ -153,22 +156,7 @@ readers and is needed to communicate with such devices through the
(substitute* "scripts/build-aux/genver.sh"
(("/bin/sh") (which "sh"))
(("^(GITDESC=).*" _ match) (string-append match ,version "\n")))
- (invoke "sh" "./bootstrap.sh")))
- (add-after 'unpack 'make-reproducible
- (lambda _
- (substitute* "scripts/mac/create-vers.sh"
- (("NOW=.*")
- "NOW=1970-01-01\n"))
- #t))
- ;; Remove failing test that was removed upstream after version 5.0.8.
- ;; See: https://github.com/Fedict/eid-mw/commit/3d1187b1b61118b9ae97607903d3d2fc0bad7518
- (add-before 'check 'remove-failing-test
- (lambda _
- (substitute* "tests/unit/Makefile.am"
- (("sign_state ordering cardcom_common")
- "sign_state ordering #cardcom_common"))
- #t))
- )))
+ (invoke "sh" "./bootstrap.sh"))))))
(synopsis "Belgian eID Middleware")
(description "The Belgian eID Middleware is required to authenticate with
online services using the Belgian electronic identity card.")
diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm
index 70236d9e5c..6e64cee1da 100644
--- a/gnu/packages/shellutils.scm
+++ b/gnu/packages/shellutils.scm
@@ -12,6 +12,7 @@
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2021 Alexandr Vityazev <avityazev@posteo.org>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
+;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -42,18 +43,21 @@
#:use-module (gnu packages bison)
#:use-module (gnu packages flex)
#:use-module (gnu packages golang)
+ #:use-module (gnu packages libunistring)
#:use-module (gnu packages ncurses)
+ #:use-module (gnu packages pcre)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages readline)
#:use-module (gnu packages ruby)
#:use-module (gnu packages shells)
- #:use-module (gnu packages tmux))
+ #:use-module (gnu packages tmux)
+ #:use-module (gnu packages vim))
(define-public boxes
(package
(name "boxes")
- (version "1.3")
+ (version "2.1.1")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -62,32 +66,43 @@
(file-name (git-file-name name version))
(sha256
(base32
- "0b12rsynrmkldlwcb62drk33kk0aqwbj10mq5y5x3hjf626gjwsi"))))
+ "1bf5rnfiw04ffs1l17zhbg4wvq2vfn2qbz1xmd250xqj15lysw88"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
#:make-flags (list (string-append "GLOBALCONF="
(assoc-ref %outputs "out")
"/etc/boxes-config"))
+ #:modules
+ ((ice-9 match)
+ ,@%gnu-build-system-modules)
#:phases
(modify-phases %standard-phases
(delete 'configure)
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
- (let ((dest (assoc-ref outputs "out")))
- (for-each (lambda (x)
- (install-file (car x)
- (string-append dest "/" (cdr x))))
- '(("src/boxes" . "bin")
- ("doc/boxes.1" . "share/man/man1")
- ("boxes-config" . "etc/")))
- #t))))))
- (native-inputs `(("flex" ,flex) ("bison" ,bison)))
+ (let ((out (assoc-ref outputs "out")))
+ (for-each (match-lambda
+ ((source target)
+ (install-file source
+ (string-append out "/" target))))
+ '(("out/boxes" "bin/")
+ ("doc/boxes.1" "share/man/man1/")
+ ("boxes-config" "etc/")))))))))
+ (native-inputs
+ `(("bison" ,bison)
+ ("flex" ,flex)
+
+ ;; For the tests.
+ ("xxd" ,xxd)))
+ (inputs
+ `(("libunistring" ,libunistring)
+ ("pcre2" ,pcre2)))
+ (home-page "https://boxes.thomasjensen.com")
(synopsis "Command line ASCII boxes")
(description
"This command-line filter program draws ASCII-art boxes around your input
text.")
- (home-page "https://boxes.thomasjensen.com/build.html")
(license license:gpl2)))
(define-public zsh-autosuggestions
@@ -449,3 +464,51 @@ the UNIX philosophy, these commands are designed to be composed via pipes. A
large collection of functions such as basename, replace, contains or is_dir
are provided as arguments to these commands.")
(license license:expat)))
+
+(define-public rig
+ (package
+ (name "rig")
+ (version "1.11")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/rig/rig/"
+ version "/rig-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1f3snysjqqlpk2kgvm5p2icrj4lsdymccmn3igkc2f60smqckgq0"))))
+ (build-system gnu-build-system)
+ (arguments `(#:make-flags
+ (list (string-append "CXX=" ,(cxx-for-target))
+ (string-append "PREFIX=" %output))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (add-after 'unpack 'fix-build
+ (lambda _
+ (substitute* "rig.cc"
+ (("^#include <string>")
+ "#include <cstring>"))
+ (substitute* "Makefile"
+ (("g\\+\\+")
+ "${CXX} -O2")
+ (("install -g 0 -m 755 -o 0 -s rig \\$\\(BINDIR\\)")
+ "install -m 755 -d $(DESTDIR)$(BINDIR)\n\t\
+install -m 755 rig $(DESTDIR)$(BINDIR)/rig")
+ (("install -g 0 -m 644 -o 0 rig.6 \\$\\(MANDIR\\)/man6/rig.6")
+ "install -m 755 -d $(DESTDIR)$(MANDIR)/man6/\n\t\
+install -m 644 rig.6 $(DESTDIR)$(MANDIR)/man6/rig.6")
+ (("install -g 0 -m 755 -o 0 -d \\$\\(DATADIR\\)")
+ "install -m 755 -d $(DESTDIR)$(DATADIR)")
+ (("install -g 0 -m 644 -o 0 data/\\*.idx \\$\\(DATADIR\\)")
+ "install -m 644 data/*.idx $(DESTDIR)$(DATADIR)")))))
+ #:tests? #f))
+ (home-page "http://rig.sourceforge.net")
+ (synopsis "Random identity generator")
+ (description
+ "RIG (Random Identity Generator) generates random, yet real-looking,
+personal data. It is useful if you need to feed a name to a Web site, BBS, or
+real person, and are too lazy to think of one yourself. Also, if the Web
+site/BBS/person you are giving the information to tries to cross-check the
+city, state, zip, or area code, it will check out.")
+ (license license:gpl2+)))
diff --git a/gnu/packages/skarnet.scm b/gnu/packages/skarnet.scm
index b38d3f418f..a282399024 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.3")
+ (version "2.11.0.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://skarnet.org/software/skalibs/skalibs-"
version ".tar.gz"))
(sha256
- (base32 "0ka6n5rnxd5sn5lycarf596d5wlak5s535zqqlz0rnhdcnpb105p"))))
+ (base32 "1n9l7mb54dlb0iijjaf446jba6nmq1ql9n39s095ngrk5ahcipwq"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; no tests exist
@@ -48,8 +48,7 @@
;; and *.so files are reproducible.
(substitute* "Makefile"
(("\\$\\(wildcard src/lib\\*/\\*.c\\)")
- "$(sort $(wildcard src/lib*/*.c))"))
- #t)))))
+ "$(sort $(wildcard src/lib*/*.c))")))))))
(home-page "https://skarnet.org/software/skalibs/")
(synopsis "Platform abstraction libraries for skarnet.org software")
(description
@@ -62,14 +61,14 @@ and file system operations. It is used by all skarnet.org software.")
(define-public execline
(package
(name "execline")
- (version "2.8.0.1")
+ (version "2.8.1.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://skarnet.org/software/execline/execline-"
version ".tar.gz"))
(sha256
- (base32 "1v9swmhw2rcrr9fmkmd7qh8qq0kslhmvxwz2a3bhan9ksabz8wx3"))))
+ (base32 "0msmzf5zwjcsgjlvvq28rd2i0fkdb2skmv8ii0ix8dhyckwwjmav"))))
(build-system gnu-build-system)
(inputs `(("skalibs" ,skalibs)))
(arguments
@@ -104,14 +103,14 @@ complexity.")))
(define-public s6
(package
(name "s6")
- (version "2.10.0.3")
+ (version "2.11.0.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://skarnet.org/software/s6/s6-"
version ".tar.gz"))
(sha256
- (base32 "0mw7blp8dwr09z58m9mrxwmmvvpnjzq9klcf1vgm0hbha4qkf88x"))))
+ (base32 "1a3lj0xfhn1w3a4ygqsxy8q4dr3n48hnwml4xzdpz3nrikhy8if5"))))
(build-system gnu-build-system)
(inputs `(("skalibs" ,skalibs)
("execline" ,execline)))
@@ -133,8 +132,7 @@ complexity.")))
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(doc (string-append out "/share/doc/s6-" ,version)))
- (copy-recursively "doc" doc)
- #t))))))
+ (copy-recursively "doc" doc)))))))
(home-page "https://skarnet.org/software/s6")
(license isc)
(synopsis "Small suite of programs for process supervision")
@@ -150,14 +148,14 @@ functionality with a very small amount of code.")))
(define-public s6-dns
(package
(name "s6-dns")
- (version "2.3.5.1")
+ (version "2.3.5.2")
(source
(origin
(method url-fetch)
(uri (string-append "https://skarnet.org/software/s6-dns/s6-dns-"
version ".tar.gz"))
(sha256
- (base32 "0qsgqwdr5ms337fc9f2b4aa5cr7myvbzndvgkgswnrdwszjm078c"))))
+ (base32 "0nczzjprvp6wirzycgf5h32dlgx4r8grzkqhif27n3ii6f5g78yw"))))
(build-system gnu-build-system)
(inputs `(("skalibs" ,skalibs)))
(arguments
@@ -179,14 +177,14 @@ as an alternative to the BIND, djbdns or other DNS clients.")))
(define-public s6-networking
(package
(name "s6-networking")
- (version "2.4.1.1")
+ (version "2.5.0.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://skarnet.org/software/s6-networking/"
"s6-networking-" version ".tar.gz"))
(sha256
- (base32 "0m55ibx7k2wgrqbpci1n667ij0h925ajzggxalq2pj65kmwcmyx3"))))
+ (base32 "1fn3g9gkwgmnxallhk82f5rly81pnkilj7n49g5fbfmaalsq96mh"))))
(build-system gnu-build-system)
(inputs `(("skalibs" ,skalibs)
("execline" ,execline)
@@ -222,14 +220,14 @@ clock synchronization.")))
(define-public s6-rc
(package
(name "s6-rc")
- (version "0.5.2.2")
+ (version "0.5.2.3")
(source
(origin
(method url-fetch)
(uri (string-append "https://skarnet.org/software/s6-rc/s6-rc-"
version ".tar.gz"))
(sha256
- (base32 "12bzc483jpd16xmhfsfrib84daj1k3kwy5s5nc18ap60apa1r39a"))))
+ (base32 "1xyaplwzvqnb53mg59a7jklakzwsiqivp6qggsry3sbaw4hf3d5j"))))
(build-system gnu-build-system)
(inputs `(("skalibs" ,skalibs)
("execline" ,execline)
@@ -263,7 +261,7 @@ environment.")))
(define-public s6-portable-utils
(package
(name "s6-portable-utils")
- (version "2.2.3.2")
+ (version "2.2.3.3")
(source
(origin
(method url-fetch)
@@ -271,7 +269,7 @@ environment.")))
"https://skarnet.org/software/s6-portable-utils/s6-portable-utils-"
version ".tar.gz"))
(sha256
- (base32 "173nmygkp7ky3093dg4rx3ahvyl7ll86z8qj6pl3jd96xb9s49v6"))))
+ (base32 "132jj5qk8x40kw6lrrn7jiqhvqj9d2h6g6mhl8zma1sp37bg0i84"))))
(build-system gnu-build-system)
(inputs `(("skalibs" ,skalibs)))
(arguments
@@ -295,7 +293,7 @@ systems and other constrained environments, but they work everywhere.")))
(define-public s6-linux-init
(package
(name "s6-linux-init")
- (version "1.0.6.3")
+ (version "1.0.6.4")
(source
(origin
(method url-fetch)
@@ -303,7 +301,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 "1idqjcxhl5wgff8yrsvx2812wahjri2hcs7qs6k62g0sdd8niqr9"))))
+ (base32 "0grqk111d6aqym1c4l9j26fdqcgra1hvwb9vdgylrfbvn1c3hlpb"))))
(build-system gnu-build-system)
(inputs
`(("execline" ,execline)
@@ -341,7 +339,7 @@ all the details.")))
(define-public s6-linux-utils
(package
(name "s6-linux-utils")
- (version "2.5.1.5")
+ (version "2.5.1.6")
(source
(origin
(method url-fetch)
@@ -349,7 +347,7 @@ all the details.")))
"https://skarnet.org/software/s6-linux-utils/s6-linux-utils-"
version ".tar.gz"))
(sha256
- (base32 "1fj5ldlrc6bx40pphg29rp3byd6fal6869v85kw86c2kdgrxn063"))))
+ (base32 "0hr49nl0d7a6i5w8cfg43xzvzayb8kpqij9xg7bmw2fyvc2z338z"))))
(build-system gnu-build-system)
(inputs `(("skalibs" ,skalibs)))
(arguments
diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm
index bb8099be55..9ea442d1ec 100644
--- a/gnu/packages/suckless.scm
+++ b/gnu/packages/suckless.scm
@@ -904,6 +904,38 @@ It is a front end for ii-like chat programs. It uses @code{tail -f} to get the
chat output in the background.")
(license license:isc))))
+(define-public snooze
+ (package
+ (name "snooze")
+ (version "0.5")
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://github.com/leahneukirchen/snooze")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "02ng3r1gzgpyjia4b60i11dj5bhn3xjsdcbwmxaam6dzb33dmgib"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; There are no tests.
+ #:make-flags
+ (list (string-append "CC=" ,(cc-for-target))
+ ;; Set prefix path to root of package path in store instead
+ ;; of /usr/local.
+ (string-append "PREFIX=" %output))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure))))
+ (home-page "https://github.com/leahneukirchen/snooze")
+ (synopsis "Run a command at a particular time")
+ (description
+"@command{snooze} is a tool for waiting until a particular time and then
+running a command.")
+ (license license:cc0)))
+
(define-public scron
(package
(name "scron")
diff --git a/gnu/packages/task-management.scm b/gnu/packages/task-management.scm
index 80ad8163ea..49b9bce370 100644
--- a/gnu/packages/task-management.scm
+++ b/gnu/packages/task-management.scm
@@ -143,7 +143,7 @@ and querying data, exposing task data in multiple formats to other tools.")
(define-public dstask
(package
(name "dstask")
- (version "0.24.1")
+ (version "0.25")
(source
(origin
(method git-fetch)
@@ -152,7 +152,7 @@ and querying data, exposing task data in multiple formats to other tools.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "03rl2wh58xd6a80ji43c7ak3h0ysi3ddg570pn8ry24s7s45zsz2"))))
+ (base32 "1m83zc2zqvpcbjng92jvlnk0biw4krv12wjvjas66jbbk3sjghcy"))))
(build-system go-build-system)
(arguments
`(#:import-path "github.com/naggie/dstask"
@@ -178,8 +178,7 @@ and querying data, exposing task data in multiple formats to other tools.")
(install-file "dstask" bindir)
(install-file "dstask-import" bindir)
(install-file ".dstask-bash-completions.sh" bash-completion)
- (install-file ".dstask-zsh-completions.sh" zsh-completion)))
- #t)))))
+ (install-file ".dstask-zsh-completions.sh" zsh-completion))))))))
(synopsis "CLI-based TODO manager with git-based sync + markdown notes per task")
(description "dstask is a personal task tracker that uses git for
synchronization. It offers a note command to attach a Markdown based note to
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index 01b8f7a1e2..eb9a749a16 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -198,7 +198,7 @@ insert mode and command mode where keybindings have different functions.")
(define-public asciinema
(package
(name "asciinema")
- (version "2.0.2")
+ (version "2.1.0")
(source
(origin
(method git-fetch)
@@ -207,22 +207,13 @@ insert mode and command mode where keybindings have different functions.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32
- "1a2pysxnp6icyd08mgf66xr6f6j0irnfxdpf3fmzcz31ix7l9kc4"))))
+ (base32 "1alcz018jrrpasrmgs8nw775a6pf62xq2xgs54c4mb396prdqy4x"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
- (add-before 'build 'patch-exec-paths
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((ncurses (assoc-ref inputs "ncurses")))
- (substitute* "asciinema/term.py"
- (("'tput'")
- (string-append "'" ncurses "/bin/tput'"))))
- #t))
(replace 'check
(lambda _ (invoke "nosetests" "-v"))))))
- (inputs `(("ncurses" ,ncurses)))
(native-inputs
;; For tests.
`(("python-nose" ,python-nose)))
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index 18914b342e..c5cec0a3b2 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -925,14 +925,14 @@ Octave. TeXmacs is completely extensible via Guile.")
(define-public scintilla
(package
(name "scintilla")
- (version "5.1.1")
+ (version "5.1.3")
(source
(origin
(method url-fetch)
(uri (let ((v (apply string-append (string-split version #\.))))
(string-append "https://www.scintilla.org/scintilla" v ".tgz")))
(sha256
- (base32 "1d0yjx2wlx4fj5bccxdgfmrr7nzazkw4m08i6h4c0a54sb484yif"))))
+ (base32 "1zgzpbl7yzyqwqlk7l8s8g74ddg02wa6f0w4dkwdp7fp7ayjn9a2"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags (list "GTK3=1" "CC=gcc" "-Cgtk")
diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm
index df4b8ac6f5..b60fab5db5 100644
--- a/gnu/packages/time.scm
+++ b/gnu/packages/time.scm
@@ -435,10 +435,10 @@ timestamps.")
("python-pytest" ,python-pytest)
("python-pytest-cov" ,python-pytest-cov)
("python-pytest-mock" ,python-pytest-mock)
+ ("python-pytz" ,python-pytz)
("python-simplejson" ,python-simplejson)))
(propagated-inputs
- `(("python-dateutil" ,python-dateutil)
- ("python-pytz" ,python-pytz)))
+ `(("python-dateutil" ,python-dateutil)))
(home-page "https://github.com/arrow-py/arrow")
(synopsis "Dates and times for Python")
(description
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index b7f3ddd953..908858f6eb 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -20,6 +20,7 @@
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org>
+;;; Copyright © 2021 John Kehayias <john.kehayias@protonmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -180,7 +181,7 @@ in intelligent transportation networks.")
(substitute* "Makefile"
(("test-runtime\\$\\(EXEEXT\\)") ""))
#t)))))
- (home-page "https://p11-glue.freedesktop.org/p11-kit.html")
+ (home-page "https://p11-glue.github.io/p11-glue/p11-kit.html")
(synopsis "PKCS#11 library")
(description
"p11-kit provides a way to load and enumerate PKCS#11 modules. It
@@ -190,6 +191,24 @@ coordinating the use of PKCS#11 by different components or libraries
living in the same process.")
(license license:bsd-3)))
+(define-public p11-kit-next
+ (package
+ (inherit p11-kit)
+ (version "0.24.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/p11-glue/p11-kit/releases/"
+ "download/" version "/p11-kit-" version ".tar.xz"))
+ (sha256
+ (base32 "11f6saclxsclc1f3lbavzw8kikws4cr3mfd1avly8dgnhh2i9rl1"))))
+ (arguments
+ ;; Use the default certificates so that users such as flatpak find them.
+ ;; See <https://issues.guix.gnu.org/49957>.
+ (substitute-keyword-arguments (package-arguments p11-kit)
+ ((#:configure-flags flags ''())
+ ''("--with-trust-paths=/etc/ssl/certs/ca-certificates.crt"))))))
+
(define-public gnutls
(package
(name "gnutls")
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index 972160fb8e..2507f80c74 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -57,14 +57,14 @@
(define-public tor
(package
(name "tor")
- (version "0.4.6.7")
+ (version "0.4.6.8")
(source (origin
(method url-fetch)
(uri (string-append "https://dist.torproject.org/tor-"
version ".tar.gz"))
(sha256
(base32
- "16hga7195va8v0x062dc05nbz4sm3dscifcqpl8235dj47hmqrpz"))))
+ "0sj7qn6d6js6gk4vjfkc7p9g021czbfaq00yfq3mn5ycnhvimkhm"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 3bd087d672..ab36625aba 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -875,16 +875,16 @@ to lock down your entire repository.")
(define-public git-remote-gcrypt
(package
(name "git-remote-gcrypt")
- (version "1.3")
+ (version "1.4")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://git.spwhitton.name/git-remote-gcrypt")
(commit version)))
- (file-name (string-append name "-" version "-checkout"))
+ (file-name (git-file-name name version))
(sha256
(base32
- "0n8fzvr6y0pxrbvkywlky2bd8jvi0ayp4n9hwi84l1ldmv4a40dh"))))
+ "1x5ca1fi0hyn5w5mnz230x27bqr8j78adnzmlc7cbhzr13q36y5q"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
@@ -894,8 +894,7 @@ to lock down your entire repository.")
(output (assoc-ref %outputs "out"))
(bindir (string-append output "/bin")))
(install-file (string-append source "/git-remote-gcrypt")
- bindir)
- #t))))
+ bindir)))))
(home-page "https://spwhitton.name/tech/code/git-remote-gcrypt/")
(synopsis "Whole remote repository encryption")
(description "git-remote-gcrypt is a Git remote helper to push and pull from
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index ebee15e296..3a711f9732 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -54,6 +54,7 @@
;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
;;; Copyright © 2021 Thiago Jung Bauermann <bauermann@kolabnow.com>
;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
+;;; Copyright © 2021 Robin Templeton <robin@terpri.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -143,6 +144,7 @@
#:use-module (gnu packages man)
#:use-module (gnu packages markup)
#:use-module (gnu packages maths)
+ #:use-module (gnu packages music)
#:use-module (gnu packages mp3)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages networking)
@@ -2363,6 +2365,74 @@ YouTube.com and many more sites.")
(home-page "https://yt-dl.org")
(license license:public-domain)))
+(define-public yt-dlp
+ (package/inherit youtube-dl
+ (name "yt-dlp")
+ (version "2021.10.22")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/yt-dlp/yt-dlp/"
+ "releases/download/"
+ version "/yt-dlp.tar.gz"))
+ (sha256
+ (base32
+ "0xh4cwmvx49pxn8x07wj2dy8ynj6xg8977l5493vv0l8zc27wp87"))
+ (snippet
+ '(begin
+ ;; Delete the pre-generated files, except for the man page
+ ;; which requires 'pandoc' to build.
+ (for-each delete-file '("yt-dlp"
+ ;;pandoc is needed to generate
+ ;;"yt-dlp.1"
+ "completions/bash/yt-dlp"
+ "completions/fish/yt-dlp.fish"
+ "completions/zsh/_yt-dlp"))
+ #t))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments youtube-dl)
+ ((#:tests? _) #t)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ ;; See the comment for the corresponding phase in youtube-dl.
+ (replace 'default-to-the-ffmpeg-input
+ (lambda _
+ (substitute* "yt_dlp/postprocessor/ffmpeg.py"
+ (("\\.get_param\\('ffmpeg_location'\\)" match)
+ (format #f "~a or '~a'" match (which "ffmpeg"))))
+ #t))
+ (replace 'build-generated-files
+ (lambda _
+ ;; Avoid the yt-dlp.1 target, which requires pandoc.
+ (invoke "make" "PYTHON=python" "yt-dlp" "completions")))
+ (replace 'fix-the-data-directories
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((prefix (assoc-ref outputs "out")))
+ (substitute* "setup.py"
+ (("'etc/")
+ (string-append "'" prefix "/etc/"))
+ (("'share/")
+ (string-append "'" prefix "/share/"))))
+ #t))
+ (delete 'install-completion)
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "pytest" "-k" "not download"))))))))
+ (inputs
+ `(("python-mutagen" ,python-mutagen)
+ ("python-pycryptodomex" ,python-pycryptodomex)
+ ("python-websockets" ,python-websockets)
+ ,@(package-inputs youtube-dl)))
+ (native-inputs
+ `(("python-pytest" ,python-pytest)
+ ,@(package-native-inputs youtube-dl)))
+ (description
+ "yt-dlp is a small command-line program to download videos from
+YouTube.com and many more sites. It is a fork of youtube-dl with a
+focus on adding new features while keeping up-to-date with the
+original project.")
+ (home-page "https://github.com/yt-dlp/yt-dlp")))
+
(define-public youtube-dl-gui
(package
(name "youtube-dl-gui")
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index bd41800cbd..0b3eee8931 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -1159,3 +1159,61 @@ anything).
@item Mappings and usage conform to Vim's conventions.
@end itemize")
(license license:vim)))
+
+(define-public vim-mucomplete
+ (package
+ (name "vim-mucomplete")
+ (version "1.5.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/lifepillar/vim-mucomplete")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "054g80n09mmxxlh8xaic29bn8bgn3clvv732rymljdyvbj1mlhwd"))))
+ (build-system copy-build-system)
+ (arguments
+ '(#:install-plan
+ '(("autoload" "share/vim/vimfiles/")
+ ("doc" "share/vim/vimfiles/")
+ ("plugin" "share/vim/vimfiles/"))))
+ (home-page "https://github.com/lifepillar/vim-mucomplete")
+ (synopsis "MUcomplete is a minimalist autocompletion plugin for Vim")
+ (description
+ "MUcomplete is an implementation of chained (fallback) completion,
+whereby several completion methods are attempted one after another until a
+result is returned.")
+ (license license:expat)))
+
+(define-public vim-gitgutter
+ (let ((commit "256702dd1432894b3607d3de6cd660863b331818")
+ (revision "1"))
+ (package
+ (name "vim-gitgutter")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/airblade/vim-gitgutter")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0zpa7cs59a8sq0k3frlf9flpf30jcn239yrpmv40r7nqvxzglbpl"))))
+ (build-system copy-build-system)
+ (arguments
+ '(#:install-plan
+ '(("autoload" "share/vim/vimfiles/")
+ ("doc" "share/vim/vimfiles/")
+ ("plugin" "share/vim/vimfiles/"))))
+ (synopsis "Vim plugin which shows a git diff in the sign column")
+ (description
+ "A Vim plugin which shows a git diff in the sign column. It shows which
+lines have been added, modified, or removed. You can also preview, stage, and
+undo individual hunks; and stage partial hunks. The plugin also provides a hunk
+text object. The signs are always up to date and the plugin never saves your
+buffer.")
+ (home-page "https://github.com/airblade/vim-gitgutter")
+ (license license:expat))))
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 9d005eec52..51dcea2dae 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -159,7 +159,8 @@
(base32
"15iw7982g6vc4jy1l9kk1z9sl5bm1bdbwr74y7nvwjs1nffhig7f"))
(patches (search-patches "qemu-CVE-2021-20203.patch"
- "qemu-build-info-manual.patch"))
+ "qemu-build-info-manual.patch"
+ "qemu-fix-agent-paths.patch"))
(modules '((guix build utils)))
(snippet
'(begin
@@ -1519,14 +1520,16 @@ domains, their live performance and resource utilization statistics.")
(define-public criu
(package
(name "criu")
- (version "3.16")
- (source (origin
- (method url-fetch)
- (uri (string-append "https://download.openvz.org/criu/criu-"
- version ".tar.bz2"))
- (sha256
- (base32
- "13x4s7nms3ckb016d03icdsrw4k6f7i33qz9n84fzhmibm0grj70"))))
+ (version "3.16.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/checkpoint-restore/criu")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1riw15197fnrs254jl7wks9x8bdml76kf1vnqkkgyypr13dnq55g"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
@@ -1538,19 +1541,14 @@ domains, their live performance and resource utilization statistics.")
(string-append "ASCIIDOC="
(search-input-file %build-inputs
"/bin/asciidoc"))
+ (string-append "PYTHON=python3")
(string-append "XMLTO="
(search-input-file %build-input
"/bin/xmlto")))
#:phases
(modify-phases %standard-phases
- (replace 'configure
- (lambda* (#:key inputs #:allow-other-keys)
- ;; The includes for libnl are located in a sub-directory.
- (setenv "C_INCLUDE_PATH"
- (string-append
- (search-input-directory inputs "/include/libnl3")
- ":" (or (getenv "C_INCLUDE_PATH") "")))))
- (add-after 'configure 'fix-documentation
+ (delete 'configure) ; no configure script
+ (add-after 'unpack 'fix-documentation
(lambda* (#:key inputs outputs #:allow-other-keys)
(substitute* "Documentation/Makefile"
(("-m custom.xsl")
@@ -1564,13 +1562,7 @@ domains, their live performance and resource utilization statistics.")
(lambda* (#:key inputs #:allow-other-keys)
;; Hardcode arm version detection
(substitute* "Makefile"
- (("ARMV.*:=.*") "ARMV := 7\n"))
- ;; We are currently using python-2
- (substitute* "crit/Makefile"
- (("\\$\\(PYTHON\\)") "python2"))
- (substitute* "lib/Makefile"
- (("\\$\\(PYTHON\\)")
- (search-input-file inputs "/bin/python")))))
+ (("ARMV.*:=.*") "ARMV := 7\n"))))
(add-before 'build 'fix-symlink
(lambda* (#:key inputs #:allow-other-keys)
;; The file 'images/google/protobuf/descriptor.proto' points to
@@ -1585,15 +1577,14 @@ domains, their live performance and resource utilization statistics.")
(add-after 'install 'wrap
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Make sure 'crit' runs with the correct PYTHONPATH.
- (let* ((out (assoc-ref outputs "out"))
- (path (string-append out
- "/lib/python"
- (string-take (string-take-right
- (assoc-ref inputs "python") 5) 3)
- "/site-packages:"
- (or (getenv "GUIX_PYTHONPATH") ""))))
+ (let* ((out (assoc-ref outputs "out"))
+ (site (string-append out "/lib/python"
+ ,(version-major+minor
+ (package-version python))
+ "/site-packages"))
+ (path (getenv "GUIX_PYTHONPATH")))
(wrap-program (string-append out "/bin/crit")
- `("GUIX_PYTHONPATH" ":" prefix (,path))))))
+ `("GUIX_PYTHONPATH" ":" prefix (,site ,path))))))
(add-after 'install 'delete-static-libraries
;; Not building/installing these at all doesn't seem to be supported.
(lambda* (#:key outputs #:allow-other-keys)
@@ -1601,9 +1592,8 @@ domains, their live performance and resource utilization statistics.")
(for-each delete-file (find-files out "\\.a$"))))))))
(inputs
`(("protobuf" ,protobuf)
- ("python" ,python-2)
- ("python2-protobuf" ,python2-protobuf)
- ("python2-ipaddr" ,python2-ipaddr)
+ ("python" ,python)
+ ("python-protobuf" ,python-protobuf)
("iproute" ,iproute)
("libaio" ,libaio)
("libcap" ,libcap)
@@ -1997,11 +1987,11 @@ DOS or Microsoft Windows.")
(define-public xen
(package
(name "xen")
- (version "4.14.1")
+ (version "4.14.1") ; please update the mini-os input as well
(source (origin
(method git-fetch)
(uri (git-reference
- (url "git://xenbits.xenproject.org/xen.git")
+ (url "https://xenbits.xen.org/git-http/xen.git")
(commit (string-append "RELEASE-" version))))
(file-name (git-file-name name version))
(sha256
@@ -2173,11 +2163,13 @@ override CC = " (assoc-ref inputs "cross-gcc") "/bin/i686-linux-gnu-gcc"))
,(origin
(method git-fetch)
(uri (git-reference
- (url "http://xenbits.xen.org/git-http/mini-os.git")
- (commit (string-append "xen-RELEASE-" version))))
+ (url "https://xenbits.xen.org/git-http/mini-os.git")
+ ;; This corresponds to (string-append "xen-RELEASE-" version))
+ ;; at time of packaging, but upstream has unfortunately modified
+ ;; existing tags in the past.
+ (commit "0b4b7897e08b967a09bed2028a79fabff82342dd")))
(sha256
- (base32
- "1i8pcl19n60i2m9vlg79q3nknpj209c9ic5x10wxaicx45kc107f"))
+ (base32 "1i8pcl19n60i2m9vlg79q3nknpj209c9ic5x10wxaicx45kc107f"))
(file-name "mini-os-git-checkout")))
("perl" ,perl)
; TODO: markdown
diff --git a/gnu/packages/vnc.scm b/gnu/packages/vnc.scm
index 4c2b13c93c..10ae2b6e87 100644
--- a/gnu/packages/vnc.scm
+++ b/gnu/packages/vnc.scm
@@ -61,7 +61,7 @@
(define-public remmina
(package
(name "remmina")
- (version "1.4.20")
+ (version "1.4.21")
(source
(origin
(method git-fetch)
@@ -71,7 +71,7 @@
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "0apm4lqcmqskdp2fjxl8dbg3686cm4w0b5806fqj7w43hdmd8w4v"))))
+ (base32 "1g6aqbkbjfywkbaigyysivxswmbp8fbcw9x5ppysaj658cfdnicx"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ; No target
@@ -102,8 +102,7 @@
(gi-typelib-path (getenv "GI_TYPELIB_PATH")))
(wrap-program file
`("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
- '("remmina" "remmina-file-wrapper")))
- #t)))))
+ '("remmina" "remmina-file-wrapper"))))))))
(native-inputs
`(("gettext" ,gettext-minimal)
("glib:bin" ,glib "bin")
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index 89eb61007f..35e8db7e91 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -73,6 +73,7 @@
#:use-module (gnu packages libunistring)
#:use-module (gnu packages linux)
#:use-module (gnu packages lisp)
+ #:use-module (gnu packages lisp-check)
#:use-module (gnu packages lisp-xyz)
#:use-module (gnu packages lua)
#:use-module (gnu packages man)
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index bb52eeab82..38be76d582 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -809,7 +809,7 @@ programming language.")))
;; The nginx source code is part of the module’s source.
(format #t "decompressing nginx source code~%")
(invoke "tar" "xvf" (assoc-ref inputs "nginx-sources")
- ;; This packages's LICENSE file would be
+ ;; This package's LICENSE file would be
;; overwritten with the one from nginx when
;; unpacking the nginx source, so rename the nginx
;; one when unpacking.
@@ -5805,28 +5805,29 @@ and similar services.")
(define-public darkhttpd
(package
(name "darkhttpd")
- (version "1.12")
+ (version "1.13")
(source
(origin
- (method url-fetch)
- (uri (string-append "https://unix4lyfe.org/darkhttpd/darkhttpd-"
- version ".tar.bz2"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/emikulic/darkhttpd")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
- (base32
- "0185wlyx4iqiwfigp1zvql14zw7gxfacncii3d15yaxk4av1f155"))))
+ (base32 "0w11xq160q9yyffv4mw9ncp1n0dl50d9plmwxb0yijaaxls9i4sk"))))
(build-system gnu-build-system)
(arguments
- `(#:make-flags '("CC=gcc")
+ `(#:make-flags
+ (list (string-append "CC=" ,(cc-for-target)))
#:tests? #f ; No test suite
#:phases
(modify-phases %standard-phases
- (delete 'configure)
+ (delete 'configure) ; no configure script
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(install-file "darkhttpd"
(string-append (assoc-ref outputs "out")
- "/bin"))
- #t)))))
+ "/bin")))))))
(synopsis "Simple static web server")
(description "darkhttpd is a simple static web server. It is
standalone and does not need inetd or ucspi-tcp. It does not need any
@@ -5837,20 +5838,19 @@ config files---you only have to specify the www root.")
(define-public goaccess
(package
(name "goaccess")
- (version "1.5.1")
+ (version "1.5.2")
(source (origin
(method url-fetch)
(uri (string-append "http://tar.goaccess.io/goaccess-"
version ".tar.gz"))
(sha256
(base32
- "03wp75n1krv8g643q00gcv1ikmzwwh8jjqmph0wxww1bwrw7whc8"))
+ "12hwmd9cn7yy7vj92110skjaslpxkn05msb9wj228qmjjf9jzkm0"))
(modules '((guix build utils)))
(snippet '(begin
(substitute* "src/error.h"
(("__DATE__") "\"1970-01-01\"")
- (("__TIME__") "\"00:00:00\""))
- #t))))
+ (("__TIME__") "\"00:00:00\""))))))
(build-system gnu-build-system)
(inputs
;; TODO: Add dependency on geoip-tools.
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index acb593ade2..e19a08da47 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -102,6 +102,7 @@
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages libevent)
#:use-module (gnu packages linux)
+ #:use-module (gnu packages lisp-check)
#:use-module (gnu packages lisp-xyz)
#:use-module (gnu packages logging)
#:use-module (gnu packages lua)
@@ -1422,14 +1423,14 @@ its size
(define-public polybar
(package
(name "polybar")
- (version "3.5.5")
+ (version "3.5.7")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/polybar/polybar/releases/"
"download/" version "/polybar-" version ".tar.gz"))
(sha256
- (base32 "1c8br9972x1qw7l2shj9aqzv0gsx58fdh3r0f1z5i1bqdwxmsqky"))))
+ (base32 "1nr386jdlm8qkbdf23w7lyvbfhr362s90f957fawnyi1finhw8bk"))))
(build-system cmake-build-system)
(arguments
;; Test is disabled because it requires downloading googletest from the
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 53a97931da..166a747229 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -11,7 +11,7 @@
;;; Copyright © 2015 Florian Paul Schmidt <mista.tapas@gmx.net>
;;; Copyright © 2016 Christine Lemmer-Webber <cwebber@dustycloud.org>
;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
-;;; 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 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2016 Petter <petter@mykolab.ch>
@@ -70,6 +70,7 @@
(define-module (gnu packages xdisorg)
#: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 meson)
@@ -85,6 +86,7 @@
#:use-module (gnu packages algebra)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
@@ -2399,6 +2401,50 @@ binary to setuid-binaries:
Wayland.")
(license license:gpl3+)))
+(define-public wl-clipboard-x11
+ (package
+ (name "wl-clipboard-x11")
+ (version "5")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/brunelli/wl-clipboard-x11")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1y7jv7rps0sdzmm859wn2l8q4pg2x35smcrm7mbfxn5vrga0bslb"))))
+ (build-system copy-build-system)
+ (arguments
+ `(#:install-plan
+ '(("src/" "bin/")
+ ("man/" "man/man1"))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'wrap-binary
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (wl-clipboard (assoc-ref inputs "wl-clipboard")))
+ (wrap-program (string-append out "/bin/wl-clipboard-x11")
+ `("PATH" prefix (,(string-append wl-clipboard "/bin")))))
+ #t))
+ (add-after 'wrap-binary 'symlink-utilities
+ ;; As seen in the Makefile.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
+ (symlink "wl-clipboard-x11" (string-append bin "xclip"))
+ (symlink "wl-clipboard-x11" (string-append bin "xsel")))
+ #t)))))
+ (inputs
+ `(("bash-minimal" ,bash-minimal)
+ ("wl-clipboard" ,wl-clipboard)))
+ (home-page "https://github.com/brunelli/wl-clipboard-x11")
+ (synopsis "Use wl-clipboard as a drop-in replacement to X11 clipboard tools")
+ (description "This package provides a wrapper script around
+@code{x11-clipboard} to use it as a clipboard on X11 also. It also contains
+helper scripts for @code{xclip} and @code{xsel} to assist with the transition.")
+ (license license:gpl3+)))
+
(define-public autocutsel
(package
(name "autocutsel")
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index e259cefac4..c9efdc6efe 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -2129,3 +2129,28 @@ lan interface (signal state, signal quality, network name (SSID)).")
local weather in the panel, using forecast data provided by the
@uref{https://met.no, Norwegian Meteorological Institute}.")
(license gpl2+)))
+
+(define-public xfce4-dev-tools
+ (package
+ (name "xfce4-dev-tools")
+ (version "4.17.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://archive.xfce.org/src/xfce/"
+ "xfce4-dev-tools/" (version-major+minor version) "/"
+ "xfce4-dev-tools-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "1iwkqj96x2s7fk4srg1pymvsiwb2rn6vvhy6hrmnc3hl1vqw2d6k"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("glib" ,glib)))
+ (home-page "https://docs.xfce.org/xfce/xfce4-dev-tools/")
+ (synopsis "Xfce developer tools")
+ (description
+ "The Xfce development tools are a collection of tools and macros for Xfce
+developers and people that want to build Xfce from Git In addition it contains
+the Xfce developer's handbook.")
+ (license gpl2+)))
diff --git a/gnu/packages/zig.scm b/gnu/packages/zig.scm
new file mode 100644
index 0000000000..ab62f554f4
--- /dev/null
+++ b/gnu/packages/zig.scm
@@ -0,0 +1,104 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2021 Liliana Prikler <liliana.prikler@gmail.com>
+;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
+;;;
+;;; 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 zig)
+ #:use-module (guix packages)
+ #:use-module (guix git-download)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix build-system cmake)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages llvm))
+
+(define-public zig
+ (package
+ (name "zig")
+ (version "0.8.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ziglang/zig.git")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "147qx7xgj0r353wh5ragzn6kmm1vrf31i8038z3zqwjnqqgqxi6c"))
+ (patches
+ (search-patches
+ "zig-disable-libc-note-test.patch"
+ "zig-use-system-paths.patch"))))
+ (build-system cmake-build-system)
+ (inputs
+ `(("clang" ,clang-12) ; Clang propagates llvm.
+ ("lld" ,lld)))
+ ;; Zig compiles fine with GCC, but also needs native LLVM libraries.
+ (native-inputs
+ `(("llvm" ,llvm-12)))
+ (arguments
+ `(#:configure-flags
+ (list ,@(if (%current-target-system)
+ (string-append "-DZIG_TARGET_TRIPLE="
+ (%current-target-system))
+ '()))
+ #:out-of-source? #f ; for tests
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'configure 'set-cache-dir
+ (lambda _
+ ;; Set cache dir, otherwise Zig looks for `$HOME/.cache'.
+ (setenv "ZIG_GLOBAL_CACHE_DIR"
+ (string-append (getcwd) "/zig-cache"))))
+ (delete 'check)
+ (add-after 'install 'check
+ (lambda* (#:key outputs tests? #:allow-other-keys)
+ (when tests?
+ (invoke (string-append (assoc-ref outputs "out") "/bin/zig")
+ ;; Testing the standard library takes >7.5GB RAM, and
+ ;; will fail if it is OOM-killed. The 'test-toolchain'
+ ;; target skips standard library and doc tests.
+ "build" "test-toolchain"
+ ;; Stage 2 is experimental, not what we run with `zig',
+ ;; and stage 2 tests require a lot of RAM.
+ "-Dskip-stage2-tests"
+ ;; Non-native tests try to link and execute non-native
+ ;; binaries.
+ "-Dskip-non-native")))))))
+ (native-search-paths
+ (list
+ (search-path-specification
+ (variable "C_INCLUDE_PATH")
+ (files '("include")))
+ (search-path-specification
+ (variable "CPLUS_INCLUDE_PATH")
+ (files '("include/c++" "include")))
+ (search-path-specification
+ (variable "LIBRARY_PATH")
+ (files '("lib" "lib64")))))
+ (synopsis "General purpose programming language and toolchain")
+ (description "Zig is a general-purpose programming language and
+toolchain. Among other features it provides
+@itemize
+@item an Optional type instead of null pointers,
+@item manual memory management,
+@item generic data structures and functions,
+@item compile-time reflection and compile-time code execution,
+@item integration with C using zig as a C compiler, and
+@item concurrency via async functions.
+@end itemize")
+ (home-page "https://github.com/ziglang/zig")
+ (license license:expat)))
diff --git a/gnu/services/rsync.scm b/gnu/services/rsync.scm
index 6c117bbda4..59faed78f6 100644
--- a/gnu/services/rsync.scm
+++ b/gnu/services/rsync.scm
@@ -45,6 +45,8 @@
rsync-configuration?
(package rsync-configuration-package ; package
(default rsync))
+ (address rsync-configuration-address ; string | #f
+ (default #f))
(port-number rsync-configuration-port-number ; integer
(default 873))
(pid-file rsync-configuration-pid-file ; string
@@ -110,7 +112,7 @@
(define rsync-config-file
;; Return the rsync configuration file corresponding to CONFIG.
(match-lambda
- (($ <rsync-configuration> package port-number pid-file lock-file log-file
+ (($ <rsync-configuration> package address port-number pid-file lock-file log-file
use-chroot? share-path share-comment read-only?
timeout user group uid gid)
(if (not (string=? user "root"))
@@ -132,6 +134,7 @@
"pid file = " pid-file "\n"
"lock file = " lock-file "\n"
"log file = " log-file "\n"
+ (if address (string-append "address = " address "\n") "")
"port = " (number->string port-number) "\n"
"use chroot = " (if use-chroot? "true" "false") "\n"
(if uid (string-append "uid = " uid "\n") "")
diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm
index 99a3b45004..b305133c37 100644
--- a/guix/build/syscalls.scm
+++ b/guix/build/syscalls.scm
@@ -180,6 +180,8 @@
terminal-window-size
terminal-columns
terminal-rows
+ openpty
+ login-tty
utmpx?
utmpx-login-type
@@ -422,15 +424,21 @@ expansion-time error is raised if FIELD does not exist in TYPE."
"Evaluate EXPR and restart upon EINTR. Return the value of EXPR."
(call-with-restart-on-EINTR (lambda () expr)))
-(define (syscall->procedure return-type name argument-types)
+(define* (syscall->procedure return-type name argument-types
+ #:key library)
"Return a procedure that wraps the C function NAME using the dynamic FFI,
-and that returns two values: NAME's return value, and errno.
+and that returns two values: NAME's return value, and errno. When LIBRARY is
+specified, look up NAME in that library rather than in the global symbol name
+space.
If an error occurs while creating the binding, defer the error report until
the returned procedure is called."
(catch #t
(lambda ()
- (let ((ptr (dynamic-func name (dynamic-link))))
+ (let ((ptr (dynamic-func name
+ (if library
+ (dynamic-link library)
+ (dynamic-link)))))
;; The #:return-errno? facility was introduced in Guile 2.0.12.
(pointer->procedure return-type ptr argument-types
#:return-errno? #t)))
@@ -2286,6 +2294,41 @@ PORT, trying to guess a reasonable value if all else fails. The result is
always a positive integer."
(terminal-dimension window-size-rows port (const 25)))
+(define openpty
+ (let ((proc (syscall->procedure int "openpty" '(* * * * *)
+ #:library "libutil")))
+ (lambda ()
+ "Return two file descriptors: one for the pseudo-terminal control side,
+and one for the controlled side."
+ (let ((head (make-bytevector (sizeof int)))
+ (inferior (make-bytevector (sizeof int))))
+ (let-values (((ret err)
+ (proc (bytevector->pointer head)
+ (bytevector->pointer inferior)
+ %null-pointer %null-pointer %null-pointer)))
+ (unless (zero? ret)
+ (throw 'system-error "openpty" "~A"
+ (list (strerror err))
+ (list err))))
+
+ (let ((* (lambda (bv)
+ (bytevector-sint-ref bv 0 (native-endianness)
+ (sizeof int)))))
+ (values (* head) (* inferior)))))))
+
+(define login-tty
+ (let* ((proc (syscall->procedure int "login_tty" (list int)
+ #:library "libutil")))
+ (lambda (fd)
+ "Make FD the controlling terminal of the current process (with the
+TIOCSCTTY ioctl), redirect standard input, standard output and standard error
+output to this terminal, and close FD."
+ (let-values (((ret err) (proc fd)))
+ (unless (zero? ret)
+ (throw 'system-error "login-pty" "~A"
+ (list (strerror err))
+ (list err)))))))
+
;;;
;;; utmpx.
diff --git a/guix/cache.scm b/guix/cache.scm
index 0401a9d428..51009809bd 100644
--- a/guix/cache.scm
+++ b/guix/cache.scm
@@ -101,7 +101,13 @@ CLEANUP-PERIOD denotes the minimum time between two cache cleanups."
#:now now
#:entry-expiration entry-expiration
#:delete-entry delete-entry)
- (call-with-output-file expiry-file
- (cute write (time-second now) <>))))
+ (catch 'system-error
+ (lambda ()
+ (call-with-output-file expiry-file
+ (cute write (time-second now) <>)))
+ (lambda args
+ ;; ENOENT means CACHE does not exist.
+ (unless (= ENOENT (system-error-errno args))
+ (apply throw args))))))
;;; cache.scm ends here
diff --git a/guix/import/cran.scm b/guix/import/cran.scm
index 510882bc00..9387a82065 100644
--- a/guix/import/cran.scm
+++ b/guix/import/cran.scm
@@ -34,6 +34,8 @@
#:use-module (web uri)
#:use-module (guix memoization)
#:use-module (guix http-client)
+ #:use-module (guix diagnostics)
+ #:use-module (guix i18n)
#:use-module (gcrypt hash)
#:use-module (guix store)
#:use-module ((guix serialization) #:select (write-file))
@@ -171,11 +173,11 @@ package definition."
release."
(let ((url (string->uri (bioconductor-packages-list-url type))))
(guard (c ((http-get-error? c)
- (format (current-error-port)
- "error: failed to retrieve list of packages from ~s: ~a (~s)~%"
- (uri->string (http-get-error-uri c))
- (http-get-error-code c)
- (http-get-error-reason c))
+ (warning (G_ "failed to retrieve list of packages \
+from ~a: ~a (~a)~%")
+ (uri->string (http-get-error-uri c))
+ (http-get-error-code c)
+ (http-get-error-reason c))
#f))
;; Split the big list on empty lines, then turn each chunk into an
;; alist of attributes.
@@ -237,12 +239,11 @@ case-sensitive."
((cran)
(let ((url (string-append %cran-url name "/DESCRIPTION")))
(guard (c ((http-get-error? c)
- (format (current-error-port)
- "error: failed to retrieve package information \
-from ~s: ~a (~s)~%"
- (uri->string (http-get-error-uri c))
- (http-get-error-code c)
- (http-get-error-reason c))
+ (warning (G_ "failed to retrieve package information \
+from ~a: ~a (~a)~%")
+ (uri->string (http-get-error-uri c))
+ (http-get-error-code c)
+ (http-get-error-reason c))
#f))
(let* ((port (http-fetch url))
(result (description->alist (read-string port))))
diff --git a/guix/lint.scm b/guix/lint.scm
index 5edb9dea28..8bbbe210d6 100644
--- a/guix/lint.scm
+++ b/guix/lint.scm
@@ -322,6 +322,21 @@ markup is valid return a plain-text version of DESCRIPTION, otherwise #f."
(G_ "Texinfo markup in description is invalid")
#:field 'description))))
+ (define (check-description-typo description typo-corrections)
+ "Check that DESCRIPTION does not contain typo, with optional correction"
+ (append-map
+ (match-lambda
+ ((typo . correction)
+ (if (string-contains description typo)
+ (list
+ (make-warning package
+ (G_
+ (format #false
+ "description contains typo '~a'~@[, should be '~a'~]"
+ typo correction))))
+ '())))
+ typo-corrections))
+
(define (check-trademarks description)
"Check that DESCRIPTION does not contain '™' or '®' characters. See
http://www.gnu.org/prep/standards/html_node/Trademarks.html."
@@ -402,6 +417,10 @@ by two spaces; possible infraction~p at ~{~a~^, ~}")
(check-not-empty description)
(check-quotes description)
(check-trademarks description)
+ (check-description-typo description '(("This packages" . "This package")
+ ("This modules" . "This module")
+ ("allows to" . #f)
+ ("permits to" . #f)))
;; Use raw description for this because Texinfo rendering
;; automatically fixes end of sentence space.
(check-end-of-sentence-space description)
diff --git a/guix/packages.scm b/guix/packages.scm
index fa23cc39b3..fb7eabdc64 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -52,6 +52,7 @@
#:use-module (srfi srfi-35)
#:use-module (rnrs bytevectors)
#:use-module (web uri)
+ #:autoload (texinfo) (texi-fragment->stexi)
#:re-export (%current-system
%current-target-system
search-path-specification) ;for convenience
@@ -169,6 +170,7 @@
bag-transitive-host-inputs
bag-transitive-build-inputs
bag-transitive-target-inputs
+ package-development-inputs
package-closure
default-guile
@@ -465,6 +467,49 @@ lexical scope of its body."
(lambda (s) #,location)))
body ...))))))
+(define-syntax validate-texinfo
+ (let ((validate? (getenv "GUIX_UNINSTALLED")))
+ (define ensure-thread-safe-texinfo-parser!
+ ;; Work around <https://issues.guix.gnu.org/51264> for Guile <= 3.0.7.
+ (let ((patched? (or (> (string->number (major-version)) 3)
+ (> (string->number (minor-version)) 0)
+ (> (string->number (micro-version)) 7)))
+ (next-token-of/thread-safe
+ (lambda (pred port)
+ (let loop ((chars '()))
+ (match (read-char port)
+ ((? eof-object?)
+ (list->string (reverse! chars)))
+ (chr
+ (let ((chr* (pred chr)))
+ (if chr*
+ (loop (cons chr* chars))
+ (begin
+ (unread-char chr port)
+ (list->string (reverse! chars)))))))))))
+ (lambda ()
+ (unless patched?
+ (set! (@@ (texinfo) next-token-of) next-token-of/thread-safe)
+ (set! patched? #t)))))
+
+ (lambda (s)
+ "Raise a syntax error when passed a literal string that is not valid
+Texinfo. Otherwise, return the string."
+ (syntax-case s ()
+ ((_ str)
+ (string? (syntax->datum #'str))
+ (if validate?
+ (catch 'parser-error
+ (lambda ()
+ (ensure-thread-safe-texinfo-parser!)
+ (texi-fragment->stexi (syntax->datum #'str))
+ #'str)
+ (lambda _
+ (syntax-violation 'package "invalid Texinfo markup" #'str)))
+ #'str))
+ ((_ obj)
+ #'obj)))))
+
;; A package.
(define-record-type* <package>
package make-package
@@ -502,9 +547,11 @@ lexical scope of its body."
(replacement package-replacement ; package | #f
(default #f) (thunked) (innate))
- (synopsis package-synopsis) ; one-line description
- (description package-description) ; one or two paragraphs
- (license package-license)
+ (synopsis package-synopsis
+ (sanitize validate-texinfo)) ; one-line description
+ (description package-description
+ (sanitize validate-texinfo)) ; one or two paragraphs
+ (license package-license) ; <license> instance or list
(home-page package-home-page)
(supported-systems package-supported-systems ; list of strings
(default %supported-systems))
@@ -1176,23 +1223,36 @@ in INPUTS and their transitive propagated inputs."
(define package-transitive-supported-systems
(let ()
- (define supported-systems
- (mlambda (package system)
- (parameterize ((%current-system system))
- (fold (lambda (input systems)
- (match input
- ((label (? package? package) . _)
- (lset-intersection string=? systems
- (supported-systems package system)))
- (_
- systems)))
- (package-supported-systems package)
- (bag-direct-inputs (package->bag package))))))
+ (define (supported-systems-procedure system)
+ (define supported-systems
+ (mlambdaq (package)
+ (parameterize ((%current-system system))
+ (fold (lambda (input systems)
+ (match input
+ ((label (? package? package) . _)
+ (lset-intersection string=? systems
+ (supported-systems package)))
+ (_
+ systems)))
+ (package-supported-systems package)
+ (bag-direct-inputs (package->bag package))))))
+
+ supported-systems)
+
+ (define procs
+ ;; Map system strings to one-argument procedures. This allows these
+ ;; procedures to have fast 'eq?' memoization on their argument.
+ (make-hash-table))
(lambda* (package #:optional (system (%current-system)))
"Return the intersection of the systems supported by PACKAGE and those
supported by its dependencies."
- (supported-systems package system))))
+ (match (hash-ref procs system)
+ (#f
+ (hash-set! procs system (supported-systems-procedure system))
+ (package-transitive-supported-systems package system))
+ (proc
+ (proc package))))))
(define* (supported-package? package #:optional (system (%current-system)))
"Return true if PACKAGE is supported on SYSTEM--i.e., if PACKAGE and all its
@@ -1229,6 +1289,15 @@ dependencies are known to build on SYSTEM."
(%current-system (bag-system bag)))
(transitive-inputs (bag-target-inputs bag))))
+(define* (package-development-inputs package
+ #:optional (system (%current-system))
+ #:key target)
+ "Return the list of inputs required by PACKAGE for development purposes on
+SYSTEM. When TARGET is true, return the inputs needed to cross-compile
+PACKAGE from SYSTEM to TRIPLET, where TRIPLET is a triplet such as
+\"aarch64-linux-gnu\"."
+ (bag-transitive-inputs (package->bag package system target)))
+
(define* (package-closure packages #:key (system (%current-system)))
"Return the closure of PACKAGES on SYSTEM--i.e., PACKAGES and the list of
packages they depend on, recursively."
diff --git a/guix/profiles.scm b/guix/profiles.scm
index 9494684228..aad23c0c0e 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -124,6 +124,7 @@
profile-manifest
package->manifest-entry
+ package->development-manifest
packages->manifest
ca-certificate-bundle
%default-profile-hooks
@@ -400,6 +401,24 @@ file name."
(properties properties))))
entry))
+(define* (package->development-manifest package
+ #:optional
+ (system (%current-system))
+ #:key target)
+ "Return a manifest for the \"development inputs\" of PACKAGE for SYSTEM,
+optionally when cross-compiling to TARGET. Development inputs include both
+explicit and implicit inputs of PACKAGE."
+ (manifest
+ (filter-map (match-lambda
+ ((label (? package? package))
+ (package->manifest-entry package))
+ ((label (? package? package) output)
+ (package->manifest-entry package output))
+ ;; TODO: Support <inferior-package>.
+ (_
+ #f))
+ (package-development-inputs package system #:target target))))
+
(define (packages->manifest packages)
"Return a list of manifest entries, one for each item listed in PACKAGES.
Elements of PACKAGES can be either package objects or package/string tuples
diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index 6958bd6238..cca0ad991b 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -34,23 +34,32 @@
#:use-module (guix scripts)
#:use-module (guix scripts build)
#:use-module (guix transformations)
- #:use-module (gnu build linux-container)
- #:use-module (gnu build accounts)
- #:use-module ((guix build syscalls) #:select (set-network-interface-up))
- #:use-module (gnu system linux-container)
+ #:autoload (gnu build linux-container) (call-with-container %namespaces
+ user-namespace-supported?
+ unprivileged-user-namespace-supported?
+ setgroups-supported?)
+ #:autoload (gnu build accounts) (password-entry group-entry
+ password-entry-name password-entry-directory
+ write-passwd write-group)
+ #:autoload (guix build syscalls) (set-network-interface-up openpty login-tty)
#:use-module (gnu system file-systems)
- #:use-module (gnu packages)
- #:use-module (gnu packages bash)
- #:use-module ((gnu packages bootstrap)
- #:select (bootstrap-executable %bootstrap-guile))
+ #:autoload (gnu packages) (specification->package+output)
+ #:autoload (gnu packages bash) (bash)
+ #:autoload (gnu packages bootstrap) (bootstrap-executable %bootstrap-guile)
#:use-module (ice-9 match)
+ #:autoload (ice-9 rdelim) (read-line)
+ #:use-module (ice-9 vlist)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-37)
#:use-module (srfi srfi-98)
#:export (assert-container-features
- guix-environment))
+ guix-environment
+ guix-environment*
+ show-environment-options-help
+ (%options . %environment-options)
+ (%default-options . %environment-default-options)))
(define %default-shell
(or (getenv "SHELL") "/bin/sh"))
@@ -66,41 +75,18 @@ do not augment existing environment variables with additional search paths."
(newline)))
(profile-search-paths profile manifest)))
-(define (input->manifest-entry input)
- "Return a manifest entry for INPUT, or #f if INPUT does not correspond to a
-package."
- (match input
- ((_ (? package? package))
- (package->manifest-entry package))
- ((_ (? package? package) output)
- (package->manifest-entry package output))
- (_
- #f)))
-
-(define (package-environment-inputs package)
- "Return a list of manifest entries corresponding to the transitive input
-packages for PACKAGE."
- ;; Remove non-package inputs such as origin records.
- (filter-map input->manifest-entry
- (bag-transitive-inputs (package->bag package))))
-
-(define (show-help)
- (display (G_ "Usage: guix environment [OPTION]... PACKAGE... [-- COMMAND...]
-Build an environment that includes the dependencies of PACKAGE and execute
-COMMAND or an interactive shell in that environment.\n"))
+(define (show-environment-options-help)
+ "Print help about options shared between 'guix environment' and 'guix
+shell'."
(display (G_ "
-e, --expression=EXPR create environment for the package that EXPR
evaluates to"))
(display (G_ "
- -l, --load=FILE create environment for the package that the code within
- FILE evaluates to"))
- (display (G_ "
-m, --manifest=FILE create environment with the manifest from FILE"))
(display (G_ "
-p, --profile=PATH create environment from profile at PATH"))
(display (G_ "
- --ad-hoc include all specified packages in the environment instead
- of only their inputs"))
+ --check check if the shell clobbers environment variables"))
(display (G_ "
--pure unset existing environment variables"))
(display (G_ "
@@ -136,7 +122,24 @@ COMMAND or an interactive shell in that environment.\n"))
(display (G_ "
-v, --verbosity=LEVEL use the given verbosity LEVEL"))
(display (G_ "
- --bootstrap use bootstrap binaries to build the environment"))
+ --bootstrap use bootstrap binaries to build the environment")))
+
+(define (show-help)
+ (display (G_ "Usage: guix environment [OPTION]... PACKAGE... [-- COMMAND...]
+Build an environment that includes the dependencies of PACKAGE and execute
+COMMAND or an interactive shell in that environment.\n"))
+ (warning (G_ "This command is deprecated in favor of 'guix shell'.\n"))
+ (newline)
+
+ ;; These two options are left out in 'guix shell'.
+ (display (G_ "
+ -l, --load=FILE create environment for the package that the code within
+ FILE evaluates to"))
+ (display (G_ "
+ --ad-hoc include all specified packages in the environment instead
+ of only their inputs"))
+
+ (show-environment-options-help)
(newline)
(show-build-options-help)
(newline)
@@ -179,6 +182,9 @@ COMMAND or an interactive shell in that environment.\n"))
(option '(#\V "version") #f #f
(lambda args
(show-version-and-exit "guix environment")))
+ (option '("check") #f #f
+ (lambda (opt name arg result)
+ (alist-cons 'check? #t result)))
(option '("pure") #f #f
(lambda (opt name arg result)
(alist-cons 'pure #t result)))
@@ -297,11 +303,11 @@ for the corresponding packages."
((? package? package)
(if (eq? mode 'ad-hoc-package)
(list (package->manifest-entry* package))
- (package-environment-inputs package)))
+ (manifest-entries (package->development-manifest package))))
(((? package? package) (? string? output))
(if (eq? mode 'ad-hoc-package)
(list (package->manifest-entry* package output))
- (package-environment-inputs package)))
+ (manifest-entries (package->development-manifest package))))
((lst ...)
(append-map (cut packages->outputs <> mode) lst))))
@@ -313,8 +319,9 @@ for the corresponding packages."
(specification->package+output spec)))
(list (package->manifest-entry* package output))))
(('package 'package (? string? spec))
- (package-environment-inputs
- (transform (specification->package+output spec))))
+ (manifest-entries
+ (package->development-manifest
+ (transform (specification->package+output spec)))))
(('expression mode str)
;; Add all the outputs of the package STR evaluates to.
(packages->outputs (read/eval str) mode))
@@ -396,6 +403,155 @@ regexps in WHITE-LIST."
((program . args)
(apply execlp program program args))))
+(define (child-shell-environment shell profile manifest)
+ "Create a child process, load PROFILE and MANIFEST, and then run SHELL in
+interactive mode in it. Return a name/value vhash for all the variables shown
+by running 'set' in the shell."
+ (define-values (controller inferior)
+ (openpty))
+
+ (define script
+ ;; Script to obtain the list of environment variable values. On a POSIX
+ ;; shell we can rely on 'set', but on fish we have to use 'env' (fish's
+ ;; 'set' truncates values and prints them in a different format.)
+ "env || /usr/bin/env || set; echo GUIX-CHECK-DONE; read x; exit\n")
+
+ (define lines
+ (match (primitive-fork)
+ (0
+ (catch #t
+ (lambda ()
+ (load-profile profile manifest #:pure? #t)
+ (setenv "GUIX_ENVIRONMENT" profile)
+ (close-fdes controller)
+ (login-tty inferior)
+ (execl shell shell))
+ (lambda _
+ (primitive-exit 127))))
+ (pid
+ (close-fdes inferior)
+ (let* ((port (fdopen controller "r+l"))
+ (result (begin
+ (display script port)
+ (let loop ((lines '()))
+ (match (read-line port)
+ ((? eof-object?) (reverse lines))
+ ("GUIX-CHECK-DONE\r"
+ (display "done\n" port)
+ (reverse lines))
+ (line
+ ;; Drop the '\r' from LINE.
+ (loop (cons (string-drop-right line 1)
+ lines))))))))
+ (close-port port)
+ (waitpid pid)
+ result))))
+
+ (fold (lambda (line table)
+ ;; Note: 'set' in fish outputs "NAME VALUE" instead of "NAME=VALUE"
+ ;; but it also truncates values anyway, so don't try to support it.
+ (let ((index (string-index line #\=)))
+ (if index
+ (vhash-cons (string-take line index)
+ (string-drop line (+ 1 index))
+ table)
+ table)))
+ vlist-null
+ lines))
+
+(define* (validate-child-shell-environment profile manifest
+ #:optional (shell %default-shell))
+ "Run SHELL in interactive mode in an environment for PROFILE and MANIFEST
+and report clobbered environment variables."
+ (define warned? #f)
+ (define-syntax-rule (warn exp ...)
+ (begin
+ (set! warned? #t)
+ (warning exp ...)))
+
+ (info (G_ "checking the environment variables visible from shell '~a'...~%")
+ shell)
+ (let ((actual (child-shell-environment shell profile manifest)))
+ (when (vlist-null? actual)
+ (leave (G_ "failed to determine environment of shell '~a'~%")
+ shell))
+ (for-each (match-lambda
+ ((spec . expected)
+ (let ((name (search-path-specification-variable spec)))
+ (match (vhash-assoc name actual)
+ (#f
+ (warn (G_ "variable '~a' is missing from shell \
+environment~%")
+ name))
+ ((_ . actual)
+ (cond ((string=? expected actual)
+ #t)
+ ((string-prefix? expected actual)
+ (warn (G_ "variable '~a' has unexpected \
+suffix '~a'~%")
+ name
+ (string-drop actual
+ (string-length expected))))
+ (else
+ (warn (G_ "variable '~a' is clobbered: '~a'~%")
+ name actual))))))))
+ (profile-search-paths profile manifest))
+
+ ;; Special case.
+ (match (vhash-assoc "GUIX_ENVIRONMENT" actual)
+ (#f
+ (warn (G_ "'GUIX_ENVIRONMENT' is missing from the shell \
+environment~%")))
+ ((_ . value)
+ (unless (string=? value profile)
+ (warn (G_ "'GUIX_ENVIRONMENT' is set to '~a' instead of '~a'~%")
+ value profile))))
+
+ ;; Check the prompt unless we have more important warnings.
+ (unless warned?
+ (match (vhash-assoc "PS1" actual)
+ (#f #f)
+ (str
+ (when (and (getenv "PS1") (string=? str (getenv "PS1")))
+ (warning (G_ "'PS1' is the same in sub-shell~%"))
+ (display-hint (G_ "Consider setting a different prompt for
+environment shells to make them distinguishable.
+
+If you are using Bash, you can do that by adding these lines to
+@file{~/.bashrc}:
+
+@example
+if [ -n \"$GUIX_ENVIRONMENT\" ]
+then
+ export PS1=\"\\u@@\\h \\w [env]\\$ \"
+fi
+@end example
+"))))))
+
+ (if warned?
+ (begin
+ (display-hint (G_ "One or more environment variables have a
+different value in the shell than the one we set. This means that you may
+find yourself running code in an environment different from the one you asked
+Guix to prepare.
+
+This usually indicates that your shell startup files are unexpectedly
+modifying those environment variables. For example, if you are using Bash,
+make sure that environment variables are set or modified in
+@file{~/.bash_profile} and @emph{not} in @file{~/.bashrc}. For more
+information on Bash startup files, run:
+
+@example
+info \"(bash) Bash Startup Files\"
+@end example
+
+Alternatively, you can avoid the problem by passing the @option{--container}
+or @option{-C} option. That will give you a fully isolated environment
+running in a \"container\", immune to the issue described above."))
+ (exit 1))
+ (info (G_ "All is good! The shell gets correct environment \
+variables.~%")))))
+
(define* (launch-environment/fork command profile manifest
#:key pure? (white-list '()))
"Run COMMAND in a new process with an environment containing PROFILE, with
@@ -666,11 +822,15 @@ message if any test fails."
(define-command (guix-environment . args)
(category development)
- (synopsis "spawn one-off software environments")
+ (synopsis "spawn one-off software environments (deprecated)")
+
+ (guix-environment* (parse-args args)))
+(define (guix-environment* opts)
+ "Run the 'guix environment' command on OPTS, an alist resulting for
+command-line option processing with 'parse-command-line'."
(with-error-handling
- (let* ((opts (parse-args args))
- (pure? (assoc-ref opts 'pure))
+ (let* ((pure? (assoc-ref opts 'pure))
(container? (assoc-ref opts 'container?))
(link-prof? (assoc-ref opts 'link-profile?))
(network? (assoc-ref opts 'network?))
@@ -690,6 +850,26 @@ message if any test fails."
(mappings (pick-all opts 'file-system-mapping))
(white-list (pick-all opts 'inherit-regexp)))
+ (define store-needed?
+ ;; Whether connecting to the daemon is needed.
+ (or container? (not profile)))
+
+ (define-syntax-rule (with-store/maybe store exp ...)
+ ;; Evaluate EXP... with STORE bound to a connection, unless
+ ;; STORE-NEEDED? is false, in which case STORE is bound to #f.
+ (let ((proc (lambda (store) exp ...)))
+ (if store-needed?
+ (with-store s
+ (set-build-options-from-command-line s opts)
+ (with-build-handler (build-notifier #:use-substitutes?
+ (assoc-ref opts 'substitutes?)
+ #:verbosity
+ (assoc-ref opts 'verbosity)
+ #:dry-run?
+ (assoc-ref opts 'dry-run?))
+ (proc s)))
+ (proc #f))))
+
(when container? (assert-container-features))
(when (and (not container?) link-prof?)
@@ -700,85 +880,89 @@ message if any test fails."
(leave (G_ "--no-cwd cannot be used without --container~%")))
- (with-store store
- (with-build-handler (build-notifier #:use-substitutes?
- (assoc-ref opts 'substitutes?)
- #:verbosity
- (assoc-ref opts 'verbosity)
- #:dry-run?
- (assoc-ref opts 'dry-run?))
- (with-status-verbosity (assoc-ref opts 'verbosity)
- (define manifest-from-opts
- (options/resolve-packages store opts))
-
- (define manifest
- (if profile
- (profile-manifest profile)
- manifest-from-opts))
-
- (when (and profile
- (> (length (manifest-entries manifest-from-opts)) 0))
- (leave (G_ "'--profile' cannot be used with package options~%")))
-
- (when (null? (manifest-entries manifest))
- (warning (G_ "no packages specified; creating an empty environment~%")))
-
- (set-build-options-from-command-line store opts)
-
- ;; Use the bootstrap Guile when requested.
- (parameterize ((%graft? (assoc-ref opts 'graft?))
- (%guile-for-build
- (package-derivation
- store
- (if bootstrap?
- %bootstrap-guile
- (default-guile)))))
- (run-with-store store
- ;; Containers need a Bourne shell at /bin/sh.
- (mlet* %store-monad ((bash (environment-bash container?
- bootstrap?
- system))
- (prof-drv (manifest->derivation
- manifest system bootstrap?))
- (profile -> (if profile
+ (with-store/maybe store
+ (with-status-verbosity (assoc-ref opts 'verbosity)
+ (define manifest-from-opts
+ (options/resolve-packages store opts))
+
+ (define manifest
+ (if profile
+ (profile-manifest profile)
+ manifest-from-opts))
+
+ (when (and profile
+ (> (length (manifest-entries manifest-from-opts)) 0))
+ (leave (G_ "'--profile' cannot be used with package options~%")))
+
+ (when (null? (manifest-entries manifest))
+ (warning (G_ "no packages specified; creating an empty environment~%")))
+
+ ;; Use the bootstrap Guile when requested.
+ (parameterize ((%graft? (assoc-ref opts 'graft?))
+ (%guile-for-build
+ (and store-needed?
+ (package-derivation
+ store
+ (if bootstrap?
+ %bootstrap-guile
+ (default-guile))))))
+ (run-with-store store
+ ;; Containers need a Bourne shell at /bin/sh.
+ (mlet* %store-monad ((bash (environment-bash container?
+ bootstrap?
+ system))
+ (prof-drv (if profile
+ (return #f)
+ (manifest->derivation
+ manifest system bootstrap?)))
+ (profile -> (if profile
(readlink* profile)
(derivation->output-path prof-drv)))
- (gc-root -> (assoc-ref opts 'gc-root)))
-
- ;; First build the inputs. This is necessary even for
- ;; --search-paths. Additionally, we might need to build bash for
- ;; a container.
- (mbegin %store-monad
- (built-derivations (if (derivation? bash)
- (list prof-drv bash)
- (list prof-drv)))
- (mwhen gc-root
- (register-gc-root profile gc-root))
-
- (cond
- ((assoc-ref opts 'search-paths)
- (show-search-paths profile manifest #:pure? pure?)
- (return #t))
- (container?
- (let ((bash-binary
- (if bootstrap?
- (derivation->output-path bash)
- (string-append (derivation->output-path bash)
- "/bin/sh"))))
- (launch-environment/container #:command command
- #:bash bash-binary
- #:user user
- #:user-mappings mappings
- #:profile profile
- #:manifest manifest
- #:white-list white-list
- #:link-profile? link-prof?
- #:network? network?
- #:map-cwd? (not no-cwd?))))
-
- (else
- (return
- (exit/status
- (launch-environment/fork command profile manifest
- #:white-list white-list
- #:pure? pure?)))))))))))))))
+ (gc-root -> (assoc-ref opts 'gc-root)))
+
+ ;; First build the inputs. This is necessary even for
+ ;; --search-paths. Additionally, we might need to build bash for
+ ;; a container.
+ (mbegin %store-monad
+ (mwhen store-needed?
+ (built-derivations (append
+ (if prof-drv (list prof-drv) '())
+ (if (derivation? bash) (list bash) '()))))
+ (mwhen gc-root
+ (register-gc-root profile gc-root))
+
+ (mwhen (assoc-ref opts 'check?)
+ (return
+ (validate-child-shell-environment profile manifest)))
+
+ (cond
+ ((assoc-ref opts 'search-paths)
+ (show-search-paths profile manifest #:pure? pure?)
+ (return #t))
+ (container?
+ (let ((bash-binary
+ (if bootstrap?
+ (derivation->output-path bash)
+ (string-append (derivation->output-path bash)
+ "/bin/sh"))))
+ (launch-environment/container #:command command
+ #:bash bash-binary
+ #:user user
+ #:user-mappings mappings
+ #:profile profile
+ #:manifest manifest
+ #:white-list white-list
+ #:link-profile? link-prof?
+ #:network? network?
+ #:map-cwd? (not no-cwd?))))
+
+ (else
+ (return
+ (exit/status
+ (launch-environment/fork command profile manifest
+ #:white-list white-list
+ #:pure? pure?))))))))))))))
+
+;;; Local Variables:
+;;; eval: (put 'with-store/maybe 'scheme-indent-function 1)
+;;; End:
diff --git a/guix/scripts/home.scm b/guix/scripts/home.scm
index 55e7b436c1..3f48b98ed4 100644
--- a/guix/scripts/home.scm
+++ b/guix/scripts/home.scm
@@ -40,6 +40,7 @@
#:autoload (guix scripts pull) (channel-commit-hyperlink)
#:use-module (guix scripts home import)
#:use-module ((guix status) #:select (with-status-verbosity))
+ #:use-module ((guix build utils) #:select (mkdir-p))
#:use-module (guix gexp)
#:use-module (guix monads)
#:use-module (srfi srfi-1)
@@ -260,15 +261,20 @@ argument list and OPTS is the option alist."
(apply search args))
((import)
(let* ((profiles (delete-duplicates
- (match (filter-map (match-lambda
- (('profile . p) p)
- (_ #f))
- opts)
- (() (list %current-profile))
- (lst (reverse lst)))))
- (manifest (concatenate-manifests
- (map profile-manifest profiles))))
- (import-manifest manifest (current-output-port))))
+ (match (filter-map (match-lambda
+ (('profile . p) p)
+ (_ #f))
+ opts)
+ (() (list %current-profile))
+ (lst (reverse lst)))))
+ (manifest (concatenate-manifests
+ (map profile-manifest profiles)))
+ (destination (match args
+ ((destination) destination)
+ (_ (leave (G_ "wrong number of arguments~%"))))))
+ (unless (file-exists? destination)
+ (mkdir-p destination))
+ (import-manifest manifest destination (current-output-port))))
((describe)
(match (generation-number %guix-home)
(0
diff --git a/guix/scripts/home/import.scm b/guix/scripts/home/import.scm
index 611f580e85..7a7712dd96 100644
--- a/guix/scripts/home/import.scm
+++ b/guix/scripts/home/import.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
+;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -22,12 +23,16 @@
#:use-module (guix ui)
#:use-module (guix utils)
#:use-module (guix packages)
+ #:autoload (guix scripts package) (manifest-entry-version-prefix)
#:use-module (gnu packages)
#:use-module (ice-9 match)
#:use-module (ice-9 pretty-print)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
- #:export (import-manifest))
+ #:export (import-manifest
+
+ ;; For tests.
+ manifest+configuration-files->code))
;;; Commentary:
;;;
@@ -36,200 +41,114 @@
;;;
;;; Code:
-
-(define (generate-bash-module+configuration)
- (let ((rc (string-append (getenv "HOME") "/.bashrc"))
- (profile (string-append (getenv "HOME") "/.bash_profile"))
- (logout (string-append (getenv "HOME") "/.bash_logout")))
- `((gnu home services bash)
- (service home-bash-service-type
- (home-bash-configuration
- ,@(if (file-exists? rc)
- `((bashrc
- (list (local-file ,rc))))
- '())
- ,@(if (file-exists? profile)
- `((bash-profile
- (list (local-file ,profile))))
- '())
- ,@(if (file-exists? logout)
- `((bash-logout
- (list (local-file ,logout))))
- '()))))))
-
-
-(define %files-configurations-alist
- `((".bashrc" . ,generate-bash-module+configuration)
- (".bash_profile" . ,generate-bash-module+configuration)
- (".bash_logout" . ,generate-bash-module+configuration)))
-
-(define (modules+configurations)
- (let ((configurations (delete-duplicates
- (filter-map (match-lambda
- ((file . proc)
- (if (file-exists?
- (string-append (getenv "HOME") "/" file))
- proc
- #f)))
- %files-configurations-alist)
- (lambda (x y)
- (equal? (procedure-name x) (procedure-name y))))))
- (map (lambda (proc) (proc)) configurations)))
-
-;; Based on `manifest->code' from (guix profiles)
-;; MAYBE: Upstream it?
-(define* (manifest->code manifest
- #:key
- (entry-package-version (const ""))
- (home-environment? #f))
- "Return an sexp representing code to build an approximate version of
-MANIFEST; the code is wrapped in a top-level 'begin' form. If
-HOME-ENVIRONMENT? is #t, return an <home-environment> definition.
-Call ENTRY-PACKAGE-VERSION to determine the version number to use in
-the spec for a given entry; it can be set to 'manifest-entry-version'
-for fully-specified version numbers, or to some other procedure to
-disambiguate versions for packages for which several versions are
-available."
- (define (entry-transformations entry)
- ;; Return the transformations that apply to ENTRY.
- (assoc-ref (manifest-entry-properties entry) 'transformations))
-
- (define transformation-procedures
- ;; List of transformation options/procedure name pairs.
- (let loop ((entries (manifest-entries manifest))
- (counter 1)
- (result '()))
- (match entries
- (() result)
- ((entry . tail)
- (match (entry-transformations entry)
- (#f
- (loop tail counter result))
- (options
- (if (assoc-ref result options)
- (loop tail counter result)
- (loop tail (+ 1 counter)
- (alist-cons options
- (string->symbol
- (format #f "transform~a" counter))
- result)))))))))
-
- (define (qualified-name entry)
- ;; Return the name of ENTRY possibly with "@" followed by a version.
- (match (entry-package-version entry)
- ("" (manifest-entry-name entry))
- (version (string-append (manifest-entry-name entry)
- "@" version))))
-
- (if (null? transformation-procedures)
- (let ((specs (map (lambda (entry)
- (match (manifest-entry-output entry)
- ("out" (qualified-name entry))
- (output (string-append (qualified-name entry)
- ":" output))))
- (manifest-entries manifest))))
- (if home-environment?
- (let ((modules+configurations (modules+configurations)))
- `(begin
- (use-modules (gnu home)
- (gnu packages)
- ,@(map first modules+configurations))
- ,(home-environment-template
- #:specs specs
- #:services (map second modules+configurations))))
- `(begin
- (use-modules (gnu packages))
-
- (specifications->manifest
- (list ,@specs)))))
- (let* ((transform (lambda (options exp)
- (if (not options)
- exp
- (let ((proc (assoc-ref transformation-procedures
- options)))
- `(,proc ,exp)))))
- (packages (map (lambda (entry)
- (define options
- (entry-transformations entry))
-
- (define name
- (qualified-name entry))
-
- (match (manifest-entry-output entry)
- ("out"
- (transform options
- `(specification->package ,name)))
- (output
- `(list ,(transform
- options
- `(specification->package ,name))
- ,output))))
- (manifest-entries manifest)))
- (transformations (map (match-lambda
- ((options . name)
- `(define ,name
- (options->transformation ',options))))
- transformation-procedures)))
- (if home-environment?
- (let ((modules+configurations (modules+configurations)))
- `(begin
- (use-modules (guix transformations)
- (gnu home)
- (gnu packages)
- ,@(map first modules+configurations))
-
- ,@transformations
-
- ,(home-environment-template
- #:packages packages
- #:services (map second modules+configurations))))
- `(begin
- (use-modules (guix transformations)
- (gnu packages))
-
- ,@transformations
-
- (packages->manifest
- (list ,@packages)))))))
-
-(define* (home-environment-template #:key (packages #f) (specs #f) services)
- "Return an S-exp containing a <home-environment> declaration
-containing PACKAGES, or SPECS (package specifications), and SERVICES."
- `(home-environment
- (packages
- ,@(if packages
- `((list ,@packages))
- `((map specification->package
- (list ,@specs)))))
- (services (list ,@services))))
+(define (basename+remove-dots file-name)
+ "Remove the dot from the dotfile FILE-NAME; replace the other dots in
+FILE-NAME with \"-\", and return the basename of it."
+ (string-map (match-lambda
+ (#\. #\-)
+ (c c))
+ (let ((base (basename file-name)))
+ (if (string-prefix? "." base)
+ (string-drop base 1)
+ base))))
+
+(define (generate-bash-configuration+modules destination-directory)
+ (define (destination-append path)
+ (string-append destination-directory "/" path))
+
+ (let ((rc (destination-append ".bashrc"))
+ (profile (destination-append ".bash_profile"))
+ (logout (destination-append ".bash_logout")))
+ `((service home-bash-service-type
+ (home-bash-configuration
+ ,@(if (file-exists? rc)
+ `((bashrc
+ (list (local-file ,rc
+ ,(basename+remove-dots rc)))))
+ '())
+ ,@(if (file-exists? profile)
+ `((bash-profile
+ (list (local-file ,profile
+ ,(basename+remove-dots profile)))))
+ '())
+ ,@(if (file-exists? logout)
+ `((bash-logout
+ (list (local-file ,logout
+ ,(basename+remove-dots logout)))))
+ '())))
+ (guix gexp)
+ (gnu home services shells))))
+
+(define %files+configurations-alist
+ `((".bashrc" . ,generate-bash-configuration+modules)
+ (".bash_profile" . ,generate-bash-configuration+modules)
+ (".bash_logout" . ,generate-bash-configuration+modules)))
+
+(define (configurations+modules configuration-directory)
+ "Return a list of procedures which when called, generate code for a home
+service declaration. Copy configuration files to CONFIGURATION-DIRECTORY; the
+generated service declarations will refer to those files that have been saved
+in CONFIGURATION-DIRECTORY."
+ (define configurations
+ (delete-duplicates
+ (filter-map (match-lambda
+ ((file . proc)
+ (let ((absolute-path (string-append (getenv "HOME")
+ "/" file)))
+ (and (file-exists? absolute-path)
+ (begin
+ (copy-file absolute-path
+ (string-append
+ configuration-directory "/" file))
+ proc)))))
+ %files+configurations-alist)
+ eq?))
+
+ (map (lambda (proc) (proc configuration-directory)) configurations))
+
+(define (manifest+configuration-files->code manifest
+ configuration-directory)
+ "Read MANIFEST and the user's configuration files listed in
+%FILES+CONFIGURATIONS-ALIST, and return a 'home-environment' sexp. Copy the
+user's files to CONFIGURATION-DIRECTORY; the generated sexp refers to them."
+ (match (manifest->code manifest
+ #:entry-package-version
+ manifest-entry-version-prefix)
+ (('begin ('use-modules profile-modules ...)
+ definitions ... ('packages->manifest packages))
+ (match (configurations+modules configuration-directory)
+ (((services . modules) ...)
+ `(begin
+ (use-modules (gnu home)
+ (gnu packages)
+ (gnu services)
+ ,@(delete-duplicates
+ (append profile-modules (concatenate modules))))
+
+ ,@definitions
+
+ (home-environment
+ (packages ,packages)
+ (services (list ,@services)))))))
+ (('begin ('specifications->manifest packages))
+ (match (configurations+modules configuration-directory)
+ (((services . modules) ...)
+ `(begin
+ (use-modules (gnu home)
+ (gnu packages)
+ (gnu services)
+ ,@(delete-duplicates (concatenate modules)))
+
+ (home-environment
+ (packages (map specification->package ,packages))
+ (services (list ,@services)))))))))
(define* (import-manifest
- manifest
+ manifest destination-directory
#:optional (port (current-output-port)))
"Write to PORT a <home-environment> corresponding to MANIFEST."
- (define (version-spec entry)
- (let ((name (manifest-entry-name entry)))
- (match (map package-version (find-packages-by-name name))
- ((_)
- ;; A single version of NAME is available, so do not specify the
- ;; version number, even if the available version doesn't match ENTRY.
- "")
- (versions
- ;; If ENTRY uses the latest version, don't specify any version.
- ;; Otherwise return the shortest unique version prefix. Note that
- ;; this is based on the currently available packages, which could
- ;; differ from the packages available in the revision that was used
- ;; to build MANIFEST.
- (let ((current (manifest-entry-version entry)))
- (if (every (cut version>? current <>)
- (delete current versions))
- ""
- (version-unique-prefix (manifest-entry-version entry)
- versions)))))))
-
- (match (manifest->code manifest
- #:entry-package-version version-spec
- #:home-environment? #t)
+ (match (manifest+configuration-files->code manifest
+ destination-directory)
(('begin exp ...)
(format port (G_ "\
;; This \"home-environment\" file can be passed to 'guix home reconfigure'
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index a34ecdcb54..4b9c5f210d 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -68,6 +68,7 @@
guix-package
search-path-environment-variables
+ manifest-entry-version-prefix
transaction-upgrade-entry ;mostly for testing
@@ -327,31 +328,35 @@ Alternately, see @command{guix package --search-paths -p ~s}.")
;;; Export a manifest.
;;;
+(define (manifest-entry-version-prefix entry)
+ "Search among all the versions of ENTRY's package that are available, and
+return the shortest unambiguous version prefix for this package. If only one
+version of ENTRY's package is available, return the empty string."
+ (let ((name (manifest-entry-name entry)))
+ (match (map package-version (find-packages-by-name name))
+ ((_)
+ ;; A single version of NAME is available, so do not specify the
+ ;; version number, even if the available version doesn't match ENTRY.
+ "")
+ (versions
+ ;; If ENTRY uses the latest version, don't specify any version.
+ ;; Otherwise return the shortest unique version prefix. Note that
+ ;; this is based on the currently available packages, which could
+ ;; differ from the packages available in the revision that was used
+ ;; to build MANIFEST.
+ (let ((current (manifest-entry-version entry)))
+ (if (every (cut version>? current <>)
+ (delete current versions))
+ ""
+ (version-unique-prefix (manifest-entry-version entry)
+ versions)))))))
+
(define* (export-manifest manifest
#:optional (port (current-output-port)))
"Write to PORT a manifest corresponding to MANIFEST."
- (define (version-spec entry)
- (let ((name (manifest-entry-name entry)))
- (match (map package-version (find-packages-by-name name))
- ((_)
- ;; A single version of NAME is available, so do not specify the
- ;; version number, even if the available version doesn't match ENTRY.
- "")
- (versions
- ;; If ENTRY uses the latest version, don't specify any version.
- ;; Otherwise return the shortest unique version prefix. Note that
- ;; this is based on the currently available packages, which could
- ;; differ from the packages available in the revision that was used
- ;; to build MANIFEST.
- (let ((current (manifest-entry-version entry)))
- (if (every (cut version>? current <>)
- (delete current versions))
- ""
- (version-unique-prefix (manifest-entry-version entry)
- versions)))))))
-
(match (manifest->code manifest
- #:entry-package-version version-spec)
+ #:entry-package-version
+ manifest-entry-version-prefix)
(('begin exp ...)
(format port (G_ "\
;; This \"manifest\" file can be passed to 'guix package -m' to reproduce
diff --git a/guix/scripts/shell.scm b/guix/scripts/shell.scm
new file mode 100644
index 0000000000..5749485a44
--- /dev/null
+++ b/guix/scripts/shell.scm
@@ -0,0 +1,394 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; 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 scripts shell)
+ #:use-module (guix ui)
+ #:use-module ((guix diagnostics) #:select (location))
+ #:use-module (guix scripts environment)
+ #:autoload (guix scripts build) (show-build-options-help)
+ #:autoload (guix transformations) (show-transformation-options-help)
+ #:use-module (guix scripts)
+ #:use-module (guix packages)
+ #:use-module (guix profiles)
+ #:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-26)
+ #:use-module (srfi srfi-37)
+ #:use-module (srfi srfi-71)
+ #:use-module (ice-9 match)
+ #:autoload (ice-9 rdelim) (read-line)
+ #:autoload (guix base32) (bytevector->base32-string)
+ #:autoload (rnrs bytevectors) (string->utf8)
+ #:autoload (guix utils) (config-directory cache-directory)
+ #:autoload (guix describe) (current-channels)
+ #:autoload (guix channels) (channel-commit)
+ #:autoload (gcrypt hash) (sha256)
+ #:use-module ((guix build utils) #:select (mkdir-p))
+ #:use-module (guix cache)
+ #:use-module ((ice-9 ftw) #:select (scandir))
+ #:export (guix-shell))
+
+(define (show-help)
+ (display (G_ "Usage: guix shell [OPTION] PACKAGES... [-- COMMAND...]
+Build an environment that includes PACKAGES and execute COMMAND or an
+interactive shell in that environment.\n"))
+ (newline)
+
+ ;; These two options differ from 'guix environment'.
+ (display (G_ "
+ -D, --development include the development inputs of the next package"))
+ (display (G_ "
+ -f, --file=FILE create environment for the package that the code within
+ FILE evaluates to"))
+ (display (G_ "
+ -q inhibit loading of 'guix.scm' and 'manifest.scm'"))
+ (display (G_ "
+ --rebuild-cache rebuild cached environment, if any"))
+
+ (show-environment-options-help)
+ (newline)
+ (show-build-options-help)
+ (newline)
+ (show-transformation-options-help)
+ (newline)
+ (display (G_ "
+ -h, --help display this help and exit"))
+ (display (G_ "
+ -V, --version display version information and exit"))
+ (newline)
+ (show-bug-report-information))
+
+(define (tag-package-arg opts arg)
+ "Return a two-element list with the form (TAG ARG) that tags ARG with either
+'ad-hoc' in OPTS has the 'ad-hoc?' key set to #t, or 'inputs' otherwise."
+ (if (assoc-ref opts 'ad-hoc?)
+ `(ad-hoc-package ,arg)
+ `(package ,arg)))
+
+(define (ensure-ad-hoc alist)
+ (if (assq-ref alist 'ad-hoc?)
+ alist
+ `((ad-hoc? . #t) ,@alist)))
+
+(define (wrapped-option opt)
+ "Wrap OPT, a SRFI-37 option, such that its processor always adds the
+'ad-hoc?' flag to the resulting alist."
+ (option (option-names opt)
+ (option-required-arg? opt)
+ (option-optional-arg? opt)
+ (compose ensure-ad-hoc (option-processor opt))))
+
+(define %options
+ ;; Specification of the command-line options.
+ (let ((to-remove '("ad-hoc" "inherit" "load" "help" "version")))
+ (append
+ (list (option '(#\h "help") #f #f
+ (lambda args
+ (show-help)
+ (exit 0)))
+ (option '(#\V "version") #f #f
+ (lambda args
+ (show-version-and-exit "guix shell")))
+
+ (option '(#\D "development") #f #f
+ (lambda (opt name arg result)
+ ;; Temporarily remove the 'ad-hoc?' flag from result.
+ ;; The next option will put it back thanks to
+ ;; 'wrapped-option'.
+ (alist-delete 'ad-hoc? result)))
+
+ ;; For consistency with 'guix package', support '-f' rather than
+ ;; '-l' like 'guix environment' does.
+ (option '(#\f "file") #t #f
+ (lambda (opt name arg result)
+ (alist-cons 'load (tag-package-arg result arg)
+ result)))
+ (option '(#\q) #f #f
+ (lambda (opt name arg result)
+ (alist-cons 'explicit-loading? #t result)))
+ (option '("rebuild-cache") #f #f
+ (lambda (opt name arg result)
+ (alist-cons 'rebuild-cache? #t result))))
+ (filter-map (lambda (opt)
+ (and (not (any (lambda (name)
+ (member name to-remove))
+ (option-names opt)))
+ (wrapped-option opt)))
+ %environment-options))))
+
+(define %default-options
+ `((ad-hoc? . #t) ;always true
+ ,@%environment-default-options))
+
+(define (parse-args args)
+ "Parse the list of command line arguments ARGS."
+ (define (handle-argument arg result)
+ (alist-cons 'package (tag-package-arg result arg)
+ (ensure-ad-hoc result)))
+
+ ;; The '--' token is used to separate the command to run from the rest of
+ ;; the operands.
+ (let ((args command (break (cut string=? "--" <>) args)))
+ (let ((opts (parse-command-line args %options (list %default-options)
+ #:argument-handler handle-argument)))
+ (options-with-caching
+ (auto-detect-manifest
+ (match command
+ (() opts)
+ (("--") opts)
+ (("--" command ...) (alist-cons 'exec command opts))))))))
+
+(define (find-file-in-parent-directories candidates)
+ "Find one of CANDIDATES in the current directory or one of its ancestors."
+ (define start (getcwd))
+ (define device (stat:dev (stat start)))
+
+ (let loop ((directory start))
+ (let ((stat (stat directory)))
+ (and (= (stat:uid stat) (getuid))
+ (= (stat:dev stat) device)
+ (or (any (lambda (candidate)
+ (let ((candidate (string-append directory "/" candidate)))
+ (and (file-exists? candidate) candidate)))
+ candidates)
+ (and (not (string=? directory "/"))
+ (loop (dirname directory)))))))) ;lexical ".." resolution
+
+(define (authorized-directory-file)
+ "Return the name of the file listing directories for which 'guix shell' may
+automatically load 'guix.scm' or 'manifest.scm' files."
+ (string-append (config-directory) "/shell-authorized-directories"))
+
+(define (authorized-shell-directory? directory)
+ "Return true if DIRECTORY is among the authorized directories for automatic
+loading. The list of authorized directories is read from
+'authorized-directory-file'; each line must be either: an absolute file name,
+a hash-prefixed comment, or a blank line."
+ (catch 'system-error
+ (lambda ()
+ (call-with-input-file (authorized-directory-file)
+ (lambda (port)
+ (let loop ()
+ (match (read-line port)
+ ((? eof-object?) #f)
+ ((= string-trim line)
+ (cond ((string-prefix? "#" line) ;comment
+ (loop))
+ ((string-prefix? "/" line) ;absolute file name
+ (or (string=? line directory)
+ (loop)))
+ ((string-null? (string-trim-right line)) ;blank line
+ (loop))
+ (else ;bogus line
+ (let ((loc (location (port-filename port)
+ (port-line port)
+ (port-column port))))
+ (warning loc (G_ "ignoring invalid file name: '~a'~%")
+ line))))))))))
+ (const #f)))
+
+(define (options-with-caching opts)
+ "If OPTS contains exactly one 'load' or one 'manifest' key, automatically
+add a 'profile' key (when a profile for that file is already in cache) or a
+'gc-root' key (to add the profile to cache)."
+ (define (single-file-for-caching opts)
+ (let loop ((opts opts)
+ (file #f))
+ (match opts
+ (() file)
+ ((('package . _) . _) #f)
+ ((('load . ('package candidate)) . rest)
+ (and (not file) (loop rest candidate)))
+ ((('manifest . candidate) . rest)
+ (and (not file) (loop rest candidate)))
+ ((('expression . _) . _) #f)
+ ((_ . rest) (loop rest file)))))
+
+ ;; Check whether there's a single 'load' or 'manifest' option. When that is
+ ;; the case, arrange to automatically cache the resulting profile.
+ (match (single-file-for-caching opts)
+ (#f opts)
+ (file
+ (let* ((root (profile-cached-gc-root file))
+ (stat (and root (false-if-exception (lstat root)))))
+ (if (and (not (assoc-ref opts 'rebuild-cache?))
+ stat
+ (<= (stat:mtime ((@ (guile) stat) file))
+ (stat:mtime stat)))
+ (let ((now (current-time)))
+ ;; Update the atime on ROOT to reflect usage.
+ (utime root
+ now (stat:mtime stat) 0 (stat:mtimensec stat)
+ AT_SYMLINK_NOFOLLOW)
+ (alist-cons 'profile root
+ (remove (match-lambda
+ (('load . _) #t)
+ (('manifest . _) #t)
+ (_ #f))
+ opts))) ;load right away
+ (if (and root (not (assq-ref opts 'gc-root)))
+ (begin
+ (if stat
+ (delete-file root)
+ (mkdir-p (dirname root)))
+ (alist-cons 'gc-root root opts))
+ opts))))))
+
+(define (auto-detect-manifest opts)
+ "If OPTS do not specify packages or a manifest, load a \"guix.scm\" or
+\"manifest.scm\" file from the current directory or one of its ancestors.
+Return the modified OPTS."
+ (define (options-contain-payload? opts)
+ (match opts
+ (() #f)
+ ((('package . _) . _) #t)
+ ((('load . _) . _) #t)
+ ((('manifest . _) . _) #t)
+ ((('expression . _) . _) #t)
+ ((_ . rest) (options-contain-payload? rest))))
+
+ (define interactive?
+ (not (assoc-ref opts 'exec)))
+
+ (define disallow-implicit-load?
+ (assoc-ref opts 'explicit-loading?))
+
+ (if (or (not interactive?)
+ disallow-implicit-load?
+ (options-contain-payload? opts))
+ opts
+ (match (find-file-in-parent-directories '("manifest.scm" "guix.scm"))
+ (#f
+ (warning (G_ "no packages specified; creating an empty environment~%"))
+ opts)
+ (file
+ (if (authorized-shell-directory? (dirname file))
+ (begin
+ (info (G_ "loading environment from '~a'...~%") file)
+ (match (basename file)
+ ("guix.scm" (alist-cons 'load `(package ,file) opts))
+ ("manifest.scm" (alist-cons 'manifest file opts))))
+ (begin
+ (report-error
+ (G_ "not loading '~a' because not authorized to do so~%")
+ file)
+ (display-hint (format #f (G_ "To allow automatic loading of
+@file{~a} when running @command{guix shell}, you must explicitly authorize its
+directory, like so:
+
+@example
+echo ~a >> ~a
+@end example\n")
+ file
+ (dirname file)
+ (authorized-directory-file)))
+ (exit 1)))))))
+
+
+;;;
+;;; Profile cache.
+;;;
+
+(define %profile-cache-directory
+ ;; Directory where profiles created by 'guix shell' alone (without extra
+ ;; options) are cached.
+ (make-parameter (string-append (cache-directory #:ensure? #f)
+ "/profiles")))
+
+(define (profile-cache-key file)
+ "Return the cache key for the profile corresponding to FILE, a 'guix.scm' or
+'manifest.scm' file, or #f if we lack channel information."
+ (match (current-channels)
+ (() #f)
+ (((= channel-commit commits) ...)
+ (let ((stat (stat file)))
+ (bytevector->base32-string
+ ;; Since FILE is not canonicalized, only include the device/inode
+ ;; numbers. XXX: In some rare cases involving Btrfs and NFS, this can
+ ;; be insufficient: <https://lwn.net/Articles/866582/>.
+ (sha256 (string->utf8
+ (string-append (string-join commits) ":"
+ (number->string (stat:dev stat)) ":"
+ (number->string (stat:ino stat))))))))))
+
+(define (profile-cached-gc-root file)
+ "Return the cached GC root for FILE, a 'guix.scm' or 'manifest.scm' file, or
+#f if we lack information to cache it."
+ (match (profile-cache-key file)
+ (#f #f)
+ (key (string-append (%profile-cache-directory) "/" key))))
+
+
+;;;
+;;; One-time hints.
+;;;
+
+(define (hint-directory)
+ "Return the directory name where previously given hints are recorded."
+ (string-append (cache-directory #:ensure? #f) "/hints"))
+
+(define (hint-file hint)
+ "Return the name of the file that marks HINT as already printed."
+ (string-append (hint-directory) "/" (symbol->string hint)))
+
+(define (record-hint hint)
+ "Mark HINT as already given."
+ (let ((file (hint-file hint)))
+ (mkdir-p (dirname file))
+ (close-fdes (open-fdes file (logior O_CREAT O_WRONLY)))))
+
+(define (hint-given? hint)
+ "Return true if HINT was already given."
+ (file-exists? (hint-file hint)))
+
+
+(define-command (guix-shell . args)
+ (category development)
+ (synopsis "spawn one-off software environments")
+
+ (define (cache-entries directory)
+ (filter-map (match-lambda
+ ((or "." "..") #f)
+ (file (string-append directory "/" file)))
+ (or (scandir directory) '())))
+
+ (define* (entry-expiration file)
+ ;; Return the time at which FILE, a cached profile, is considered expired.
+ (match (false-if-exception (lstat file))
+ (#f 0) ;FILE may have been deleted in the meantime
+ (st (+ (stat:atime st) (* 60 60 24 7)))))
+
+ (define opts
+ (parse-args args))
+
+ (define interactive?
+ (not (assoc-ref opts 'exec)))
+
+ (if (assoc-ref opts 'check?)
+ (record-hint 'shell-check)
+ (when (and interactive?
+ (not (hint-given? 'shell-check))
+ (not (assoc-ref opts 'container?))
+ (not (assoc-ref opts 'search-paths)))
+ (display-hint (G_ "Consider passing the @option{--check} option once
+to make sure your shell does not clobber environment variables."))) )
+
+ (let ((result (guix-environment* opts)))
+ (maybe-remove-expired-cache-entries (%profile-cache-directory)
+ cache-entries
+ #:entry-expiration entry-expiration)
+ result))
diff --git a/guix/store.scm b/guix/store.scm
index 89a719bcfc..7388953d15 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -1349,11 +1349,14 @@ on the build output of a previous derivation."
(things unresolved-things)
(continuation unresolved-continuation))
-(define (build-accumulator continue store things mode)
- "This build handler accumulates THINGS and returns an <unresolved> object."
- (if (= mode (build-mode normal))
- (unresolved things continue)
- (continue #t)))
+(define (build-accumulator expected-store)
+ "Return a build handler that accumulates THINGS and returns an <unresolved>
+object, only for build requests on EXPECTED-STORE."
+ (lambda (continue store things mode)
+ (if (and (eq? store expected-store)
+ (= mode (build-mode normal)))
+ (unresolved things continue)
+ (continue #t))))
(define* (map/accumulate-builds store proc lst
#:key (cutoff 30))
@@ -1366,13 +1369,16 @@ CUTOFF is the threshold above which we stop accumulating unresolved nodes."
;; stumbling upon the same .drv build requests with many incoming edges.
;; See <https://bugs.gnu.org/49439>.
+ (define accumulator
+ (build-accumulator store))
+
(define-values (result rest)
(let loop ((lst lst)
(result '())
(unresolved 0))
(match lst
((head . tail)
- (match (with-build-handler build-accumulator
+ (match (with-build-handler accumulator
(proc head))
((? unresolved? obj)
(if (>= unresolved cutoff)
diff --git a/guix/ui.scm b/guix/ui.scm
index 1428c254b3..b01bb3d587 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -1431,10 +1431,22 @@ converted to a space; sequences of more than one line break are preserved."
(with-fluids ((%default-port-encoding "UTF-8"))
(stexi->plain-text (texi-fragment->stexi str))))
+(define (texi->plain-text* package str)
+ "Same as 'texi->plain-text', but gracefully handle Texinfo errors."
+ (catch 'parser-error
+ (lambda ()
+ (texi->plain-text str))
+ (lambda args
+ (warning (package-location package)
+ (G_ "~a: invalid Texinfo markup~%")
+ (package-full-name package))
+ str)))
+
(define (package-field-string package field-accessor)
"Return a plain-text representation of PACKAGE field."
(and=> (field-accessor package)
- (compose texi->plain-text P_)))
+ (lambda (str)
+ (texi->plain-text* package (P_ str)))))
(define (package-description-string package)
"Return a plain-text representation of PACKAGE description field."
@@ -1555,7 +1567,8 @@ HYPERLINKS? is true, emit hyperlink escape sequences when appropriate."
(parameterize ((%text-width width*))
;; Call 'texi->plain-text' on the concatenated string to account
;; for the width of "description:" in paragraph filling.
- (texi->plain-text
+ (texi->plain-text*
+ p
(string-append "description: "
(or (and=> (package-description p) P_)
""))))
@@ -2085,10 +2098,17 @@ contain a 'define-command' form."
(lambda (command)
(eq? category (command-category command))))
- (format #t (G_ "Usage: guix COMMAND ARGS...
-Run COMMAND with ARGS.\n"))
+ (display (G_ "Usage: guix OPTION | COMMAND ARGS...
+Run COMMAND with ARGS, if given.\n"))
+
+ (display (G_ "
+ -h, --help display this helpful text again and exit"))
+ (display (G_ "
+ -V, --version display version and copyright information and exit"))
+ (newline)
+
(newline)
- (format #t (G_ "COMMAND must be one of the sub-commands listed below:\n"))
+ (display (G_ "COMMAND must be one of the sub-commands listed below:\n"))
(let ((commands (commands))
(categories (module-ref (resolve-interface '(guix scripts))
diff --git a/po/guix/POTFILES.in b/po/guix/POTFILES.in
index d517d1ee0a..a8ce6c3e8f 100644
--- a/po/guix/POTFILES.in
+++ b/po/guix/POTFILES.in
@@ -140,6 +140,7 @@ guix/scripts/offload.scm
guix/scripts/perform-download.scm
guix/scripts/refresh.scm
guix/scripts/repl.scm
+guix/scripts/shell.scm
guix/scripts/style.scm
guix/scripts/system/reconfigure.scm
nix/nix-daemon/guix-daemon.cc
diff --git a/tests/guix-environment-container.sh b/tests/guix-environment-container.sh
index f2d15c8d0c..2e238c501d 100644
--- a/tests/guix-environment-container.sh
+++ b/tests/guix-environment-container.sh
@@ -44,6 +44,14 @@ else
test $? = 42
fi
+# Try '--root' and '--profile'.
+root="$tmpdir/root"
+guix environment -C --ad-hoc --bootstrap guile-bootstrap -r "$root" -- guile --version
+guix environment -C -p "$root" --bootstrap -- guile --version
+path1=$(guix environment -C -p "$root" --bootstrap -- guile -c '(display (getenv "PATH"))')
+path2=$(guix environment -C --ad-hoc --bootstrap guile-bootstrap -- guile -c '(display (getenv "PATH"))')
+test "$path1" = "$path2"
+
# Make sure "localhost" resolves.
guix environment --container --ad-hoc --bootstrap guile-bootstrap \
-- guile -c '(exit (pair? (getaddrinfo "localhost" "80")))'
diff --git a/tests/guix-environment.sh b/tests/guix-environment.sh
index fe2430b658..95fe95b437 100644
--- a/tests/guix-environment.sh
+++ b/tests/guix-environment.sh
@@ -119,6 +119,13 @@ test `readlink "$gcroot"` = "$expected"
guix environment --bootstrap -r "$gcroot" --ad-hoc guile-bootstrap \
-- guile -c 1
test `readlink "$gcroot"` = "$expected"
+
+# Make sure '-p' works as expected.
+test $(guix environment -p "$gcroot" -- "$SHELL" -c 'echo $GUIX_ENVIRONMENT') = "$expected"
+paths1="$(guix environment -p "$gcroot" --search-paths)"
+paths2="$(guix environment --bootstrap --ad-hoc guile-bootstrap --search-paths)"
+test "$paths1" = "$paths2"
+
rm "$gcroot"
# Try '-r' with a relative file name.
diff --git a/tests/guix-shell.sh b/tests/guix-shell.sh
new file mode 100644
index 0000000000..3bdf625189
--- /dev/null
+++ b/tests/guix-shell.sh
@@ -0,0 +1,102 @@
+# GNU Guix --- Functional package management for GNU
+# 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/>.
+
+#
+# Test the 'guix shell' alias.
+#
+
+guix shell --version
+
+configdir="t-guix-shell-config-$$"
+tmpdir="t-guix-shell-$$"
+trap 'rm -r "$tmpdir" "$configdir"' EXIT
+mkdir "$tmpdir" "$configdir" "$configdir/guix"
+
+XDG_CONFIG_HOME="$(realpath $configdir)"
+export XDG_CONFIG_HOME
+
+guix shell --bootstrap --pure guile-bootstrap -- guile --version
+
+# '--ad-hoc' is a thing of the past.
+! guix shell --ad-hoc guile-bootstrap
+
+# Ignoring unauthorized files.
+cat > "$tmpdir/guix.scm" <<EOF
+This is a broken guix.scm file.
+EOF
+! (cd "$tmpdir"; SHELL="$(type -P true)" guix shell --bootstrap 2> "stderr")
+grep "not authorized" "$tmpdir/stderr"
+rm "$tmpdir/stderr"
+
+# Authorize the directory.
+echo "$(realpath "$tmpdir")" > "$configdir/guix/shell-authorized-directories"
+
+# Ignoring 'manifest.scm' and 'guix.scm' in non-interactive use.
+(cd "$tmpdir"; guix shell --bootstrap -- true)
+mv "$tmpdir/guix.scm" "$tmpdir/manifest.scm"
+(cd "$tmpdir"; guix shell --bootstrap -- true)
+rm "$tmpdir/manifest.scm"
+
+# Honoring the local 'manifest.scm' file.
+cat > "$tmpdir/manifest.scm" <<EOF
+(specifications->manifest '("guile-bootstrap"))
+EOF
+cat > "$tmpdir/fake-shell.sh" <<EOF
+#!$SHELL
+# This fake shell allows us to test interactive use.
+exec echo "\$GUIX_ENVIRONMENT"
+EOF
+chmod +x "$tmpdir/fake-shell.sh"
+profile1="$(cd "$tmpdir"; SHELL="$(realpath fake-shell.sh)" guix shell --bootstrap)"
+profile2="$(guix shell --bootstrap guile-bootstrap -- "$SHELL" -c 'echo $GUIX_ENVIRONMENT')"
+test -n "$profile1"
+test "$profile1" = "$profile2"
+rm "$tmpdir/manifest.scm"
+
+# Do not read manifest when passed '-q'.
+echo "Broken manifest." > "$tmpdir/manifest.scm"
+(cd "$tmpdir"; SHELL="$(realpath fake-shell.sh)" guix shell --bootstrap -q)
+rm "$tmpdir/manifest.scm"
+
+if guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)' 2> /dev/null
+then
+ # Compute the build environment for the initial GNU Make.
+ guix shell --bootstrap --no-substitutes --search-paths --pure \
+ -D -e '(@ (guix tests) gnu-make-for-tests)' > "$tmpdir/a"
+
+ # Make sure bootstrap binaries are in the profile.
+ profile=`grep "^export PATH" "$tmpdir/a" | sed -r 's|^.*="(.*)/bin"|\1|'`
+
+ # Make sure the bootstrap binaries are all listed where they belong.
+ grep -E "^export PATH=\"$profile/bin\"" "$tmpdir/a"
+ grep -E "^export CPATH=\"$profile/include\"" "$tmpdir/a"
+ grep -E "^export LIBRARY_PATH=\"$profile/lib\"" "$tmpdir/a"
+ for dep in bootstrap-binaries-0 gcc-bootstrap-0 glibc-bootstrap-0
+ do
+ guix gc --references "$profile" | grep "$dep"
+ done
+
+ # 'make-boot0' itself must not be listed.
+ ! guix gc --references "$profile" | grep make-boot0
+
+ # Honoring the local 'guix.scm' file.
+ echo '(@ (guix tests) gnu-make-for-tests)' > "$tmpdir/guix.scm"
+ (cd "$tmpdir"; guix shell --bootstrap --search-paths --pure > "b")
+ cmp "$tmpdir/a" "$tmpdir/b"
+ rm "$tmpdir/guix.scm"
+fi
diff --git a/tests/home-import.scm b/tests/home-import.scm
new file mode 100644
index 0000000000..abd3cec43d
--- /dev/null
+++ b/tests/home-import.scm
@@ -0,0 +1,187 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (test-home-import)
+ #:use-module (guix scripts home import)
+ #:use-module (guix utils)
+ #:use-module (guix build utils)
+ #:use-module (guix packages)
+ #:use-module (ice-9 match)
+ #:use-module ((guix profiles) #:hide (manifest->code))
+ #:use-module ((guix build syscalls) #:select (mkdtemp!))
+ #:use-module ((guix scripts package)
+ #:select (manifest-entry-version-prefix))
+ #:use-module (gnu packages)
+ #:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-26)
+ #:use-module (srfi srfi-64))
+
+;; Test the (guix scripts home import) tools.
+
+(test-begin "home-import")
+
+;; Example manifest entries.
+
+(define guile-2.0.9
+ (manifest-entry
+ (name "guile")
+ (version "2.0.9")
+ (item "/gnu/store/...")))
+
+(define glibc
+ (manifest-entry
+ (name "glibc")
+ (version "2.19")
+ (item "/gnu/store/...")))
+
+(define gcc
+ (manifest-entry
+ (name "gcc")
+ (version "10.3.0")
+ (item "/gnu/store/...")))
+
+;; Helpers for checking and generating home environments.
+
+(define %destination-directory "/tmp/guix-config")
+(mkdir-p %destination-directory)
+
+(define %temporary-home-directory (mkdtemp! "/tmp/guix-home-import.XXXXXX"))
+
+(define-syntax-rule (define-home-environment-matcher name pattern)
+ (define (name obj)
+ (match obj
+ (pattern #t)
+ (x (pk 'fail x #f)))))
+
+(define (create-temporary-home files-alist)
+ "Create a temporary home directory in '%temporary-home-directory'.
+FILES-ALIST is an association list of files and the content of the
+corresponding file."
+ (define (create-file file content)
+ (let ((absolute-path (string-append %temporary-home-directory "/" file)))
+ (unless (file-exists? absolute-path)
+ (mkdir-p (dirname absolute-path)))
+ (call-with-output-file absolute-path
+ (cut display content <>))))
+
+ (for-each (match-lambda
+ ((file . content) (create-file file content)))
+ files-alist))
+
+(define (eval-test-with-home-environment files-alist manifest matcher)
+ (create-temporary-home files-alist)
+ (setenv "HOME" %temporary-home-directory)
+ (mkdir-p %temporary-home-directory)
+ (let* ((home-environment (manifest+configuration-files->code
+ manifest %destination-directory))
+ (result (matcher home-environment)))
+ (delete-file-recursively %temporary-home-directory)
+ result))
+
+(define-home-environment-matcher match-home-environment-no-services
+ ('begin
+ ('use-modules
+ ('gnu 'home)
+ ('gnu 'packages)
+ ('gnu 'services))
+ ('home-environment
+ ('packages
+ ('map 'specification->package
+ ('list "guile@2.0.9" "gcc" "glibc@2.19")))
+ ('services
+ ('list)))))
+
+(define-home-environment-matcher match-home-environment-transformations
+ ('begin
+ ('use-modules
+ ('gnu 'home)
+ ('gnu 'packages)
+ ('gnu 'services)
+ ('guix 'transformations))
+
+ ('define transform ('options->transformation _))
+ ('home-environment
+ ('packages
+ ('list (transform ('specification->package "guile@2.0.9"))
+ ('specification->package "gcc")
+ ('specification->package "glibc@2.19")))
+ ('services ('list)))))
+
+(define-home-environment-matcher match-home-environment-no-services-nor-packages
+ ('begin
+ ('use-modules
+ ('gnu 'home)
+ ('gnu 'packages)
+ ('gnu 'services))
+ ('home-environment
+ ('packages
+ ('map 'specification->package
+ ('list)))
+ ('services
+ ('list)))))
+
+(define-home-environment-matcher match-home-environment-bash-service
+ ('begin
+ ('use-modules
+ ('gnu 'home)
+ ('gnu 'packages)
+ ('gnu 'services)
+ ('guix 'gexp)
+ ('gnu 'home 'services 'shells))
+ ('home-environment
+ ('packages
+ ('map 'specification->package
+ ('list)))
+ ('services
+ ('list ('service
+ 'home-bash-service-type
+ ('home-bash-configuration
+ ('bashrc
+ ('list ('local-file "/tmp/guix-config/.bashrc"
+ "bashrc"))))))))))
+
+
+(test-assert "manifest->code: No services"
+ (eval-test-with-home-environment
+ '()
+ (make-manifest (list guile-2.0.9 gcc glibc))
+ match-home-environment-no-services))
+
+(test-assert "manifest->code: No services, package transformations"
+ (eval-test-with-home-environment
+ '()
+ (make-manifest (list (manifest-entry
+ (inherit guile-2.0.9)
+ (properties `((transformations
+ . ((foo . "bar"))))))
+ gcc glibc))
+ match-home-environment-transformations))
+
+(test-assert "manifest->code: No packages nor services"
+ (eval-test-with-home-environment
+ '()
+ (make-manifest '())
+ match-home-environment-no-services-nor-packages))
+
+(test-assert "manifest->code: Bash service"
+ (eval-test-with-home-environment
+ '((".bashrc" . "echo 'hello guix'"))
+ (make-manifest '())
+ match-home-environment-bash-service))
+
+(test-end "home-import")
diff --git a/tests/lint.scm b/tests/lint.scm
index ddef50b98b..a2e9699d5a 100644
--- a/tests/lint.scm
+++ b/tests/lint.scm
@@ -177,6 +177,20 @@
(description "Whitespace. "))))
(check-description-style pkg))))
+(test-equal "description: pluralized 'This package'"
+ "description contains typo 'This packages', should be 'This package'"
+ (single-lint-warning-message
+ (let ((pkg (dummy-package "x"
+ (description "This packages is a typo."))))
+ (check-description-style pkg))))
+
+(test-equal "description: grammar 'allows to'"
+ "description contains typo 'allows to'"
+ (single-lint-warning-message
+ (let ((pkg (dummy-package "x"
+ (description "This package allows to do stuff."))))
+ (check-description-style pkg))))
+
(test-equal "synopsis: not a string"
"invalid synopsis: #f"
(single-lint-warning-message
diff --git a/tests/packages.scm b/tests/packages.scm
index a9494b5c0e..3506f94f91 100644
--- a/tests/packages.scm
+++ b/tests/packages.scm
@@ -358,6 +358,20 @@
(package-transitive-supported-systems d)
(package-transitive-supported-systems e))))
+(test-assert "package-development-inputs"
+ ;; Note: Due to propagated inputs, 'package-development-inputs' returns a
+ ;; couple more inputs, such as 'linux-libre-headers'.
+ (lset<= equal?
+ `(("source" ,(package-source hello)) ,@(standard-packages))
+ (package-development-inputs hello)))
+
+(test-assert "package-development-inputs, cross-compilation"
+ (lset<= equal?
+ `(("source" ,(package-source hello))
+ ,@(standard-cross-packages "mips64el-linux-gnu" 'host)
+ ,@(standard-cross-packages "mips64el-linux-gnu" 'target))
+ (package-development-inputs hello #:target "mips64el-linux-gnu")))
+
(test-assert "package-closure"
(let-syntax ((dummy-package/no-implicit
(syntax-rules ()
diff --git a/tests/profiles.scm b/tests/profiles.scm
index 06a0387221..cac5b73347 100644
--- a/tests/profiles.scm
+++ b/tests/profiles.scm
@@ -265,6 +265,13 @@
(manifest-transaction-removal-candidate? guile-2.0.9 t)
(null? install) (null? downgrade) (null? upgrade)))))
+(test-assert "package->development-manifest"
+ (let ((manifest (package->development-manifest packages:hello)))
+ (every (lambda (name)
+ (manifest-installed? manifest
+ (manifest-pattern (name name))))
+ '("gcc" "binutils" "glibc" "coreutils" "grep" "sed"))))
+
(test-assertm "profile-derivation"
(mlet* %store-monad
((entry -> (package->manifest-entry %bootstrap-guile))
diff --git a/tests/store.scm b/tests/store.scm
index d895a328a4..7fc2988476 100644
--- a/tests/store.scm
+++ b/tests/store.scm
@@ -490,6 +490,34 @@
(equal? (map derivation-file-name (drop d 16)) batch3)
lst)))))
+(test-equal "map/accumulate-builds and different store"
+ '(d2) ;see <https://issues.guix.gnu.org/46756>
+ (let* ((b (add-text-to-store %store "build" "echo $foo > $out" '()))
+ (s (add-to-store %store "bash" #t "sha256"
+ (search-bootstrap-binary "bash"
+ (%current-system))))
+ (d1 (derivation %store "first"
+ s `("-e" ,b)
+ #:env-vars `(("foo" . ,(random-text)))
+ #:sources (list b s)))
+ (d2 (derivation %store "second"
+ s `("-e" ,b)
+ #:env-vars `(("foo" . ,(random-text))
+ ("bar" . "baz"))
+ #:sources (list b s))))
+ (with-store alternate-store
+ (with-build-handler (lambda (continue store things mode)
+ ;; If this handler is called, it means that
+ ;; 'map/accumulate-builds' triggered a build,
+ ;; which it shouldn't since the inner
+ ;; 'build-derivations' call is for another store.
+ 'failed)
+ (map/accumulate-builds %store
+ (lambda (drv)
+ (build-derivations alternate-store (list d2))
+ 'd2)
+ (list d1))))))
+
(test-assert "mapm/accumulate-builds"
(let* ((d1 (run-with-store %store
(gexp->derivation "foo" #~(mkdir #$output))))
diff --git a/tests/syscalls.scm b/tests/syscalls.scm
index 706dd4177f..c9e011f453 100644
--- a/tests/syscalls.scm
+++ b/tests/syscalls.scm
@@ -26,6 +26,7 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-64)
+ #:use-module (srfi srfi-71)
#:use-module (system foreign)
#:use-module ((ice-9 ftw) #:select (scandir))
#:use-module (ice-9 match))
@@ -582,6 +583,40 @@
(test-assert "terminal-rows"
(> (terminal-rows) 0))
+(test-assert "openpty"
+ (let ((head inferior (openpty)))
+ (and (integer? head) (integer? inferior)
+ (let ((port (fdopen inferior "r+0")))
+ (and (isatty? port)
+ (begin
+ (close-port port)
+ (close-fdes head)
+ #t))))))
+
+(test-equal "openpty + login-tty"
+ '(hello world)
+ (let ((head inferior (openpty)))
+ (match (primitive-fork)
+ (0
+ (dynamic-wind
+ (const #t)
+ (lambda ()
+ (setvbuf (current-input-port) 'none)
+ (close-fdes head)
+ (login-tty inferior)
+ (write (read))
+ (read)) ;this gets EIO when HEAD is closed
+ (lambda ()
+ (primitive-_exit 42))))
+ (pid
+ (close-fdes inferior)
+ (let ((head (fdopen head "r+0")))
+ (write '(hello world) head)
+ (let ((result (read head)))
+ (close-port head)
+ (waitpid pid)
+ result))))))
+
(test-assert "utmpx-entries"
(match (utmpx-entries)
(((? utmpx? entries) ...)