diff options
author | Efraim Flashner <efraim@flashner.co.il> | 2021-10-31 12:47:14 +0200 |
---|---|---|
committer | Efraim Flashner <efraim@flashner.co.il> | 2021-10-31 14:49:47 +0200 |
commit | bc5155b952ae8bdbc56aded4d8d39768b4e2a7d4 (patch) | |
tree | 6b55475d86c522543384dea7d1ab66bba32af63e | |
parent | dac8d013bd1fc7f57b8ba3582eef6e0e01b23dfd (diff) | |
parent | 4e5000114ec01b5e92a87c52f2a10f9ba7a601c8 (diff) | |
download | guix-bc5155b952ae8bdbc56aded4d8d39768b4e2a7d4.tar guix-bc5155b952ae8bdbc56aded4d8d39768b4e2a7d4.tar.gz |
Merge remote-tracking branch 'origin/master' into core-updates-frozen
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) ...) |