diff options
author | Ludovic Courtès <ludo@gnu.org> | 2022-06-22 18:48:00 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2022-06-22 18:48:00 +0200 |
commit | 8655a714457dbf1cde45979507012d9515614028 (patch) | |
tree | 7712625328f45794ccda9baa730a4825bb2efb47 | |
parent | a589049e141588ebcf4079116e378d60b779f6b4 (diff) | |
parent | 2af3f5eef045f7d177cc394c89be069bac895688 (diff) |
Merge branch master into core-updates
182 files changed, 9538 insertions, 3859 deletions
diff --git a/Makefile.am b/Makefile.am index 392fd5894a..254968244c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -97,7 +97,6 @@ MODULES = \ guix/discovery.scm \ guix/android-repo-download.scm \ guix/bzr-download.scm \ - guix/extracting-download.scm \ guix/git-download.scm \ guix/hg-download.scm \ guix/hash.scm \ @@ -173,6 +172,7 @@ MODULES = \ guix/build-system/waf.scm \ guix/build-system/r.scm \ guix/build-system/rakudo.scm \ + guix/build-system/rebar.scm \ guix/build-system/ruby.scm \ guix/build-system/scons.scm \ guix/build-system/texlive.scm \ @@ -227,6 +227,7 @@ MODULES = \ guix/build/r-build-system.scm \ guix/build/renpy-build-system.scm \ guix/build/rakudo-build-system.scm \ + guix/build/rebar-build-system.scm \ guix/build/ruby-build-system.scm \ guix/build/scons-build-system.scm \ guix/build/texlive-build-system.scm \ @@ -275,6 +276,7 @@ MODULES = \ guix/import/gnu.scm \ guix/import/go.scm \ guix/import/hackage.scm \ + guix/import/hexpm.scm \ guix/import/json.scm \ guix/import/kde.scm \ guix/import/launchpad.scm \ @@ -326,6 +328,7 @@ MODULES = \ guix/scripts/import/gnu.scm \ guix/scripts/import/go.scm \ guix/scripts/import/hackage.scm \ + guix/scripts/import/hexpm.scm \ guix/scripts/import/json.scm \ guix/scripts/import/minetest.scm \ guix/scripts/import/opam.scm \ @@ -470,6 +473,7 @@ SCM_TESTS = \ tests/boot-parameters.scm \ tests/bournish.scm \ tests/builders.scm \ + tests/build-emacs-utils.scm \ tests/build-utils.scm \ tests/cache.scm \ tests/challenge.scm \ diff --git a/doc/build.scm b/doc/build.scm index cf3e5d2830..7d0db8621f 100644 --- a/doc/build.scm +++ b/doc/build.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019-2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> +;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -30,6 +31,7 @@ (guix gexp) (guix git) (guix git-download) + (guix profiles) (guix utils) (git) (gnu packages base) @@ -890,14 +892,22 @@ makeinfo OPTIONS." #:languages languages #:date date)) - ;; FIXME: This union works, except for the table of contents of non-English - ;; manuals, which contains escape sequences like "^^ca^^fe" instead of - ;; accented letters. - ;; - ;; (define texlive - ;; (texlive-updmap.cfg (list texlive-tex-texinfo - ;; texlive-generic-epsf - ;; texlive-fonts-ec))) + (define texinfo-profile + (profile + (content (packages->manifest + ;; texi2dvi requires various command line tools. + (list coreutils + diffutils + gawk + grep + sed + tar + texinfo + texlive-base + texlive-bin ;for GUIX_TEXMF + texlive-epsf + texlive-fonts-ec + texlive-tex-texinfo))))) (define build (with-imported-modules '((guix build utils)) @@ -914,21 +924,12 @@ makeinfo OPTIONS." (string-downcase language))) ;; Install a UTF-8 locale so that 'makeinfo' is at ease. - (setenv "GUIX_LOCPATH" - #+(file-append glibc-utf8-locales "/lib/locale")) + (setenv "GUIX_LOCPATH" #+(file-append glibc-utf8-locales + "/lib/locale")) (setenv "LC_ALL" "en_US.utf8") - (setenv "PATH" - (string-append #+(file-append texlive "/bin") ":" - #+(file-append texinfo "/bin") ":" - - ;; Below are command-line tools needed by - ;; 'texi2dvi' and friends. - #+(file-append sed "/bin") ":" - #+(file-append grep "/bin") ":" - #+(file-append coreutils "/bin") ":" - #+(file-append gawk "/bin") ":" - #+(file-append tar "/bin") ":" - #+(file-append diffutils "/bin"))) + (setenv "PATH" #+(file-append texinfo-profile "/bin")) + (setenv "GUIX_TEXMF" #+(file-append texinfo-profile + "/share/texmf-dist")) (setvbuf (current-output-port) 'line) (setvbuf (current-error-port) 'line) diff --git a/doc/guix.texi b/doc/guix.texi index 7b4e60c47e..2c144ee7e4 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -48,7 +48,7 @@ Copyright @copyright{} 2017 Thomas Danckaert@* Copyright @copyright{} 2017 humanitiesNerd@* Copyright @copyright{} 2017, 2021 Christine Lemmer-Webber@* Copyright @copyright{} 2017, 2018, 2019, 2020, 2021, 2022 Marius Bakke@* -Copyright @copyright{} 2017, 2019, 2020 Hartmut Goebel@* +Copyright @copyright{} 2017, 2019, 2020, 2022 Hartmut Goebel@* Copyright @copyright{} 2017, 2019, 2020, 2021 Maxim Cournoyer@* Copyright @copyright{} 2017–2022 Tobias Geerinckx-Rice@* Copyright @copyright{} 2017 George Clemmer@* @@ -96,14 +96,15 @@ Copyright @copyright{} 2021 Domagoj Stolfa@* Copyright @copyright{} 2021 Hui Lu@* Copyright @copyright{} 2021 pukkamustard@* Copyright @copyright{} 2021 Alice Brenon@* -Copyright @copyright{} 2021 Josselin Poiret@* +Copyright @copyright{} 2021, 2022 Josselin Poiret@* +Copyright @copyright{} 2021 muradm@* Copyright @copyright{} 2021 Andrew Tropin@* Copyright @copyright{} 2021 Sarah Morgensen@* -Copyright @copyright{} 2021 Josselin Poiret@* Copyright @copyright{} 2022 Remco van 't Veer@* Copyright @copyright{} 2022 Aleksandr Vityazev@* Copyright @copyright{} 2022 Philip M@sup{c}Grath@* Copyright @copyright{} 2022 Karl Hallsby@* +Copyright @copyright{} 2022 Justin Veilleux@* Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or @@ -169,6 +170,7 @@ Weblate} (@pxref{Translating Guix}). * Introduction:: What is Guix about? * Installation:: Installing Guix. * System Installation:: Installing the whole operating system. +* System Troubleshooting Tips:: When things don't go as planned. * Getting Started:: Your first steps. * Package Management:: Package installation, upgrade, etc. * Channels:: Customizing the package collection. @@ -227,6 +229,10 @@ System Installation * Installing Guix in a VM:: Guix System playground. * Building the Installation Image:: How this comes to be. +System Troubleshooting Tips + +* Chrooting into an existing system:: Fixing things from a chroot + Manual Installation * Keyboard Layout and Networking and Partitioning:: Initial setup. @@ -339,7 +345,7 @@ System Configuration * Keyboard Layout:: How the system interprets key strokes. * Locales:: Language and cultural convention settings. * Services:: Specifying system services. -* Setuid Programs:: Programs running with root privileges. +* Setuid Programs:: Programs running with elevated privileges. * X.509 Certificates:: Authenticating HTTPS servers. * Name Service Switch:: Configuring libc's name service switch. * Initial RAM Disk:: Linux-Libre bootstrapping. @@ -1147,12 +1153,12 @@ using @code{-G guixbuild,kvm} instead of @code{-G guixbuild} The @code{guix-daemon} program may then be run as @code{root} with the following command@footnote{If your machine uses the systemd init system, -dropping the @file{@var{prefix}/lib/systemd/system/guix-daemon.service} -file in @file{/etc/systemd/system} will ensure that +copying the @file{@var{prefix}/lib/systemd/system/guix-daemon.service} +file to @file{/etc/systemd/system} will ensure that @command{guix-daemon} is automatically started. Similarly, if your -machine uses the Upstart init system, drop the +machine uses the Upstart init system, copy the @file{@var{prefix}/lib/upstart/system/guix-daemon.conf} -file in @file{/etc/init}.}: +file to @file{/etc/init}.}: @example # guix-daemon --build-users-group=guixbuild @@ -2368,6 +2374,7 @@ See the files under @file{/run/current-system/profile/share/keymaps} for a list of available keyboard layouts. Run @command{man loadkeys} for more information. +@anchor{manual-installation-networking} @subsubsection Networking Run the following command to see what your network interfaces are called: @@ -2822,6 +2829,119 @@ guix system image --system=armhf-linux -e '((@@ (gnu system install) os-with-u-b board, a list of possible boards will be printed. @c ********************************************************************* +@cindex troubleshooting, guix system +@cindex guix system troubleshooting +@node System Troubleshooting Tips +@chapter System Troubleshooting Tips + +Guix System allows rebooting into a previous generation should the last +one be malfunctioning, which makes it quite robust against being broken +irreversibly. This feature depends on GRUB being correctly functioning +though, which means that if for whatever reasons your GRUB installation +becomes corrupted during a system reconfiguration, you may not be able +to easily boot into a previous generation. A technique that can be used +in this case is to @i{chroot} into your broken system and reconfigure it +from there. Such technique is explained below. + +@cindex chroot, guix system +@cindex chrooting, guix system +@cindex repairing GRUB, via chroot +@node Chrooting into an existing system +@section Chrooting into an existing system + +This section details how to @i{chroot} to an already installed Guix +System with the aim of reconfiguring it, for example to fix a broken +GRUB installation. The process is similar to how it would be done on +other GNU/Linux systems, but there are some Guix System particularities +such as the daemon and profiles that make it worthy of explaining here. + +@enumerate +@item +Obtain a bootable image of Guix System. It is recommended the latest +development snapshot so the kernel and the tools used are at least as as +new as those of your installed system; it can be retrieved from the +@url{https://ci.guix.gnu.org/search/latest/ISO-9660?query=spec:images+status:success+system:x86_64-linux+image.iso, +https://ci.guix.gnu.org} URL. Follow the @pxref{USB Stick and DVD +Installation} section for copying it to a bootable media. + +@item +Boot the image, and proceed with the graphical text-based installer +until your network is configured. Alternatively, you could configure +the network manually by following the +@ref{manual-installation-networking} section. If you get the error +@samp{RTNETLINK answers: Operation not possible due to RF-kill}, try +@samp{rfkill list} followed by @samp{rfkill unblock 0}, where @samp{0} +is your device identifier (ID). + +@item +Switch to a virtual console (tty) if you haven't already by pressing +simultaneously the @kbd{Control + Alt + F4} keys. Mount your file +system at @file{/mnt}. Assuming your root partition is +@file{/dev/sda2}, you would do: + +@example sh +mount /dev/sda2 /mnt +@end example + +@item +Mount special block devices and Linux-specific directories: + +@example sh +mount --bind /proc /mnt/proc +mount --bind /sys /mnt/sys +mount --bind /dev /mnt/dev +@end example + +If your system is EFI-based, you must also mount the ESP partition. +Assuming it is @file{/dev/sda1}, you can do so with: + +@example sh +mount /dev/sda1 /mnt/boot/efi +@end example + +@item +Enter your system via chroot: + +@example sh +chroot /mnt /bin/sh +@end example + +@item +Source your @var{user} profile to setup the environment, where +@var{user} is the user name used for the Guix System you are attempting +to repair: + +@example sh +source /home/@var{user}/.guix-profile/etc/profile +@end example + +To ensure you are working with the Guix revision you normally would as +your normal user, also source your current Guix profile: + +@example sh +source /home/@var{user}/.config/guix/current/etc/profile +@end example + +@item +Start a minimal @command{guix-daemon} in the background: + +@example sh +guix-daemon --build-users-group=guixbuild --disable-chroot & +@end example + +@item +Edit your Guix System configuration if needed, then reconfigure with: + +@example sh +guix system reconfigure your-config.scm +@end example + +@item +Finally, you should be good to reboot the system to test your fix. + +@end enumerate + +@c ********************************************************************* @node Getting Started @chapter Getting Started @@ -9148,6 +9268,49 @@ with @code{#:zef} or removed by passing @code{#f} to the @code{with-zef?} parameter. @end defvr +@defvr {Scheme Variable} rebar-build-system +This variable is exported by @code{(guix build-system rebar)}. It +implements a build procedure around @uref{https://rebar3.org,rebar3}, +a build system for programs written in the Erlang language. + +It adds both @code{rebar3} and the @code{erlang} to the set of inputs. +Different packages can be specified with the @code{#:rebar} and +@code{#:erlang} parameters, respectively. + +This build system is based on @code{gnu-build-system}, but with the +following phases changed: + +@table @code + +@item unpack +This phase, after unpacking the source like the @code{gnu-build-system} +does, checks for a file @code{contents.tar.gz} at the top-level of the +source. If this file exists, it will be unpacked, too. This eases +handling of package hosted at @uref{https://hex.pm/}, +the Erlang and Elixir package repository. + +@item bootstrap +@item configure +There are no @code{bootstrap} and @code{configure} phase because erlang +packages typically don’t need to be configured. + +@item build +This phase runs @code{rebar3 compile} +with the flags listed in @code{#:rebar-flags}. + +@item check +Unless @code{#:tests? #f} is passed, +this phase runs @code{rebar3 eunit}, +or some other target specified with @code{#:test-target}, +with the flags listed in @code{#:rebar-flags}, + +@item install +This installs the files created in the @i{default} profile, or some +other profile specified with @code{#:install-profile}. + +@end table +@end defvr + @defvr {Scheme Variable} texlive-build-system This variable is exported by @code{(guix build-system texlive)}. It is used to build TeX packages in batch mode with a specified engine. The @@ -13307,6 +13470,33 @@ Traverse the dependency graph of the given upstream package recursively and generate package expressions for all those packages that are not yet in Guix. @end table + +@item hexpm +@cindex hexpm +Import metadata from the hex.pm Erlang and Elixir package repository +@uref{https://hex.pm, hex.pm}, as in this example: + +@example +guix import hexpm stun +@end example + +The importer tries to determine the build system used by the package. + +The hexpm importer also allows you to specify a version string: + +@example +guix import hexpm cf@@0.3.0 +@end example + +Additional options include: + +@table @code +@item --recursive +@itemx -r +Traverse the dependency graph of the given upstream package recursively +and generate package expressions for all those packages that are not yet +in Guix. +@end table @end table The structure of the @command{guix import} code is modular. It would be @@ -15423,7 +15613,7 @@ instance to support new system services. * Keyboard Layout:: How the system interprets key strokes. * Locales:: Language and cultural convention settings. * Services:: Specifying system services. -* Setuid Programs:: Programs running with root privileges. +* Setuid Programs:: Programs running with elevated privileges. * X.509 Certificates:: Authenticating HTTPS servers. * Name Service Switch:: Configuring libc's name service switch. * Initial RAM Disk:: Linux-Libre bootstrapping. @@ -17739,6 +17929,25 @@ A directory path where the @command{guix-daemon} will perform builds. @end table @end deftp +@deftp {Data Type} guix-extension + +This data type represents the parameters of the Guix build daemon that +are extendable. This is the type of the object that must be used within +a guix service extension. +@xref{Service Composition}, for more information. + +@table @asis +@item @code{authorized-keys} (default: @code{'()}) +A list of file-like objects where each element contains a public key. + +@item @code{substitute-urls} (default: @code{'()}) +A list of strings where each element is a substitute URL. + +@item @code{chroot-directories} (default: @code{'()}) +A list of file-like objects or strings pointing to additional directories the build daemon can use. +@end table +@end deftp + @deffn {Scheme Procedure} udev-service [#:udev @var{eudev} #:rules @code{'()}] Run @var{udev}, which populates the @file{/dev} directory dynamically. udev rules can be provided as a list of files through the @var{rules} @@ -18028,6 +18237,142 @@ about the Pluggable Authentication Module (PAM) limits, refer to the @samp{pam_limits} man page from the @code{linux-pam} package. @end deffn +@defvr {Scheme Variable} greetd-service-type +@uref{https://git.sr.ht/~kennylevinsen/greetd, @code{greetd}} is a minimal and +flexible login manager daemon, that makes no assumptions about what you +want to launch. + +If you can run it from your shell in a TTY, greetd can start it. If it +can be taught to speak a simple JSON-based IPC protocol, then it can be +a geeter. + +@code{greetd-service-type} provides necessary infrastructure for logging +in users, including: + +@itemize @bullet +@item +@code{greetd} PAM service + +@item +Special variation of @code{pam-mount} to mount @code{XDG_RUNTIME_DIR} +@end itemize + +Here is example of switching from @code{mingetty-service-type} to +@code{greetd-service-type}, and how different terminals could be: + +@lisp + (append + (modify-services %base-services + ;; greetd-service-type provides "greetd" PAM service + (delete login-service-type) + ;; and can be used in place of mingetty-service-type + (delete mingetty-service-type)) + (list + (service greetd-service-type + (greetd-configuration + (terminals + (list + ;; we can make any terminal active by default + (greetd-terminal-configuration (terminal-vt "1") (terminal-switch #t)) + ;; we can make environment without XDG_RUNTIME_DIR set + ;; even provide our own environment variables + (greetd-terminal-configuration + (terminal-vt "2") + (default-session-command + (greetd-agreety-session + (extra-env '(("MY_VAR" . "1"))) + (xdg-env? #f)))) + ;; we can use different shell instead of default bash + (greetd-terminal-configuration + (terminal-vt "3") + (default-session-command + (greetd-agreety-session (command (file-append zsh "/bin/zsh"))))) + ;; we can use any other executable command as greeter + (greetd-terminal-configuration + (terminal-vt "4") + (default-session-command (program-file "my-noop-greeter" #~(exit)))) + (greetd-terminal-configuration (terminal-vt "5")) + (greetd-terminal-configuration (terminal-vt "6")))))) + ;; mingetty-service-type can be used in parallel + ;; if needed to do so, do not (delete login-service-type) + ;; as illustrated above + #| (service mingetty-service-type (mingetty-configuration (tty "tty8"))) |#)) +@end lisp +@end defvr + +@deftp {Data Type} greetd-configuration +Configuration record for the @code{greetd-service-type}. +@table @asis + +@item @code{motd} +A file-like object containing the ``message of the day''. + +@item @code{allow-empty-passwords?} (default: @code{#t}) +Allow empty passwords by default so that first-time users can log in when +the 'root' account has just been created. + +@item @code{terminals} (default: @code{'()}) +List of @code{greetd-terminal-configuration} per terminal for which +@code{greetd} should be started. +@end table +@end deftp + +@deftp {Data Type} greetd-terminal-configuration +Configuration record for per terminal greetd daemon service. + +@table @asis +@item @code{greetd} (default: @code{greetd}) +The greetd package to use. + +@item @code{config-file-name} +Configuration file name to use for greetd daemon. Generally, autogenerated +derivation based on @code{terminal-vt} value. + +@item @code{log-file-name} +Log file name to use for greetd daemon. Generally, autogenerated +name based on @code{terminal-vt} value. + +@item @code{terminal-vt} (default: @samp{"7"}) +The VT to run on. Use of a specific VT with appropriate conflict avoidance +is recommended. + +@item @code{terminal-switch} (default: @code{#f}) +Make this terminal active on start of @code{greetd}. + +@item @code{default-session-user} (default: @samp{"greeter"}) +The user to use for running the greeter. + +@item @code{default-session-command} (default: @code{(greetd-agreety-session)}) +Can be either instance of @code{greetd-agreety-session} configuration or +@code{gexp->script} like object to use as greeter. + +@end table +@end deftp + +@deftp {Data Type} greetd-agreety-session +Configuration record for the agreety greetd greeter. + +@table @asis +@item @code{agreety} (default: @code{greetd}) +The package with @command{/bin/agreety} command. + +@item @code{command} (default: @code{(file-append bash "/bin/bash")}) +Command to be started by @command{/bin/agreety} on successful login. + +@item @code{command-args} (default: @code{'("-l")}) +Command arguments to pass to command. + +@item @code{extra-env} (default: @code{'()}) +Extra environment variables to set on login. + +@item @code{xdg-env?} (default: @code{#t}) +If true @code{XDG_RUNTIME_DIR} and @code{XDG_SESSION_TYPE} will be set +before starting command. One should note that, @code{extra-env} variables +are set right after mentioned variables, so that they can be overriden. + +@end table +@end deftp + @node Scheduled Job Execution @subsection Scheduled Job Execution @@ -19200,15 +19545,16 @@ The node host name that is used to make the first connection to the network. A specific port value can be provided by appending the @code{:PORT} suffix. By default, it uses the Jami bootstrap nodes, but any host can be specified here. It's also possible to disable -bootsrapping by setting this to the @code{'disabled} symbol. +bootsrapping by explicitly setting this to the @code{*unspecified*} +value. Defaults to @samp{"bootstrap.jami.net:4222"}. @end deftypevr @deftypevr {@code{opendht-configuration} parameter} maybe-number port -The UDP port to bind to. When set to @code{'disabled}, an available -port is automatically selected. +The UDP port to bind to. When explicitly set to @code{*unspecified*}, +an available port is automatically selected. Defaults to @samp{4222}. @@ -21724,9 +22070,14 @@ The actual service definitions included in @code{%desktop-services} and provided by @code{(gnu services dbus)} and @code{(gnu services desktop)} are described below. -@deffn {Scheme Procedure} dbus-service [#:dbus @var{dbus}] [#:services '()] +@deffn {Scheme Procedure} dbus-service [#:dbus @var{dbus}] [#:services '()] @ + [#:verbose?] Return a service that runs the ``system bus'', using @var{dbus}, with -support for @var{services}. +support for @var{services}. When @var{verbose?} is true, it causes the +@samp{DBUS_VERBOSE} environment variable to be set to @samp{1}; a +verbose-enabled D-Bus package such as @code{dbus-verbose} should be +provided as @var{dbus} in this scenario. The verbose output is logged +to @file{/var/log/dbus-daemon.log}. @uref{https://dbus.freedesktop.org/, D-Bus} is an inter-process communication facility. Its system bus is used to allow system services to communicate @@ -22500,6 +22851,52 @@ and ``passwd'' is with the value @code{passwd}. @end table @end deftp +@defvr {Scheme Variable} seatd-service-type +@uref{https://sr.ht/~kennylevinsen/seatd/, seatd} is a minimal seat +management daemon. + +Seat management takes care of mediating access to shared devices (graphics, +input), without requiring the applications needing access to be root. + +@lisp +(append + (list + ;; make sure seatd is running + (service seatd-service-type)) + + ;; normally one would want %base-services + %base-services) + +@end lisp +@end defvr + +@deftp {Data Type} seatd-configuration +Configuration record for the seatd daemon service. + +@table @asis +@item @code{seatd} (default: @code{seatd}) +The seatd package to use. + +@item @code{user} (default: @samp{"root"}) +User to own the seatd socket. + +@item @code{group} (default: @samp{"users"}) +Group to own the seatd socket. + +@item @code{socket} (default: @samp{"/run/seatd.sock"}) +Where to create the seatd socket. + +@item @code{logfile} (default: @samp{"/var/log/seatd.log"}) +Log file to write to. + +@item @code{loglevel} (default: @samp{"error"}) +Log level to output logs. Possible values: @samp{"silent"}, @samp{"error"}, +@samp{"info"} and @samp{"debug"}. + +@end table +@end deftp + + @node Sound Services @subsection Sound Services @@ -24923,7 +25320,7 @@ The available configuration parameters follow. Each parameter definition is preceded by its type; for example, @samp{string-list foo} indicates that the @code{foo} parameter should be specified as a list of strings. Types starting with @code{maybe-} denote parameters that won't -show up in @code{prosody.cfg.lua} when their value is @code{'disabled}. +show up in @code{prosody.cfg.lua} when their value is left unspecified. There is also a way to specify the configuration as a string, if you have an old @code{prosody.cfg.lua} file that you want to port over from @@ -25519,10 +25916,10 @@ The complete set of available configuration options is detailed below. Available @code{jami-configuration} fields are: @table @asis -@item @code{jamid} (default: @code{libjami}) (type: package) +@item @code{libjami} (default: @code{libjami}) (type: package) The Jami daemon package to use. -@item @code{dbus} (default: @code{dbus}) (type: package) +@item @code{dbus} (default: @code{dbus-for-jami}) (type: package) The D-Bus package to use to start the required D-Bus session. @item @code{nss-certs} (default: @code{nss-certs}) (type: package) @@ -25537,7 +25934,7 @@ Whether to enable debug level messages. @item @code{auto-answer?} (default: @code{#f}) (type: boolean) Whether to force automatic answer to incoming calls. -@item @code{accounts} (default: @code{disabled}) (type: maybe-jami-account-list) +@item @code{accounts} (type: maybe-jami-account-list) A list of Jami accounts to be (re-)provisioned every time the Jami daemon service starts. When providing this field, the account directories under @file{/var/lib/jami/} are recreated every time the @@ -25559,39 +25956,39 @@ should @emph{not} be encrypted. It is highly recommended to make it readable only to the @samp{root} user (i.e., not in the store), to guard against leaking the secret key material of the Jami account it contains. -@item @code{allowed-contacts} (default: @code{disabled}) (type: maybe-account-fingerprint-list) +@item @code{allowed-contacts} (type: maybe-account-fingerprint-list) The list of allowed contacts for the account, entered as their 40 characters long fingerprint. Messages or calls from accounts not in -that list will be rejected. When unspecified, the configuration of the -account archive is used as-is with respect to contacts and public +that list will be rejected. When left specified, the configuration of +the account archive is used as-is with respect to contacts and public inbound calls/messaging allowance, which typically defaults to allow any contact to communicate with the account. -@item @code{moderators} (default: @code{disabled}) (type: maybe-account-fingerprint-list) +@item @code{moderators} (type: maybe-account-fingerprint-list) The list of contacts that should have moderation privileges (to ban, mute, etc. other users) in rendezvous conferences, entered as their 40 -characters long fingerprint. When unspecified, the configuration of the -account archive is used as-is with respect to moderation, which +characters long fingerprint. When left unspecified, the configuration +of the account archive is used as-is with respect to moderation, which typically defaults to allow anyone to moderate. -@item @code{rendezvous-point?} (default: @code{disabled}) (type: maybe-boolean) +@item @code{rendezvous-point?} (type: maybe-boolean) Whether the account should operate in the rendezvous mode. In this mode, all the incoming audio/video calls are mixed into a conference. When left unspecified, the value from the account archive prevails. -@item @code{peer-discovery?} (default: @code{disabled}) (type: maybe-boolean) +@item @code{peer-discovery?} (type: maybe-boolean) Whether peer discovery should be enabled. Peer discovery is used to discover other OpenDHT nodes on the local network, which can be useful to maintain communication between devices on such network even when the connection to the the Internet has been lost. When left unspecified, the value from the account archive prevails. -@item @code{bootstrap-hostnames} (default: @code{disabled}) (type: maybe-string-list) +@item @code{bootstrap-hostnames} (type: maybe-string-list) A list of hostnames or IPs pointing to OpenDHT nodes, that should be used to initially join the OpenDHT network. When left unspecified, the value from the account archive prevails. -@item @code{name-server-uri} (default: @code{disabled}) (type: maybe-string) +@item @code{name-server-uri} (type: maybe-string) The URI of the name server to use, that can be used to retrieve the account fingerprint for a registered username. @@ -26225,8 +26622,8 @@ Defaults to @samp{prefer-encrypted-connections}. @deftypevr {@code{transmission-daemon-configuration} parameter} maybe-string peer-congestion-algorithm The TCP congestion-control algorithm to use for peer connections, specified using a string recognized by the operating system in calls to -@code{setsockopt} (or set to @code{disabled}, in which case the -operating-system default is used). +@code{setsockopt}. When left unspecified, the operating-system default +is used. Note that on GNU/Linux systems, the kernel must be configured to allow processes to use a congestion-control algorithm not in the default set; @@ -29854,7 +30251,7 @@ Defaults to @samp{tun}. If you do not have some of these files (eg.@: you use a username and password), you can disable any of the following three fields by setting -it to @code{'disabled}. +it to @code{*unspecified*}. @deftypevr {@code{openvpn-client-configuration} parameter} maybe-string ca The certificate authority to check connections against. @@ -29928,7 +30325,6 @@ Authenticate with server using username/password. The option is a file containing username/password on 2 lines. Do not use a file-like object as it would be added to the store and readable by any user. -Defaults to @samp{'disabled}. @end deftypevr @deftypevr {@code{openvpn-client-configuration} parameter} key-usage verify-key-usage? @@ -30009,7 +30405,7 @@ Defaults to @samp{tun}. If you do not have some of these files (eg.@: you use a username and password), you can disable any of the following three fields by setting -it to @code{'disabled}. +it to @code{*unspecified*}. @deftypevr {@code{openvpn-server-configuration} parameter} maybe-string ca The certificate authority to check connections against. @@ -30808,10 +31204,10 @@ content by adding a valid @code{tlp-configuration}: @end deffn Each parameter definition is preceded by its type; for example, -@samp{boolean foo} indicates that the @code{foo} parameter -should be specified as a boolean. Types starting with -@code{maybe-} denote parameters that won't show up in TLP config file -when their value is @code{'disabled}. +@samp{boolean foo} indicates that the @code{foo} parameter should be +specified as a boolean. Types starting with @code{maybe-} denote +parameters that won't show up in TLP config file when their value is +left unset, or is explicitly set to the @code{*unspecified*} value. @c The following documentation was initially generated by @c (generate-tlp-documentation) in (gnu services pm). Manually maintained @@ -35178,11 +35574,11 @@ that compression will be 2:1, it is possible that uncompressable data can be written to swap and this is a method to limit how much memory can be used. It accepts a string and can be a number of bytes or use a suffix, eg.: @code{"2G"}. -@item @code{priority} (default @code{-1}) +@item @code{priority} (default @code{#f}) This is the priority of the swap device created from the zram device. -@code{swapon} accepts values between -1 and 32767, with higher values -indicating higher priority. Higher priority swap will generally be used -first. +@xref{Swap Space} for a description of swap priorities. You might want +to set a specific priority for the zram device, otherwise it could end +up not being used much for the reasons described there. @end table @end deftp @@ -35731,22 +36127,23 @@ Extra command line options for @code{nix-service-type}. @section Setuid Programs @cindex setuid programs -Some programs need to run with ``root'' privileges, even when they are +@cindex setgid programs +Some programs need to run with elevated privileges, even when they are launched by unprivileged users. A notorious example is the @command{passwd} program, which users can run to change their password, and which needs to access the @file{/etc/passwd} and @file{/etc/shadow} files---something normally restricted to root, for -obvious security reasons. To address that, these executables are -@dfn{setuid-root}, meaning that they always run with root privileges +obvious security reasons. To address that, @command{passwd} should be +@dfn{setuid-root}, meaning that it always runs with root privileges (@pxref{How Change Persona,,, libc, The GNU C Library Reference Manual}, for more info about the setuid mechanism). The store itself @emph{cannot} contain setuid programs: that would be a security issue since any user on the system can write derivations that populate the store (@pxref{The Store}). Thus, a different mechanism is -used: instead of changing the setuid bit directly on files that are in -the store, we let the system administrator @emph{declare} which programs -should be setuid root. +used: instead of changing the setuid or setgid bits directly on files that +are in the store, we let the system administrator @emph{declare} which +programs should be entrusted with these additional privileges. The @code{setuid-programs} field of an @code{operating-system} declaration contains a list of @code{<setuid-program>} denoting the @@ -37976,7 +38373,7 @@ pointing to the given file. @defvr {Scheme Variable} setuid-program-service-type Type for the ``setuid-program service''. This service collects lists of executable file names, passed as gexps, and adds them to the set of -setuid-root programs on the system (@pxref{Setuid Programs}). +setuid and setgid programs on the system (@pxref{Setuid Programs}). @end defvr @defvr {Scheme Variable} profile-service-type @@ -38405,15 +38802,16 @@ macro which is a shorthand of this. @deffn {Scheme Syntax} define-maybe @var{type} Sometimes a field should not be serialized if the user doesn’t specify a value. To achieve this, you can use the @code{define-maybe} macro to -define a ``maybe type''; if the value of a maybe type is set to the -@code{disabled}, it will not be serialized. +define a ``maybe type''; if the value of a maybe type is left unset, or +is set to the @code{*unspecified*} value, then it will not be +serialized. When defining a ``maybe type'', the corresponding serializer for the regular type will be used by default. For example, a field of type @code{maybe-string} will be serialized using the @code{serialize-string} procedure by default, you can of course change this by specifying a custom serializer procedure. Likewise, the type of the value would have -to be a string, unless it is set to the @code{disabled} symbol. +to be a string, or left unspecified. @lisp (define-maybe string) @@ -38423,9 +38821,9 @@ to be a string, unless it is set to the @code{disabled} symbol. (define-configuration baz-configuration (name - ;; Nothing will be serialized by default. If set to a string, the - ;; `serialize-string' procedure will be used to serialize the string. - (maybe-string 'disabled) + ;; If set to a string, the `serialize-string' procedure will be used + ;; to serialize the string. Otherwise this field is not serialized. + maybe-string ; equivalent to (maybe-string *unspecified*) "The name of this module.")) @end lisp @@ -38442,7 +38840,7 @@ serializer name by using the @code{prefix} literal. There is also the @code{no-serialization} literal, which when set means that no serializer will be defined for the ``maybe type'', regardless of -its value is @code{disabled} or not. +whether its value is set or not. @code{define-maybe/no-serialization} is a shorthand for specifying the @code{no-serialization} literal. @@ -38451,7 +38849,7 @@ its value is @code{disabled} or not. (define-configuration/no-serialization test-configuration (mode - (maybe-symbol 'disabled) + maybe-symbol "Docstring.")) @end lisp @end deffn @@ -38583,10 +38981,10 @@ Below is an example of a record type created using "The name of the contact." serialize-contact-name) (phone-number - (maybe-integer 'disabled) + maybe-integer "The person's phone number.") (email - (maybe-string 'disabled) + maybe-string "The person's email address.") (married? (boolean) @@ -38874,6 +39272,7 @@ services)}. * Shells: Shells Home Services. POSIX shells, Bash, Zsh. * Mcron: Mcron Home Service. Scheduled User's Job Execution. * Shepherd: Shepherd Home Service. Managing User's Daemons. +* SSH: Secure Shell. Setting up the secure shell client. * Desktop: Desktop Home Services. Services for graphical environments. @end menu @c In addition to that Home Services can provide @@ -39194,7 +39593,7 @@ GNU@tie{}mcron, a daemon to run jobs at scheduled times (@pxref{Top,,, mcron, GNU@tie{}mcron}). The information about system's mcron is applicable here (@pxref{Scheduled Job Execution}), the only difference for home services is that they have to be declared in a -@code{home-envirnoment} record instead of an @code{operating-system} +@code{home-environment} record instead of an @code{operating-system} record. @defvr {Scheme Variable} home-mcron-service-type @@ -39262,6 +39661,181 @@ mechanism instead (@pxref{Shepherd Services}). @end table @end deftp +@node Secure Shell +@subsection Secure Shell + +@cindex secure shell client, configuration +@cindex SSH client, configuration +The @uref{https://www.openssh.com, OpenSSH package} includes a client, +the @command{ssh} command, that allows you to connect to remote machines +using the @acronym{SSH, secure shell} protocol. With the @code{(gnu +home services ssh)} module, you can set up OpenSSH so that it works in a +predictable fashion, almost independently of state on the local machine. +To do that, you instantiate @code{home-openssh-service-type} in your +Home configuration, as explained below. + +@defvr {Scheme Variable} home-openssh-service-type +This is the type of the service to set up the OpenSSH client. It takes +care of several things: + +@itemize +@item +providing a @file{~/.ssh/config} file based on your configuration so +that @command{ssh} knows about hosts you regularly connect to and their +associated parameters; + +@item +providing a @file{~/.ssh/authorized_keys}, which lists public keys that +the local SSH server, @command{sshd}, may accept to connect to this user +account; + +@item +optionally providing a @file{~/.ssh/known_hosts} file so that @file{ssh} +can authenticate hosts you connect to. +@end itemize + +Here is an example of a service and its configuration that you could add +to the @code{services} field of your @code{home-environment}: + +@lisp +(service home-openssh-service-type + (home-openssh-configuration + (hosts + (list (openssh-host (name "ci.guix.gnu.org") + (user "charlie")) + (openssh-host (name "chbouib") + (host-name "chbouib.example.org") + (user "supercharlie") + (port 10022)))) + (authorized-keys (list (local-file "alice.pub"))))) +@end lisp + +The example above lists two hosts and their parameters. For instance, +running @command{ssh chbouib} will automatically connect to +@code{chbouib.example.org} on port 10022, logging in as user +@samp{supercharlie}. Further, it marks the public key in +@file{alice.pub} as authorized for incoming connections. + +The value associated with a @code{home-openssh-service-type} instance +must be a @code{home-openssh-configuration} record, as describe below. +@end defvr + +@deftp {Data Type} home-openssh-configuration +This is the datatype representing the OpenSSH client and server +configuration in one's home environment. It contains the following +fields: + +@table @asis +@item @code{hosts} (default: @code{'()}) +A list of @code{openssh-host} records specifying host names and +associated connection parameters (see below). This host list goes into +@file{~/.ssh/config}, which @command{ssh} reads at startup. + +@item @code{known-hosts} (default: @code{*unspecified*}) +This must be either: + +@itemize +@item +@code{*unspecified*}, in which case @code{home-openssh-service-type} +leaves it up to @command{ssh} and to the user to maintain the list of +known hosts at @file{~/.ssh/known_hosts}, or + +@item +a list of file-like objects, in which case those are concatenated and +emitted as @file{~/.ssh/known_hosts}. +@end itemize + +The @file{~/.ssh/known_hosts} contains a list of host name/host key +pairs that allow @command{ssh} to authenticate hosts you connect to and +to detect possible impersonation attacks. By default, @command{ssh} +updates it in a @dfn{TOFU, trust-on-first-use} fashion, meaning that it +records the host's key in that file the first time you connect to it. +This behavior is preserved when @code{known-hosts} is set to +@code{*unspecified*}. + +If you instead provide a list of host keys upfront in the +@code{known-hosts} field, your configuration becomes self-contained and +stateless: it can be replicated elsewhere or at another point in time. +Preparing this list can be relatively tedious though, which is why +@code{*unspecified*} is kept as a default. + +@item @code{authorized-keys} (default: @code{'()}) +This must be a list of file-like objects, each of which containing an +SSH public key that should be authorized to connect to this machine. + +Concretely, these files are concatenated and made available as +@file{~/.ssh/authorized_keys}. If an OpenSSH server, @command{sshd}, is +running on this machine, then it @emph{may} take this file into account: +this is what @command{sshd} does by default, but be aware that it can +also be configured to ignore it. +@end table +@end deftp + +@c %start of fragment + +@deftp {Data Type} openssh-host +Available @code{openssh-host} fields are: + +@table @asis +@item @code{name} (type: string) +Name of this host declaration. + +@item @code{host-name} (type: maybe-string) +Host name---e.g., @code{"foo.example.org"} or @code{"192.168.1.2"}. + +@item @code{address-family} (type: address-family) +Address family to use when connecting to this host: one of +@code{AF_INET} (for IPv4 only), @code{AF_INET6} (for IPv6 only), or +@code{*unspecified*} (allowing any address family). + +@item @code{identity-file} (type: maybe-string) +The identity file to use---e.g., @code{"/home/charlie/.ssh/id_ed25519"}. + +@item @code{port} (type: maybe-natural-number) +TCP port number to connect to. + +@item @code{user} (type: maybe-string) +User name on the remote host. + +@item @code{forward-x11?} (default: @code{#f}) (type: boolean) +Whether to forward remote client connections to the local X11 graphical +display. + +@item @code{forward-x11-trusted?} (default: @code{#f}) (type: boolean) +Whether remote X11 clients have full access to the original X11 +graphical display. + +@item @code{forward-agent?} (default: @code{#f}) (type: boolean) +Whether the authentication agent (if any) is forwarded to the remote +machine. + +@item @code{compression?} (default: @code{#f}) (type: boolean) +Whether to compress data in transit. + +@item @code{proxy-command} (type: maybe-string) +The command to use to connect to the server. As an example, a command +to connect via an HTTP proxy at 192.0.2.0 would be: @code{"nc -X connect +-x 192.0.2.0:8080 %h %p"}. + +@item @code{host-key-algorithms} (type: maybe-string-list) +The list of accepted host key algorithms---e.g., +@code{'("ssh-ed25519")}. + +@item @code{accepted-key-types} (type: maybe-string-list) +The list of accepted user public key types. + +@item @code{extra-content} (default: @code{""}) (type: raw-configuration-string) +Extra content appended as-is to this @code{Host} block in +@file{~/.ssh/config}. + +@end table + +@end deftp + + +@c %end of fragment + + @node Desktop Home Services @subsection Desktop Home Services @@ -39310,24 +39884,24 @@ Daytime color temperature (kelvins). @item @code{nighttime-temperature} (default: @code{4500}) (type: integer) Nighttime color temperature (kelvins). -@item @code{daytime-brightness} (default: @code{disabled}) (type: maybe-inexact-number) -Daytime screen brightness, between 0.1 and 1.0. +@item @code{daytime-brightness} (type: maybe-inexact-number) +Daytime screen brightness, between 0.1 and 1.0, or left unspecified. -@item @code{nighttime-brightness} (default: @code{disabled}) (type: maybe-inexact-number) -Nighttime screen brightness, between 0.1 and 1.0. +@item @code{nighttime-brightness} (type: maybe-inexact-number) +Nighttime screen brightness, between 0.1 and 1.0, or left unspecified. -@item @code{latitude} (default: @code{disabled}) (type: maybe-inexact-number) +@item @code{latitude} (type: maybe-inexact-number) Latitude, when @code{location-provider} is @code{'manual}. -@item @code{longitude} (default: @code{disabled}) (type: maybe-inexact-number) +@item @code{longitude} (type: maybe-inexact-number) Longitude, when @code{location-provider} is @code{'manual}. -@item @code{dawn-time} (default: @code{disabled}) (type: maybe-string) +@item @code{dawn-time} (type: maybe-string) Custom time for the transition from night to day in the morning---@code{"HH:MM"} format. When specified, solar elevation is not used to determine the daytime/nighttime period. -@item @code{dusk-time} (default: @code{disabled}) (type: maybe-string) +@item @code{dusk-time} (type: maybe-string) Likewise, custom time for the transition from day to night in the evening. diff --git a/doc/he-config-bare-bones.scm b/doc/he-config-bare-bones.scm index d2e4736e29..f948d85277 100644 --- a/doc/he-config-bare-bones.scm +++ b/doc/he-config-bare-bones.scm @@ -13,12 +13,13 @@ (service home-bash-service-type (home-bash-configuration (guix-defaults? #t) - (bash-profile '("\ -export HISTFILE=$XDG_CACHE_HOME/.bash_history")))) + (bash-profile (list (plain-file "bash-profile" "\ +export HISTFILE=$XDG_CACHE_HOME/.bash_history"))))) (simple-service 'test-config - home-files-service-type - (list `("config/test.conf" + home-xdg-configuration-files-service-type + (list `("test.conf" ,(plain-file "tmp-file.txt" - "the content of ~/.config/test.conf"))))))) + "the content of + ~/.config/test.conf"))))))) diff --git a/doc/htmlxref.cnf b/doc/htmlxref.cnf index 7c780c7a4a..ca99df81bb 100644 --- a/doc/htmlxref.cnf +++ b/doc/htmlxref.cnf @@ -1,7 +1,7 @@ # htmlxref.cnf - reference file for free Texinfo manuals on the web. # Modified by Ludovic Courtès <ludo@gnu.org> for the GNU Guix manual. -htmlxrefversion=2022-04-08.17; # UTC +htmlxrefversion=2022-06-16.15; # UTC # Copyright 2010-2020, 2022 Free Software Foundation, Inc. # @@ -291,8 +291,6 @@ gdbm chapter ${GDBM}/html_chapter/ gdbm section ${GDBM}/html_section/ gdbm node ${GDBM}/html_node/ -# XXX: These are actually pages created by texi2html, so no quite following -# the expected naming scheme. geiser chapter http://geiser.nongnu.org/ gettext mono ${GS}/gettext/manual/gettext.html diff --git a/gnu/build/dbus-service.scm b/gnu/build/dbus-service.scm new file mode 100644 index 0000000000..c5671396e2 --- /dev/null +++ b/gnu/build/dbus-service.scm @@ -0,0 +1,213 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: +;;; +;;; This module contains procedures to interact with D-Bus via the 'dbus-send' +;;; command line utility. Before using any public procedure +;;; +;;; Code: + +(define-module (gnu build dbus-service) + #:use-module (ice-9 match) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-19) + #:use-module (srfi srfi-26) + #:autoload (d-bus protocol connections) (d-bus-conn? + d-bus-conn-flush + d-bus-connect + d-bus-disconnect + d-bus-session-bus-address + d-bus-system-bus-address) + #:autoload (d-bus protocol messages) (MESSAGE_TYPE_METHOD_CALL + d-bus-headers-ref + d-bus-message-body + d-bus-message-headers + d-bus-read-message + d-bus-write-message + header-PATH + header-DESTINATION + header-INTERFACE + header-MEMBER + header-SIGNATURE + make-d-bus-message) + #:export (%dbus-query-timeout + + initialize-dbus-connection! + %current-dbus-connection + send-dbus + call-dbus-method + + dbus-available-services + dbus-service-available? + + with-retries)) + +(define %dbus-query-timeout 2) ;in seconds + +;;; Use Fibers' sleep to enable cooperative scheduling in Shepherd >= 0.9.0, +;;; which is required at least for the Jami service. +(define sleep* + (lambda () ;delay execution + (if (resolve-module '(fibers) #f) + (module-ref (resolve-interface '(fibers)) 'sleep) + (begin + (format #f "fibers not available -- blocking 'sleep' in use") + sleep)))) + +;;; +;;; Utilities. +;;; + +(define-syntax-rule (with-retries n delay body ...) + "Retry the code in BODY up to N times until it doesn't raise an exception nor +return #f, else raise an error. A delay of DELAY seconds is inserted before +each retry." + (let loop ((attempts 0)) + (catch #t + (lambda () + (let ((result (begin body ...))) + (if (not result) + (error "failed attempt" attempts) + result))) + (lambda args + (if (< attempts n) + (begin + ((sleep*) delay) ;else wait and retry + (loop (+ 1 attempts))) + (error "maximum number of retry attempts reached" + body ... args)))))) + + +;;; +;;; Low level wrappers above AC/D-Bus. +;;; + +;; The active D-Bus connection (a parameter) used by the other procedures. +(define %current-dbus-connection (make-parameter #f)) + +(define* (initialize-dbus-connection! + #:key (address (or (d-bus-session-bus-address) + (d-bus-system-bus-address)))) + "Initialize the D-Bus connection. ADDRESS should be the address of the D-Bus +session, e.g. \"unix:path=/var/run/dbus/system_bus_socket\", the default value +if ADDRESS is not provided and DBUS_SESSION_BUS_ADDRESS is not set. Return +the initialized D-Bus connection." + ;; Clear current correction if already active. + (when (d-bus-conn? (%current-dbus-connection)) + (d-bus-disconnect (%current-dbus-connection))) + + (let ((connection (d-bus-connect address))) + (%current-dbus-connection connection) ;update connection parameter + (call-dbus-method "Hello")) ;initial handshake + + (%current-dbus-connection)) + +(define* (send-dbus message #:key + (connection (%current-dbus-connection)) + timeout) + "Send a D-Bus MESSAGE to CONNECTION and return the body of its reply. Up to +READ-RETRIES replies are read until a matching reply is found, else an error +is raised. MESSAGE is to be constructed with `make-d-bus-message'. When the +body contains a single element, it is returned directly, else the body +elements are returned as a list. TIMEOUT is a timeout value in seconds." + (let ((serial (d-bus-write-message connection message)) + (start-time (current-time time-monotonic)) + (timeout* (or timeout %dbus-query-timeout))) + (d-bus-conn-flush connection) + (let retry () + (when (> (time-second (time-difference (current-time time-monotonic) + start-time)) + timeout*) + (error 'dbus "fail to get reply in timeout" timeout*)) + (let* ((reply (d-bus-read-message connection)) + (reply-headers (d-bus-message-headers reply)) + (reply-serial (d-bus-headers-ref reply-headers 'REPLY_SERIAL)) + (error-name (d-bus-headers-ref reply-headers 'ERROR_NAME)) + (body (d-bus-message-body reply))) + ;; Validate the reply matches the message. + (when error-name + (error 'dbus "method failed with error" error-name body)) + ;; Some replies do not include a serial header, such as the for the + ;; org.freedesktop.DBus NameAcquired one. + (if (and reply-serial (= serial reply-serial)) + (match body + ((x x* ..1) ;contains 2 ore more elements + body) + ((x) + x) ;single element; return it directly + (#f #f)) + (retry)))))) + +(define (argument->signature-type argument) + "Infer the D-Bus signature type from ARGUMENT." + ;; XXX: avoid ..1 when using vectors due to a bug (?) in (ice-9 match). + (match argument + ((? boolean?) "b") + ((? string?) "s") + (#((? string?) (? string?) ...) "as") + (#(((? string?) . (? string?)) + ((? string?) . (? string?)) ...) "a{ss}") + (_ (error 'dbus "no rule to infer type from argument" argument)))) + +(define* (call-dbus-method method + #:key + (path "/org/freedesktop/DBus") + (destination "org.freedesktop.DBus") + (interface "org.freedesktop.DBus") + (connection (%current-dbus-connection)) + arguments + timeout) + "Call the D-Bus method specified by METHOD, PATH, DESTINATION and INTERFACE. +The currently active D-Bus CONNECTION is used unless explicitly provided. +Method arguments may be provided via ARGUMENTS sent as the message body. +TIMEOUT limit the maximum time to allow for the reply. Return the body of the +reply." + (let ((message (make-d-bus-message + MESSAGE_TYPE_METHOD_CALL 0 #f '() + `#(,(header-PATH path) + ,(header-DESTINATION destination) + ,(header-INTERFACE interface) + ,(header-MEMBER method) + ,@(if arguments + (list (header-SIGNATURE + (string-join + (map argument->signature-type arguments) + ""))) + '())) + arguments))) + (send-dbus message #:connection connection #:timeout timeout))) + + +;;; +;;; Higher-level, D-Bus procedures. +;;; + +(define (dbus-available-services) + "Return the list of available (acquired) D-Bus services." + (let ((names (vector->list (call-dbus-method "ListNames")))) + ;; Remove entries such as ":1.7". + (remove (cut string-prefix? ":" <>) names))) + +(define (dbus-service-available? service) + "Predicate to check for the D-Bus SERVICE availability." + (member service (dbus-available-services))) + +;; Local Variables: +;; eval: (put 'with-retries 'scheme-indent-function 2) +;; End: diff --git a/gnu/build/jami-service.scm b/gnu/build/jami-service.scm index ddfc8cf937..0ceb03eb02 100644 --- a/gnu/build/jami-service.scm +++ b/gnu/build/jami-service.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,16 +24,16 @@ ;;; Code: (define-module (gnu build jami-service) + #:use-module (gnu build dbus-service) #:use-module (ice-9 format) #:use-module (ice-9 match) - #:use-module (ice-9 peg) #:use-module (ice-9 rdelim) #:use-module (ice-9 regex) - #:use-module (rnrs io ports) - #:autoload (shepherd service) (fork+exec-command) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) - #:export (account-fingerprint? + #:export (jami-service-available? + + account-fingerprint? account-details->recutil get-accounts get-usernames @@ -51,43 +51,12 @@ set-all-moderators set-moderator username->all-moderators? - username->moderators - - dbus-available-services - dbus-service-available? - - %send-dbus-binary - %send-dbus-bus - %send-dbus-user - %send-dbus-group - %send-dbus-debug - send-dbus - - with-retries)) + username->moderators)) ;;; ;;; Utilities. ;;; -(define-syntax-rule (with-retries n delay body ...) - "Retry the code in BODY up to N times until it doesn't raise an exception -nor return #f, else raise an error. A delay of DELAY seconds is inserted -before each retry." - (let loop ((attempts 0)) - (catch #t - (lambda () - (let ((result (begin body ...))) - (if (not result) - (error "failed attempt" attempts) - result))) - (lambda args - (if (< attempts n) - (begin - (sleep delay) ;else wait and retry - (loop (+ 1 attempts))) - (error "maximum number of retry attempts reached" - body ... args)))))) - (define (alist->list alist) "Flatten ALIST into a list." (append-map (match-lambda @@ -104,212 +73,34 @@ hexadecimal characters." (and (string? val) (regexp-exec account-fingerprint-rx val))) - -;;; -;;; D-Bus reply parser. -;;; - -(define (parse-dbus-reply reply) - "Return the parse tree of REPLY, a string returned by the 'dbus-send' -command." - ;; Refer to 'man 1 dbus-send' for the grammar reference. Note that the - ;; format of the replies doesn't match the format of the input, which is the - ;; one documented, but it gives an idea. For an even better reference, see - ;; the `print_iter' procedure of the 'dbus-print-message.c' file from the - ;; 'dbus' package sources. - (define-peg-string-patterns - "contents <- header (item / container (item / container*)?) - item <-- WS type WS value NL - container <- array / dict / variant - array <-- array-start (item / container)* array-end - dict <-- array-start dict-entry* array-end - dict-entry <-- dict-entry-start item item dict-entry-end - variant <-- variant-start item - type <-- 'string' / 'int16' / 'uint16' / 'int32' / 'uint32' / 'int64' / - 'uint64' / 'double' / 'byte' / 'boolean' / 'objpath' - value <-- (!NL .)* NL - header < (!NL .)* NL - variant-start < WS 'variant' - array-start < WS 'array [' NL - array-end < WS ']' NL - dict-entry-start < WS 'dict entry(' NL - dict-entry-end < WS ')' NL - DQ < '\"' - WS < ' '* - NL < '\n'*") - - (peg:tree (match-pattern contents reply))) - -(define (strip-quotes text) - "Strip the leading and trailing double quotes (\") characters from TEXT." - (let* ((text* (if (string-prefix? "\"" text) - (string-drop text 1) - text)) - (text** (if (string-suffix? "\"" text*) - (string-drop-right text* 1) - text*))) - text**)) - -(define (deserialize-item item) - "Return the value described by the ITEM parse tree as a Guile object." - ;; Strings are printed wrapped in double quotes (see the print_iter - ;; procedure in dbus-print-message.c). - (match item - (('item ('type "string") ('value value)) - (strip-quotes value)) - (('item ('type "boolean") ('value value)) - (if (string=? "true" value) - #t - #f)) - (('item _ ('value value)) - value))) - -(define (serialize-boolean bool) - "Return the serialized format expected by dbus-send for BOOL." - (format #f "boolean:~:[false~;true~]" bool)) - -(define (dict->alist dict-parse-tree) - "Translate a dict parse tree to an alist." - (define (tuples->alist tuples) - (map (lambda (x) (apply cons x)) tuples)) - - (match dict-parse-tree - ('dict - '()) - (('dict ('dict-entry keys values) ...) - (let ((keys* (map deserialize-item keys)) - (values* (map deserialize-item values))) - (tuples->alist (zip keys* values*)))))) - -(define (array->list array-parse-tree) - "Translate an array parse tree to a list." - (match array-parse-tree - ('array - '()) - (('array items ...) - (map deserialize-item items)))) - - -;;; -;;; Low-level, D-Bus-related procedures. -;;; +(define (validate-fingerprint fingerprint) + "Validate that fingerprint is 40 characters long." + (unless (account-fingerprint? fingerprint) + (error "Account fingerprint is not valid:" fingerprint))) -;;; The following parameters are used in the jami-service-type service -;;; definition to conveniently customize the behavior of the send-dbus helper, -;;; even when called indirectly. -(define %send-dbus-binary (make-parameter "dbus-send")) -(define %send-dbus-bus (make-parameter #f)) -(define %send-dbus-user (make-parameter #f)) -(define %send-dbus-group (make-parameter #f)) -(define %send-dbus-debug (make-parameter #f)) - -(define* (send-dbus #:key service path interface method - bus - dbus-send - user group - timeout - arguments) - "Return the response of DBUS-SEND, else raise an error. Unless explicitly -provided, DBUS-SEND takes the value of the %SEND-DBUS-BINARY parameter. BUS -can be used to specify the bus address, such as 'unix:path=/var/run/jami/bus'. -Alternatively, the %SEND-DBUS-BUS parameter can be used. ARGUMENTS can be -used to pass input values to a D-Bus method call. TIMEOUT is the amount of -time to wait for a reply in milliseconds before giving up with an error. USER -and GROUP allow choosing under which user/group the DBUS-SEND command is -executed. Alternatively, the %SEND-DBUS-USER and %SEND-DBUS-GROUP parameters -can be used instead." - (let* ((command `(,(if dbus-send - dbus-send - (%send-dbus-binary)) - ,@(if (or bus (%send-dbus-bus)) - (list (string-append "--bus=" - (or bus (%send-dbus-bus)))) - '()) - "--print-reply" - ,@(if timeout - (list (format #f "--reply-timeout=~d" timeout)) - '()) - ,(string-append "--dest=" service) ;e.g., cx.ring.Ring - ,path ;e.g., /cx/ring/Ring/ConfigurationManager - ,(string-append interface "." method) - ,@(or arguments '()))) - (temp-port (mkstemp! (string-copy "/tmp/dbus-send-output-XXXXXXX"))) - (temp-file (port-filename temp-port))) - (dynamic-wind - (lambda () - (let* ((uid (or (and=> (or user (%send-dbus-user)) - (compose passwd:uid getpwnam)) -1)) - (gid (or (and=> (or group (%send-dbus-group)) - (compose group:gid getgrnam)) -1))) - (chown temp-port uid gid))) - (lambda () - (let ((pid (fork+exec-command command - #:user (or user (%send-dbus-user)) - #:group (or group (%send-dbus-group)) - #:log-file temp-file))) - (match (waitpid pid) - ((_ . status) - (let ((exit-status (status:exit-val status)) - (output (call-with-port temp-port get-string-all))) - (if (= 0 exit-status) - output - (error "the send-dbus command exited with: " - command exit-status output))))))) - (lambda () - (false-if-exception (delete-file temp-file)))))) - -(define (parse-account-ids reply) - "Return the Jami account IDs from REPLY, which is assumed to be the output -of the Jami D-Bus `getAccountList' method." - (array->list (parse-dbus-reply reply))) - -(define (parse-account-details reply) - "Parse REPLY, which is assumed to be the output of the Jami D-Bus -`getAccountDetails' method, and return its content as an alist." - (dict->alist (parse-dbus-reply reply))) - -(define (parse-contacts reply) - "Parse REPLY, which is assumed to be the output of the Jamid D-Bus -`getContacts' method, and return its content as an alist." - (match (parse-dbus-reply reply) - ('array - '()) - (('array dicts ...) - (map dict->alist dicts)))) +(define (jami-service-available?) + "Whether the Jami D-Bus service was acquired by the D-Bus daemon." + (unless (%current-dbus-connection) + (initialize-dbus-connection!)) + (dbus-service-available? "cx.ring.Ring")) ;;; -;;; Higher-level, D-Bus-related procedures. +;;; Bindings for the Jami D-Bus API. ;;; -(define (validate-fingerprint fingerprint) - "Validate that fingerprint is 40 characters long." - (unless (account-fingerprint? fingerprint) - (error "Account fingerprint is not valid:" fingerprint))) - -(define (dbus-available-services) - "Return the list of available (acquired) D-Bus services." - (let ((reply (parse-dbus-reply - (send-dbus #:service "org.freedesktop.DBus" - #:path "/org/freedesktop/DBus" - #:interface "org.freedesktop.DBus" - #:method "ListNames")))) - ;; Remove entries such as ":1.7". - (remove (cut string-prefix? ":" <>) - (array->list reply)))) - -(define (dbus-service-available? service) - "Predicate to check for the D-Bus SERVICE availability." - (member service (dbus-available-services))) - -(define* (send-dbus/configuration-manager #:key method arguments timeout) - "Query the Jami D-Bus ConfigurationManager service." - (send-dbus #:service "cx.ring.Ring" - #:path "/cx/ring/Ring/ConfigurationManager" - #:interface "cx.ring.Ring.ConfigurationManager" - #:method method - #:arguments arguments - #:timeout timeout)) +(define* (call-configuration-manager-method method #:optional arguments + #:key timeout) + "Query the Jami D-Bus ConfigurationManager interface with METHOD applied to +ARGUMENTS. TIMEOUT can optionally be provided as a value in seconds." + (unless (%current-dbus-connection) + (initialize-dbus-connection!)) + (call-dbus-method method + #:path "/cx/ring/Ring/ConfigurationManager" + #:destination "cx.ring.Ring" + #:interface "cx.ring.Ring.ConfigurationManager" + #:arguments arguments + #:timeout timeout)) ;;; The following methods are for internal use; they make use of the account ;;; ID, an implementation detail of Jami the user should not need to be @@ -317,22 +108,17 @@ of the Jami D-Bus `getAccountList' method." (define (get-account-ids) "Return the available Jami account identifiers (IDs). Account IDs are an implementation detail used to identify the accounts in Jami." - (parse-account-ids - (send-dbus/configuration-manager #:method "getAccountList"))) + (vector->list (call-configuration-manager-method "getAccountList"))) (define (id->account-details id) "Retrieve the account data associated with the given account ID." - (parse-account-details - (send-dbus/configuration-manager - #:method "getAccountDetails" - #:arguments (list (string-append "string:" id))))) + (vector->list (call-configuration-manager-method "getAccountDetails" + (list id)))) (define (id->volatile-account-details id) "Retrieve the account data associated with the given account ID." - (parse-account-details - (send-dbus/configuration-manager - #:method "getVolatileAccountDetails" - #:arguments (list (string-append "string:" id))))) + (vector->list (call-configuration-manager-method "getVolatileAccountDetails" + (list id)))) (define (id->account id) "Retrieve the complete account data associated with the given account ID." @@ -362,8 +148,8 @@ implementation detail used to identify the accounts in Jami." '())))) (get-account-ids)))) (or (assoc-ref %username-to-id-cache username) - (let ((message (format #f "Could not retrieve a local account ID\ - for ~:[username~;fingerprint~]" (account-fingerprint? username)))) + (let ((message (format #f "no account ID for ~:[username~;fingerprint~]" + (account-fingerprint? username)))) (error message username)))) (define (account->username account) @@ -400,27 +186,21 @@ registered username." should *not* be encrypted with a password. Return the username associated with the account." (invalidate-username-to-id-cache!) - (let ((reply (send-dbus/configuration-manager - #:method "addAccount" - #:arguments (list (string-append - "dict:string:string:Account.archivePath," - archive - ",Account.type,RING"))))) + (let ((id (call-configuration-manager-method + "addAccount" (list `#(("Account.archivePath" . ,archive) + ("Account.type" . "RING")))))) ;; The account information takes some time to be populated. - (let ((id (deserialize-item (parse-dbus-reply reply)))) - (with-retries 20 1 - (let ((username (id->username id))) - (if (string-null? username) - #f - username)))))) + (with-retries 20 1 + (let ((username (id->username id))) + (if (and=> username (negate string-null?)) + username + #f))))) (define (remove-account username) "Delete the Jami account associated with USERNAME, the account 40 characters fingerprint or a registered username." (let ((id (username->id username))) - (send-dbus/configuration-manager - #:method "removeAccount" - #:arguments (list (string-append "string:" id)))) + (call-configuration-manager-method "removeAccount" (list id))) (invalidate-username-to-id-cache!)) (define* (username->contacts username) @@ -430,15 +210,16 @@ contacts. USERNAME can be either the account 40 characters public key fingerprint or a registered username. The contacts returned are represented using their 40 characters fingerprint." (let* ((id (username->id username)) - (reply (send-dbus/configuration-manager - #:method "getContacts" - #:arguments (list (string-append "string:" id)))) - (all-contacts (parse-contacts reply)) + ;; The contacts are returned as "aa{ss}", that is, an array of arrays + ;; containing (string . string) pairs. + (contacts (map vector->list + (vector->list (call-configuration-manager-method + "getContacts" (list id))))) (banned? (lambda (contact) (and=> (assoc-ref contact "banned") (cut string=? "true" <>)))) - (banned (filter banned? all-contacts)) - (not-banned (filter (negate banned?) all-contacts)) + (banned (filter banned? contacts)) + (not-banned (filter (negate banned?) contacts)) (fingerprint (cut assoc-ref <> "id"))) (values (map fingerprint not-banned) (map fingerprint banned)))) @@ -449,27 +230,20 @@ the account associated with USERNAME (either a fingerprint or a registered username). When BAN? is true, also mark the contact as banned." (validate-fingerprint contact) (let ((id (username->id username))) - (send-dbus/configuration-manager - #:method "removeContact" - #:arguments (list (string-append "string:" id) - (string-append "string:" contact) - (serialize-boolean ban?))))) + (call-configuration-manager-method "removeContact" (list id contact ban?)))) (define (add-contact contact username) "Add CONTACT, the 40 characters public key fingerprint of a contact, to the account of USERNAME (either a fingerprint or a registered username)." (validate-fingerprint contact) (let ((id (username->id username))) - (send-dbus/configuration-manager - #:method "addContact" - #:arguments (list (string-append "string:" id) - (string-append "string:" contact))))) + (call-configuration-manager-method "addContact" (list id contact)))) (define* (set-account-details details username #:key timeout) "Set DETAILS, an alist containing the key value pairs to set for the account of USERNAME, a registered username or account fingerprint. The value of the parameters not provided are unchanged. TIMEOUT is a value in milliseconds to -pass to the `send-dbus/configuration-manager' procedure." +pass to the `call-configuration-manager-method' procedure." (let* ((id (username->id username)) (current-details (id->account-details id)) (updated-details (map (match-lambda @@ -477,52 +251,29 @@ pass to the `send-dbus/configuration-manager' procedure." (or (and=> (assoc-ref details key) (cut cons key <>)) (cons key value)))) - current-details)) - ;; dbus-send does not permit sending null strings (it throws a - ;; "malformed dictionary" error). Luckily they seem to have the - ;; semantic of "default account value" in Jami; so simply drop them. - (updated-details* (remove (match-lambda - ((_ . value) - (string-null? value))) - updated-details))) - (send-dbus/configuration-manager - #:timeout timeout - #:method "setAccountDetails" - #:arguments - (list (string-append "string:" id) - (string-append "dict:string:string:" - (string-join (alist->list updated-details*) - ",")))))) + current-details))) + (call-configuration-manager-method + "setAccountDetails" (list id (list->vector updated-details)) + #:timeout timeout))) (define (set-all-moderators enabled? username) "Set the 'AllModerators' property to enabled? for the account of USERNAME, a registered username or account fingerprint." (let ((id (username->id username))) - (send-dbus/configuration-manager - #:method "setAllModerators" - #:arguments - (list (string-append "string:" id) - (serialize-boolean enabled?))))) + (call-configuration-manager-method "setAllModerators" (list id enabled?)))) (define (username->all-moderators? username) "Return the 'AllModerators' property for the account of USERNAME, a registered username or account fingerprint." - (let* ((id (username->id username)) - (reply (send-dbus/configuration-manager - #:method "isAllModerators" - #:arguments - (list (string-append "string:" id))))) - (deserialize-item (parse-dbus-reply reply)))) + (let ((id (username->id username))) + (call-configuration-manager-method "isAllModerators" (list id)))) (define (username->moderators username) "Return the moderators for the account of USERNAME, a registered username or account fingerprint." - (let* ((id (username->id username)) - (reply (send-dbus/configuration-manager - #:method "getDefaultModerators" - #:arguments - (list (string-append "string:" id))))) - (array->list (parse-dbus-reply reply)))) + (let* ((id (username->id username))) + (vector->list (call-configuration-manager-method "getDefaultModerators" + (list id))))) (define (set-moderator contact enabled? username) "Set the moderator flag to ENABLED? for CONTACT, the 40 characters public @@ -530,11 +281,8 @@ key fingerprint of a contact for the account of USERNAME, a registered username or account fingerprint." (validate-fingerprint contact) (let* ((id (username->id username))) - (send-dbus/configuration-manager #:method "setDefaultModerator" - #:arguments - (list (string-append "string:" id) - (string-append "string:" contact) - (serialize-boolean enabled?))))) + (call-configuration-manager-method "setDefaultModerator" + (list id contact enabled?)))) (define (disable-account username) "Disable the account known by USERNAME, a registered username or account @@ -543,7 +291,7 @@ fingerprint." ;; Waiting for the reply on this command takes a very ;; long time that trips the default D-Bus timeout value ;; (25 s), for some reason. - #:timeout 60000)) + #:timeout 60)) (define (enable-account username) "Enable the account known by USERNAME, a registered username or account @@ -581,7 +329,3 @@ requirements." (fold alist-delete account-details first-items)))) (string-join (map pair->recutil-property sorted-account-details) "\n")) - -;; Local Variables: -;; eval: (put 'with-retries 'scheme-indent-function 2) -;; End: diff --git a/gnu/home/services/desktop.scm b/gnu/home/services/desktop.scm index cbb9cf76da..b0f4d969b0 100644 --- a/gnu/home/services/desktop.scm +++ b/gnu/home/services/desktop.scm @@ -91,26 +91,26 @@ queried for location information.") "Nighttime color temperature (kelvins).") (daytime-brightness - (maybe-inexact-number 'disabled) + maybe-inexact-number "Daytime screen brightness, between 0.1 and 1.0.") (nighttime-brightness - (maybe-inexact-number 'disabled) + maybe-inexact-number "Nighttime screen brightness, between 0.1 and 1.0.") (latitude - (maybe-inexact-number 'disabled) + maybe-inexact-number "Latitude, when @code{location-provider} is @code{'manual}.") (longitude - (maybe-inexact-number 'disabled) + maybe-inexact-number "Longitude, when @code{location-provider} is @code{'manual}.") (dawn-time - (maybe-string 'disabled) + maybe-string "Custom time for the transition from night to day in the morning---@code{\"HH:MM\"} format. When specified, solar elevation is not used to determine the daytime/nighttime period.") (dusk-time - (maybe-string 'disabled) + maybe-string "Likewise, custom time for the transition from day to night in the evening.") diff --git a/gnu/home/services/ssh.scm b/gnu/home/services/ssh.scm new file mode 100644 index 0000000000..ff2992766c --- /dev/null +++ b/gnu/home/services/ssh.scm @@ -0,0 +1,254 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2022 Ludovic Courtès <ludo@gnu.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu home services ssh) + #:use-module (guix gexp) + #:use-module (guix records) + #:use-module (guix diagnostics) + #:use-module (guix i18n) + #:use-module (gnu services) + #:use-module (gnu services configuration) + #:use-module (guix modules) + #:use-module (gnu home services) + #:use-module ((gnu home services utils) + #:select (object->camel-case-string)) + #:autoload (gnu packages base) (glibc-utf8-locales) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-34) + #:use-module (srfi srfi-35) + #:use-module (ice-9 match) + #:export (home-openssh-configuration + home-openssh-configuration-authorized-keys + home-openssh-configuration-known-hosts + home-openssh-configuration-hosts + + openssh-host + openssh-host-host-name + openssh-host-identity-file + openssh-host-name + openssh-host-port + openssh-host-user + openssh-host-forward-x11? + openssh-host-forward-x11-trusted? + openssh-host-forward-agent? + openssh-host-compression? + openssh-host-proxy-command + openssh-host-host-key-algorithms + openssh-host-accepted-key-types + openssh-host-extra-content + + home-openssh-service-type)) + +(define (serialize-field-name name) + (match name + ('accepted-key-types "PubkeyAcceptedKeyTypes") + (_ + (let ((name (let ((str (symbol->string name))) + (if (string-suffix? "?" str) + (string->symbol (string-drop-right str 1)) + name)))) + (object->camel-case-string name 'upper))))) + +(define (serialize-string field value) + (string-append " " (serialize-field-name field) + " " value "\n")) + +(define (address-family? obj) + (memv obj (list *unspecified* AF_INET AF_INET6))) + +(define (serialize-address-family field family) + (if (unspecified? family) + "" + (string-append " " (serialize-field-name field) " " + (cond ((= family AF_INET) "inet") + ((= family AF_INET6) "inet6") + ;; The 'else' branch is unreachable. + (else (raise (condition (&error))))) + "\n"))) + +(define (natural-number? obj) + (and (integer? obj) (exact? obj) (> obj 0))) + +(define (serialize-natural-number field value) + (string-append " " (serialize-field-name field) " " + (number->string value) "\n")) + +(define (serialize-boolean field value) + (string-append " " (serialize-field-name field) " " + (if value "yes" "no") "\n")) + +(define-maybe string) +(define-maybe natural-number) + +(define (serialize-raw-configuration-string field value) + (string-append value "\n")) +(define raw-configuration-string? string?) + +(define (string-list? lst) + (and (pair? lst) (every string? lst))) +(define (serialize-string-list field lst) + (string-append " " (serialize-field-name field) " " + (string-join lst ",") "\n")) + +(define-maybe string-list) + +(define-configuration openssh-host + (name + (string) + "Name of this host declaration.") + (host-name + maybe-string + "Host name---e.g., @code{\"foo.example.org\"} or @code{\"192.168.1.2\"}.") + (address-family + address-family + "Address family to use when connecting to this host: one of +@code{AF_INET} (for IPv4 only), @code{AF_INET6} (for IPv6 only), or +@code{*unspecified*} (allowing any address family).") + (identity-file + maybe-string + "The identity file to use---e.g., +@code{\"/home/charlie/.ssh/id_ed25519\"}.") + (port + maybe-natural-number + "TCP port number to connect to.") + (user + maybe-string + "User name on the remote host.") + (forward-x11? + (boolean #f) + "Whether to forward remote client connections to the local X11 graphical +display.") + (forward-x11-trusted? + (boolean #f) + "Whether remote X11 clients have full access to the original X11 graphical +display.") + (forward-agent? + (boolean #f) + "Whether the authentication agent (if any) is forwarded to the remote +machine.") + (compression? + (boolean #f) + "Whether to compress data in transit.") + (proxy-command + maybe-string + "The command to use to connect to the server. As an example, a command +to connect via an HTTP proxy at 192.0.2.0 would be: @code{\"nc -X +connect -x 192.0.2.0:8080 %h %p\"}.") + (host-key-algorithms + maybe-string-list + "The list of accepted host key algorithms---e.g., +@code{'(\"ssh-ed25519\")}.") + (accepted-key-types + maybe-string-list + "The list of accepted user public key types.") + (extra-content + (raw-configuration-string "") + "Extra content appended as-is to this @code{Host} block in +@file{~/.ssh/config}.")) + +(define (serialize-openssh-host config) + (define (openssh-host-name-field? field) + (eq? (configuration-field-name field) 'name)) + + (string-append + "Host " (openssh-host-name config) "\n" + (string-concatenate + (map (lambda (field) + ((configuration-field-serializer field) + (configuration-field-name field) + ((configuration-field-getter field) config))) + (remove openssh-host-name-field? + openssh-host-fields))))) + +(define-record-type* <home-openssh-configuration> + home-openssh-configuration make-home-openssh-configuration + home-openssh-configuration? + (authorized-keys home-openssh-configuration-authorized-keys ;list of file-like + (default '())) + (known-hosts home-openssh-configuration-known-hosts ;unspec | list of file-like + (default *unspecified*)) + (hosts home-openssh-configuration-hosts ;list of <openssh-host> + (default '()))) + +(define (openssh-configuration->string config) + (string-join (map serialize-openssh-host + (home-openssh-configuration-hosts config)) + "\n")) + +(define* (file-join name files #:optional (delimiter " ")) + "Return a file in the store called @var{name} that is the concatenation +of all the file-like objects listed in @var{files}, with @var{delimited} +inserted after each of them." + (computed-file name + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils)) + + ;; Support non-ASCII file names. + (setenv "GUIX_LOCPATH" + #+(file-append glibc-utf8-locales + "/lib/locale")) + (setlocale LC_ALL "en_US.utf8") + + (call-with-output-file #$output + (lambda (output) + (for-each (lambda (file) + (call-with-input-file file + (lambda (input) + (dump-port input output))) + (display #$delimiter output)) + '#$files))))))) + +(define (openssh-configuration-files config) + (let ((config (plain-file "ssh.conf" + (openssh-configuration->string config))) + (known-hosts (home-openssh-configuration-known-hosts config)) + (authorized-keys (file-join + "authorized_keys" + (home-openssh-configuration-authorized-keys config) + "\n"))) + `((".ssh/authorized_keys" ,authorized-keys) + ,@(if (unspecified? known-hosts) + '() + `((".ssh/known_hosts" + ,(file-join "known_hosts" known-hosts "\n")))) + (".ssh/config" ,config)))) + +(define openssh-activation + (with-imported-modules (source-module-closure + '((gnu build activation))) + #~(begin + (use-modules (gnu build activation)) + + ;; Make sure ~/.ssh is #o700. + (let* ((home (getenv "HOME")) + (dot-ssh (string-append home "/.ssh"))) + (mkdir-p/perms dot-ssh (getpw (getuid)) #o700))))) + +(define home-openssh-service-type + (service-type + (name 'home-openssh) + (extensions + (list (service-extension home-files-service-type + openssh-configuration-files) + (service-extension home-activation-service-type + (const openssh-activation)))) + (description "Configure the OpenSSH @acronym{SSH, secure shell} client +by providing a @file{~/.ssh/config} file, which is honored by the OpenSSH +client,@command{ssh}, and by other tools such as @command{guix deploy}.") + (default-value (home-openssh-configuration)))) diff --git a/gnu/local.mk b/gnu/local.mk index c786a2720b..fd5515bef9 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1,6 +1,6 @@ # GNU Guix --- Functional package management for GNU # Copyright © 2012-2021, 2021-2022 Ludovic Courtès <ludo@gnu.org> -# Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Andreas Enge <andreas@enge.fr> +# Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2022 Andreas Enge <andreas@enge.fr> # Copyright © 2016 Mathieu Lirzin <mthl@gnu.org> # Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Mark H Weaver <mhw@netris.org> # Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> @@ -85,6 +85,7 @@ GNU_SYSTEM_MODULES = \ %D%/home/services/fontutils.scm \ %D%/home/services/shells.scm \ %D%/home/services/shepherd.scm \ + %D%/home/services/ssh.scm \ %D%/home/services/mcron.scm \ %D%/home/services/utils.scm \ %D%/home/services/xdg.scm \ @@ -181,6 +182,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/cvassistant.scm \ %D%/packages/cybersecurity.scm \ %D%/packages/cyrus-sasl.scm \ + %D%/packages/darwin.scm \ %D%/packages/databases.scm \ %D%/packages/datamash.scm \ %D%/packages/datastructures.scm \ @@ -715,6 +717,7 @@ GNU_SYSTEM_MODULES = \ %D%/build/bootloader.scm \ %D%/build/chromium-extension.scm \ %D%/build/cross-toolchain.scm \ + %D%/build/dbus-service.scm \ %D%/build/image.scm \ %D%/build/jami-service.scm \ %D%/build/file-systems.scm \ @@ -848,7 +851,6 @@ dist_patch_DATA = \ %D%/packages/patches/akonadi-not-relocatable.patch \ %D%/packages/patches/akonadi-timestamps.patch \ %D%/packages/patches/allegro-mesa-18.2.5-and-later.patch \ - %D%/packages/patches/alpine-fix-privacy-policy-crash.patch \ %D%/packages/patches/anki-mpv-args.patch \ %D%/packages/patches/antiword-CVE-2014-8123.patch \ %D%/packages/patches/antlr3-3_1-fix-java8-compilation.patch \ @@ -1039,7 +1041,6 @@ dist_patch_DATA = \ %D%/packages/patches/enjarify-setup-py.patch \ %D%/packages/patches/enlightenment-fix-setuid-path.patch \ %D%/packages/patches/eog-update-libportal-usage.patch \ - %D%/packages/patches/epiphany-update-libportal-usage.patch \ %D%/packages/patches/erlang-man-path.patch \ %D%/packages/patches/esmtp-add-lesmtp.patch \ %D%/packages/patches/eudev-rules-directory.patch \ @@ -1074,7 +1075,6 @@ dist_patch_DATA = \ %D%/packages/patches/foomatic-filters-CVE-2015-8560.patch \ %D%/packages/patches/fp16-system-libraries.patch \ %D%/packages/patches/fpc-reproducibility.patch \ - %D%/packages/patches/fplll-std-fenv.patch \ %D%/packages/patches/freedink-engine-fix-sdl-hints.patch \ %D%/packages/patches/freeglut-gcc-compat.patch \ %D%/packages/patches/freeimage-unbundle.patch \ @@ -1319,6 +1319,7 @@ dist_patch_DATA = \ %D%/packages/patches/java-tunnelvisionlabs-antlr-code-too-large.patch \ %D%/packages/patches/java-apache-ivy-port-to-latest-bouncycastle.patch \ %D%/packages/patches/java-commons-collections-fix-java8.patch \ + %D%/packages/patches/java-commons-lang-fix-dependency.patch \ %D%/packages/patches/java-jeromq-fix-tests.patch \ %D%/packages/patches/java-openjfx-build-jdk_version.patch \ %D%/packages/patches/java-powermock-fix-java-files.patch \ @@ -1349,6 +1350,7 @@ dist_patch_DATA = \ %D%/packages/patches/kinit-kdeinit-extra_libs.patch \ %D%/packages/patches/kinit-kdeinit-libpath.patch \ %D%/packages/patches/kio-search-smbd-on-PATH.patch \ + %D%/packages/patches/kismet-unbundle-boost.patch \ %D%/packages/patches/kmail-Fix-missing-link-libraries.patch \ %D%/packages/patches/kmod-module-directory.patch \ %D%/packages/patches/kmscon-runtime-keymap-switch.patch \ @@ -1453,9 +1455,8 @@ dist_patch_DATA = \ %D%/packages/patches/llvm-9-fix-bitcast-miscompilation.patch \ %D%/packages/patches/llvm-9-fix-lpad-miscompilation.patch \ %D%/packages/patches/llvm-9-fix-scev-miscompilation.patch \ - %D%/packages/patches/llvm-roc-3.0.0-add_libraries.patch \ %D%/packages/patches/llvm-roc-4.0.0-remove-isystem-usr-include.patch \ - %D%/packages/patches/llvm-roc-4.2.0-add_Object.patch \ + %D%/packages/patches/llvm-roc-5.0.0-linkdl.patch \ %D%/packages/patches/lm-sensors-hwmon-attrs.patch \ %D%/packages/patches/lrcalc-includes.patch \ %D%/packages/patches/lsh-fix-x11-forwarding.patch \ @@ -1477,6 +1478,7 @@ dist_patch_DATA = \ %D%/packages/patches/mars-sfml-2.3.patch \ %D%/packages/patches/mathjax-disable-webpack.patch \ %D%/packages/patches/mathjax-no-a11y.patch \ + %D%/packages/patches/mathjax-3.1.2-no-a11y.patch \ %D%/packages/patches/maxima-defsystem-mkdir.patch \ %D%/packages/patches/maven-generate-component-xml.patch \ %D%/packages/patches/maven-generate-javax-inject-named.patch \ @@ -1528,7 +1530,6 @@ dist_patch_DATA = \ %D%/packages/patches/netsurf-system-utf8proc.patch \ %D%/packages/patches/netsurf-y2038-tests.patch \ %D%/packages/patches/netsurf-longer-test-timeout.patch \ - %D%/packages/patches/nftables-fix-makefile.patch \ %D%/packages/patches/nhc98-c-update.patch \ %D%/packages/patches/nix-dont-build-html-doc.diff \ %D%/packages/patches/nfs4-acl-tools-0.3.7-fixpaths.patch \ @@ -1653,6 +1654,7 @@ dist_patch_DATA = \ %D%/packages/patches/psm-disable-memory-stats.patch \ %D%/packages/patches/psm-ldflags.patch \ %D%/packages/patches/psm-repro.patch \ + %D%/packages/patches/public-inbox-fix-spawn-test.patch \ %D%/packages/patches/pulseaudio-fix-mult-test.patch \ %D%/packages/patches/pulseaudio-longer-test-timeout.patch \ %D%/packages/patches/pulseview-qt515-compat.patch \ @@ -1721,6 +1723,7 @@ dist_patch_DATA = \ %D%/packages/patches/python-werkzeug-tests.patch \ %D%/packages/patches/python-mypy-12332.patch \ %D%/packages/patches/python-mypy-use-sys-path.patch \ + %D%/packages/patches/python-zeep-Fix-pytest_httpx-test-cases.patch \ %D%/packages/patches/qemu-build-info-manual.patch \ %D%/packages/patches/qemu-glibc-2.27.patch \ %D%/packages/patches/qemu-glibc-2.30.patch \ @@ -1763,9 +1766,7 @@ dist_patch_DATA = \ %D%/packages/patches/rnp-disable-ruby-rnp-tests.patch \ %D%/packages/patches/rnp-unbundle-googletest.patch \ %D%/packages/patches/rocm-comgr-3.1.0-dependencies.patch \ - %D%/packages/patches/rocm-opencl-runtime-3.10.0-includes.patch \ %D%/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch \ - %D%/packages/patches/rocm-opencl-runtime-4.3-nocltrace.patch \ %D%/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch \ %D%/packages/patches/ruby-mustache-1.1.1-fix-race-condition-tests.patch \ %D%/packages/patches/ruby-sanitize-system-libxml.patch \ @@ -1846,6 +1847,7 @@ dist_patch_DATA = \ %D%/packages/patches/texi2html-i18n.patch \ %D%/packages/patches/thefuck-test-environ.patch \ %D%/packages/patches/tidy-CVE-2015-5522+5523.patch \ + %D%/packages/patches/timescaledb-flaky-test.patch \ %D%/packages/patches/tinyxml-use-stl.patch \ %D%/packages/patches/tipp10-disable-downloader.patch \ %D%/packages/patches/tipp10-fix-compiling.patch \ diff --git a/gnu/packages/accessibility.scm b/gnu/packages/accessibility.scm index 36210d3e52..22e70b737a 100644 --- a/gnu/packages/accessibility.scm +++ b/gnu/packages/accessibility.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at> -;;; Copyright © 2018, 2021 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018, 2021, 2022 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Andrew Miloradovsky <andrew@interpretmath.pw> ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> ;;; @@ -89,14 +89,14 @@ terminals.") (define-public brltty (package (name "brltty") - (version "6.4") + (version "6.5") (source (origin (method url-fetch) (uri (string-append "https://brltty.app/archive/brltty-" version ".tar.gz")) (sha256 - (base32 "0zybi9i9izv25g0wphl0snddrhb6xl5879y4pkpjpnxq61wm9gry")))) + (base32 "1h62xzd5k0aaq2k4v3w93rizxnb8psvkxrlx62wr08ybwpspgp7z")))) (build-system glib-or-gtk-build-system) (arguments `(#:tests? #f ; No target diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index c368fc94bd..2a3e962858 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -45,6 +45,8 @@ ;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re> ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> +;;; Copyright © 2021 muradm <mail@muradm.net> +;;; Copyright © 2021 pineapples <guixuser6392@protonmail.com> ;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com> ;;; Copyright © 2021 Artyom V. Poptsov <poptsov.artyom@gmail.com> ;;; Copyright © 2022 Wamm K. D. <jaft.r@outlook.com> @@ -66,6 +68,7 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages admin) + #:use-module (guix build-system cargo) #:use-module (guix build-system cmake) #:use-module (guix build-system emacs) #:use-module (guix build-system glib-or-gtk) @@ -93,6 +96,7 @@ #:use-module (gnu packages c) #:use-module (gnu packages check) #:use-module (gnu packages compression) + #:use-module (gnu packages crates-io) #:use-module (gnu packages cross-base) #:use-module (gnu packages crypto) #:use-module (gnu packages cryptsetup) @@ -101,6 +105,7 @@ #:use-module (gnu packages elf) #:use-module (gnu packages file) #:use-module (gnu packages flex) + #:use-module (gnu packages freedesktop) #:use-module (gnu packages gawk) #:use-module (gnu packages gettext) #:use-module (gnu packages gl) @@ -680,7 +685,7 @@ console.") (define-public htop (package (name "htop") - (version "3.2.0") + (version "3.2.1") (source (origin (method git-fetch) @@ -688,7 +693,7 @@ console.") (url "https://github.com/htop-dev/htop") (commit version))) (sha256 - (base32 "16l1r2ixzs640ybqp2x8bfyvk98kiywy7k3sjmp5j5npdzn5ryd7")) + (base32 "0yfmkw3y4qyd42svhpiijif7krvmnb8z88y6h9g4fwf7sfynq2rk")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (inputs @@ -1127,6 +1132,77 @@ IPv6, proxies, and Unix sockets.") (license (list license:bsd-3 license:bsd-2)))) ; atomicio.*, socks.c +(define-public nmon + (package + (name "nmon") + (version "16n") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/nmon/lmon" version ".c")) + (sha256 + (base32 "1wpm2f30414b87kpbr9hbidblr5cmfby5skwqd0fkpi5v712q0f0")))) + (build-system gnu-build-system) + (arguments + (list #:tests? #f ; no test suite + #:phases + #~(modify-phases %standard-phases + (replace 'unpack + (lambda _ + (copy-file #$(package-source this-package) "lmon.c"))) + (delete 'configure) ; no build system + (replace 'build + ;; There is an example ‘Makefile’ in the .c file. + (lambda _ + ;; These #defines aren't well-documented and, e.g., POWER was + ;; not actually tested on every possible TARGET-POWERPC?. + (let* ((system #$(cond ((target-x86-32?) "X86") + ((target-x86-64?) "X86") + ((target-arm?) "ARM") + ((target-powerpc?) "POWER") + (else "CROSS_FINGERS")))) + (format #t "Building for ~a~%" system) + (invoke #$(cc-for-target) "-o" "nmon" "lmon.c" + "-g" "-Wall" "-D" system + "-lncurses" "-lm")))) + (replace 'install + (lambda _ + (let ((bin (string-append #$output "/bin")) + (man1 (string-append #$output "/share/man/man1"))) + (install-file "nmon" bin) + (mkdir-p man1) + (copy-file #$(this-package-native-input "man-page") + (string-append man1 "/nmon.1")))))))) + (native-inputs + (list `("man-page" + ,(origin + ;; There is no man page upstream, so install Debian's. + (method url-fetch) + (uri (string-append "https://salsa.debian.org/carnil/nmon/" + "-/raw/debian/" version "+debian-1/" + "debian/nmon.1")) + (sha256 + (base32 + "1gpvd2kjyhs18sh6sga5bk9wj8s78blfd4c0m38r0wl92jx2yv1b")))))) + (inputs + (list ncurses)) + (home-page "http://nmon.sourceforge.net/") + (synopsis + "Monitor system performance in a terminal or to a @file{.csv} log file") + (description + "@acronym{Nmon, Nigel's performance monitor} is yet another system monitor +useful in systems administration, debugging, tuning, and benchmarking. + +The configurable ncurses interface displays all the classic resource usage +statistics (CPU, memory, network, disk, ...) as real-time graphs or numbers. +It can also list the processes responsible in a @command{top}-like table. + +A less common nmon feature is its ability to create highly detailed log files +in @acronym{CSV, comma-separated values} format. These can be imported into +spreadsheets or fed straight into an @acronym{RRD, round-robin database} using +@command{rrdtool} for further analyisis, or to create colourful graphs.") + (license license:gpl3+))) + (define-public sipcalc (package (name "sipcalc") @@ -1769,7 +1845,7 @@ system administrator.") (define-public sudo (package (name "sudo") - (version "1.9.11") + (version "1.9.11p2") (source (origin (method url-fetch) (uri @@ -1779,7 +1855,7 @@ system administrator.") version ".tar.gz"))) (sha256 (base32 - "1gjingc1h7d6p17m0nn87yiwh8gbdchg4w4kv8s4g89wv0q6wixm")) + "1lli4z10b5j238cn7471jb8vcjlj5px68x48ysa3f1n0kzmih6d2")) (modules '((guix build utils))) (snippet '(begin @@ -4987,4 +5063,161 @@ it won't take longer to install 15 machines than it would to install just 2.") (home-page "https://www.udpcast.linux.lu") (license license:gpl2+))) +(define-public greetd + (package + (name "greetd") + (version "0.8.0") + (home-page "https://git.sr.ht/~kennylevinsen/greetd") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0x5c3jkw09kvj2grcxm899y2n6ws8p990cyp9cs0fy6lm4fzlh6v")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-nix" ,rust-nix-0.19) + ("rust-pam-sys" ,rust-pam-sys-0.5) + ("rust-rpassword" ,rust-rpassword-5) + ("rust-users" ,rust-users-0.11) + ("rust-serde" ,rust-serde-1) + ("rust-serde-json" ,rust-serde-json-1) + ("rust-libc" ,rust-libc-0.2) + ("rust-tokio" ,rust-tokio-1) + ("rust-getopts" ,rust-getopts-0.2) + ("rust-thiserror" ,rust-thiserror-1) + ("rust-async-trait" ,rust-async-trait-0.1) + ("rust-enquote" ,rust-enquote-1)) + #:phases + (modify-phases %standard-phases + (delete 'package) + (add-after 'build 'build-man-pages + (lambda* (#:key inputs #:allow-other-keys) + (define (scdoc-cmd doc lvl) + (system (string-append "scdoc < " + doc "-" lvl ".scd > " + doc "." lvl))) + (with-directory-excursion "man" + (scdoc-cmd "greetd" "1") + (scdoc-cmd "greetd" "5") + (scdoc-cmd "greetd-ipc" "7") + (scdoc-cmd "agreety" "1")))) + (replace 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (sbin (string-append out "/sbin")) + (share (string-append out "/share")) + (man (string-append share "/man")) + (man1 (string-append man "/man1")) + (man5 (string-append man "/man5")) + (man7 (string-append man "/man7")) + (release "target/release") + (greetd-bin (string-append release "/greetd")) + (agreety-bin (string-append release "/agreety"))) + (install-file greetd-bin sbin) + (install-file agreety-bin bin) + (with-directory-excursion "man" + (install-file "greetd.1" man1) + (install-file "greetd.5" man5) + (install-file "greetd-ipc.7" man7) + (install-file "agreety.1" man1)))))))) + (native-inputs + `(("linux-pam" ,linux-pam) + ("scdoc" ,scdoc))) + (synopsis "minimal and flexible login manager daemon") + (description + "greetd is a minimal and flexible login manager daemon +that makes no assumptions about what you want to launch. + +If you can run it from your shell in a TTY, greetd can start it. + +If it can be taught to speak a simple JSON-based IPC protocol, +then it can be a greeter.") + (license license:gpl3+))) + +(define-public greetd-pam-mount + (package + (inherit pam-mount) + (name "greetd-pam-mount") + (arguments + (substitute-keyword-arguments (package-arguments pam-mount) + ((#:configure-flags flags ''()) + #~(cons* "--with-rundir=/run/greetd" #$flags)) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'patch-config-file-name + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/pam_mount.c" + ((".*define CONFIGFILE .*$") + "#define CONFIGFILE \"/etc/security/greetd_pam_mount.conf.xml\"\n") + (("pam_mount_config") "greetd_pam_mount_config") + (("pam_mount_system_authtok") "greetd_pam_mount_system_authtok")))))))) + (synopsis "pam-mount specifically compiled for use with greetd") + (description + "Pam-mount is a PAM module that can mount volumes when a user logs in. +It supports mounting local filesystems of any kind the normal mount utility +supports. It can also mount encrypted LUKS volumes using the password +supplied by the user when logging in. + +This package inherits pam-mount in the way that it is compiled specifically +for use with greetd daemon. It uses different configuration location and +name space for storing data in PAM. +greetd-pam-mount is used in configuration of greetd to provide +auto-(mounting/unmounting) of XDG_RUNTIME_DIR in the way that it will not +interfere with default pam-mount configuration."))) + +(define-public libseat + (package + (name "libseat") + (version "0.7.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://git.sr.ht/~kennylevinsen/seatd") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "10f8387yy5as547xjjhl0cna6iywdgjmw0iq2nvcs8q6vlpnik4v")))) + (build-system meson-build-system) + (arguments + `(#:configure-flags '("-Dlibseat-logind=elogind" + "-Dserver=disabled"))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (propagated-inputs + `(("elogind" ,elogind))) + (home-page "https://sr.ht/~kennylevinsen/seatd") + (synopsis "Seat management library") + (description + "This package provides a universal seat management library that +allows applications to use whatever seat management is available.") + (license license:expat))) + +(define-public seatd + (package + (inherit libseat) + (name "seatd") + (arguments + `(#:configure-flags '("-Dlibseat-logind=elogind") + #:phases + (modify-phases %standard-phases + (add-after 'install 'remove-libs + (lambda* (#:key outputs #:allow-other-keys) + (with-directory-excursion (assoc-ref outputs "out") + (for-each delete-file-recursively '("lib" "include")))))))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("scdoc" ,scdoc))) + (inputs '()) + (synopsis "Seat management daemon") + (description + "This package provides a minimal seat management daemon whose task is to +mediate access to shared devices, such as graphics and input, for applications +that require it.") + (license license:expat))) diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm index 869a1373e5..3dd476ace9 100644 --- a/gnu/packages/algebra.scm +++ b/gnu/packages/algebra.scm @@ -1,10 +1,10 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Andreas Enge <andreas@enge.fr> +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2022 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013, 2015, 2017, 2018, 2021 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016-2022 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2014, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016, 2018, 2019, 2021 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2017, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2017, 2020-2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017, 2019, 2021, 2022 Eric Bavier <bavier@posteo.net> @@ -154,7 +154,7 @@ line applications.") (define-public fplll (package (name "fplll") - (version "5.3.3") + (version "5.4.2") (source (origin (method git-fetch) (uri (git-reference @@ -163,8 +163,7 @@ line applications.") (file-name (git-file-name name version)) (sha256 (base32 - "06nyfidagp8pc2kfcw88ldgb2b1xm0a8z31n0sln7j72ihlmd8zj")) - (patches (search-patches "fplll-std-fenv.patch")))) + "0044nyfnwzgyfrsikbcbh00f54dd61hwn3fb6711rrskkfnw977a")))) (build-system gnu-build-system) (native-inputs (list autoconf automake libtool pkg-config)) @@ -199,19 +198,14 @@ the real span of the lattice.") (define-public python-fpylll (package (name "python-fpylll") - (version "0.5.2") + (version "0.5.7") (source (origin - ;; Pypi contains and older release, so we use a tagged release from - ;; Github instead. - (method git-fetch) - (uri (git-reference - (url "https://github.com/fplll/fpylll") - (commit (string-append version "dev")))) - (file-name (git-file-name name version)) + (method url-fetch) + (uri (pypi-uri "fpylll" version)) (sha256 (base32 - "1a25iibihph626jl4wbs4b77xc4a2c4nfc2ypscf9wpani3dnhjf")))) + "1xjqcwq90blgzvnbkbzdys8mdhi2b4li6faywm6yi8shxvz8iz0s")))) (build-system python-build-system) (inputs (list fplll gmp mpfr pari-gp)) @@ -248,6 +242,7 @@ the real span of the lattice.") (replace 'configure (lambda* (#:key outputs #:allow-other-keys) (invoke "./Configure" + "--mt=pthread" (string-append "--prefix=" (assoc-ref outputs "out")))))))) (synopsis "PARI/GP, a computer algebra system for number theory") @@ -1021,17 +1016,18 @@ extends it by a set of algebraic capabilities.") #:phases (modify-phases %standard-phases (replace 'check - (lambda _ + (lambda* (#:key tests? #:allow-other-keys) (let* ((cores (parallel-job-count)) (dash-j (format #f "-j~a" cores))) - (setenv "EIGEN_SEED" "1") ;for reproducibility - ;; First build the tests, in parallel. See - ;; <http://eigen.tuxfamily.org/index.php?title=Tests>. - (invoke "make" "buildtests" dash-j) + (when tests? + (setenv "EIGEN_SEED" "1") ;for reproducibility + ;; First build the tests, in parallel. See + ;; <http://eigen.tuxfamily.org/index.php?title=Tests>. + (invoke "make" "buildtests" dash-j) - ;; Then run 'CTest' with -V so we get more - ;; details upon failure. - (invoke "ctest" "-V" dash-j))))))) + ;; Then run 'CTest' with -V so we get more + ;; details upon failure. + (invoke "ctest" "-V" dash-j)))))))) (home-page "https://eigen.tuxfamily.org") (synopsis "C++ template library for linear algebra") (description @@ -1734,14 +1730,14 @@ no more than about 20 bits long).") (define-public sollya (package (name "sollya") - (version "7.0") + (version "8.0") (source (origin (method url-fetch) (uri (string-append "https://www.sollya.org/releases/" "sollya-" version "/sollya-" version ".tar.bz2")) (sha256 (base32 - "11290ivi9h665cxi8f1shlavhy10vzb8s28m57hrcgnxyxqmhx0m")))) + "1sf1cjcr6x035n97l64ppzb9pzq5568h7waz0zfc3120894gcnjz")))) (build-system gnu-build-system) (inputs (list fplll diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 8ec78f665c..70b0f1181c 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -3210,7 +3210,7 @@ tempo and pitch of an audio recording independently of one another.") (define-public rtmidi (package (name "rtmidi") - (version "4.0.0") + (version "5.0.0") (source (origin (method url-fetch) (uri (string-append "https://www.music.mcgill.ca/~gary/rtmidi" @@ -3218,7 +3218,7 @@ tempo and pitch of an audio recording independently of one another.") (file-name (string-append "rtmidi-" version ".tar.gz")) (sha256 (base32 - "1k962ljpnwyjw9jjiky2372khhri1wqvrj5qsalfpys31xqzw31p")))) + "1ff2yfq3k4l209fr71v3w98fpjjv1chs09vkbmxj03lcikahxns8")))) (build-system gnu-build-system) (inputs (list jack-1 alsa-lib)) @@ -3232,6 +3232,19 @@ classes) that provide a common cross-platform API for realtime MIDI input/output.") (license license:expat))) +(define-public rtmidi-4.0 + (package + (inherit rtmidi) + (version "4.0.0") + (source (origin + (method url-fetch) + (uri (string-append "https://www.music.mcgill.ca/~gary/rtmidi" + "/release/rtmidi-" version ".tar.gz")) + (file-name (string-append "rtmidi-" version ".tar.gz")) + (sha256 + (base32 + "1k962ljpnwyjw9jjiky2372khhri1wqvrj5qsalfpys31xqzw31p")))))) + (define-public sratom (package (name "sratom") diff --git a/gnu/packages/autogen.scm b/gnu/packages/autogen.scm index d0c8df17ec..9751e11a64 100644 --- a/gnu/packages/autogen.scm +++ b/gnu/packages/autogen.scm @@ -49,7 +49,7 @@ "def_bf[MAXNAMELEN + 10]"))))) (build-system gnu-build-system) (native-inputs (list pkg-config which)) - (inputs (list guile-2.2 perl)) ; for doc generator mdoc + (inputs (list guile-3.0 perl)) ; for doc generator mdoc (arguments '(#:configure-flags ;; XXX Needed to build 5.18.16. ./configure fails without it: @@ -62,6 +62,24 @@ #:phases (modify-phases %standard-phases + (add-after 'unpack 'support-guile-3.0 + ;; Upstream bug: + ;; https://sourceforge.net/p/autogen/bugs/196/ + ;; + ;; Supported in Debian and openSUSE: + ;; https://salsa.debian.org/debian/autogen/-/blob/master/debian/patches/40_suse_04-guile-version.patch + (lambda _ + (substitute* "agen5/guile-iface.h" + (("#elif GUILE_VERSION < 203000") "#elif GUILE_VERSION < 301000")) + (substitute* "configure" + (("2.2 2.0 1.8") "3.0 2.2 2.0 1.8")))) + (add-after 'unpack 'use-numeric-ids-in-tarball + ;; Pass arguments to tar to generate tarball with consistent uid + ;; and gid to ensure reproducible build + (lambda _ + (substitute* "pkg/libopts/mklibsrc.sh" + (("--sort=name --format=gnu") + "--sort=name --format=gnu --owner=0 --group=0 --numeric-owner")))) (add-before 'build 'set-man-page-date ;; Avoid embedding the current date for reproducible builds (lambda _ diff --git a/gnu/packages/aux-files/renpy/renpy.in b/gnu/packages/aux-files/renpy/renpy.in index 914a735fa4..9115d9aee3 100644 --- a/gnu/packages/aux-files/renpy/renpy.in +++ b/gnu/packages/aux-files/renpy/renpy.in @@ -1,12 +1,29 @@ #! @PYTHON@ # -*- mode: python -*- -from __future__ import print_function - +import glob import os import sys import warnings +def __renpy_files(directory): + for pattern in ['*.rpa', '*.rpyc', '*.rpy']: + for file in glob.iglob(pattern, root_dir=directory): + yield file + +def path_to_gamedir(basedir, name): + candidates = [name, 'game', 'data', 'launcher/game'] + + if __renpy_files(basedir): + return basedir + + for candidate in candidates: + gamedir = os.path.join(basedir, candidate) + if __renpy_files(gamedir): + return gamedir + + return basedir + def path_to_common(renpy_base): return renpy_base + "/common" diff --git a/gnu/packages/barrier.scm b/gnu/packages/barrier.scm index 1382a0fd71..721fdcf314 100644 --- a/gnu/packages/barrier.scm +++ b/gnu/packages/barrier.scm @@ -46,7 +46,7 @@ (recursive? #t))) (file-name (git-file-name name version)) (sha256 - (base32 "10xk9szxxnqgfym53mcd9hqj1cw2ipncmiixw3i3ajlj1vn88qh1")))) + (base32 "19bwa9qidq2mxv1fkyxxc1xdmv3jx6bj35bkaaw70jzkblnfmlfs")))) (build-system cmake-build-system) (arguments '(#:configure-flags diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index b69a09a73f..33db96974f 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -1308,7 +1308,7 @@ command.") (name "tzdata") ;; This package should be kept in sync with python-pytz in (gnu packages ;; time). - (version "2021e") + (version "2022a") (source (origin (method url-fetch) (uri (string-append @@ -1316,7 +1316,7 @@ command.") version ".tar.gz")) (sha256 (base32 - "1cdjdcxl0s9xf0dg1z64kh7llm80byxqlzrkkjzcdlyh6yvl5v07")))) + "0r0nhwpk9nyxj5kkvjy58nr5d85568m04dcb69c4y3zmykczyzzg")))) (build-system gnu-build-system) (arguments (list #:tests? #f @@ -1384,7 +1384,7 @@ command.") version ".tar.gz")) (sha256 (base32 - "0x8pcfmjvxk29yfh8bklchv2f0vpl4yih0gc4wyx292l78wncijq"))))) + "1iysv8fdkm79k8wh8jizmjmq075q4qjhk090vxjy57my6dz5wmzq"))))) (home-page "https://www.iana.org/time-zones") (synopsis "Database of current and historical time zones") (description "The Time Zone Database (often called tz or zoneinfo) diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm index 176f7ecc6d..1e87b190c2 100644 --- a/gnu/packages/bioconductor.scm +++ b/gnu/packages/bioconductor.scm @@ -2188,6 +2188,50 @@ set analyses, and can deal with repeated or longitudinal data.") biological sequences.") (license license:gpl3))) +(define-public r-deconvr + (package + (name "r-deconvr") + (version "1.2.0") + (source (origin + (method url-fetch) + (uri (bioconductor-uri "deconvR" version)) + (sha256 + (base32 + "091z3lncamscsvzj63zzbw7dr7vnkn0jwfkm5ljq4112w4rxgrm3")))) + (properties `((upstream-name . "deconvR"))) + (build-system r-build-system) + (propagated-inputs + (list r-assertthat + r-biocgenerics + r-data-table + r-dplyr + r-e1071 + r-foreach + r-genomicranges + r-iranges + r-magrittr + r-mass + r-matrixstats + r-methylkit + r-nnls + r-quadprog + r-rsq + r-s4vectors + r-tidyr)) + (native-inputs (list r-knitr)) + (home-page "https://github.com/BIMSBbioinfo/deconvR") + (synopsis "Simulation and deconvolution of omic profiles") + (description + "This package provides a collection of functions designed for analyzing +deconvolution of the bulk sample(s) using an atlas of reference omic signature +profiles and a user-selected model. Users are given the option to create or +extend a reference atlas and,also simulate the desired size of the bulk +signature profile of the reference cell types. The package includes the +cell-type-specific methylation atlas and, Illumina Epic B5 probe ids that can +be used in deconvolution. Additionally, we included @code{BSmeth2Probe}, to +make mapping WGBS data to their probe IDs easier.") + (license license:artistic2.0))) + (define-public r-decoupler (package (name "r-decoupler") @@ -2232,13 +2276,13 @@ targeted by a kinase.") (define-public r-deepsnv (package (name "r-deepsnv") - (version "1.42.0") + (version "1.42.1") (source (origin (method url-fetch) (uri (bioconductor-uri "deepSNV" version)) (sha256 (base32 - "0si1x2bi5pff1dicpqg7hv4ziq46vm7lic72724ljsclpz9bfv6q")))) + "0bgj1grv3a5bqhcdsw445x49kl3pz367svy6fnrzfsk9bmj46kgn")))) (properties `((upstream-name . "deepSNV"))) (build-system r-build-system) (propagated-inputs @@ -3103,13 +3147,13 @@ powerful online queries from gene annotation to database mining.") (define-public r-biocparallel (package (name "r-biocparallel") - (version "1.30.2") + (version "1.30.3") (source (origin (method url-fetch) (uri (bioconductor-uri "BiocParallel" version)) (sha256 (base32 - "0rqvwhs6d8ls1rq7j5ywl5k0qgblxpzimilyw335bi1yad5s10h3")))) + "1rs3wmasl9mx7f399iclvm0bnvggvjj2a88zbi294r5m8wxqlc92")))) (properties `((upstream-name . "BiocParallel"))) (build-system r-build-system) @@ -3142,7 +3186,7 @@ powerful online queries from gene annotation to database mining.") (string-append m "; if (!is.na(Sys.getenv(\"SOURCE_DATE_EPOCH\"))) {set.seed(100)}\n")))))))) (propagated-inputs - (list r-futile-logger r-snow r-bh)) + (list r-bh r-codetools r-futile-logger r-snow)) (native-inputs (list r-knitr)) (home-page "https://bioconductor.org/packages/BiocParallel") @@ -3934,13 +3978,13 @@ alignments.") (define-public r-genomicfeatures (package (name "r-genomicfeatures") - (version "1.48.1") + (version "1.48.3") (source (origin (method url-fetch) (uri (bioconductor-uri "GenomicFeatures" version)) (sha256 (base32 - "18ain5s0ry6w0ki4c0czvwax2ncigrldyac30a6mlbzyaga6i54h")))) + "0f14p1ma2y8l60p9sxmh5j0axws9by1cznczb2jxipphpb4slpl1")))) (properties `((upstream-name . "GenomicFeatures"))) (build-system r-build-system) @@ -4193,14 +4237,14 @@ Shiny-based display methods for Bioconductor objects.") (define-public r-keggrest (package (name "r-keggrest") - (version "1.36.0") + (version "1.36.2") (source (origin (method url-fetch) (uri (bioconductor-uri "KEGGREST" version)) (sha256 (base32 - "0hzlm6nzmx0iyjh063512a3ghc1xqb58g5z2bnd2wl4y42iww7bg")))) + "1rn03w8y80prbvzahkvf8275haiymnjj1ijcgn55p3d0sb54yzgw")))) (properties `((upstream-name . "KEGGREST"))) (build-system r-build-system) (propagated-inputs @@ -4932,14 +4976,14 @@ tab-delimited (tabix) files.") (define-public r-restfulr (package (name "r-restfulr") - (version "0.0.13") + (version "0.0.14") (source (origin (method url-fetch) (uri (cran-uri "restfulr" version)) (sha256 (base32 - "1dk45mzrr6ka92yjz7hfhkj12kpx1wg4szv1h1mg80mgga4ganbv")))) + "1sdlz8zl4xvd7cpn1gm86q7jv9v7561gg4wk6y7zybiw37pxghq6")))) (properties `((upstream-name . "restfulr"))) (build-system r-build-system) (propagated-inputs @@ -5909,13 +5953,13 @@ libraries for systems that do not have these available via other means.") (define-public r-zellkonverter (package (name "r-zellkonverter") - (version "1.6.1") + (version "1.6.2") (source (origin (method url-fetch) (uri (bioconductor-uri "zellkonverter" version)) (sha256 - (base32 "1w3qi35vk289cpky1pb0wgg1hr55s5kdw7np98i9c1vmwi3gvwr7")))) + (base32 "0s1n3impm4k55pac8mr18czylsc30yqcvdfdki4sawk74b2rkx8c")))) (properties `((upstream-name . "zellkonverter"))) (build-system r-build-system) (propagated-inputs @@ -6383,14 +6427,14 @@ determining dependencies between variables, code improvement suggestions.") (define-public r-chippeakanno (package (name "r-chippeakanno") - (version "3.30.0") + (version "3.30.1") (source (origin (method url-fetch) (uri (bioconductor-uri "ChIPpeakAnno" version)) (sha256 (base32 - "1ch636j3zd6hcfnl455vjs36wffrdhwzyvkbikcwjg7idiknjdkf")))) + "0a26glldxczcfymjvd45gv5m4hympziivm6wwx4ab9wld7n43l8y")))) (properties `((upstream-name . "ChIPpeakAnno"))) (build-system r-build-system) (propagated-inputs @@ -7368,14 +7412,14 @@ and summarizing a set of statistics using a weighted distance approach.") (define-public r-nbpseq (package (name "r-nbpseq") - (version "0.3.0") + (version "0.3.1") (source (origin (method url-fetch) (uri (cran-uri "NBPSeq" version)) (sha256 (base32 - "0l4ylxhs2k9ww21jjqs67fygk92avdchhx2y1ixzl7yr2yh1y9by")))) + "07mnnk4n0cyksp1mw36y6369is62kxsfg3wb8d3dwswycdmj8m14")))) (properties `((upstream-name . "NBPSeq"))) (build-system r-build-system) (propagated-inputs @@ -7652,14 +7696,14 @@ single cell assay data.") (define-public r-monocle (package (name "r-monocle") - (version "2.24.0") + (version "2.24.1") (source (origin (method url-fetch) (uri (bioconductor-uri "monocle" version)) (sha256 (base32 - "1fyqd7qhij2iyx9vdmgnx2qf0w3kwbkmg805539zrmxry8cwfldb")))) + "11g1wx0f1yzhg3x1aa3d5l7pqlzxj16s0gha21skxkgld8k2x8xn")))) (build-system r-build-system) (propagated-inputs (list r-biobase @@ -8699,14 +8743,14 @@ All the visualization methods are developed based on ggplot2 graphics.") (define-public r-clusterprofiler (package (name "r-clusterprofiler") - (version "4.4.1") + (version "4.4.2") (source (origin (method url-fetch) (uri (bioconductor-uri "clusterProfiler" version)) (sha256 (base32 - "03bg3agisrm4q10gg57dksvd1ws37if6a1gwcxaybb4c50zadm8p")))) + "07fbc3d06990qy1qcaqqgm5ma2l0h08bwfkqrnlfd9f2xcppdywd")))) (properties `((upstream-name . "clusterProfiler"))) (build-system r-build-system) @@ -10768,14 +10812,14 @@ annotations.") (define-public r-rsubread (package (name "r-rsubread") - (version "2.10.1") + (version "2.10.2") (source (origin (method url-fetch) (uri (bioconductor-uri "Rsubread" version)) (sha256 (base32 - "1cf80gmzz4c1pvif3350ifsmsbfplyl2na39n8g3x0zkwpl6ijdc")))) + "1pvyx8nxv10s816hgxrnw60hp9rlqjdgjq3ajpzqxgxmmlhnk0v0")))) (properties `((upstream-name . "Rsubread"))) (build-system r-build-system) (inputs (list zlib)) @@ -12235,14 +12279,14 @@ data.") (define-public r-universalmotif (package (name "r-universalmotif") - (version "1.14.0") + (version "1.14.1") (source (origin (method url-fetch) (uri (bioconductor-uri "universalmotif" version)) (sha256 (base32 - "0n2msyyy1xhapkd66j4xwabg4qfd62l01p1nmafjwifnjsx45xvp")))) + "1sm54z8aq3534qjsa19wychhwcvwnjlkydmiqqvidiiwcxwqpjsr")))) (properties `((upstream-name . "universalmotif"))) (build-system r-build-system) @@ -13806,14 +13850,14 @@ provided.") (define-public r-hdf5array (package (name "r-hdf5array") - (version "1.24.0") + (version "1.24.1") (source (origin (method url-fetch) (uri (bioconductor-uri "HDF5Array" version)) (sha256 (base32 - "0s9vj74359ckmwl8r951jxrzkidslwdl9qamkhz8ilw8b5awxyw4")))) + "1r1lg7k60qgb489xkypd4gvm1fmdlihvylb5va6xj58ipndbfday")))) (properties `((upstream-name . "HDF5Array"))) (build-system r-build-system) (inputs diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 13bd51860d..22b70a136f 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -111,6 +111,7 @@ #:use-module (gnu packages jupyter) #:use-module (gnu packages libffi) #:use-module (gnu packages linux) + #:use-module (gnu packages llvm) #:use-module (gnu packages logging) #:use-module (gnu packages lsof) #:use-module (gnu packages machine-learning) @@ -830,13 +831,13 @@ servers supporting the protocol.") (define-public python-pybedtools (package (name "python-pybedtools") - (version "0.8.2") + (version "0.9.0") (source (origin (method url-fetch) (uri (pypi-uri "pybedtools" version)) (sha256 (base32 - "0wc7z8g8prgdx7n5chjva2fdq03wiwhqisjjxzkjg1j5k5ha7151")))) + "18rhzk08d3rpxhi5xh6pqg64x6v5q3daw6y3v54k85v4swncjrwj")))) (build-system python-build-system) (arguments `(#:modules ((srfi srfi-26) @@ -896,11 +897,16 @@ servers supporting the protocol.") (home-page "https://pythonhosted.org/pybedtools/") (synopsis "Python wrapper for BEDtools programs") (description - "pybedtools is a Python wrapper for Aaron Quinlan's BEDtools programs, + "This package is a Python wrapper for Aaron Quinlan's BEDtools programs, which are widely used for genomic interval manipulation or \"genome algebra\". pybedtools extends BEDTools by offering feature-level manipulations from with Python.") - (license license:gpl2+))) + ;; pypi lists GPLv2 in the PKG-INFO and website, but was relicensed in + ;; version 0.9.0 and the LICENSE.txt is consistant with the source code. + ;; + ;; pybedtools/include/gzstream.cpp and pybedtools/include/gzstream.h are + ;; licensed lgpl2.1+ + (license (list license:expat license:lgpl2.1+)))) (define-public python-biom-format (package @@ -13375,6 +13381,145 @@ information... The package can also be used to extract data from @code{.loom} files.") (license license:expat)))) +(define-public python-ctxcore + (package + (name "python-ctxcore") + (version "0.1.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/aertslab/ctxcore") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "16nlj7z8pirgjad7vlgm7226b3hpw4a7n967vyfg26dsf5n8k70d")))) + (build-system python-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'pretend-version + ;; The version string is usually derived via setuptools-scm, but + ;; it doesn't work without the .git directory. + (lambda _ + (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)))))) + (propagated-inputs + (list python-cytoolz + python-numba + python-frozendict + python-numpy + python-pandas + python-pyyaml + python-pyarrow-0.16 + python-tqdm)) + (native-inputs + (list python-pytest + python-setuptools-scm)) + (home-page "https://github.com/aertslab/ctxcore") + (synopsis "Core functions for pycisTarget and the SCENIC tool suite") + (description + "ctxcore is part of the SCENIC suite of tools. It provides core functions for +pycisTarget and SCENIC.") + (license license:gpl3+))) + +(define-public python-arboreto + (package + (name "python-arboreto") + (version "0.1.6") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/aertslab/arboreto") + (commit "2f475dca08f47a60acc2beb8dd897e77b7495ca4"))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0l0im8ay7l2d24f7vaha454vsaha9s36bfqhbijg3b8ir8apsd7l")))) + (build-system python-build-system) + ;; Lots of tests fail because python-distributed fails to start the + ;; "Nanny" process. + (arguments '(#:tests? #false)) + (propagated-inputs + (list python-bokeh + python-dask + python-distributed + python-numpy + python-pandas + python-scikit-learn + python-scipy + python-tornado-6)) + (home-page "https://github.com/aertslab/arboreto") + (synopsis "Gene regulatory network inference using tree-based ensemble regressors") + (description + "This package implements scalable gene regulatory network inference using +tree-based ensemble regressors.") + (license license:bsd-3))) + +(define-public pyscenic + (package + (name "pyscenic") + (version "0.11.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/aertslab/pySCENIC") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0pbmmr1zdb1vbbs6wx357s59d13pna6x03wq8blj6ckjws8bbq73")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; Numba needs a writable dir to cache functions. + (add-before 'check 'set-numba-cache-dir + (lambda _ + (setenv "NUMBA_CACHE_DIR" "/tmp"))) + (replace 'check + (lambda _ + (invoke "pytest" "-v")))))) + (propagated-inputs + (list python-ctxcore + python-cytoolz + python-multiprocessing-on-dill + python-llvmlite + python-numba + python-attrs + python-frozendict + python-numpy + python-pandas + python-cloudpickle + python-dask + python-distributed + python-arboreto + python-boltons + python-setuptools + python-pyyaml + python-tqdm + python-interlap + python-umap-learn + python-loompy + python-networkx + python-scipy + python-fsspec + python-requests + python-aiohttp + python-scikit-learn)) + (native-inputs + (list python-pytest)) + (home-page "https://scenic.aertslab.org/") + (synopsis "Single-Cell regulatory network inference and clustering") + (description + "pySCENIC is a Python implementation of the SCENIC pipeline (Single-Cell +rEgulatory Network Inference and Clustering) which enables biologists to infer +transcription factors, gene regulatory networks and cell types from +single-cell RNA-seq data.") + (license license:gpl3+))) + (define-public vbz-compression (package (name "vbz-compression") diff --git a/gnu/packages/browser-extensions.scm b/gnu/packages/browser-extensions.scm index f305552076..1012e4b643 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.42.4") + (version "1.43.0") (home-page "https://github.com/gorhill/uBlock") (source (origin (method git-fetch) @@ -62,7 +62,7 @@ supported content to the Kodi media center.") (file-name (git-file-name name version)) (sha256 (base32 - "1is55pxnlylcr1pfigwgfn7kcx1rapy1cafdh6g83bdhscgh75g3")))) + "0w0by41v1s1cbd3bfjlb7kxr2bl6r5z3jvizlx02x14hqlppma9k")))) (build-system gnu-build-system) (outputs '("xpi" "firefox" "chromium")) (arguments diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm index e0623beec4..3e49539473 100644 --- a/gnu/packages/c.scm +++ b/gnu/packages/c.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2016, 2017, 2018, 2019, 2021 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018, 2020–2022 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz> -;;; Copyright © 2019, 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2019, 2020, 2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2019, 2021 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2019 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> @@ -399,7 +399,7 @@ as dictionaries, skip lists, and memory pools.") (define-public packcc (package (name "packcc") - (version "1.5.0") + (version "1.7.2") (home-page "https://github.com/arithy/packcc") (source (origin (method git-fetch) @@ -409,7 +409,7 @@ as dictionaries, skip lists, and memory pools.") (file-name (git-file-name name version)) (sha256 (base32 - "1n9ivsa6b9ps2jbh34bycjqjpbwbk85l4jjg46pfhqxzz96793wy")))) + "1mb6ys5ylvjz0xpq6769ir98s80p98s9ahd0c9k8p2ra1w20vz33")))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases @@ -433,8 +433,7 @@ as dictionaries, skip lists, and memory pools.") (install-file "release/bin/packcc" (string-append out "/bin")) (install-file "../../README.md" - (string-append out "/share/doc/packcc")) - #t)))))) + (string-append out "/share/doc/packcc")))))))) (native-inputs (list bats)) (synopsis "Packrat parser generator for C") diff --git a/gnu/packages/ccache.scm b/gnu/packages/ccache.scm index d359e30f81..3ce44766fa 100644 --- a/gnu/packages/ccache.scm +++ b/gnu/packages/ccache.scm @@ -32,14 +32,14 @@ (define-public ccache (package (name "ccache") - (version "4.6") + (version "4.6.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/ccache/ccache/releases/download/v" version "/ccache-" version ".tar.xz")) (sha256 - (base32 "1sa576ff8hc1swq55mdfp5gsnpys276gf37n83k6k49myihbharx")))) + (base32 "1lgk6fbfsnh2fscjmhpak8gwp3njq3kr0ihjcjlas15mrg9ppm75")))) (build-system cmake-build-system) (native-inputs (list perl ; for test/run (@ (gnu packages base) which))) diff --git a/gnu/packages/certs.scm b/gnu/packages/certs.scm index d410b05860..53fb027563 100644 --- a/gnu/packages/certs.scm +++ b/gnu/packages/certs.scm @@ -28,6 +28,7 @@ #:use-module (guix packages) #:use-module (guix utils) #:use-module (guix download) + #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix build-system copy) #:use-module (guix build-system gnu) @@ -159,31 +160,27 @@ that was originally contributed to Debian.") (inputs '()) (propagated-inputs '()) (arguments - `(#:modules ((guix build gnu-build-system) - (guix build utils) - (rnrs io ports) - (srfi srfi-26)) - #:phases - (modify-phases - (map (cut assq <> %standard-phases) - '(set-paths install-locale unpack)) - (add-after 'unpack 'install - (lambda _ - ;; TODO: On the next rebuild cycle, remove references to - ;; '%output' and '%outputs'. - (let ((certsdir (string-append ,(if (%current-target-system) - '(assoc-ref %outputs "out") - '%output) - "/etc/ssl/certs/"))) - (with-directory-excursion "nss/lib/ckfw/builtins/" - (unless (file-exists? "blacklist.txt") - (call-with-output-file "blacklist.txt" (const #t))) - ;; Extract selected single certificates from blob. - (invoke "certdata2pem") - ;; Copy .pem files into the output. - (for-each (cut install-file <> certsdir) - (find-files "." ".*\\.pem$"))) - (invoke "openssl" "rehash" certsdir))))))) + (list #:modules '((guix build gnu-build-system) + (guix build utils) + (rnrs io ports) + (srfi srfi-26)) + #:phases + #~(modify-phases + (map (cut assq <> %standard-phases) + '(set-paths install-locale unpack)) + (add-after 'unpack 'install + (lambda _ + (let ((certsdir (string-append #$output + "/etc/ssl/certs/"))) + (with-directory-excursion "nss/lib/ckfw/builtins/" + (unless (file-exists? "blacklist.txt") + (call-with-output-file "blacklist.txt" (const #t))) + ;; Extract selected single certificates from blob. + (invoke "certdata2pem") + ;; Copy .pem files into the output. + (for-each (cut install-file <> certsdir) + (find-files "." ".*\\.pem$"))) + (invoke "openssl" "rehash" certsdir))))))) (synopsis "CA certificates from Mozilla") (description "This package provides certificates for Certification Authorities (CA) diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm index 5936ab23c3..bdfebed99e 100644 --- a/gnu/packages/chromium.scm +++ b/gnu/packages/chromium.scm @@ -312,8 +312,8 @@ ;; run the Blink performance tests, just remove everything to save ~70MiB. '("third_party/blink/perf_tests")) -(define %chromium-version "102.0.5005.61") -(define %ungoogled-revision (string-append %chromium-version "-3")) +(define %chromium-version "102.0.5005.115") +(define %ungoogled-revision (string-append %chromium-version "-1")) (define %debian-revision "debian/102.0.5005.61-1") (define %ungoogled-origin @@ -324,7 +324,7 @@ (file-name (git-file-name "ungoogled-chromium" %ungoogled-revision)) (sha256 (base32 - "19i4ygxjm503dmck3bdqv3fcpda3dp9wr7z306pi6i1k989rbs8l")))) + "1z2xkxxviggyyksga74cqa4v73gynlgzi22ckg8yv84qxrklik6p")))) (define %debian-origin (origin @@ -477,7 +477,7 @@ %chromium-version ".tar.xz")) (sha256 (base32 - "07vbi3gn9g4n04b2qi2hm34r122snrqaifa46yk3pyh1d79rfdqs")) + "1rj7vy824vn513hiivc90lnxvxyi2s0qkdmfqsdssv9v6zjl079h")) (modules '((guix build utils))) (snippet (force ungoogled-chromium-snippet)))) (build-system gnu-build-system) diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm index 4432e0b851..b2959aafb2 100644 --- a/gnu/packages/code.scm +++ b/gnu/packages/code.scm @@ -390,7 +390,7 @@ features that are not supported by the standard @code{stdio} implementation.") (define-public universal-ctags (package (name "universal-ctags") - (version "5.9.20210509.0") + (version "5.9.20220605.0") (source (origin (method git-fetch) @@ -400,14 +400,14 @@ features that are not supported by the standard @code{stdio} implementation.") (file-name (git-file-name name version)) (sha256 (base32 - "1sq94bnbzr40zwihfnsna759bbak0lw27j0yn12iwpg4xgb4hhwp")) + "0mri7m2qsw5pyq1ajapawvxn2cdrzg1vi4w2bdq0z4ws4q03lj7k")) (modules '((guix build utils))) (snippet '(begin ;; Remove the bundled PackCC and associated build rules. (substitute* "Makefile.am" (("^PACKCC = .*") - "PACKCC = packcc") + "PACKCC = packcc\n") (("\\$\\(PACKCC_FILES\\)") "") (("\\$\\(PEG_SRCS\\) \\$\\(PEG_HEADS\\): \\$\\(PACKCC\\)") @@ -437,7 +437,7 @@ features that are not supported by the standard @code{stdio} implementation.") (native-inputs (list autoconf automake packcc perl pkg-config)) (inputs - (list jansson libseccomp libxml2 libyaml)) + (list jansson libseccomp libxml2 libyaml pcre2)) (home-page "https://ctags.io/") (synopsis "Generate tag files for source code") (description diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index 88c6979464..28561e38e8 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -2554,29 +2554,30 @@ chunks.") (define-public c-blosc (package (name "c-blosc") - (version "1.18.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/Blosc/c-blosc") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1ywq8j70149859vvs19wgjq89d6xsvvmvm2n1dmkzpchxgrvnw70")))) + (version "1.21.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Blosc/c-blosc") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0gy9a7wp7x71x5l3rprx8wpb3c5cn7wqc77gdiffq35hr34q88p9")) + (modules '((guix build utils))) + (snippet + ;; In a rare victory, we may delete all bundled libs to no ill effect. + '(delete-file-recursively "internal-complibs")))) (build-system cmake-build-system) (arguments `(#:configure-flags - '("-DDEACTIVATE_AVX2=ON" + '("-DBUILD_STATIC=OFF" + "-DDEACTIVATE_AVX2=ON" "-DPREFER_EXTERNAL_LZ4=ON" - "-DPREFER_EXTERNAL_SNAPPY=ON" "-DPREFER_EXTERNAL_ZLIB=ON" "-DPREFER_EXTERNAL_ZSTD=ON"))) (inputs - `(("lz4" ,lz4) - ("snappy" ,snappy) - ("zlib" ,zlib) - ("zstd:lib" ,zstd "lib"))) + (list lz4 snappy zlib `(,zstd "lib"))) (home-page "https://blosc.org") (synopsis "Blocking, shuffling and lossless compression library") (description diff --git a/gnu/packages/coq.scm b/gnu/packages/coq.scm index 5c73c4a269..bbb6c4d435 100644 --- a/gnu/packages/coq.scm +++ b/gnu/packages/coq.scm @@ -52,7 +52,7 @@ (define-public coq-core (package (name "coq-core") - (version "8.15.1") + (version "8.15.2") (source (origin (method git-fetch) @@ -62,7 +62,7 @@ (file-name (git-file-name name version)) (sha256 (base32 - "04csl4fvl41hizn95c4j9gxkl28495fzqdgm83ss67s5jvbfczvs")) + "1m6dilfbp9q8j8sya4ap82q72m3a4mq6m96gzvi6vgv04cr6r33c")) (patches (search-patches "coq-fix-envvars.patch")))) (native-search-paths (list (search-path-specification diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm index 87bd43356a..78e4f3bd8e 100644 --- a/gnu/packages/cpp.scm +++ b/gnu/packages/cpp.scm @@ -886,7 +886,7 @@ and make @code{cpplint} usable in wider contexts.") (define-public reproc (package (name "reproc") - (version "14.1.0") + (version "14.2.4") (source (origin (method git-fetch) @@ -895,13 +895,12 @@ and make @code{cpplint} usable in wider contexts.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 - "1n71wb50qv2dmhjgw7azx5gigbrp19l2n3d41g9p05l5l0y1qg0q")))) + (base32 "09xnf8hmld1fk8j33zwlz1qcxnjdx1ncbg62csic9va4m1wc2v1d")))) (build-system cmake-build-system) (arguments ;; No tests. `(#:tests? #f - ;; Enable building of shared library. + ;; Build the shared library instead of a static one. #:configure-flags `("-DBUILD_SHARED_LIBS=1"))) (native-inputs (list pkg-config)) diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index 0299e0041e..96dca393e6 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -104,6 +104,7 @@ #:use-module (gnu packages sqlite) #:use-module (gnu packages statistics) #:use-module (gnu packages tcl) + #:use-module (gnu packages tex) #:use-module (gnu packages textutils) #:use-module (gnu packages tls) #:use-module (gnu packages uglifyjs) @@ -116,13 +117,13 @@ (define-public r-afpt (package (name "r-afpt") - (version "1.1.0.1") + (version "1.1.0.2") (source (origin (method url-fetch) (uri (cran-uri "afpt" version)) (sha256 (base32 - "0cg5cdm9nl1hs6f3j0ljpw4bkqvh3ksyj615b9nnbqs5k28lyds9")))) + "1z0r4r7prxbhadmkdg6345g0b5vq9dqyyw9hh3fpad9zkc7k6xbc")))) (properties `((upstream-name . "afpt"))) (build-system r-build-system) (native-inputs (list r-knitr)) @@ -635,13 +636,13 @@ benchmarks from running the @code{benchmarkme} package.") (define-public r-benchmarkme (package (name "r-benchmarkme") - (version "1.0.7") + (version "1.0.8") (source (origin (method url-fetch) (uri (cran-uri "benchmarkme" version)) (sha256 (base32 - "0ymgsxzrvnpyvs0cff09d3lrkl12qyqx5bwammsc4vgl5ng9p69p")))) + "0qaz8wy3n08k9lr8qljk5i8z8db18scbdc8m734aymd307h00w8x")))) (build-system r-build-system) (native-inputs (list r-knitr)) @@ -652,6 +653,7 @@ benchmarks from running the @code{benchmarkme} package.") r-foreach r-httr r-matrix + r-stringr r-tibble)) (home-page "https://csgillespie.github.io/benchmarkme/") (synopsis "Crowd-sourced system benchmarks") @@ -4349,13 +4351,13 @@ curve to a data matrix in arbitrary dimensions.") (define-public r-restrserve (package (name "r-restrserve") - (version "1.1.1") + (version "1.2.0") (source (origin (method url-fetch) (uri (cran-uri "RestRserve" version)) (sha256 - (base32 "1ydsdgy6mxl0zqk7xqf4v6if5nf2qv7k48q340fhaqyjk2gd60p7")))) + (base32 "03mlzhs2k728kwy6csp60m7qy8n9ma5dd37j87rzh07fcdlx8wim")))) (build-system r-build-system) (propagated-inputs (list r-checkmate @@ -4442,14 +4444,14 @@ plot networks.") (define-public r-proxy (package (name "r-proxy") - (version "0.4-26") + (version "0.4-27") (source (origin (method url-fetch) (uri (cran-uri "proxy" version)) (sha256 (base32 - "0k8sr24mjfvxp12sf1j9228ah3ngy15nqmm0jw14x5s32f1assv7")))) + "0gsng2aggnljl4z82la9hpnd26hngzhj8fizx4wx22npqjj93694")))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/proxy") (synopsis "Distance and similarity measures") @@ -4462,13 +4464,13 @@ most popular ones.") (define-public r-sp (package (name "r-sp") - (version "1.4-7") + (version "1.5-0") (source (origin (method url-fetch) (uri (cran-uri "sp" version)) (sha256 - (base32 "1bdi06n5zkjnnyh0rallf04s0vlcx9rg9p5q7s6vfqvkf19nk501")))) + (base32 "077q1wh9ihhcn1338xspnd90hy16ljxsav1xcrxdxj4fyynhd6lk")))) (build-system r-build-system) (propagated-inputs (list r-lattice)) @@ -4794,14 +4796,14 @@ those for the gamma distribution in the @code{stats} package.") (define-public r-bdsmatrix (package (name "r-bdsmatrix") - (version "1.3-4") + (version "1.3-6") (source (origin (method url-fetch) (uri (cran-uri "bdsmatrix" version)) (sha256 (base32 - "1sh6pg43rgqvips4fx0k4vmp5i9lmniix0bqwj2yq5m06gs227i5")))) + "1g300x11rv56f826mbv7mbb67a5xz3dv74hpjc18jh3q8gap3j7r")))) (properties `((upstream-name . "bdsmatrix"))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/bdsmatrix/") @@ -5083,13 +5085,13 @@ available in a vignette.") (define-public r-progressr (package (name "r-progressr") - (version "0.10.0") + (version "0.10.1") (source (origin (method url-fetch) (uri (cran-uri "progressr" version)) (sha256 - (base32 "1p5s35rzh28n2id2lipgyqmh3wzib66m7x0pz9028y8cql8xr5ac")))) + (base32 "1ldf7hqsz8vbjggz31990sqqyhrbiilzcnyla1krjlkg595h50wg")))) (properties `((upstream-name . "progressr"))) (build-system r-build-system) (propagated-inputs @@ -5425,14 +5427,14 @@ provided.") (define-public r-ipred (package (name "r-ipred") - (version "0.9-12") + (version "0.9-13") (source (origin (method url-fetch) (uri (cran-uri "ipred" version)) (sha256 (base32 - "0hsq00382pfd9hzpcgphjxazbxm4zx0k2r6pk6kib56k0ibm7qfn")))) + "162ckhqn24l0l5ih7qi2k3lxw5iprm1g5a34q1ik0b9wv5ia0s31")))) (build-system r-build-system) (propagated-inputs (list r-class @@ -6152,14 +6154,14 @@ modeling for empirical income distributions.") (define-public r-vcd (package (name "r-vcd") - (version "1.4-9") + (version "1.4-10") (source (origin (method url-fetch) (uri (cran-uri "vcd" version)) (sha256 (base32 - "13sn77qdcyll9lz7nab0bxzfvpgj8f5rl2cq5ylpz8pibynj1d55")))) + "0nxkl1x39xf8l0apgvlbr30i8lasix7hyyc93g6514r8z8m1k23i")))) (build-system r-build-system) (propagated-inputs (list r-colorspace r-lmtest r-mass)) @@ -6406,13 +6408,13 @@ constants, and control debugging of packages via environment variables.") (define-public r-processx (package (name "r-processx") - (version "3.5.3") + (version "3.6.0") (source (origin (method url-fetch) (uri (cran-uri "processx" version)) (sha256 - (base32 "0ail3w8n5g1ibdamgpxcfpla18kqkilmppiasm7ms67cavx2k5k7")))) + (base32 "0kx6hvkkj6lh8lrdh819hvkx8nyq5aac53mkvpqyskwkmmlnf63m")))) (build-system r-build-system) (propagated-inputs (list r-ps r-r6)) @@ -6913,14 +6915,14 @@ detect possible inconsistencies.") (define-public r-sna (package (name "r-sna") - (version "2.6") + (version "2.7") (source (origin (method url-fetch) (uri (cran-uri "sna" version)) (sha256 (base32 - "0ai0v4538d30m4wks5s3lch1yfmx1ml0nnrz7ihs097lv586a09s")))) + "0ka319s1w857fj28ja1i1ljgv2h6ji4d69riqy9pwhvvghsa83s4")))) (build-system r-build-system) (propagated-inputs (list r-network r-statnet-common)) @@ -9287,14 +9289,14 @@ publication-ready plots.") (define-public r-ellipse (package (name "r-ellipse") - (version "0.4.2") + (version "0.4.3") (source (origin (method url-fetch) (uri (cran-uri "ellipse" version)) (sha256 (base32 - "1wm5v7zdv2drgdba7z96jwsx74mqhlq80qgrvdb4vb5r02dcw68p")))) + "0im9d36dixpksms52v6nsb3l0z2c7wc25r9j0f08naj6qc8jpvq2")))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/ellipse/") (synopsis "Functions for drawing ellipses and ellipse-like confidence regions") @@ -9648,14 +9650,14 @@ implemented in bibutils.") (define-public r-rdpack (package (name "r-rdpack") - (version "2.3") + (version "2.3.1") (source (origin (method url-fetch) (uri (cran-uri "Rdpack" version)) (sha256 (base32 - "1igpa4hnpiykbdnq57mglby5jsbind6izkkfy81wx4ib6nw1lpn4")))) + "12j45n4srs987s9mqvp3524cviqbl2pnpx7yw8agac9ynnfmwgmm")))) (properties `((upstream-name . "Rdpack"))) (build-system r-build-system) (propagated-inputs @@ -9674,14 +9676,14 @@ references and Rd files.") (define-public r-officer (package (name "r-officer") - (version "0.4.2") + (version "0.4.3") (source (origin (method url-fetch) (uri (cran-uri "officer" version)) (sha256 (base32 - "0qmn62srh9zicgizyblanirbdva7f09g967yb86kfrn05ckh5y10")))) + "1ksfmwqb91j8n8x4vchpqr848scvf817mgiknwac7n8lfz79synk")))) (build-system r-build-system) (propagated-inputs (list r-r6 r-uuid r-xml2 r-zip)) @@ -10026,14 +10028,14 @@ functions.") (define-public r-flextable (package (name "r-flextable") - (version "0.7.0") + (version "0.7.2") (source (origin (method url-fetch) (uri (cran-uri "flextable" version)) (sha256 (base32 - "15vr5lb87712mymsvv01kz9s1fb54sx5kybsa2x547k5g10dbrbm")))) + "03nxh9a9q0jgqz05i7kgp8zjncpq9m4f54dx3bvqgpds4hcqxli9")))) (build-system r-build-system) (propagated-inputs (list r-base64enc @@ -13444,17 +13446,19 @@ Bioconductor packages.") (define-public r-rgl (package (name "r-rgl") - (version "0.108.3.2") + (version "0.109.2") (source (origin (method url-fetch) (uri (cran-uri "rgl" version)) (sha256 (base32 - "0r9wzhjzl346i37ngs6hqzmizhi53kzqz582lv822v6yxang6fh3")))) + "15rckpi2vzjc45glqk1mibxw1vja9y08hj9id2qd1si2bb708x8i")))) (build-system r-build-system) (native-inputs - (list pkg-config r-knitr)) + (list pkg-config + r-knitr + r-rmarkdown)) ;for vignettes (inputs (list freetype libpng @@ -13463,11 +13467,13 @@ Bioconductor packages.") pandoc zlib)) (propagated-inputs - (list r-htmltools + (list r-base64enc + r-htmltools r-htmlwidgets r-jsonlite r-knitr r-magrittr + r-mime r-r6)) (home-page "https://r-forge.r-project.org/projects/rgl/") (synopsis "3D visualization using OpenGL") @@ -13762,13 +13768,13 @@ Anderson-Darling Distribution\".") (define-public r-admisc (package (name "r-admisc") - (version "0.27") + (version "0.28") (source (origin (method url-fetch) (uri (cran-uri "admisc" version)) (sha256 - (base32 "07hfrhv3pcldsffnyfzpa1q3x32gxr1386r8fik1nhql2w46mm13")))) + (base32 "0cfx4g64mybd69xm595zzv79j4fbzn7vihpvzcvicggs3immppha")))) (properties `((upstream-name . "admisc"))) (build-system r-build-system) (home-page "https://github.com/dusadrian/admisc") @@ -13787,14 +13793,14 @@ the base function @code{with()}.") (define-public r-sodium (package (name "r-sodium") - (version "1.2.0") + (version "1.2.1") (source (origin (method url-fetch) (uri (cran-uri "sodium" version)) (sha256 (base32 - "0x4jb3cf1nv1spz1jc9xp8hly2b4a7nj48xr4s33jnfcpdjkmn5q")))) + "1a03z2asvmalnmsn89lapzp8a4fr0qvzdv3xgin8pbqhjyb9hvpp")))) (properties `((upstream-name . "sodium"))) (build-system r-build-system) (inputs @@ -14931,14 +14937,14 @@ limitations\" using the GNU Multiple Precision library.") (define-public r-rmpfr (package (name "r-rmpfr") - (version "0.8-7") + (version "0.8-9") (source (origin (method url-fetch) (uri (cran-uri "Rmpfr" version)) (sha256 (base32 - "1ljpbxvm4agbxnab5dfffbpw5k964hy3gw57dzydq1gpbxwdphlk")))) + "12mwvgyalzh4zf5d002fm1hpr3wwhiypy9ia6wy47ij9gns5mvng")))) (properties `((upstream-name . "Rmpfr"))) (build-system r-build-system) (inputs @@ -15899,14 +15905,14 @@ them in distributed compute environments.") (define-public r-parallelly (package (name "r-parallelly") - (version "1.31.1") + (version "1.32.0") (source (origin (method url-fetch) (uri (cran-uri "parallelly" version)) (sha256 (base32 - "1nhp66psk3m79is5qm4ppxkj7bdy46jr2h2pir22ia9ghhyzris0")))) + "0yg1hmgkp81ihgwqaynqh0jgki2mkdy78j4fgjmqvc1ig5ga774h")))) (properties `((upstream-name . "parallelly"))) (build-system r-build-system) (home-page "https://github.com/HenrikBengtsson/parallelly") @@ -16956,14 +16962,14 @@ network.") (define-public r-apcluster (package (name "r-apcluster") - (version "1.4.9") + (version "1.4.10") (source (origin (method url-fetch) (uri (cran-uri "apcluster" version)) (sha256 (base32 - "0wnbb3kj9m7rfq63xr43jjf6n8jxm1r2wvvx6g0qkss0wvipbb1s")))) + "1820j1xjlbmw6j2fwwv2g806dqpk5qrbbaqsrbrn6igql8pzf552")))) (build-system r-build-system) (propagated-inputs (list r-matrix r-rcpp)) @@ -17364,14 +17370,14 @@ classes.") (define-public r-classint (package (name "r-classint") - (version "0.4-3") + (version "0.4-7") (source (origin (method url-fetch) (uri (cran-uri "classInt" version)) (sha256 (base32 - "1b1lqhpzxm6b8pza8l3s0cxy74mm9y45lcd3354i2v3bg8m7mply")))) + "0vk06k10mxcm6wn4b74njzc1kc1ividsn03ii523j4yfhy4kl3m3")))) (properties `((upstream-name . "classInt"))) (build-system r-build-system) (propagated-inputs @@ -17593,14 +17599,14 @@ spanning tree.") (define-public r-adegenet (package (name "r-adegenet") - (version "2.1.6") + (version "2.1.7") (source (origin (method url-fetch) (uri (cran-uri "adegenet" version)) (sha256 (base32 - "0sx25p7bgz0h9mc3jsdnnjhvmb7sy8nb3r0z923vhk336d4xw8vq")))) + "0zkbxw9w0fcb4s3zv2a8nxcsihzkfz49psaipxw99nwgm7l9jrh9")))) (build-system r-build-system) (propagated-inputs (list r-ade4 @@ -17835,14 +17841,14 @@ include (define-public r-haplo-stats (package (name "r-haplo-stats") - (version "1.8.7") + (version "1.8.9") (source (origin (method url-fetch) (uri (cran-uri "haplo.stats" version)) (sha256 (base32 - "1q2zn72j92bwhcdswk4qqfgzch56p9pcy2xhkd3safvqp3l9rzpw")))) + "0np9kw4f30xbvwr4f79g909ilis5n273ridmlwyzjxiskiry6mx0")))) (properties `((upstream-name . "haplo.stats"))) (build-system r-build-system) (propagated-inputs @@ -18051,13 +18057,13 @@ that accept short and long options.") (define-public r-kernlab (package (name "r-kernlab") - (version "0.9-30") + (version "0.9-31") (source (origin (method url-fetch) (uri (cran-uri "kernlab" version)) (sha256 - (base32 "10gfb542nbl1d5pfy6r7gcg3j1ikra9l18r6xjv8lzp5ka1kmz28")))) + (base32 "12i7ffc1aacyy7bpjc0w60wwivn88wri8jz43h77irn5q5jwcnbk")))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/kernlab") (synopsis "Kernel-based machine learning tools") @@ -19317,14 +19323,14 @@ external dependencies. This package has is implemented purely in R.") (define-public r-aplot (package (name "r-aplot") - (version "0.1.4") + (version "0.1.6") (source (origin (method url-fetch) (uri (cran-uri "aplot" version)) (sha256 (base32 - "1b4jjj05a602dgn6yr1bsmbzlzkj6wf6af3k3w63g3mkqv0xzsfd")))) + "0310z9db2r8vr4053vy6w4rbcqhg5cv56p60rk7dh4y6ifbd2sbx")))) (properties `((upstream-name . "aplot"))) (build-system r-build-system) (propagated-inputs @@ -20675,14 +20681,14 @@ emphasize hidden group structures in networks or focus on specific nodes.") (define-public r-terra (package (name "r-terra") - (version "1.5-21") + (version "1.5-34") (source (origin (method url-fetch) (uri (cran-uri "terra" version)) (sha256 (base32 - "0gzl0ka19jjw0dmaghjk2sgwi78kkz4w3rlfkym62rdarhlfj7h9")))) + "075azi23gi1b1jxm3s1f1hpc6in7qz4fp38shq9pflfnzbs8ib9w")))) (properties `((upstream-name . "terra"))) (build-system r-build-system) (inputs @@ -21980,14 +21986,14 @@ and prints vectorized images.") (define-public r-randtoolbox (package (name "r-randtoolbox") - (version "2.0.0") + (version "2.0.1") (source (origin (method url-fetch) (uri (cran-uri "randtoolbox" version)) (sha256 (base32 - "005x2igljc6vm0nsmkld9aqjqz1ccwapc8z3aw5c3ivh4n2bghf9")))) + "1p2jsn0hpihc49zk605z82mhhvma0ji2f5b94wa85g2xzriqkwn4")))) (properties `((upstream-name . "randtoolbox"))) (build-system r-build-system) (propagated-inputs @@ -23535,14 +23541,14 @@ functions.") (define-public r-univoutl (package (name "r-univoutl") - (version "0.3") + (version "0.4") (source (origin (method url-fetch) (uri (cran-uri "univOutl" version)) (sha256 (base32 - "1hhpxrpmp2wbrynx9xjndnp2sccirgky2x6ksd6yk6phmk0rbzjp")))) + "1kp014bhs8v02fp7misrj4fpfp2na9lg45p5zqvlfaypnm5imsr9")))) (properties `((upstream-name . "univOutl"))) (build-system r-build-system) (propagated-inputs @@ -23591,13 +23597,13 @@ Visualizations are also available for most of these settings.") (define-public r-torch (package (name "r-torch") - (version "0.7.2") + (version "0.8.0") (source (origin (method url-fetch) (uri (cran-uri "torch" version)) (sha256 - (base32 "163pvl3gyz7l2fmqhgg4k6pw4dmvfir71yp9l5ra2k4zc32lz166")))) + (base32 "0n2rmv2mwfp4y002x46fd278kssmhi54zcyj37558k4r1kazzfxp")))) (properties `((upstream-name . "torch"))) (build-system r-build-system) (arguments @@ -23961,13 +23967,13 @@ from PLINK results.") (define-public r-gghighlight (package (name "r-gghighlight") - (version "0.3.2") + (version "0.3.3") (source (origin (method url-fetch) (uri (cran-uri "gghighlight" version)) (sha256 - (base32 "0bxgn4srxz1qhawqa8ck57p8hg5ikwfa9ll03zmnn8fb19akwm2v")))) + (base32 "0isfp5n0ijqpy3z5d7l75mlq15nbkjppv6812lcya6097ar2d381")))) (properties `((upstream-name . "gghighlight"))) (build-system r-build-system) (propagated-inputs @@ -24815,18 +24821,20 @@ Models.") (define-public r-mi (package (name "r-mi") - (version "1.0") + (version "1.1") (source (origin (method url-fetch) (uri (cran-uri "mi" version)) (sha256 (base32 - "1h47k5mpbvhid83277dvvj2di493bgzz9iarpyv3r30y219l7x1l")))) + "11f75ivnax6p48mp2pasprws488cm2daym87sw2mcrywvf89fyjd")))) (properties `((upstream-name . "mi"))) (build-system r-build-system) (propagated-inputs (list r-arm r-matrix)) + (native-inputs + (list r-knitr)) (home-page "http://www.stat.columbia.edu/~gelman/") (synopsis "Missing data imputation and model checking") (description @@ -25457,14 +25465,14 @@ and reproducible way.") (define-public r-rsconnect (package (name "r-rsconnect") - (version "0.8.25") + (version "0.8.26") (source (origin (method url-fetch) (uri (cran-uri "rsconnect" version)) (sha256 (base32 - "1kyr4v7vds2yw3xmkk2yr56ylz1h95944brylwvwmwj5yxvm419w")))) + "1vazdgpha7545h4riz11njbl8azg38i1y1a5nfckfx03v2zapbzs")))) (properties `((upstream-name . "rsconnect"))) (build-system r-build-system) (propagated-inputs @@ -26696,14 +26704,14 @@ including means, variances, intervals, and highest density regions.") (define-public r-posterior (package (name "r-posterior") - (version "1.2.1") + (version "1.2.2") (source (origin (method url-fetch) (uri (cran-uri "posterior" version)) (sha256 (base32 - "1qdg22l868daqg2axr36szl1m9z0rfpgx8zmv1x1xwm1hmlf0mxp")))) + "0frm7p6cjkjfl4gviixaa7448qaac8n9ilkr5c02fa9vnisys5fn")))) (properties `((upstream-name . "posterior"))) (build-system r-build-system) (propagated-inputs @@ -26993,14 +27001,14 @@ counting and recursive k-means partitioning.") (define-public r-hardhat (package (name "r-hardhat") - (version "0.2.0") + (version "1.1.0") (source (origin (method url-fetch) (uri (cran-uri "hardhat" version)) (sha256 (base32 - "0a4nq93cmps5xy8h0qsv6xyzrbsz9ka4iwkrvb8m8v10wq7wm5wl")))) + "1cdl52lzv3wffq8fzrb6sk85i4i8lm8skgad1c8az3ifmzssjx03")))) (properties `((upstream-name . "hardhat"))) (build-system r-build-system) (propagated-inputs @@ -28428,20 +28436,20 @@ object sizes.") (define-public r-yardstick (package (name "r-yardstick") - (version "0.0.9") + (version "1.0.0") (source (origin (method url-fetch) (uri (cran-uri "yardstick" version)) (sha256 (base32 - "00hv4gk1ba4dab8i3dcq7lim4bll7l572rgc8km9x4ja8by95j8h")))) + "0mnpvwbzybxp47w4yibmjb7xppwinbjcqcyqfn8qn38l5liwy8yd")))) (properties `((upstream-name . "yardstick"))) (build-system r-build-system) (propagated-inputs (list r-dplyr r-generics - r-proc + r-hardhat r-rlang r-tidyselect r-vctrs)) @@ -28963,14 +28971,14 @@ functions or computational engines (e.g. R, Spark, Stan, etc).") (define-public r-infer (package (name "r-infer") - (version "1.0.0") + (version "1.0.2") (source (origin (method url-fetch) (uri (cran-uri "infer" version)) (sha256 (base32 - "1qbpcn7jqbvgwnpiyylj021j8m33p58a204yd1pfkpzd3x2lbsm6")))) + "0qfrxljvwpa8d1k66ii80irarlv593wr6rmcsmi4flc7adgydrnp")))) (properties `((upstream-name . "infer"))) (build-system r-build-system) (propagated-inputs @@ -30409,14 +30417,14 @@ in output to the equivalent HTML.") (define-public r-pkgdown (package (name "r-pkgdown") - (version "2.0.3") + (version "2.0.4") (source (origin (method url-fetch) (uri (cran-uri "pkgdown" version)) (sha256 (base32 - "0wqga9bcl7wmvkwpkkmf5hx1cl7rjq5ddvqmxhl4p1dczys3adnr")))) + "02lwr53xvxybcsg8md8qbq1wq833ap7ssn5v92cd4qqay5iya374")))) (properties `((upstream-name . "pkgdown"))) (build-system r-build-system) (inputs (list pandoc)) @@ -30466,7 +30474,26 @@ package online.") (properties `((upstream-name . "prereg"))) (build-system r-build-system) (propagated-inputs - (list r-rmarkdown)) + (list r-rmarkdown + ;; The package provides a custom LaTex template in + ;; inst/rmd/prereg_form.tex, which depends on these packages: + texlive-amsmath + texlive-booktabs + texlive-etoolbox + texlive-generic-iftex + texlive-latex-fancyhdr + texlive-latex-fancyvrb + texlive-latex-geometry + texlive-latex-graphics + texlive-latex-threeparttable + texlive-latex-titlesec + texlive-latex-upquote + texlive-listings + texlive-polyglossia + texlive-titling + texlive-tools + texlive-ulem + (texlive-updmap.cfg (list texlive-amsfonts texlive-lm)))) (home-page "https://github.com/crsh/prereg") (synopsis "R Markdown Templates to preregister Scientific Studies") @@ -31597,6 +31624,32 @@ asynchronously from formatting.") utility operations.") (license license:gpl3))) +(define-public r-rsq + (package + (name "r-rsq") + (version "2.5") + (source (origin + (method url-fetch) + (uri (cran-uri "rsq" version)) + (sha256 + (base32 + "1r628srxhhf7b51lnj4qrzgbqajkm0ls47a9rzjkvmfq4ax5i73f")))) + (properties `((upstream-name . "rsq"))) + (build-system r-build-system) + (propagated-inputs + (list r-deriv + r-lme4 + r-mass + r-matrix + r-nlme)) + (home-page "https://cran.r-project.org/package=rsq") + (synopsis "R-squared and related measures") + (description + "Calculate generalized R-squared, partial R-squared, and partial correlation +coefficients for generalized linear (mixed) models (including quasi models +with well defined variance functions).") + (license license:gpl2))) + (define-public r-webutils (package (name "r-webutils") @@ -32582,14 +32635,14 @@ participants and their emotional expressions throughout the meeting.") (define-public r-zoom (package (name "r-zoom") - (version "2.0.4") + (version "2.0.6") (source (origin (method url-fetch) (uri (cran-uri "zoom" version)) (sha256 (base32 - "03f5rxfr6ncf1j6vpn7pip21q7ylj4bx0a5xphqb6x6i33lxf1g5")))) + "05ikad4j1qi5y8mn77n9bw7d6ic3api9d7mbcn855w8xcc69ja4q")))) (properties `((upstream-name . "zoom"))) (build-system r-build-system) (home-page "https://github.com/cbarbu/R-package-zoom") @@ -33342,6 +33395,30 @@ facets. It also allows multiple colour, fill scales per plot and hosts a smaller collection of stats, geoms and axis guides.") (license license:expat))) +(define-public r-gghalves + (package + (name "r-gghalves") + (version "0.1.3") + (source + (origin + (method url-fetch) + (uri (cran-uri "gghalves" version)) + (sha256 + (base32 + "1lj4c38fzxwg8gy57ymf00lqjdplb7v2a0lnd262c1d5cavqiws4")))) + (properties `((upstream-name . "gghalves"))) + (build-system r-build-system) + (propagated-inputs + (list r-ggplot2 r-gtable)) + (native-inputs + (list r-knitr)) + (home-page "https://github.com/erocoar/gghalves") + (synopsis "Compose half-half plots using your favourite geoms") + (description "This package provides a @code{ggplot2} extension for easy +plotting of half-half geom combinations. Think half boxplot and half +jitterplot, or half violinplot and half dotplot.") + (license license:expat))) + (define-public r-zoeppritz (package (name "r-zoeppritz") diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 86313f5e4f..f9bc9b42de 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -19,6 +19,7 @@ ;;; Copyright © 2021 Antero Mejr <antero@kodmin.com> ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2021 Vinicius Monego <monego@posteo.net> +;;; Copyright © 2021 muradm <mail@muradm.net> ;;; Copyright © 2021, 2022 Petr Hodina <phodina@protonmail.com> ;;; Copyright © 2021, 2022 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2021 Jacob Hrbek <kreyren@rixotstudio.cz> @@ -31352,7 +31353,10 @@ algorithm and related formats (ZLIB, GZIP).") (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1axsdyb2i67pn85vh8sb2z037n88fiiwqghkzsr1jrcdy2g1cs4g")))) + "1axsdyb2i67pn85vh8sb2z037n88fiiwqghkzsr1jrcdy2g1cs4g")) + (modules '((guix build utils))) + (snippet + '(begin (delete-file-recursively "libgit2"))))) (build-system cargo-build-system) (arguments `(#:cargo-inputs @@ -62496,13 +62500,13 @@ different for every thread.") (name "rust-thread-id") (version "3.3.0") (source - (origin - (method url-fetch) - (uri (crate-uri "thread-id" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1h90v19fjz3x9b25ywh68z5yf2zsmm6h5zb4rl302ckbsp4z9yy7")))) + (origin + (method url-fetch) + (uri (crate-uri "thread-id" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1h90v19fjz3x9b25ywh68z5yf2zsmm6h5zb4rl302ckbsp4z9yy7")))) (arguments `(#:cargo-inputs (("rust-libc" ,rust-libc-0.2) @@ -73053,3 +73057,42 @@ including a line breaking iterator.") and automatically convert it to a windows batch file, this library provides a way to convert simple shell commands to windows batch commands.") (license license:asl2.0))) + +(define-public rust-enquote-1 + (package + (name "rust-enquote") + (version "1.1.0") + (home-page "https://github.com/reujab/enquote") + (source (origin + (method url-fetch) + (uri (crate-uri "enquote" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0clrjghlfkkb7sndabs5wch0fz2nif6nj4b117s8kqxx3nqnrhq6")))) + (build-system cargo-build-system) + (synopsis "Rust library that quotes, unquotes, and unescapes strings") + (description "A Rust library quotes, unquotes, and unescapes strings") + (license license:unlicense))) + +(define-public rust-pam-sys-0.5 + (package + (name "rust-pam-sys") + (version "0.5.6") + (home-page "https://github.com/1wilkens/pam-sys") + (source (origin + (method url-fetch) + (uri (crate-uri "pam-sys" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0d14501d5vybjnzxfjf96321xa5wa36x1xvf02h02zq938qmhj6d")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs (("rust-libc" ,rust-libc-0.2)))) + (inputs `(("linux-pam" ,linux-pam))) + (synopsis + "Rust FFI wrappers for the Linux Pluggable Authentication Modules (PAM)") + (description + "This crate uses bindgen to generate the raw FFI definitions for PAM. For a rustified API consider using pam.") + (license (list license:expat license:asl2.0)))) diff --git a/gnu/packages/darwin.scm b/gnu/packages/darwin.scm new file mode 100644 index 0000000000..88990d0404 --- /dev/null +++ b/gnu/packages/darwin.scm @@ -0,0 +1,107 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2022 Philip McGrath <philip@philipmcgrath.com> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages darwin) + #:use-module (gnu packages) + #:use-module (gnu packages autotools) + #:use-module (gnu packages gnustep) + #:use-module (gnu packages llvm) + #:use-module (guix build-system gnu) + #:use-module (guix gexp) + #:use-module (guix git-download) + #:use-module (guix packages) + #:use-module (guix utils) + #:use-module ((guix licenses) #:prefix license:)) + +(define-public cctools + (let ((cctools-version "973.0.1") + (ld64-version "609") + (revision "0") + (commit "04663295d0425abfac90a42440a7ec02d7155fea")) + (package + (name "cctools") + (version (git-version (string-append cctools-version + "-ld64-" + ld64-version) + revision + commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tpoechtrager/cctools-port") + (commit commit))) + (sha256 + (base32 "0vihfa8y64vvd3pxy8qh4mhcnzinxh9flpz9dvw4wch4zj2nnfjs")) + (file-name (git-file-name name version)) + (snippet + #~(begin + (use-modules (guix build utils)) + (with-directory-excursion "cctools" + ;; use system libobjc2 + (substitute* "configure.ac" + (("AC_CONFIG_FILES[(]\\[libobjc2/Makefile][)]") + "")) + (substitute* "Makefile.am" + (("SUBDIRS=libobjc2 ") + "SUBDIRS=")) + (substitute* "otool/Makefile.am" + (("\\$[(]top_builddir[)]/libobjc2/libobjc\\.la") + "-lobjc") + (("-I\\$[(]top_srcdir[)]/libobjc2") + "")) + ;; delete files + (for-each (lambda (pth) + (when (file-exists? pth) + (delete-file-recursively pth))) + `("include/gnu/symseg.h" ;; obsolete + "libobjc2" ;; unbundle + ;; generated files: + "compile" + "config.guess" + "config.sub" + "configure" + "install-sh" + "ltmain.sh" + "missing" + ,@(find-files "." "^Makefile\\.in$")))))))) + (inputs (list libobjc2 + clang-toolchain)) + (native-inputs (list libtool + autoconf + automake + clang-toolchain)) + (build-system gnu-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda args + (chdir "cctools")))))) + (home-page "https://github.com/tpoechtrager/cctools-port") + (synopsis "Darwin's @code{cctools} and @code{ld64}") + ;; Confusingly enough, the program is called ld64, but the command is + ;; just ld (with no symlink), so @command{ld64} would be wrong. + (description + "Darwin's @code{cctools} are a set of tools somewhat similar in purpose +to GNU Binutils, but for Mach-O files targeting Darwin. The suite includes +@command{install_name_tool}, @command{dyldinfo}, and other specialized tools +in addition to standard utilities like @command{ld} and @command{as}. This +package provides portable versions of the tools.") + (license license:apsl2)))) diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 7ef211be37..92ab94f453 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2018 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012-2016, 2018, 2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013, 2017 Cyril Roelandt <tipecaml@gmail.com> ;;; Copyright © 2014, 2016 David Thompson <davet@gnu.org> @@ -1160,7 +1160,7 @@ developed in C/C++ to MariaDB and MySQL databases.") (define-public galera (package (name "galera") - (version "26.4.10") + (version "26.4.12") (source (origin (method git-fetch) (uri (git-reference @@ -1169,7 +1169,7 @@ developed in C/C++ to MariaDB and MySQL databases.") (recursive? #t))) (file-name (git-file-name name version)) (sha256 - (base32 "1n6zhzwj713ixyqvcjn4ldlq0y9fxqgvmqv3cj3h4207v9lwlxxz")))) + (base32 "0n4272mvr8a6h5prbhvl376asdp89ipix5yx5n6i1iiw9bs3v76l")))) (build-system cmake-build-system) (inputs (list check boost openssl)) @@ -1184,14 +1184,14 @@ and high-availability (HA).") (define-public postgresql-14 (package (name "postgresql") - (version "14.2") + (version "14.3") (source (origin (method url-fetch) (uri (string-append "https://ftp.postgresql.org/pub/source/v" version "/postgresql-" version ".tar.bz2")) (sha256 (base32 - "0ylpka64wli72jvjyqcayvlw44zk1hsbapb93l8gh4l98qp8pxrc")) + "0f5gm43hx8j67nfad8mrfhzb9aq4brfgka5d0nf936pmicv5g417")) (patches (search-patches "postgresql-disable-resolve_symlinks.patch")))) (build-system gnu-build-system) (arguments @@ -1247,6 +1247,7 @@ pictures, sounds, or video.") (package (inherit postgresql-14) (version "13.6") + (replacement postgresql-13/replacement) (source (origin (inherit (package-source postgresql-14)) (uri (string-append "https://ftp.postgresql.org/pub/source/v" @@ -1256,37 +1257,70 @@ pictures, sounds, or video.") "1z37ix80hb2bqa2smh1hbj9r507ypnl3pil43gkqznnlv6ipzz5s")) (patches (search-patches "postgresql-riscv-spinlocks.patch")))))) +;; The merge of commit ... +;; 781dd2de230e3 gnu: postgresql-13: Fix building on riscv64-linux. +;; ... in ... +;; 49b350fafc2c3 Merge branch 'master' into staging. +;; ... lost the inherited patch from postgresql-14, causing problems such as ... +;; 05fef7bfc6005 gnu: timescaledb: Adjust test preparation to PostgreSQL 13.6. +;; +;; While at it, remove the RISC-V spinlock patch, which has been upstreamed +;; in a different form (so the old patch still applies). +;; TODO: Remove in the next rebuild cycle. +(define postgresql-13/replacement + (package + (inherit postgresql-13) + (version "13.7") + (source + (origin + (inherit (package-source postgresql-13)) + (uri (string-append "https://ftp.postgresql.org/pub/source/v" + version "/postgresql-" version ".tar.bz2")) + (sha256 + (base32 + "16b3ljid7zd1v5l4l4pmwihx43wi8p9izidkjfii8dnqygs5p40v")) + (patches (search-patches "postgresql-disable-resolve_symlinks.patch")))))) + (define-public postgresql-11 (package (inherit postgresql-13) (name "postgresql") - (version "11.15") + (version "11.16") (source (origin (inherit (package-source postgresql-13)) (uri (string-append "https://ftp.postgresql.org/pub/source/v" version "/postgresql-" version ".tar.bz2")) (sha256 (base32 - "1qvrm0vhwnc5nijfbqybhwfjbq4r7vmk445sz7s6fiagpn78xxf8")))))) + "1983a7y4y6zhbgh0qcdfkf99445j1zm5q1ncrbkrx555y08y3n9d")) + (patches (search-patches + "postgresql-disable-resolve_symlinks.patch")))) + (native-inputs + (modify-inputs (package-native-inputs postgresql-13) + (replace "docbook-xml" docbook-xml-4.2))))) (define-public postgresql-10 (package (inherit postgresql-11) - (version "10.20") + (version "10.21") (source (origin (inherit (package-source postgresql-11)) (uri (string-append "https://ftp.postgresql.org/pub/source/v" version "/postgresql-" version ".tar.bz2")) (sha256 (base32 - "17v51a9vnz6lgbfmbdmcwsiyi572wndwa4n30nk2zr6gkgaidpl7")))))) + "1la5dx4hhy5yaznwk9gwdsymih3sd23fyhh6spssdaajdn2rh8fk")))) + (native-inputs + (modify-inputs (package-native-inputs postgresql-11) + (append opensp docbook-sgml-4.2) + (delete "docbook-xml"))))) -(define-public postgresql postgresql-13) +(define-public postgresql postgresql-14) (define-public timescaledb (package (name "timescaledb") - (version "2.5.1") + (version "2.7.0") (source (origin (method git-fetch) (uri (git-reference @@ -1295,14 +1329,18 @@ pictures, sounds, or video.") (file-name (git-file-name name version)) (sha256 (base32 - "174dm3higa0i7al9r2hdv5hk36pd0d5fnqj57w5a350kxshxyvyw")) + "18wszj8ia5rs4y4zkyfb0f5z4y1g7ac3jym748nbkbszhxmq7nc7")) + (patches (search-patches "timescaledb-flaky-test.patch")) (modules '((guix build utils))) (snippet ;; Remove files carrying the proprietary TIMESCALE license. '(begin (delete-file-recursively "tsl") (for-each delete-file - '("test/perl/AccessNode.pm" + '("scripts/c_license_header-timescale.h" + "scripts/license_tsl.spec" + "scripts/sql_license_tsl.sql" + "test/perl/AccessNode.pm" "test/perl/DataNode.pm" "test/perl/TimescaleNode.pm")))))) (build-system cmake-build-system) @@ -1347,12 +1385,28 @@ pictures, sounds, or video.") (pg-union (string-append (getcwd) "/../pg-union"))) (match inputs (((names . directories) ...) - (union-build pg-union (cons #$output directories)))) + ;; PG will only load extensions from its own $libdir, + ;; which it calculates based on argv[0]. As of + ;; PostgreSQL 13.6, it calls 'canonicalize_path' on + ;; argv[0] so a merge symlink is not enough to trick + ;; it; thus, the code below makes a full copy of PG + ;; and friends such that 'pg_config --libdir', for + ;; instance, points to PG-UNION, allowing it to load + ;; the timescaledb extension. + ;; TODO: The above comment and the #:symlink trick can + ;; be removed in the next rebuild cycle. + (union-build pg-union (cons #$output directories) + #:symlink + (lambda (old new) + (if (file-is-directory? old) + (copy-recursively old new) + (copy-file old new)))))) (setenv "PATH" (string-append pg-union "/bin:" (getenv "PATH"))) (invoke "initdb" "-D" pg-data) (copy-file "test/postgresql.conf" (string-append pg-data "/postgresql.conf")) + (invoke "pg_ctl" "-D" pg-data "-o" (string-append "-k " pg-data) "-l" (string-append pg-data "/db.log") @@ -1363,7 +1417,7 @@ pictures, sounds, or video.") (home-page "https://www.timescale.com/") (synopsis "Time-series extension for PostgreSQL") (description - "TimescaleDB is an database designed to make SQL scalable for + "TimescaleDB is a database designed to make SQL scalable for time-series data. It is engineered up from PostgreSQL and packaged as a PostgreSQL extension, providing automatic partitioning across time and space (partitioning key), as well as full SQL support.") @@ -1868,7 +1922,7 @@ extremely small.") "1yinx39960y241vf2sknxj0dfz82a5m9gvklq5rw78k0nlyrjawa")))) (build-system perl-build-system) (synopsis "Database independent interface for Perl") - (description "This package provides an database interface for Perl.") + (description "This package provides a database interface for Perl.") (home-page "https://metacpan.org/release/DBI") (license license:perl-license))) @@ -2035,7 +2089,7 @@ columns, primary keys, unique constraints and relationships.") (define-public perl-dbd-pg (package (name "perl-dbd-pg") - (version "3.14.2") + (version "3.15.1") (source (origin (method url-fetch) @@ -2043,7 +2097,7 @@ columns, primary keys, unique constraints and relationships.") "DBD-Pg-" version ".tar.gz")) (sha256 (base32 - "0kcfqq7g3832wiix0sbyvlc885qghjrp2ah3akn7h2lnb22fjwy9")))) + "0zn17xb6bmixkmv53p576igzw1jd43cwql35r19m56jwahxm9iqk")))) (build-system perl-build-system) (native-inputs (list perl-dbi)) @@ -2814,13 +2868,13 @@ can autogenerate peewee models using @code{pwiz}, a model generator.") (define-public python-pypika-tortoise (package (name "python-pypika-tortoise") - (version "0.1.1") + (version "0.1.5") (source (origin (method url-fetch) (uri (pypi-uri "pypika-tortoise" version)) (sha256 - (base32 "0g4z0lz739nk04b405ynqpd3y1z5nfyxjz9hqgxcw3jydsjx0cb8")))) + (base32 "0j20574s2yrq8d7fav3816vj1nfpihkm2mj8jzh2ank4zixp8brf")))) (build-system python-build-system) (home-page "https://github.com/tortoise/pypika-tortoise") (synopsis "Pypika fork for tortoise-orm") @@ -2851,24 +2905,19 @@ coroutine-specific markup.") (define-public python-asyncpg (package (name "python-asyncpg") - (version "0.24.0") + (version "0.25.0") (source (origin (method url-fetch) (uri (pypi-uri "asyncpg" version)) (sha256 - (base32 "1in0q6iffpl8ag6ady4bvwnn40igh10cpp4xgm426j1lqdis0byx")))) + (base32 "0h1573lp4607nppflnnjrhn7yrfy6i54cm98gi4qbcikjykfdy33")))) (build-system python-build-system) (propagated-inputs (list python-typing-extensions)) (native-inputs (list postgresql python-cython - python-flake8 - python-pycodestyle python-pytest - python-sphinx - python-sphinx-rtd-theme - python-sphinxcontrib-asyncio python-uvloop)) (home-page "https://github.com/MagicStack/asyncpg") (synopsis "Fast PostgreSQL database client library for Python") @@ -2921,13 +2970,13 @@ of PyMySQL. @code{aiomysql} tries to preserve the same API as the (define-public python-tortoise-orm (package (name "python-tortoise-orm") - (version "0.17.8") + (version "0.19.1") (source (origin (method url-fetch) (uri (pypi-uri "tortoise-orm" version)) (sha256 - (base32 "1gzgiypln7lck3p95vk3i8rdx1bjbmmlcpb8xpba8cjdjvlj0l0z")))) + (base32 "17yk71dlx5ai98i6ivqgsplkwivdxackz9jfn6z42bpcdgbpiwhg")))) (build-system python-build-system) ;; The test suite relies on asynctest, which is abandoned and doesn't ;; support Python >= 3.8. @@ -3004,44 +3053,58 @@ development.") (define-public python-pyodbc-c (package (name "python-pyodbc-c") - (version "3.1.4") + (version "3.1.5") (source (origin - (method url-fetch) - (uri (string-append "https://gitlab.com/daym/pyodbc-c/repository/" - "archive.tar.gz?ref=v" version)) + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/daym/pyodbc-c/") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 - "05aq2297k779xidmxcwkrrxjvj1bh2q7d9a1rcjv6zr15y764ga9")) - (file-name (string-append name "-" version ".tar.gz")))) + (base32 "08y60c5sx0k953zfx0s2a155l8py968sb17ap9a9fg8bjnj783k8")))) (build-system python-build-system) (inputs (list unixodbc)) (arguments - `(;; No unit tests exist. + `(;; The tests require a running SQL server that they don't help set up. #:tests? #f)) - (home-page "https://github.com/mkleehammer/pyodbc") - (synopsis "Python ODBC Library") + (home-page "https://gitlab.com/daym/pyodbc-c") + (synopsis "Python ODBC Library written in C") (description "@code{python-pyodbc-c} provides a Python DB-API driver -for ODBC.") +for ODBC, similar to python-pyodbc but written in C. + +It's designed to stand alone and not have other dependencies on other packages +or languages. It uses only Python's built-in data types.") (license (license:x11-style "file://LICENSE.TXT")))) (define-public python-pyodbc (package (name "python-pyodbc") - (version "4.0.30") + (version "4.0.32") (source (origin (method url-fetch) (uri (pypi-uri "pyodbc" version)) (sha256 - (base32 "0skjpraar6hcwsy82612bpj8nw016ncyvvq88j5syrikxgp5saw5")) - (file-name (string-append name "-" version ".tar.gz")))) + (base32 "0sqs0x2l5mk3yv0wwz3ya8yh5f4babihyhc8hjbf2m86b71z1rcv")) + (modules '((guix build utils))) + (snippet + ;; Delete precompiled binaries. The corresponding source is included. + #~(for-each delete-file (find-files "." "\\.pyc$"))))) (build-system python-build-system) (inputs (list unixodbc)) (arguments - `(#:tests? #f)) ; no unit tests exist + ;; XXX Tests fail with ‘Can't open lib 'SQL Server Native Client 10.0' : + ;; file not found (0) (SQLDriverConnect)")’. + (list #:tests? #f + #:phases + #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "python3" "tests3/test.py"))))))) (home-page "https://github.com/mkleehammer/pyodbc") (synopsis "Python ODBC Library") (description "@code{python-pyodbc} provides a Python DB-API driver @@ -4195,6 +4258,132 @@ language-bindings for structure manipulation. It also provides IPC and common algorithm implementations.") (license license:asl2.0))) +(define-public apache-arrow-0.16 + (package + (name "apache-arrow") + (version "0.16.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/apache/arrow") + (commit (string-append "apache-arrow-" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "15bplqy5708bxy1mynzjkd3d2g8v2wd36z8l0ap8yyyq54l3gdvy")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f + #:phases + (modify-phases %standard-phases + (add-before 'configure 'enter-source-directory + (lambda _ + (chdir "cpp") + (substitute* "src/parquet/CMakeLists.txt" + ((" parquet_constants.cpp") "") + (("set\\(THRIFT_OUTPUT_FILES \\$\\{THRIFT_OUTPUT_FILES\\}.*") "") + ((".*\"\\$\\{THRIFT_OUTPUT_DIR\\}/parquet_constants.cpp\"\\).*") "")))) + (add-after 'unpack 'set-env + (lambda _ + (setenv "BOOST_ROOT" (assoc-ref %build-inputs "boost")) + (setenv "BROTLI_HOME" (assoc-ref %build-inputs "brotli")) + (setenv "FLATBUFFERS_HOME" (assoc-ref %build-inputs "flatbuffers")) + (setenv "RAPIDJSON_HOME" (assoc-ref %build-inputs "rapidjson"))))) + #:build-type "Release" + #:configure-flags + (list "-DARROW_PYTHON=ON" + "-DARROW_GLOG=ON" + "-DARROW_SSE42=OFF" + "-DARROW_BOOST_USE_SHARED=ON" + ;; Parquet options + "-DARROW_PARQUET=ON" + + ;; The maintainers disallow using system versions of + ;; jemalloc: + ;; https://issues.apache.org/jira/browse/ARROW-3507. This + ;; is unfortunate because jemalloc increases performance: + ;; https://arrow.apache.org/blog/2018/07/20/jemalloc/. + "-DARROW_JEMALLOC=OFF" + + ;; The CMake option ARROW_DEPENDENCY_SOURCE is a global + ;; option that instructs the build system how to resolve + ;; each dependency. SYSTEM = Finding the dependency in + ;; system paths using CMake's built-in find_package + ;; function, or using pkg-config for packages that do not + ;; have this feature + "-DARROW_DEPENDENCY_SOURCE=SYSTEM" + + ;; Split output into its component packages. + (string-append "-DCMAKE_INSTALL_PREFIX=" + (assoc-ref %outputs "out")) + (string-append "-DCMAKE_INSTALL_RPATH=" + (assoc-ref %outputs "out") + "/lib") + (string-append "-DCMAKE_INSTALL_BINDIR=" + (assoc-ref %outputs "out") + "/bin") + (string-append "-DCMAKE_INSTALL_INCLUDEDIR=" + (assoc-ref %outputs "include") + "/share/include") + + + "-DARROW_WITH_SNAPPY=ON" + "-DARROW_WITH_ZLIB=ON" + "-DARROW_WITH_ZSTD=ON" + "-DARROW_WITH_LZ4=ON" + "-DARROW_COMPUTE=ON" + "-DARROW_CSV=ON" + "-DARROW_DATASET=ON" + "-DARROW_FILESYSTEM=ON" + "-DARROW_HDFS=ON" + "-DARROW_JSON=ON" + ;; Arrow Python C++ integration library (required for + ;; building pyarrow). This library must be built against + ;; the same Python version for which you are building + ;; pyarrow. NumPy must also be installed. Enabling this + ;; option also enables ARROW_COMPUTE, ARROW_CSV, + ;; ARROW_DATASET, ARROW_FILESYSTEM, ARROW_HDFS, and + ;; ARROW_JSON. + "-DARROW_PYTHON=ON" + + ;; Building the tests forces on all the + ;; optional features and the use of static + ;; libraries. + "-DARROW_BUILD_TESTS=OFF" + "-DBENCHMARK_ENABLE_GTEST_TESTS=OFF" + ;;"-DBENCHMARK_ENABLE_TESTING=OFF" + "-DARROW_BUILD_STATIC=OFF"))) + (inputs + `(("boost" ,boost) + ("brotli" ,google-brotli) + ("double-conversion" ,double-conversion) + ("snappy" ,snappy) + ("gflags" ,gflags) + ("glog" ,glog) + ("apache-thrift" ,apache-thrift "lib") + ("protobuf" ,protobuf) + ("rapidjson" ,rapidjson) + ("zlib" ,zlib) + ("bzip2" ,bzip2) + ("lz4" ,lz4) + ("zstd" ,zstd "lib") + ("re2" ,re2) + ("grpc" ,grpc) + ("python-3" ,python) + ("python-numpy" ,python-numpy))) + (native-inputs + (list pkg-config apache-thrift)) + (outputs '("out" "include")) + (home-page "https://arrow.apache.org/") + (synopsis "Columnar in-memory analytics") + (description "Apache Arrow is a columnar in-memory analytics layer +designed to accelerate big data. It houses a set of canonical in-memory +representations of flat and hierarchical data along with multiple +language-bindings for structure manipulation. It also provides IPC and common +algorithm implementations.") + (license license:asl2.0))) + (define-public python-pyarrow (package (inherit apache-arrow) @@ -4253,6 +4442,64 @@ implementation, along with tools for interoperability with pandas, NumPy, and other traditional Python scientific computing packages.") (license license:asl2.0))) +(define-public python-pyarrow-0.16 + (package + (inherit apache-arrow-0.16) + (name "python-pyarrow") + (build-system python-build-system) + (arguments + '(#:tests? #f ; XXX There are no tests in the "python" directory + #:phases + (modify-phases %standard-phases + (delete 'build) ; XXX the build is performed again during the install phase + (add-after 'unpack 'enter-source-directory + (lambda _ (chdir "python"))) + (add-after 'unpack 'make-git-checkout-writable + (lambda _ + (for-each make-file-writable (find-files ".")))) + (add-before 'install 'patch-cmake-variables + (lambda* (#:key inputs #:allow-other-keys) + ;; Replace cmake locations with hardcoded guix links for the + ;; underlying C++ library and headers. This is a pretty awful + ;; hack. + (substitute* "cmake_modules/FindParquet.cmake" + (("# Licensed to the Apache Software Foundation" m) + (string-append "set(PARQUET_INCLUDE_DIR \"" + (assoc-ref inputs "apache-arrow:include") + "/share/include\")\n" m)) + (("find_package_handle_standard_args" m) + (string-append "set(PARQUET_LIB_DIR \"" + (assoc-ref inputs "apache-arrow:lib") + "/lib\")\n" m))))) + (add-before 'install 'patch-parquet-library + (lambda _ + (substitute* "CMakeLists.txt" + (("parquet_shared") "parquet")))) + (add-before 'install 'set-PYARROW_WITH_PARQUET + (lambda _ + (setenv "PYARROW_WITH_PARQUET" "1")))))) + (propagated-inputs + `(("apache-arrow:lib" ,apache-arrow-0.16) + ("apache-arrow:include" ,apache-arrow-0.16 "include") + ("python-numpy" ,python-numpy) + ("python-pandas" ,python-pandas) + ("python-six" ,python-six))) + (native-inputs + (list cmake-minimal + pkg-config + python-cython + python-pytest + python-pytest-runner + python-setuptools-scm)) + (outputs '("out")) + (home-page "https://arrow.apache.org/docs/python/") + (synopsis "Python bindings for Apache Arrow") + (description + "This library provides a Pythonic API wrapper for the reference Arrow C++ +implementation, along with tools for interoperability with pandas, NumPy, and +other traditional Python scientific computing packages.") + (license license:asl2.0))) + (define-public python-crate (package (name "python-crate") diff --git a/gnu/packages/diffoscope.scm b/gnu/packages/diffoscope.scm index 055d83bf37..01628b5ccc 100644 --- a/gnu/packages/diffoscope.scm +++ b/gnu/packages/diffoscope.scm @@ -73,7 +73,7 @@ (define-public diffoscope (package (name "diffoscope") - (version "215") + (version "216") (source (origin (method git-fetch) @@ -82,7 +82,7 @@ (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "16pyqbyrfsxjnpmr9913x2brz3mxplhz62rxwix1c0p7afwjw835")) + (base32 "066w4mcrjvymwii5j5hylcslpz18wgd5afl11z1n3588j8c1zw15")) (patches (search-patches "diffoscope-fix-llvm-test.patch")))) (build-system python-build-system) diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm index 974467d72c..47b15e588f 100644 --- a/gnu/packages/disk.scm +++ b/gnu/packages/disk.scm @@ -93,6 +93,7 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system go) + #:use-module (guix build-system meson) #:use-module (guix build-system python) #:use-module (guix build-system trivial) #:use-module (guix build-system scons) @@ -714,10 +715,10 @@ the card and then checks if can read it. It will assure you haven't been sold a card with a smaller capacity than stated.") (license license:gpl3+))) -(define-public python-parted +(define-public python-pyparted (package - (name "python-parted") - (version "3.11.7") + (name "python-pyparted") + (version "3.12.0") (source (origin (method git-fetch) @@ -726,20 +727,8 @@ a card with a smaller capacity than stated.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "01193fmkss9icjvqpw85szpk8ld1pnha7p9kqm7mpwk6rc6gi2m3")))) + (base32 "0jxc1i1g3lz32wvqvdbb9ng2ypin783004kjnp0pghiz813lpw1d")))) (build-system python-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (delete 'check) - (add-after 'install 'check - (lambda* (#:key outputs inputs #:allow-other-keys) - (add-installed-pythonpath inputs outputs) - ;; See <https://github.com/dcantrell/pyparted/issues/47>. - (substitute* "tests/test__ped_ped.py" - (("\"/tmp/temp-device-\"") "self.path")) - (invoke "python" "-m" "unittest" "discover" "-v") - #t))))) (native-inputs (list e2fsprogs pkg-config)) (propagated-inputs @@ -751,6 +740,9 @@ a card with a smaller capacity than stated.") (description "This package provides @code{parted} bindings for Python.") (license license:gpl2+))) +(define-public python-parted + (deprecated-package "python-parted" python-pyparted)) + (define-public duperemove (package (name "duperemove") @@ -883,7 +875,7 @@ passphrases.") (define-public ndctl (package (name "ndctl") - (version "72.1") + (version "73") (source (origin (method git-fetch) (uri (git-reference @@ -892,12 +884,16 @@ passphrases.") (file-name (git-file-name name version)) (sha256 (base32 - "1lvrhlad5n43bal053ihgbwr1k4ka2kscrjwr9rs5xnf2vy7204v")))) - (build-system gnu-build-system) + "19kp1ly74bj7gavs03q7caci0lqr0rsi5y45zx5m8in4h19xk1kb")))) + (build-system meson-build-system) (arguments (list #:configure-flags - #~(list "--disable-asciidoctor" ; use docbook-xsl instead - "--without-systemd") + #~(list (string-append "-Drootprefix=" #$output) + (string-append "-Dbashcompletiondir=" #$output + "/share/bash-completion/completions") + (string-append "-Dsysconfdir=" #$output "/etc") + "-Dasciidoctor=disabled" ; use docbook-xsl instead + "-Dsystemd=disabled") #:phases #~(modify-phases %standard-phases (add-after 'unpack 'fix-version @@ -910,17 +906,11 @@ passphrases.") (substitute* "git-version-gen" (("/bin/sh") (which "sh"))) (substitute* "git-version" - (("/bin/bash") (which "bash")))))) - #:make-flags - #~(list (string-append "BASH_COMPLETION_DIR=" #$output - "/share/bash-completion/completions")))) + (("/bin/bash") (which "bash")))))))) (native-inputs (list asciidoc - automake - autoconf bash-completion docbook-xsl - libtool libxml2 pkg-config xmlto @@ -940,7 +930,7 @@ passphrases.") libnvdimm (non-volatile memory device) sub-system in the Linux kernel.") ;; COPYING says LGPL2.1, but many source files are GPL2 so that's ;; the effective license. Note that some files under ccan/ are - ;; covered by BSD-3 or public domain, see the individual folders. + ;; covered by BSD-3 or public domain, see the individual directories. (license license:gpl2))) (define-public dmraid @@ -1253,7 +1243,7 @@ that support this feature).") (define-public memkind (package (name "memkind") - (version "1.12.0") + (version "1.13.0") (source (origin (method git-fetch) (uri (git-reference @@ -1261,7 +1251,7 @@ that support this feature).") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1s52vl2jlrdc8nxnvf993x9mcag56qxcaniiijhmsv42a26hvjk4")))) + (base32 "0zbil6xqmsrnh773ihxyfna6pvvxv3kczdb3g863ssflwwvv7h4w")))) (build-system gnu-build-system) (inputs (list ;; memkind patched jemalloc to add je_arenalookupx, diff --git a/gnu/packages/display-managers.scm b/gnu/packages/display-managers.scm index d567f7d3fe..64375b8cfc 100644 --- a/gnu/packages/display-managers.scm +++ b/gnu/packages/display-managers.scm @@ -323,8 +323,8 @@ experience for your users, your family and yourself") vala ;for Vala bindings ;; For tests dbus - ;; python-wrapper - ;; python-pygobject + python-wrapper + python-pygobject which yelp-tools)) ;; Required by liblightdm-gobject-1.pc. diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm index fea255c930..aa10b96fdf 100644 --- a/gnu/packages/dns.scm +++ b/gnu/packages/dns.scm @@ -333,14 +333,14 @@ and BOOTP/TFTP for network booting of diskless machines.") ;; When updating, check whether isc-dhcp's bundled copy should be as well. ;; The BIND release notes are available here: ;; https://www.isc.org/bind/ - (version "9.16.29") + (version "9.16.30") (source (origin (method url-fetch) (uri (string-append "https://ftp.isc.org/isc/bind9/" version "/bind-" version ".tar.xz")) (sha256 - (base32 "0rklj342khnycs462nd3k35yymsdv6ibv352jv1nymmxxfc8yh68")) + (base32 "1nv02apqpqk7mi1330jgsacpplhgnkx6mba5nmbsx1x72gqc77q0")) (patches (search-patches "bind-re-add-attr-constructor-priority.patch")))) (build-system gnu-build-system) diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm index 5ee6fcccde..91a5e55887 100644 --- a/gnu/packages/docbook.scm +++ b/gnu/packages/docbook.scm @@ -372,17 +372,18 @@ for DocBook.") (description "Documentation for the DocBook DSSSL style sheets.") (license (license:non-copyleft "file://doc/LEGALNOTICE.htm")))) -(define-public docbook-sgml +(define-public docbook-sgml-4.2 (package (name "docbook-sgml") - (version "4.1") + (version "4.2") (source (origin (method url-fetch) - (uri (string-append "https://www.oasis-open.org/docbook/sgml/" - version "/docbk41.zip")) + (uri (string-append + "https://www.oasis-open.org/docbook/sgml/4.2/docbook-" + version ".zip")) (sha256 (base32 - "04b3gp4zkh9c5g9kvnywdkdfkcqx3kjc04j4mpkr4xk7lgqgrany")))) + "1hrm4qmmzi285bkxkc74lxvjvw2gbl7ycbaxhv31h9rl9g4x5sv7")))) (build-system trivial-build-system) (arguments '(#:modules ((guix build utils)) @@ -403,8 +404,8 @@ for DocBook.") ;; Reference the ISO 8879 character entities. ;; e.g. "iso-lat1.gml" --> "<iso-entities-dir>/ISOlat1" (substitute* "docbook.cat" - (("(.*ISO 8879.*)\"iso-(.*)\\.gml\"" _ head name) - (string-append head "\"" iso-entities-dir "/ISO" name "\""))))))) + (("\"iso-(.*)\\.gml\"" _ name) + (string-append "\"" iso-entities-dir "/ISO" name "\""))))))) (native-inputs (list unzip)) (inputs @@ -414,6 +415,20 @@ for DocBook.") (description "This package provides SGML style sheets for DocBook.") (license (license:x11-style "" "See file headers.")))) +(define-public docbook-sgml-4.1 + (package + (inherit docbook-sgml-4.2) + (version "4.1") + (source (origin + (method url-fetch) + (uri (string-append "https://www.oasis-open.org/docbook/sgml/" + version "/docbk41.zip")) + (sha256 + (base32 + "04b3gp4zkh9c5g9kvnywdkdfkcqx3kjc04j4mpkr4xk7lgqgrany")))))) + +(define-public docbook-sgml docbook-sgml-4.1) + (define-public docbook-sgml-3.1 (package (inherit docbook-sgml) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 4bc5e10624..d02e1dc7d5 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -113,6 +113,7 @@ ;;; Copyright © 2022 Peter Polidoro <peter@polidoro.io> ;;; Copyright © 2022 Luis Felipe López Acevedo <luis.felipe.la@protonmail.com> ;;; Copyright © 2022 Thomas Albers Raviola <thomas@thomaslabs.org> +;;; Copyright © 2022 Haider Mirza <haider@haider.gq> ;;; ;;; This file is part of GNU Guix. ;;; @@ -247,7 +248,7 @@ (define-public emacs-geiser (package (name "emacs-geiser") - (version "0.23.1") + (version "0.23.2") (source (origin (method git-fetch) @@ -256,7 +257,7 @@ (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1lvnk71fb4qkh8a7h7spsdhmc9nnj1lwgp9wr3c2fgzjqsl62kgr")))) + (base32 "0p5cwx0xwva4ajgj8hnrk8bx6n3hv1z7aqs4zivp81crnq4077yw")))) (build-system emacs-build-system) (arguments '(#:phases @@ -278,7 +279,7 @@ (list texinfo)) (propagated-inputs (list emacs-project emacs-transient)) - (home-page "https://nongnu.org/geiser/") + (home-page "https://www.nongnu.org/geiser/") (synopsis "Collection of Emacs modes for Scheme hacking") (description "Geiser is a collection of Emacs major and minor modes that conspire with @@ -296,7 +297,7 @@ e.g. emacs-geiser-guile for Guile.") (define-public emacs-geiser-guile (package (name "emacs-geiser-guile") - (version "0.23") + (version "0.23.2") (source (origin (method git-fetch) @@ -305,13 +306,19 @@ e.g. emacs-geiser-guile for Guile.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1v9f90smnk41nz1pjy5mwz199y8p4qar3llgaryzxr7s4wg2v9wi")))) + (base32 "18m5ldj4r4c2hxgvv5b4azl90r8az1kn5f3s913h971asyv4wx06")))) (build-system emacs-build-system) (arguments (list #:include #~(cons "^src/" %default-include) #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'patch-geiser-guile-binary + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "geiser-guile.el" + (("\\(t \"guile\")") + (format #f "(t ~s)" + (search-input-file inputs "bin/guile")))))) (add-after 'make-autoloads 'patch-autoloads (lambda _ (substitute* (string-append (elpa-directory #$output) @@ -321,11 +328,9 @@ e.g. emacs-geiser-guile for Guile.") (("\\(geiser-activate-implementation .*\\)" all) (string-append "(eval-after-load 'geiser-impl '" all ")")))))))) - (inputs - (list guile-3.0)) - (propagated-inputs - (list emacs-geiser)) - (home-page "https://nongnu.org/geiser/") + (inputs (list guile-3.0)) + (propagated-inputs (list emacs-geiser)) + (home-page "https://www.nongnu.org/geiser/") (synopsis "Guile Scheme support for Geiser") (description "This package adds support for the Guile Scheme implementation to Geiser, @@ -358,34 +363,57 @@ using geiser.") (home-page "https://github.com/xiaohanyu/ac-geiser")))) (define-public emacs-geiser-gauche - (package - (name "emacs-geiser-gauche") - (version "0.0.2") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://gitlab.com/emacs-geiser/gauche.git") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0rxncnzx7qgcpvc8nz0sd8r0hwrplazzraahdwhbpq0q6z8ywqgg")))) - (build-system emacs-build-system) - (arguments - `(#:include (cons "^geiser-gauche\\.scm$" %default-include))) - (native-inputs - (list emacs-geiser)) - (home-page "https://gitlab.com/emacs-geiser/gauche") - (synopsis "Gauche Scheme support for Geiser") - (description - "This package adds support for the Gauche Scheme implementation to Geiser, + ;; The latest 0.14 release has an unbound variable (geiser-scheme-dir). + (let ((commit "96fa06aaeef18cc1b3b519e83dbb7be09eeb0d07") + (revision "0")) + (package + (name "emacs-geiser-gauche") + (version (git-version "0.14" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/emacs-geiser/gauche.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1ppracwfl1snq0ifdlyxpdlv7fbn3pbxm1hd1ihgqivii5nbya9r")))) + (build-system emacs-build-system) + (arguments + (list + #:include '(cons "^geiser-gauche\\.scm$" %default-include) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-geiser-gauche-binary + (lambda* (#:key inputs #:allow-other-keys) + (emacs-substitute-sexps "geiser-gauche.el" + ("geiser-custom--defcustom geiser-gauche-binary" + (search-input-file inputs "bin/gosh"))))) + (add-after 'make-autoloads 'patch-autoloads + (lambda _ + (substitute* (string-append (elpa-directory #$output) + "/geiser-gauche-autoloads.el") + ;; Activating implementations fails when Geiser is not yet + ;; loaded, so let's defer that until it is. + (("\\(geiser-activate-implementation .*\\)" all) + (string-append + "(eval-after-load 'geiser-impl '" all ")")) + (("\\(geiser-implementation-extension .*\\)" all) + (string-append + "(eval-after-load 'geiser-impl '" all ")")))))))) + (inputs (list gauche)) + (propagated-inputs (list emacs-geiser)) + (home-page "https://gitlab.com/emacs-geiser/gauche") + (synopsis "Gauche Scheme support for Geiser") + (description + "This package adds support for the Gauche Scheme implementation to Geiser, a generic Scheme interaction mode for the GNU Emacs editor.") - (license license:expat))) + (license license:expat)))) (define-public emacs-geiser-racket (package (name "emacs-geiser-racket") - (version "0.16") + (version "1.0") (source (origin (method git-fetch) @@ -394,13 +422,19 @@ a generic Scheme interaction mode for the GNU Emacs editor.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1aqsvmk1hi7kc3j4h8xlza7c6rwm71v98fv5wpw8kmyj9vsp49wx")))) + (base32 "04gwd9qa0785zfr6m9a5443ilgvyz05l06cb1waicf83sgp8xl32")))) (build-system emacs-build-system) (arguments (list #:include #~(cons "^src/" %default-include) #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'patch-geiser-racket-binary + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "geiser-racket.el" + (("\\(t \"racket\")") + (format #f "(t ~s)" + (search-input-file inputs "bin/racket")))))) (add-after 'make-autoloads 'patch-autoloads (lambda _ (substitute* (string-append (elpa-directory #$output) @@ -410,14 +444,12 @@ a generic Scheme interaction mode for the GNU Emacs editor.") (("\\(geiser-activate-implementation .*\\)" all) (string-append "(eval-after-load 'geiser-impl '" all ")")) - (("\\(geiser-implementation-extension .*\\)" all) + (("\\(geiser-implementation-extension .*\\)" all) (string-append "(eval-after-load 'geiser-impl '" all ")")))))))) - (inputs - (list racket)) - (propagated-inputs - (list emacs-geiser)) - (home-page "https://nongnu.org/geiser/") + (inputs (list racket)) + (propagated-inputs (list emacs-geiser)) + (home-page "https://www.nongnu.org/geiser/") (synopsis "Racket support for Geiser") (description "This package adds support for the Racket implementation to Geiser, @@ -537,6 +569,27 @@ editing @file{.hgignore} files used by the Mercurial version control system.") (license license:gpl3+)))) +(define-public emacs-platformio-mode + (package + (name "emacs-platformio-mode") + (version "0.3.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ZachMassia/PlatformIO-Mode") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0ian50v9vaz7kqzn20bhqadq50h0l3zhjkmniinpz4q9klh7drh9")))) + (build-system emacs-build-system) + (propagated-inputs (list emacs-async emacs-projectile)) + (home-page "https://github.com/zachmassia/platformio-mode") + (synopsis "Minor mode for building and uploading PlatformIO projects") + (description "This package provices an Emacs minor mode for building and +uploading PlatformIO projects.") + (license license:gpl3+))) + (define-public emacs-hyperbole (package (name "emacs-hyperbole") @@ -1377,7 +1430,7 @@ organizing remote Go repository clones.") (define-public emacs-ghub (package (name "emacs-ghub") - (version "3.5.5") + (version "3.5.6") (source (origin (method git-fetch) @@ -1386,7 +1439,7 @@ organizing remote Go repository clones.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1px27nh4cr3r16qmvig72jdirjzllvm2m4dzm59kfznhg3rf7vj0")))) + (base32 "1pw1rjrvvanlcxv3rb64s2p646zfaipp7h7v8djlrrnlgy6mwbqd")))) (build-system emacs-build-system) (arguments (list @@ -3916,7 +3969,7 @@ evaluations. The entry point is @code{M-x build-farm} command.") (define-public emacs-d-mode (package (name "emacs-d-mode") - (version "2.0.11") + (version "2.0.12") (source (origin (method git-fetch) @@ -3925,7 +3978,7 @@ evaluations. The entry point is @code{M-x build-farm} command.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0vkl470vvmxap8ca773a0jvjvalmvdbbax3qvgjdclp54ml75al4")))) + (base32 "0mwd412d2kha8avkyhvvkh8r7an859xk18f7phgx7kj989pr3xkr")))) (build-system emacs-build-system) (propagated-inputs (list emacs-undercover)) @@ -4136,16 +4189,16 @@ in the center.") (define-public emacs-undo-tree (package (name "emacs-undo-tree") - (version "0.8.1") + (version "0.8.2") (source (origin (method git-fetch) (uri (git-reference (url "https://gitlab.com/tsc25/undo-tree") - (commit (string-append "release/" version)))) + (commit "42aab056e37e033816b2d192f9121b89410b958e"))) ; no 0.8.2 tag (file-name (git-file-name name version)) (sha256 - (base32 "1khkwrrbwaimspc013n4k9mpv8g302r0zkrsqnza2x1d3qznn08y")))) + (base32 "1xvkxc078b4z5zqwndz6jcv4ga8yd2ci32v7l8pdvqjmz7fq7bfz")))) (build-system emacs-build-system) (propagated-inputs (list emacs-queue)) @@ -9845,10 +9898,10 @@ navigate code in a tree-like fashion.") (define-public emacs-lispy ;; No release since May 2019 and tons of fixes have landed on master. ;; https://github.com/abo-abo/lispy/issues/513 - (let ((commit "38a7df4cbb16cfe3d62dc8ea98b50e2d9a572e58")) + (let ((commit "df1b7e614fb0f73646755343e8892ddda310f427")) (package (name "emacs-lispy") - (version (git-version "0.27.0" "2" commit)) + (version (git-version "0.27.0" "3" commit)) (home-page "https://github.com/abo-abo/lispy") (source (origin (method git-fetch) @@ -9857,7 +9910,7 @@ navigate code in a tree-like fashion.") (commit commit))) (sha256 (base32 - "1q3sgk8ffwajmh8l7c4p4fz36xw4fqds8yqblbi5kardaa8bs8cs")) + "02pmnn9cqslahnvllqzawp2j5icmb3wgkrk4qrfxjds68jg7pjj4")) (patches (search-patches "emacs-lispy-fix-thread-last-test.patch")) (file-name (git-file-name name version)))) @@ -11233,14 +11286,14 @@ of its name.") (define-public emacs-rainbow-mode (package (name "emacs-rainbow-mode") - (version "1.0.5") + (version "1.0.6") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/" - "rainbow-mode-" version ".el")) + "rainbow-mode-" version ".tar")) (sha256 - (base32 "159fps843k5pap9k04a7ll1k3gw6d9c6w08lq4bbc3lqg78aa2l9")))) + (base32 "04v73cm1cap19vwc8lqsw0rmfr9v7r3swc4wgxnk9dnzxi9j2527")))) (build-system emacs-build-system) (home-page "https://elpa.gnu.org/packages/rainbow-mode.html") (synopsis "Colorize color names in buffers") @@ -12826,7 +12879,7 @@ passive voice.") (define-public emacs-org (package (name "emacs-org") - (version "9.5.3") + (version "9.5.4") (source (origin (method git-fetch) @@ -12835,7 +12888,7 @@ passive voice.") (commit (string-append "release_" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0h1n6gqxv3kj3y98n5547rhpw4qnp03lfar79npb4paqgpxf76wb")))) + (base32 "1an866kkn5r84933s04agm1c3197kza2pvk8lqp2xzpjd09ba394")))) (build-system emacs-build-system) (arguments `(#:tests? #t @@ -18587,6 +18640,28 @@ files, allowing for actions to be performed based on search criteria.") Chinese to English.") (license license:gpl3+))) +(define-public emacs-org-auto-tangle + (package + (name "emacs-org-auto-tangle") + (version "0.4.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/yilkalargaw/org-auto-tangle") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1zb7vcmhmjiqpbbhqrqci689rnpn10p985cs5jk9sgg66xsbrgs3")))) + (build-system emacs-build-system) + (propagated-inputs (list emacs-async)) + (home-page "https://github.com/yilkalargaw/org-auto-tangle") + (synopsis "Automatically tangle code blocks on save") + (description + "@code{org-auto-tangle} allows you to automatically tangle code blocks +whenever saving an @code{org-mode} file.") + (license license:bsd-2))) + (define-public emacs-org-auto-expand (let ((commit "4938d5f6460e2f8f051ba9ac000b291bfa43ef62") (revision "1")) @@ -19494,16 +19569,14 @@ or expressions with SVG rounded box labels that are fully customizable.") (define-public emacs-kind-icon (package (name "emacs-kind-icon") - (version "0.1.4") + (version "0.1.5") (source (origin (method url-fetch) - (uri (string-append - "https://elpa.gnu.org/packages/kind-icon-" - version - ".tar")) + (uri (string-append "https://elpa.gnu.org/packages/kind-icon-" + version ".tar")) (sha256 - (base32 "00pyvnq4dx51l2wbhvm6k6cx5xmy32j4h1lkr5kr8s3j5w83ip25")))) + (base32 "0qajj89vkgc9gbgff6akzll53jy0kgkv6c9jvwpl32rbg8v0wp63")))) (build-system emacs-build-system) (propagated-inputs (list emacs-svg-lib)) (home-page "https://github.com/jdtsmith/kind-icon") @@ -24857,45 +24930,53 @@ the standard @code{Dockerfile} file format.") (license license:asl2.0))) (define-public emacs-lsp-mode - (package - (name "emacs-lsp-mode") - (version "8.0.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/emacs-lsp/lsp-mode") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1a6jc9sxf9b8fj9h8xlv5k546bkzsy8j5nj19cfama389z0bzcsl")))) - (build-system emacs-build-system) - (arguments - `(#:emacs ,emacs ;need libxml support - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'move-clients-libraries - ;; Move all clients libraries at top-level, as is done, e.g., in - ;; MELPA. - (lambda _ - (for-each (lambda (f) - (install-file f ".")) - (find-files "clients/" "\\.el$"))))))) - (propagated-inputs - (list emacs-dash - emacs-f - emacs-ht - emacs-hydra - emacs-markdown-mode - emacs-spinner)) - (home-page "https://emacs-lsp.github.io/lsp-mode/") - (synopsis "Emacs client and library for the Language Server Protocol") - (description - "LSP mode is a client and library implementation for the Language Server -Protocol. This mode creates an IDE-like experience by providing optional -integration with other popular Emacs packages like Company, Flycheck, and -Projectile.") - (license license:gpl3+))) + (let ((commit "4aafe25e03ab7470b8d3c1cb326affa3c5e9930e") + (revision "0")) + (package + (name "emacs-lsp-mode") + (version (git-version "8.0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacs-lsp/lsp-mode") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "01csz4vr3fg1q2py45mxj5j8bkvckn3daam1jafb2gg9gjc9bp7z")))) + (build-system emacs-build-system) + (arguments + `(#:emacs ,emacs ;need libxml support + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'move-clients-libraries + ;; Move all clients libraries at top-level, as is done, e.g., in + ;; MELPA. + (lambda _ + (for-each (lambda (f) + (install-file f ".")) + (find-files "clients/" "\\.el$")))) + (add-before 'move-clients-libraries 'fix-patch-el-files + ;; /bin/ksh is only used on macOS, which we don't support, so we + ;; don't want to add it as input. + (lambda _ + (substitute* '("clients/lsp-csharp.el" "clients/lsp-fsharp.el") + (("/bin/ksh") "ksh"))))))) + (propagated-inputs + (list emacs-dash + emacs-f + emacs-ht + emacs-hydra + emacs-markdown-mode + emacs-spinner)) + (home-page "https://emacs-lsp.github.io/lsp-mode/") + (synopsis "Emacs client and library for the Language Server Protocol") + (description + "LSP mode is a client and library implementation for the Language +Server Protocol. This mode creates an IDE-like experience by providing +optional integration with other popular Emacs packages like Company, Flycheck, +and Projectile.") + (license license:gpl3+)))) (define-public emacs-lsp-treemacs (package @@ -27826,7 +27907,7 @@ Emacs that integrate with major modes like Org-mode.") (define-public emacs-modus-themes (package (name "emacs-modus-themes") - (version "2.4.0") + (version "2.4.1") (source (origin (method git-fetch) @@ -27835,7 +27916,7 @@ Emacs that integrate with major modes like Org-mode.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0ia6r68fqbv64r9jm92vmqypq15nl8yy07n18hqrfbp1fy47zds1")))) + (base32 "0b4y8dzyc9qwwaf2ngqiwyfcnhwlr49kxhc96laqk20lvjlfsrnx")))) (native-inputs (list texinfo)) (build-system emacs-build-system) (arguments @@ -27937,28 +28018,30 @@ and it should work well with 256 color terminals.") (license license:gpl3+))) (define-public emacs-dimmer - (package - (name "emacs-dimmer") - (version "0.4.2") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/gonewest818/dimmer.el") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0dw0qh5hm1x76s5cqxvylvmjgy0jwy11xm258g6kmx6w1k6r1d2l")))) - (build-system emacs-build-system) - (home-page "https://github.com/gonewest818/dimmer.el") - (synopsis "Visually highlights the selected buffer in Emacs") - (description "Dimmer provides a minor mode that indicates which buffer is + (let ((commit "2f915b100044e09dd647b22085e1696249c4b115") + (revision "1")) + (package + (name "emacs-dimmer") + (version (git-version "0.4.2" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/gonewest818/dimmer.el") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "00y6645zjary1sz7517qy5pjwfm5ipsc46sypmdygin65hbbc8wg")))) + (build-system emacs-build-system) + (home-page "https://github.com/gonewest818/dimmer.el") + (synopsis "Visually highlights the selected buffer in Emacs") + (description "Dimmer provides a minor mode that indicates which buffer is currently active by dimming the faces in the other buffers. It does this nondestructively, and computes the dimmed faces dynamically such that your overall color scheme is shown in a muted form without requiring you to define what is a \"dim\" version of every face.") - (license license:gpl3+))) + (license license:gpl3+)))) (define-public emacs-minibuffer-line (package @@ -31512,6 +31595,59 @@ zoomable and moveable map display, display of tracks and POIs from GPX files, parallel fetching of tiles with cURL, and more.") (license license:gpl3+))) +(define-public emacs-corfu-terminal + ;; Upstream does not tag releases, version taken from package header. + (let ((commit "7c5a8a1c07b6c1a41b358b083d5bf7773701d26b") + (revision "0")) + (package + (name "emacs-corfu-terminal") + (version (git-version "0.4" revision commit)) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://codeberg.org/akib/emacs-corfu-terminal") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0pk5vfcz8w4hiqrwzwpxdjzlbhla0bw7a1h6v0mqxad0j9y7v3nw")))) + (build-system emacs-build-system) + (propagated-inputs (list emacs-corfu emacs-popon)) + (home-page "https://codeberg.org/akib/emacs-corfu-terminal/") + (synopsis "Replace corfu child frames with popups") + (description + "This package replaces the child frames @code{emacs-corfu} uses +with popups, which also work in the terminal.") + (license license:gpl3+)))) + +(define-public emacs-corfu-doc-terminal + ;; Upstream does not tag releases, version taken from package header. + (let ((commit "d8945c64b52d76e864b767b3048674f222daf80b") + (revision "0")) + (package + (name "emacs-corfu-doc-terminal") + (version (git-version "0.5" revision commit)) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://codeberg.org/akib/emacs-corfu-doc-terminal") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0j0dd8np5x93wic22bc5i9h7bq2gj700n4fh11dzzgsj14lv2r5k")))) + (build-system emacs-build-system) + (propagated-inputs + (list emacs-corfu emacs-corfu-doc emacs-corfu-terminal emacs-popon)) + (home-page "https://codeberg.org/akib/emacs-corfu-doc-terminal/") + (synopsis "Replace corfu docmentation child frames with popups") + (description + "This package replaces the child frames @code{emacs-corfu-doc} uses +with popups, which also work in the terminal.") + (license license:gpl3+)))) + (define-public emacs-popon ;; Upstream does not tag releases. The commit below matches the version ;; bump. diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 15a34d1557..31b5c04324 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -68,6 +68,7 @@ #:use-module (gnu packages ncurses) #:use-module (gnu packages pdf) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages selinux) #:use-module (gnu packages texinfo) #:use-module (gnu packages tls) #:use-module (gnu packages web) ; for jansson @@ -262,7 +263,6 @@ ;; This is not needed for (modern) IMAP. mailutils - ;; TODO: Add the optional dependencies. gpm libx11 gtk+ @@ -272,7 +272,9 @@ libxft libtiff giflib + lcms libjpeg-turbo + libselinux acl jansson gmp diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm index 6b11fc54f0..190af4edfb 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm @@ -1840,7 +1840,8 @@ an embedded event driven algorithm.") (arguments (substitute-keyword-arguments (package-arguments libngspice) ((#:configure-flags flags) - `(delete "--with-ngshared" ,flags)) + `(cons "--with-readline=yes" + (delete "--with-ngshared" ,flags))) ((#:phases phases) `(modify-phases ,phases (add-after 'unpack 'delete-include-files @@ -2430,111 +2431,106 @@ OpenSCAD code. It supports syntax highlighting, indenting and refilling of comments."))) (define-public freecad - ;; FIXME: We use a commit directly because upstream has compatibility fixes - ;; that are not in a release yet for boost, opencascade-occt-7.6 and vtk-9. - ;; Switch back to a regular version (probably 0.20) when it is released. - (let ((commit "09a05a9cd0c4692a57a3e038268b4389b4657fc6") - (revision "0")) - (package - (name "freecad") - (version (git-version "0.19.3" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/FreeCAD/FreeCAD") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0818basym0n44dsgix0yv1l00xgv9igrr7wkszd8x74lh1rr591r")))) - (build-system qt-build-system) - (native-inputs - (list doxygen - graphviz - qttools - pkg-config - python-pyside-2-tools - swig)) - (inputs - (list boost - coin3D - double-conversion - eigen - fontconfig - freetype - gl2ps - glew - hdf5-1.10 - jsoncpp - libarea - libjpeg-turbo - libmedfile - libspnav - libtheora - libtiff - libxi - libxml++ - libxmu - lz4 - netcdf - opencascade-occt - openmpi - proj - python-gitpython - python-matplotlib - python-pivy - python-ply - python-pyside-2 - python-pyyaml - python-shiboken-2 - python-wrapper - qtbase-5 - qtdeclarative - qtsvg - qtwebchannel - qtwebengine - qtx11extras - qtxmlpatterns - sqlite - tbb-2020 ; Same version as opencascade-occt - vtk - xerces-c - zlib)) - (arguments - `(#:tests? #f ; Project has no tests - #:configure-flags - ,#~(list - "-DBUILD_QT5=ON" - "-DBUILD_FLAT_MESH:BOOL=ON" - "-DBUILD_ENABLE_CXX_STD:STRING=C++17" - (string-append "-DCMAKE_INSTALL_LIBDIR=" #$output "/lib")) - #:phases - (modify-phases %standard-phases - (add-before 'configure 'restore-pythonpath - (lambda _ - (substitute* "src/Main/MainGui.cpp" - (("_?putenv\\(\"PYTHONPATH=\"\\);") "")))) - (add-after 'install 'wrap-pythonpath - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (wrap-program (string-append out "/bin/FreeCAD") - (list "GUIX_PYTHONPATH" - 'prefix (list (getenv "GUIX_PYTHONPATH")))))))))) - (home-page "https://www.freecadweb.org/") - (synopsis "Your Own 3D Parametric Modeler") - (description - "FreeCAD is a general purpose feature-based, parametric 3D modeler for + (package + (name "freecad") + (version "0.20") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/FreeCAD/FreeCAD") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "14bn75bjh93f8k3hinqw913z1q0ywq7niklwbbd99hf5n342hsv4")))) + (build-system qt-build-system) + (native-inputs + (list doxygen + graphviz + qttools + pkg-config + python-pyside-2-tools + swig)) + (inputs + (list boost + coin3D + double-conversion + eigen + fontconfig + freetype + gl2ps + glew + hdf5-1.10 + jsoncpp + libarea + libjpeg-turbo + libmedfile + libspnav + libtheora + libtiff + libxi + libxml++ + libxmu + lz4 + netcdf + opencascade-occt + openmpi + proj + python-gitpython + python-matplotlib + python-pivy + python-ply + python-pyside-2 + python-pyyaml + python-shiboken-2 + python-wrapper + qtbase-5 + qtdeclarative + qtsvg + qtwebchannel + qtwebengine + qtx11extras + qtxmlpatterns + sqlite + tbb-2020 ; Same version as opencascade-occt + vtk + xerces-c + zlib)) + (arguments + `(#:tests? #f ; Project has no tests + #:configure-flags + ,#~(list + "-DBUILD_QT5=ON" + "-DBUILD_FLAT_MESH:BOOL=ON" + "-DBUILD_ENABLE_CXX_STD:STRING=C++17" + (string-append "-DCMAKE_INSTALL_LIBDIR=" #$output "/lib")) + #:phases + (modify-phases %standard-phases + (add-before 'configure 'restore-pythonpath + (lambda _ + (substitute* "src/Main/MainGui.cpp" + (("_?putenv\\(\"PYTHONPATH=\"\\);") "")))) + (add-after 'install 'wrap-pythonpath + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (wrap-program (string-append out "/bin/FreeCAD") + (list "GUIX_PYTHONPATH" + 'prefix (list (getenv "GUIX_PYTHONPATH")))))))))) + (home-page "https://www.freecadweb.org/") + (synopsis "Your Own 3D Parametric Modeler") + (description + "FreeCAD is a general purpose feature-based, parametric 3D modeler for CAD, MCAD, CAx, CAE and PLM, aimed directly at mechanical engineering and product design but also fits a wider range of uses in engineering, such as architecture or other engineering specialties. It is 100% Open Source (LGPL2+ license) and extremely modular, allowing for very advanced extension and customization.") - (license - (list - license:lgpl2.1+ - license:lgpl2.0+ - license:gpl3+ - license:bsd-3))))) + (license + (list + license:lgpl2.1+ + license:lgpl2.0+ + license:gpl3+ + license:bsd-3)))) (define-public libmedfile (package @@ -2740,21 +2736,19 @@ export filters.") (define-public meshlab (package (name "meshlab") - (version "2020.06") + (version "2022.02") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/cnr-isti-vclab/meshlab") - (commit (string-append "Meshlab-" version)) + (commit (string-append "MeshLab-" version)) (recursive? #t))) (file-name (git-file-name name version)) (sha256 - (base32 "1cgx24wxh2ah5pff51rcrk6x8qcdjpkxcdak7s4cfzmxvjlshydd")))) + (base32 "0dkh9qw9z2160s6gjiv0a601kp6hvl66cplvi8rfc892zcykgiwd")))) (build-system cmake-build-system) (inputs (list qtbase-5 - qtscript - qtxmlpatterns mesa glu glew @@ -2764,34 +2758,29 @@ export filters.") libfreenect lib3ds openctm - ;; FIXME: Compilation fails with system qhull: - ;; https://github.com/cnr-isti-vclab/meshlab/issues/678 - ;; ("qhull" ,qhull) - )) + qhull)) (arguments - `(#:tests? #f ; Has no tests - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'go-to-source-dir - (lambda _ (chdir "src") #t)) - (add-after 'install 'move-files - (lambda* (#:key outputs #:allow-other-keys) - (let ((lib (string-append (assoc-ref outputs "out") - "/lib"))) - (rename-file - (string-append lib "/meshlab/libmeshlab-common.so") - (string-append lib "/libmeshlab-common.so")) - #t)))))) + (list #:tests? #f ; Has no tests + #:configure-flags + #~(list (string-append "-DCMAKE_MODULE_LINKER_FLAGS=-Wl,-rpath=" + #$output "/lib/meshlab") + (string-append "-DCMAKE_SHARED_LINKER_FLAGS=-Wl,-rpath=" + #$output "/lib/meshlab") + (string-append "-DCMAKE_EXE_LINKER_FLAGS=-Wl,-rpath=" + #$output "/lib/meshlab")) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'go-to-source-dir + (lambda _ (chdir "src")))))) (synopsis "3D triangular mesh processing and editing software") (home-page "https://www.meshlab.net/") - (description "MeshLab is a system for the processing and -editing of unstructured large 3D triangular meshes. It is aimed to help the -processing of the typical not-so-small unstructured models arising in 3D -scanning, providing a set of tools for editing, cleaning, healing, inspecting, -rendering and converting this kind of meshes. These tools include MeshLab -proper, a versatile program with a graphical user interface, and meshlabserver, -a program that can perform mesh processing tasks in batch mode, without a -GUI.") + (description "MeshLab is a system for the processing and editing of large, +unstructured, 3D triangular meshes. It is aimed to help the processing of the +typical, not-so-small unstructured models arising in 3D scanning, providing a +set of tools for editing, cleaning, healing, inspecting, rendering and +converting this kind of meshes. These tools include MeshLab proper, a +versatile program with a graphical user interface, and @samp{meshlabserver}, a +program that can perform mesh processing tasks in batch mode, without a GUI.") (license license:gpl3+))) (define-public poke diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm index 779024cbeb..53b58aec60 100644 --- a/gnu/packages/erlang.scm +++ b/gnu/packages/erlang.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2016, 2017 Pjotr Prins <pjotr.guix@thebird.nl> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Nikita <nikita@n0.is> +;;; Copyright © 2020-2022 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2021 Oskar Köök <oskar@maatriks.ee> ;;; Copyright © 2021 Cees de Groot <cg@evrl.com> ;;; @@ -26,6 +27,7 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system gnu) #:use-module (guix build-system emacs) + #:use-module (guix build-system rebar) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix packages) @@ -35,6 +37,7 @@ #:use-module (gnu packages gl) #:use-module (gnu packages ncurses) #:use-module (gnu packages perl) + #:use-module (gnu packages version-control) #:use-module (gnu packages tls) #:use-module (gnu packages wxwidgets)) @@ -203,3 +206,493 @@ built-in support for concurrency, distribution and fault tolerance.") "This package provides an Emacs major mode for editing Erlang source files.") (license license:asl2.0))) + +(define-public erlang-bbmustache + (package + (name "erlang-bbmustache") + (version "1.12.2") + (source + (origin + (method url-fetch) + (uri (hexpm-uri "bbmustache" version)) + (sha256 + (base32 "0fvvaxdpziygxl30j59g98qkh2n47xlb7w5dfpsm2bfcsnj372v8")))) + (build-system rebar-build-system) + (inputs + (list erlang-getopt rebar3-git-vsn + erlang-edown)) ; for building the docs + (arguments + `(#:tests? #f ;; requires mustache specification file + #:phases + (modify-phases %standard-phases + (add-before 'build 'build-more + (lambda _ + (invoke "rebar3" "as" "dev" "escriptize"))) + (add-after 'install 'install-escript + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out"))) + (install-file "_build/dev/bin/bbmustache" + (string-append out "/bin")))))))) + (home-page "https://github.com/soranoba/bbmustache/") + (synopsis "Binary pattern match Based Mustache template engine for Erlang") + (description "This Erlang library provides a Binary pattern match Based +Mustache template engine") + (license license:expat))) + +(define-public erlang-certifi + (package + (name "erlang-certifi") + (version "2.9.0") + (source + (origin + (method url-fetch) + (uri (hexpm-uri "certifi" version)) + (sha256 + (base32 "0ha6vmf5p3xlbf5w1msa89frhvfk535rnyfybz9wdmh6vdms8v96")))) + (build-system rebar-build-system) + (arguments + `(#:tests? #f)) ;; have not been updated for latest cert bundle + (home-page "https://github.com/certifi/erlang-certifi/") + (synopsis "Erlang CA certificate bundle") + (description "This Erlang library contains a CA bundle that you can +reference in your Erlang application. This is useful for systems that do not +have CA bundles that Erlang can find itself, or where a uniform set of CAs is +valuable. + +This an Erlang specific port of certifi. The CA bundle is derived from +Mozilla's canonical set.") + (license license:bsd-3))) + +(define-public erlang-cf + (package + (name "erlang-cf") + (version "0.3.1") + (source + (origin + (method url-fetch) + (uri (hexpm-uri "cf" version)) + (sha256 + (base32 "0wknz4xkqkhgvlx4vx5619p8m65v7g87lfgsvfy04jrsgm28spii")))) + (build-system rebar-build-system) + (home-page "https://github.com/project-fifo/cf") + (synopsis "Terminal colour helper for Erlang io and io_lib") + (description "This package provides a helper library for termial colour +printing extending the io:format syntax to add colours.") + (license license:expat))) + +(define-public erlang-covertool + (package + (name "erlang-covertool") + (version "2.0.4") + (source + (origin + (method url-fetch) + (uri (hexpm-uri "covertool" version)) + (sha256 + (base32 "1p0c1n3nl4063xwi1sv176l1x68xqf07qwvj444a5z888fx6i5aw")))) + (build-system rebar-build-system) + (home-page "https://github.com/covertool/covertool") + (synopsis "Convert code-coverage data generated by @code{cover} into +Cobertura XML reports") + (description "This package provides a build tool and plugin to convert +exported Erlang @code{cover} data sets into Cobertura XML reports, which can +then be feed to the Jenkins Cobertura plug-in. + +On @emph{hex.pm}, this plugin was previously called @code{rebar_covertool}.") + (license license:bsd-2))) + +(define-public erlang-cth-readable + (package + (name "erlang-cth-readable") + (version "1.5.1") + (source + (origin + (method url-fetch) + (uri (hexpm-uri "cth_readable" version)) + (sha256 + (base32 "104xgybb6iciy6i28pyyrarqzliddi8kjyq43ajaav7y5si42rb8")))) + (build-system rebar-build-system) + (propagated-inputs + (list erlang-cf)) + (arguments + `(#:tests? #f)) ;; no test-suite in hex-pm package + (home-page "https://github.com/ferd/cth_readable") + (synopsis "Common Test hooks for more readable logs for Erlang") + (description "This package provides an OTP library to be used for CT log +outputs you want to be readable around all that noise they contain.") + (license license:bsd-3))) + +(define-public erlang-edown + (package + (name "erlang-edown") + (version "0.8.4") + (source + (origin + (method url-fetch) + (uri (hexpm-uri "edown" version)) + (sha256 + (base32 "0ij47gvgs6yfqphj0f54qjzj18crj8y1dsjjlzpp3dp8pscqzbqw")))) + (build-system rebar-build-system) + (home-page "https://github.com/uwiger/edown") + (synopsis "Markdown extension for EDoc") + (description "This package provides an extension for EDoc for generating +Markdown.") + (license license:asl2.0))) + +(define-public erlang-erlware-commons + (package + (name "erlang-erlware-commons") + (version "1.6.0") + (source + (origin + (method url-fetch) + (uri (hexpm-uri "erlware_commons" version)) + (sha256 + (base32 "18qam9xdzi74wppb0cj4zc8161i0i8djr79z8662m6d276f2jz5m")))) + (build-system rebar-build-system) + (propagated-inputs + (list erlang-cf)) + (native-inputs + (list git-minimal/fixed)) ;; Required for tests + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'check-setup + (lambda _ + (setenv "TERM" "xterm")))))) ; enable color in logs + (home-page "http://erlware.github.io/erlware_commons/") + (synopsis "Additional standard library for Erlang") + (description "Erlware Commons is an Erlware project focused on all aspects +of reusable Erlang components.") + (license license:expat))) + +(define-public erlang-eunit-formatters + (package + (name "erlang-eunit-formatters") + (version "0.5.0") + (source + (origin + (method url-fetch) + (uri (hexpm-uri "eunit_formatters" version)) + (sha256 + (base32 "1jb3hzb216r29x2h4pcjwfmx1k81431rgh5v0mp4x5146hhvmj6n")))) + (build-system rebar-build-system) + (home-page "https://github.com/seancribbs/eunit_formatters") + (synopsis "Better output for eunit suites") + (description "This package provides a better output for Erlang eunits.") + (license license:asl2.0))) + +(define-public erlang-getopt + (package + (name "erlang-getopt") + (version "1.0.2") + (source + (origin + (method url-fetch) + (uri (hexpm-uri "getopt" version)) + (sha256 + (base32 "09pasi7ki1rivw9sl7xndj5qgjbdqvcscxk83yk85yr28gm9l0m0")))) + (build-system rebar-build-system) + (home-page "https://github.com/jcomellas/getopt") + (synopsis "Command-line options parser for Erlang") + (description "This package provides an Erlang module to parse command line +arguments using the GNU getopt syntax.") + (license license:bsd-3))) + +(define-public erlang-hex-core + (package + (name "erlang-hex-core") + (version "0.8.4") + (source + (origin + (method url-fetch) + (uri (hexpm-uri "hex_core" version)) + (sha256 + (base32 "06p65hlm29ky03vs3fq3qz6px2ylwp8b0f2y75wdf5cm0kx2332b")))) + (build-system rebar-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "rebar3" "as" "test" "proper"))))))) + (inputs + (list erlang-proper rebar3-proper)) + (home-page "https://github.com/hexpm/hex_core") + (synopsis "Reference implementation of Hex specifications") + (description "This package provides the reference implementation of Hex +specifications.") + (license license:asl2.0))) + +(define-public erlang-jsone + (package + (name "erlang-jsone") + (version "1.7.0") + (source + (origin + (method url-fetch) + (uri (hexpm-uri "jsone" version)) + (sha256 + (base32 "1gaxiw76syjp3s9rygskm32y9799b917q752rw8bxj3bxq93g8x3")))) + (build-system rebar-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'disable-covertool + ;; no need to generate a coverage report + (lambda _ + (substitute* "rebar.config" + (("\\{project_plugins, \\[covertool\\]\\}\\." _) ""))))))) + (home-page "https://github.com/sile/jsone/") + (synopsis "Erlang JSON Library") + (description "An Erlang library for encoding and decoding JSON data.") + (license license:expat))) + +(define-public erlang-parse-trans + (package + (name "erlang-parse-trans") + (version "3.4.1") + (source + (origin + (method url-fetch) + (uri (hexpm-uri "parse_trans" version)) + (sha256 + (base32 "16p4c2xjrvz16kzpr9pmcvi6nxq6rwckqi9fp0ksibaxwxn402k2")))) + (build-system rebar-build-system) + (inputs + (list erlang-getopt)) + (home-page "https://github.com/uwiger/parse_trans") + (synopsis "Parse transform utilities for Erlang") + (description "This package captures some useful patterns in parse +transformation and code generation for Erlang. + +For example generating standardized accessor functions for records or +evaluating an expression at compile-time and substitute the result as a +compile-time constant.") + (license license:asl2.0))) + +(define-public erlang-proper + (package + (name "erlang-proper") + (version "1.4.0") + (source + (origin + (method url-fetch) + (uri (hexpm-uri "proper" version)) + (sha256 + (base32 "1fwcas4a9kz3w3z1jqdk9lw8822srfjk9lcpvbxkxlsv3115ha0q")))) + (build-system rebar-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'disable-covertool + ;; no need to generate a coverage report + (lambda _ + (substitute* "rebar.config" + (("\\{plugins, \\[covertool\\]\\}\\." _) ""))))))) + (home-page "https://proper-testing.github.io/") + (synopsis "QuickCheck-inspired property-based testing tool for Erlang") + (description "PropEr is a tool for the automated, semi-random, +property-based testing of Erlang programs. It is fully integrated with +Erlang's type language, and can also be used for the model-based random +testing of stateful systems.") + (license license:gpl3+))) + +(define-public erlang-providers + (package + (name "erlang-providers") + (version "1.9.0") + (source + (origin + (method url-fetch) + (uri (hexpm-uri "providers" version)) + (sha256 + (base32 "05y0kz3xgx77hzn1l05byaisvmk8bgds7c22hrh0a5ba81sfi1yj")))) + (build-system rebar-build-system) + (propagated-inputs + (list erlang-erlware-commons erlang-getopt)) + (home-page "https://github.com/tsloughter/providers") + (synopsis "Erlang providers library") + (description "This package provides an Erlang providers library.") + (license license:asl2.0))) + +(define-public erlang-relx + (package + (name "erlang-relx") + (version "4.6.0") + (source + (origin + (method url-fetch) + (uri (hexpm-uri "relx" version)) + (sha256 + (base32 "02gmfx1vxg9m3mq4njsqhs4972l4nb8m5p1pdcf64g09ccf17y1g")))) + (build-system rebar-build-system) + (propagated-inputs + (list erlang-bbmustache)) + (home-page "https://erlware.github.io/relx/") + (synopsis "Release assembler for Erlang/OTP Releases") + (description "Relx assembles releases for an Erlang/OTP release. Given a +release specification and a list of directories in which to search for OTP +applications it will generate a release output. That output depends heavily on +what plugins available and what options are defined, but usually it is simply +a well configured release directory.") + (license license:asl2.0))) + +(define-public erlang-ssl-verify-fun + (package + (name "erlang-ssl-verify-fun") + (version "1.1.6") + (source + (origin + (method url-fetch) + (uri (hexpm-uri "ssl_verify_fun" version)) + (sha256 + (base32 "1026l1z1jh25z8bfrhaw0ryk5gprhrpnirq877zqhg253x3x5c5x")))) + (build-system rebar-build-system) + (home-page "https://github.com/deadtrickster/ssl_verify_fun.erl") + (synopsis "SSL verification functions for Erlang") + (description "This package provides SSL verification functions for +Erlang.") + (license license:expat))) + +(define-public rebar3 + (package + (name "rebar3") + (version "3.18.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/erlang/rebar3") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "09648hzc2mnjwf9klm20cg4hb5rn2xv2gmzcg98ffv37p5yfl327")))) + (build-system gnu-build-system) + ;; TODO: remove vendored modules, install man-page, install lib(?) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'bootstrap) + (add-after 'unpack 'unpack-dependency-sources + (lambda* (#:key inputs #:allow-other-keys) + (for-each + (lambda (pkgname) + (let* ((src (string-append pkgname "-source")) + (input (assoc-ref inputs src)) + (checkouts-dir (string-append "_checkouts/" pkgname)) + (lib-dir (string-append "_build/default/lib/" pkgname))) + (mkdir-p checkouts-dir) + (invoke "tar" "-xf" input "-C" checkouts-dir) + (invoke "tar" "-xzf" + (pk (string-append checkouts-dir "/contents.tar.gz")) + "-C" checkouts-dir) + (mkdir-p lib-dir) + (copy-recursively checkouts-dir lib-dir))) + (list "bbmustache" "certifi" "cf" "cth_readable" + "eunit_formatters" "getopt" "hex_core" "erlware_commons" + "parse_trans" "relx" "ssl_verify_fun" "providers")))) + (delete 'configure) + (replace 'build + (lambda _ + (setenv "HOME" (getcwd)) + (invoke "./bootstrap"))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out"))) + (install-file "rebar3" (string-append out "/bin"))))) + (delete 'check)))) + (native-inputs + (list erlang)) + (inputs + `(("bbmustache-source" ,(package-source erlang-bbmustache)) + ("certifi-source" ,(package-source erlang-certifi)) + ("cf-source" ,(package-source erlang-cf)) + ("cth_readable-source" ,(package-source erlang-cth-readable)) + ("erlware_commons-source" ,(package-source erlang-erlware-commons)) + ("eunit_formatters-source" ,(package-source erlang-eunit-formatters)) + ("getopt-source" ,(package-source erlang-getopt)) + ("hex_core-source" ,(package-source erlang-hex-core)) + ("parse_trans-source" ,(package-source erlang-parse-trans)) + ("relx-source" ,(package-source erlang-relx)) + ("ssl_verify_fun-source" ,(package-source erlang-ssl-verify-fun)) + ("providers-source" ,(package-source erlang-providers)))) + (home-page "https://rebar3.org/") + (synopsis "Sophisticated build-tool for Erlang projects that follows OTP +principles") + (description "@code{rebar3} is an Erlang build tool that makes it easy to +compile and test Erlang applications, port drivers and releases. + +@code{rebar3} is a self-contained Erlang script, so it's easy to distribute or +even embed directly in a project. Where possible, rebar uses standard +Erlang/OTP conventions for project structures, thus minimizing the amount of +build configuration work. @code{rebar3} also provides dependency management, +enabling application writers to easily re-use common libraries from a variety +of locations (git, hg, etc).") + (license license:asl2.0))) + +(define-public rebar3-raw-deps + (package + (name "rebar3-raw-deps") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (hexpm-uri "rebar3_raw_deps" version)) + (sha256 + (base32 "1pzmm3m8gb2s9jn8fp6shzgfmy4mvh2vdci0z6nsm74ma3ffh1i3")))) + (build-system rebar-build-system) + (home-page "https://github.com/soranoba/rebar3_raw_deps") + (synopsis "Rebar3 plugin for supporting \"raw\" dependencies") + (description "This plugin provides support for handling non-OTP +applications as a dependent libraries.") + (license license:expat))) + +(define-public rebar3-git-vsn + (package + (name "rebar3-git-vsn") + (version "1.1.1") + (source + (origin + (method url-fetch) + (uri (hexpm-uri "rebar3_git_vsn" version)) + (sha256 + (base32 "1dfz56034pa25axly9vqdzv3phkn8ll0qwrkws96pbgcprhky1hx")))) + (build-system rebar-build-system) + (inputs + (list git-minimal/fixed)) + (arguments + `(;; Running the tests require binary artifact (tar-file containing + ;; samples git repos) TODO: remove these from the source + #:tests? #f + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-path + (lambda* (#:key inputs #:allow-other-keys) + (let ((git (assoc-ref inputs "git-minimal"))) + (substitute* "src/rebar3_git_vsn.erl" + (("rebar_utils:sh\\(\"git " _) + (string-append "rebar_utils:sh(\"" git "/bin/git "))))))))) + (home-page "https://github.com/soranoba/rebar3_git_vsn") + (synopsis "Rebar3 plugin for generating the version from git") + (description "This plugin adds support for generating the version from +a git checkout.") + (license license:expat))) + +(define-public rebar3-proper + (package + (name "rebar3-proper") + (version "0.12.1") + (source + (origin + (method url-fetch) + (uri (hexpm-uri "rebar3_proper" version)) + (sha256 + (base32 "1f174fb6h2071wr7qbw9aqqvnglzsjlylmyi8215fhrmi38w94b6")))) + (build-system rebar-build-system) + (home-page "https://github.com/ferd/rebar3_proper") + (synopsis "Rebar3 PropEr plugin") + (description "This plugin allows running PropEr test suites from within +rebar3.") + (license license:bsd-3))) diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index b63ad63749..291696b5c8 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2020, 2021, 2022 Marius Bakke <marius@gnu.org> ;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com> +;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -366,131 +367,125 @@ coreboot.") ;; cpl with a linking exception. license:cpl1.0)))) -;; OVMF is part of the edk2 source tree. -(define edk2-commit "13a50a6fe1dcfa6600c38456ee24e0f9ecf51b5f") -(define edk2-version (git-version "20170116" "1" edk2-commit)) -(define edk2-origin - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/tianocore/edk2") - (commit edk2-commit))) - (file-name (git-file-name "edk2" edk2-version)) - (sha256 - (base32 - "1gy2332kdqk8bjzpcsripx10896rbvgl0ic7r344kmpiwdgm948b")))) - (define-public ovmf - (package - (name "ovmf") - (version edk2-version) - (source edk2-origin) - (build-system gnu-build-system) - (native-inputs - `(("acpica" ,acpica) - ("gcc@5" ,gcc-5) - ("nasm" ,nasm) - ("python-2" ,python-2) - ("util-linux" ,util-linux "lib"))) - (arguments - `(#:tests? #f ; No check target. - #:phases - (modify-phases %standard-phases - ;; Hide the default GCC from CPLUS_INCLUDE_PATH to prevent it from - ;; shadowing the version of GCC provided in native-inputs. - (add-after 'set-paths 'hide-gcc7 - (lambda* (#:key inputs #:allow-other-keys) - (let ((gcc (assoc-ref inputs "gcc"))) - (setenv "CPLUS_INCLUDE_PATH" - (string-join - (delete (string-append gcc "/include/c++") - (string-split (getenv "CPLUS_INCLUDE_PATH") - #\:)) - ":")) - #t))) - (replace 'configure - (lambda _ - (let* ((cwd (getcwd)) - (tools (string-append cwd "/BaseTools")) - (bin (string-append tools "/BinWrappers/PosixLike"))) - (setenv "WORKSPACE" cwd) - (setenv "EDK_TOOLS_PATH" tools) - (setenv "PATH" (string-append (getenv "PATH") ":" bin)) - ; FIXME: The below script errors out. When using 'invoke' instead - ; of 'system*' this causes the build to fail. - (system* "bash" "edksetup.sh") - (substitute* "Conf/target.txt" - (("^TARGET[ ]*=.*$") "TARGET = RELEASE\n") - (("^MAX_CONCURRENT_THREAD_NUMBER[ ]*=.*$") - (format #f "MAX_CONCURRENT_THREAD_NUMBER = ~a~%" - (number->string (parallel-job-count))))) - ;; Build build support. - (setenv "BUILD_CC" "gcc") - (invoke "make" "-C" tools) - #t))) - (replace 'build - (lambda _ - (invoke "build" "-a" "IA32" "-t" "GCC49" - "-p" "OvmfPkg/OvmfPkgIa32.dsc"))) - ,@(if (string=? "x86_64-linux" (%current-system)) - '((add-after 'build 'build-x64 - (lambda _ - (invoke "build" "-a" "X64" "-t" "GCC49" - "-p" "OvmfPkg/OvmfPkgX64.dsc")))) - '()) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (fmw (string-append out "/share/firmware"))) - (mkdir-p fmw) - (copy-file "Build/OvmfIa32/RELEASE_GCC49/FV/OVMF.fd" - (string-append fmw "/ovmf_ia32.bin")) - ,@(if (string=? "x86_64-linux" (%current-system)) - '((copy-file "Build/OvmfX64/RELEASE_GCC49/FV/OVMF.fd" - (string-append fmw "/ovmf_x64.bin"))) - '())) - #t))))) - (supported-systems '("x86_64-linux" "i686-linux")) - (home-page "https://www.tianocore.org") - (synopsis "UEFI firmware for QEMU") - (description "OVMF is an EDK II based project to enable UEFI support for + (let ((commit "13a50a6fe1dcfa6600c38456ee24e0f9ecf51b5f") + (revision "1")) + (package + (name "ovmf") + (version (git-version "20170116" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + ;; OVMF is part of the edk2 source tree. + (url "https://github.com/tianocore/edk2") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1gy2332kdqk8bjzpcsripx10896rbvgl0ic7r344kmpiwdgm948b")))) + (build-system gnu-build-system) + (arguments + (list + #:tests? #f ; No check target. + #:phases + #~(modify-phases %standard-phases + ;; Hide the default GCC from CPLUS_INCLUDE_PATH to prevent it from + ;; shadowing the version of GCC provided in native-inputs. + (add-after 'set-paths 'hide-implicit-gcc + (lambda* (#:key inputs #:allow-other-keys) + (let ((gcc (assoc-ref inputs "gcc"))) + (setenv "CPLUS_INCLUDE_PATH" + (string-join + (delete (string-append gcc "/include/c++") + (string-split (getenv "CPLUS_INCLUDE_PATH") + #\:)) + ":"))))) + (add-after 'unpack 'patch-source + (lambda _ + (substitute* "edksetup.sh" + (("^return \\$\\?") + "exit $?")))) + (replace 'configure + (lambda _ + (let* ((cwd (getcwd)) + (tools (string-append cwd "/BaseTools")) + (bin (string-append tools "/BinWrappers/PosixLike"))) + (setenv "WORKSPACE" cwd) + (setenv "EDK_TOOLS_PATH" tools) + (setenv "PATH" (string-append (getenv "PATH") ":" bin)) + (invoke "bash" "edksetup.sh") + (substitute* "Conf/target.txt" + (("^TARGET[ ]*=.*$") "TARGET = RELEASE\n") + (("^MAX_CONCURRENT_THREAD_NUMBER[ ]*=.*$") + (format #f "MAX_CONCURRENT_THREAD_NUMBER = ~a~%" + (number->string (parallel-job-count))))) + ;; Build build support. + (setenv "BUILD_CC" "gcc") + (invoke "make" "-C" tools)))) + (replace 'build + (lambda _ + (invoke "build" "-a" "IA32" "-t" "GCC49" + "-p" "OvmfPkg/OvmfPkgIa32.dsc"))) + #$@(if (string=? "x86_64-linux" (%current-system)) + #~((add-after 'build 'build-x64 + (lambda _ + (invoke "build" "-a" "X64" "-t" "GCC49" + "-p" "OvmfPkg/OvmfPkgX64.dsc")))) + #~()) + (replace 'install + (lambda _ + (let ((fmw (string-append #$output "/share/firmware"))) + (mkdir-p fmw) + (copy-file "Build/OvmfIa32/RELEASE_GCC49/FV/OVMF.fd" + (string-append fmw "/ovmf_ia32.bin")) + #$@(if (string=? "x86_64-linux" (%current-system)) + '((copy-file "Build/OvmfX64/RELEASE_GCC49/FV/OVMF.fd" + (string-append fmw "/ovmf_x64.bin"))) + '()))))))) + (native-inputs + `(("acpica" ,acpica) + ("gcc@5" ,gcc-5) + ("nasm" ,nasm) + ("python-2" ,python-2) + ("util-linux" ,util-linux "lib"))) + (supported-systems '("x86_64-linux" "i686-linux")) + (home-page "https://www.tianocore.org") + (synopsis "UEFI firmware for QEMU") + (description "OVMF is an EDK II based project to enable UEFI support for Virtual Machines. OVMF contains a sample UEFI firmware for QEMU and KVM.") - (license (list license:expat - license:bsd-2 license:bsd-3 license:bsd-4)))) + (license (list license:expat + license:bsd-2 license:bsd-3 license:bsd-4))))) (define-public ovmf-aarch64 (package (inherit ovmf) (name "ovmf-aarch64") (native-inputs - `(,@(package-native-inputs ovmf) - ,@(if (not (string-prefix? "aarch64" (%current-system))) - `(("cross-gcc" ,(cross-gcc "aarch64-linux-gnu")) - ("cross-binutils" ,(cross-binutils "aarch64-linux-gnu"))) - '()))) + (append (package-native-inputs ovmf) + (if (not (string-prefix? "aarch64" (%current-system))) + `(("cross-gcc" ,(cross-gcc "aarch64-linux-gnu")) + ("cross-binutils" ,(cross-binutils "aarch64-linux-gnu"))) + '()))) (arguments (substitute-keyword-arguments (package-arguments ovmf) ((#:phases phases) - `(modify-phases ,phases - (add-before 'configure 'set-env - (lambda _ - ,@(if (not (string-prefix? "aarch64" (%current-system))) - `((setenv "GCC49_AARCH64_PREFIX" "aarch64-linux-gnu-")) - '()) - #t)) - (replace 'build - (lambda _ - (invoke "build" "-a" "AARCH64" "-t" "GCC49" - "-p" "ArmVirtPkg/ArmVirtQemu.dsc"))) - (delete 'build-x64) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (fmw (string-append out "/share/firmware"))) - (mkdir-p fmw) - (copy-file "Build/ArmVirtQemu-AARCH64/RELEASE_GCC49/FV/QEMU_EFI.fd" - (string-append fmw "/ovmf_aarch64.bin")) - #t))))))) + #~(modify-phases #$phases + (add-before 'configure 'set-env + (lambda _ + #$@(if (not (string-prefix? "aarch64" (%current-system))) + #~((setenv "GCC49_AARCH64_PREFIX" "aarch64-linux-gnu-")) + #~()))) + (replace 'build + (lambda _ + (invoke "build" "-a" "AARCH64" "-t" "GCC49" + "-p" "ArmVirtPkg/ArmVirtQemu.dsc"))) + (delete 'build-x64) + (replace 'install + (lambda _ + (let ((fmw (string-append #$output "/share/firmware"))) + (mkdir-p fmw) + (copy-file "Build/ArmVirtQemu-AARCH64/RELEASE_GCC49/FV/QEMU_EFI.fd" + (string-append fmw "/ovmf_aarch64.bin"))))))))) (supported-systems %supported-systems))) (define-public ovmf-arm @@ -498,34 +493,31 @@ Virtual Machines. OVMF contains a sample UEFI firmware for QEMU and KVM.") (inherit ovmf) (name "ovmf-arm") (native-inputs - `(,@(package-native-inputs ovmf) - ,@(if (not (string-prefix? "armhf" (%current-system))) - `(("cross-gcc" ,(cross-gcc "arm-linux-gnueabihf")) - ("cross-binutils" ,(cross-binutils "arm-linux-gnueabihf"))) - '()))) + (append (package-native-inputs ovmf) + (if (not (string-prefix? "armhf" (%current-system))) + `(("cross-gcc" ,(cross-gcc "arm-linux-gnueabihf")) + ("cross-binutils" ,(cross-binutils "arm-linux-gnueabihf"))) + '()))) (arguments (substitute-keyword-arguments (package-arguments ovmf) ((#:phases phases) - `(modify-phases ,phases - (add-before 'configure 'set-env - (lambda _ - ,@(if (not (string-prefix? "armhf" (%current-system))) - `((setenv "GCC49_ARM_PREFIX" "arm-linux-gnueabihf-")) - '()) - #t)) - (replace 'build - (lambda _ - (invoke "build" "-a" "ARM" "-t" "GCC49" - "-p" "ArmVirtPkg/ArmVirtQemu.dsc"))) - (delete 'build-x64) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (fmw (string-append out "/share/firmware"))) - (mkdir-p fmw) - (copy-file "Build/ArmVirtQemu-ARM/RELEASE_GCC49/FV/QEMU_EFI.fd" - (string-append fmw "/ovmf_arm.bin")) - #t))))))) + #~(modify-phases #$phases + (add-before 'configure 'set-env + (lambda _ + #$@(if (not (string-prefix? "armhf" (%current-system))) + #~((setenv "GCC49_ARM_PREFIX" "arm-linux-gnueabihf-")) + #~()))) + (replace 'build + (lambda _ + (invoke "build" "-a" "ARM" "-t" "GCC49" + "-p" "ArmVirtPkg/ArmVirtQemu.dsc"))) + (delete 'build-x64) + (replace 'install + (lambda _ + (let ((fmw (string-append #$output "/share/firmware"))) + (mkdir-p fmw) + (copy-file "Build/ArmVirtQemu-ARM/RELEASE_GCC49/FV/QEMU_EFI.fd" + (string-append fmw "/ovmf_arm.bin"))))))))) (supported-systems %supported-systems))) (define* (make-arm-trusted-firmware platform #:optional (arch "aarch64")) diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm index 764fc9b422..08300cb860 100644 --- a/gnu/packages/flashing-tools.scm +++ b/gnu/packages/flashing-tools.scm @@ -9,6 +9,7 @@ ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2021 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2021 Mathieu Othacehe <othacehe@gnu.org> +;;; Copyright © 2022 Peter Polidoro <peter@polidoro.io> ;;; ;;; This file is part of GNU Guix. ;;; @@ -217,56 +218,48 @@ firmware from it.") (license license:gpl2+))) (define-public teensy-loader-cli - ;; The repo does not tag versions nor does it use releases, but a commit - ;; message says "Importing 2.1", while the sourcce still says "2.0". So pin - ;; to a fixed commit. - (let ((commit "f289b7a2e5627464044249f0e5742830e052e360")) - (package - (name "teensy-loader-cli") - (version (git-version "2.1" "1" commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/PaulStoffregen/teensy_loader_cli") - (commit commit))) - (sha256 (base32 "0sssim56pwsxp5cp5dlf6mi9h5fx2592m6j1g7abnm0s09b0lpdx")) - (file-name (git-file-name name version)) - (modules '((guix build utils))) - (snippet - `(begin - ;; Remove example flash files and teensy rebooter flash binaries. - (for-each delete-file (find-files "." "\\.(elf|hex)$")) - ;; Fix the version - (substitute* "teensy_loader_cli.c" - (("Teensy Loader, Command Line, Version 2.0\\\\n") - (string-append "Teensy Loader, Command Line, " ,version "\\n"))) - #t)) + (package + (name "teensy-loader-cli") + (version "2.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/PaulStoffregen/teensy_loader_cli") + (commit version))) + (sha256 (base32 "12n8ifz4gph1anhwd8if3j1kw0wc3yxf48abbyxl8071l9vj3m0b")) + (file-name (git-file-name name version)) + (modules '((guix build utils))) + (snippet + `(begin + ;; Remove example flash files and teensy rebooter flash binaries. + (for-each delete-file (find-files "." "\\.(elf|hex)$")) + #t)) (patches (search-patches "teensy-loader-cli-help.patch")))) - (build-system gnu-build-system) - (arguments - '(#:tests? #f ;; Makefile has no test target - #:make-flags (list "CC=gcc" (string-append "PREFIX=" %output)) - #:phases - (modify-phases %standard-phases - (delete 'configure) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin"))) - (install-file "teensy_loader_cli" bin) - #t)))))) - (inputs - (list libusb-compat)) - (synopsis "Command line firmware uploader for Teensy development boards") - (description - "The Teensy loader program communicates with your Teensy board when the + (build-system gnu-build-system) + (arguments + '(#:tests? #f ;; Makefile has no test target + #:make-flags (list "CC=gcc" (string-append "PREFIX=" %output)) + #:phases + (modify-phases %standard-phases + (delete 'configure) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (install-file "teensy_loader_cli" bin) + #t)))))) + (inputs + (list libusb-compat)) + (synopsis "Command line firmware uploader for Teensy development boards") + (description + "The Teensy loader program communicates with your Teensy board when the HalfKay bootloader is running, so you can upload new programs and run them. You need to add the udev rules to make the Teensy update available for non-root users.") - (home-page "https://www.pjrc.com/teensy/loader_cli.html") - (license license:gpl3)))) + (home-page "https://www.pjrc.com/teensy/loader_cli.html") + (license license:gpl3))) (define-public rkflashtool (let ((commit "8966c4e277de8148290554aaaa4146a3a84a3c53") diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index 5308eb8bcc..36b792ccf0 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2015, 2017 Andy Wingo <wingo@pobox.com> -;;; Copyright © 2015-2017, 2019, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2015-2017, 2019, 2021-2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015, 2017, 2018, 2019, 2021 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com> ;;; Copyright © 2016, 2017, 2019, 2021, 2022 Efraim Flashner <efraim@flashner.co.il> @@ -851,35 +851,6 @@ GNOME Shell. The @command{localectl} command-line tool allows you to interact with localed. This package is extracted from the broader systemd package.") (license license:lgpl2.1+))) -(define-public seatd - (package - (name "seatd") - (version "0.5.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://git.sr.ht/~kennylevinsen/seatd") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1kglq8v4rnr3415mfaghyv2s2f8mxsy5s881gmm2908ig4n4j297")))) - (build-system meson-build-system) - (arguments - `(#:configure-flags '("-Dlogind=enabled"))) - (native-inputs - (list pkg-config scdoc)) - (propagated-inputs - (list elogind)) - (home-page "https://sr.ht/~kennylevinsen/seatd") - (synopsis "Seat management daemon and library") - (description - "This package provides a minimal seat management daemon whose task is to -mediate access to shared devices, such as graphics and input, for applications -that require it. It also provides a universal seat management library that -allows applications to use whatever seat management is available.") - (license license:expat))) - (define-public packagekit (package (name "packagekit") @@ -1050,6 +1021,9 @@ functionality not available in the Wayland core protocol. Such protocols either add completely new functionality, or extend the functionality of some other protocol either in Wayland core, or some other protocol in wayland-protocols.") (home-page "https://wayland.freedesktop.org") + (properties + '((release-monitoring-url + . "https://wayland.freedesktop.org/releases.html"))) (license license:expat))) (define-public waylandpp @@ -2271,7 +2245,7 @@ fallback to generic Systray support if none of those are available.") (define-public xdg-desktop-portal (package (name "xdg-desktop-portal") - (version "1.10.1") + (version "1.14.4") (source (origin (method url-fetch) (uri (string-append @@ -2279,7 +2253,7 @@ fallback to generic Systray support if none of those are available.") version "/xdg-desktop-portal-" version ".tar.xz")) (sha256 (base32 - "199lqr2plsy9qqnxx5a381ml8ygcbz4nkjla5pvljjcrwzlqsygd")))) + "0wqc9x3k7lf3mig53i4rjazi0xi8bcykwaaw7r7prvnscnd1k405")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -2290,7 +2264,8 @@ fallback to generic Systray support if none of those are available.") ("which" ,which) ("gettext" ,gettext-minimal))) (inputs - `(("glib" ,glib) + `(("gdk-pixbuf" ,gdk-pixbuf) + ("glib" ,glib) ("flatpak" ,flatpak) ("fontconfig" ,fontconfig) ("json-glib" ,json-glib) @@ -2298,17 +2273,20 @@ fallback to generic Systray support if none of those are available.") ("dbus" ,dbus) ("geoclue" ,geoclue) ("pipewire" ,pipewire-0.3) - ("fuse" ,fuse))) + ("fuse" ,fuse-3))) (arguments - `(#:phases + `(#:configure-flags + (list "--with-systemd=no") + #:phases (modify-phases %standard-phases (add-after 'unpack 'po-chmod (lambda _ ;; Make sure 'msgmerge' can modify the PO files. (for-each (lambda (po) (chmod po #o666)) - (find-files "po" "\\.po$")) - #t))))) + (find-files "po" "\\.po$")))) + (add-after 'unpack 'set-home-directory + (lambda _ (setenv "HOME" "/tmp")))))) (native-search-paths (list (search-path-specification (variable "XDG_DESKTOP_PORTAL_DIR") @@ -2330,7 +2308,7 @@ and others.") (define-public xdg-desktop-portal-gtk (package (name "xdg-desktop-portal-gtk") - (version "1.10.0") + (version "1.14.0") (source (origin (method url-fetch) (uri (string-append @@ -2338,7 +2316,7 @@ and others.") version "/xdg-desktop-portal-gtk-" version ".tar.xz")) (sha256 (base32 - "0nlbnd6qvs92fanrmmn123vy0y2ml0v3ndxyk5x0cpfbnmxpa2f8")))) + "0m29b4hm7lq06gcavxw7gdlgqiiy3vgv3v4yjqfq5kx92q3j28gn")))) (build-system glib-or-gtk-build-system) (arguments `(#:phases diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index 4c1b97f041..04f2b061fc 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -48,6 +48,7 @@ #:use-module (ice-9 match) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) + #:use-module (guix gexp) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix svn-download) @@ -94,6 +95,7 @@ #:use-module (gnu packages pkg-config) #:use-module (gnu packages pulseaudio) #:use-module (gnu packages python) + #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (gnu packages readline) #:use-module (gnu packages qt) @@ -1207,26 +1209,24 @@ to create fully featured games and multimedia programs in the python language.") license:lgpl2.1+)))) (define-public python-pygame-sdl2 + ;; Using latest git commit as of 2022-06-17, because there is no tagged + ;; release for renpy 8. + ;; Revert back to URLs once renpy 8 is released! (let ((real-version "2.1.0") - (renpy-version "7.4.11")) + ;;(renpy-version "8.0.0") + (commit "1705c6e3004dcb1daf859560bcd52eb093e97d45")) (package (inherit python-pygame) (name "python-pygame-sdl2") - (version (string-append real-version "-for-renpy-" renpy-version)) + (version (git-version real-version "0" commit)) (source (origin - (method url-fetch) - (uri (string-append "https://www.renpy.org/dl/" renpy-version - "/pygame_sdl2-" version ".tar.gz")) - (sha256 (base32 "0nxvca16299jx6sp0ys29rqixcs21ymhqwjfkbchhss0yar7qjgz")) - (modules '((guix build utils))) - (snippet - '(begin - ;; drop generated sources - (delete-file-recursively "gen") - (delete-file-recursively "gen3") - (delete-file-recursively "gen-static") - #t)))) + (method git-fetch) + (uri (git-reference + (url "https://github.com/renpy/pygame_sdl2") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 (base32 "1g0arhpd59zypspk36sgajf1kzavppfkv766vifvxar60968rrjn")))) (build-system python-build-system) (arguments `(#:tests? #f ; tests require pygame to be installed first @@ -1257,16 +1257,21 @@ While it aims to be used as a drop-in replacement, it appears to be developed mainly for Ren'py.") (license (list license:lgpl2.1 license:zlib))))) -(define-public renpy +;; Using nightly from 2022-06-16. +;; Revert back to URLs once renpy 8 is released! +(define %renpy-commit "3e854bc7cb1642ca18b061a0c6e349f168965c43") +(define-public python-renpy (package - (name "renpy") - (version "7.4.11") + (name "python-renpy") + (version (git-version "7.99.99" "0" %renpy-commit)) (source (origin - (method url-fetch) - (uri (string-append "https://www.renpy.org/dl/" version - "/renpy-" version "-source.tar.bz2")) - (sha256 (base32 "0zkhg2sd2hglm9dkansf4h8sq7lm7iqslzl763ambp4kyfdvd07q")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/renpy/renpy") + (commit %renpy-commit))) + (file-name (git-file-name name version)) + (sha256 (base32 "11g7hqhw4gbkx5ib2wsawrznmjbn8r9zkgf2sg39z56h96y8wfbn")) (modules '((guix build utils))) (patches (search-patches @@ -1342,6 +1347,170 @@ the launcher and common Ren'py code provided by the @code{renpy} package and are only used to bootstrap it.") (license license:expat))) +(define-public renpy + (package + (inherit python-renpy) + (name "renpy") + (build-system python-build-system) + (arguments + (list + #:tests? #f ; see python-renpy + #:modules '((srfi srfi-1) + (guix build python-build-system) + (guix build utils)) + #:imported-modules `((srfi srfi-1) ,@%python-build-system-modules) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-commands + (lambda* (#:key inputs outputs #:allow-other-keys) + (substitute* "launcher/game/choose_directory.rpy" + (("/usr/bin/python") + (search-input-file inputs "/bin/python3"))) + (substitute* "launcher/game/front_page.rpy" + (("xdg-open") + (search-input-file inputs "/bin/xdg-open"))) + (substitute* "launcher/game/project.rpy" + (("cmd = \\[ executable, \"-EO\", sys.argv\\[0\\] \\]") + (string-append "cmd = [ \"" (assoc-ref outputs "out") + "/bin/renpy\" ]")) + ;; Projects are still created in the usual style, so we need + ;; to adjust the path. + (("cmd.append\\(self.path\\)") + "cmd.append(self.path + \"/game\")")))) + (add-after 'unpack 'drop-game-from-paths + (lambda _ + (substitute* (list "launcher/game/gui7.rpy" + "launcher/game/gui7/images.py") + ((", \"game\",") ",")) + #t)) + (add-before 'build 'start-xserver + (lambda* (#:key inputs native-inputs #:allow-other-keys) + (let ((Xvfb (search-input-file (or native-inputs inputs) + "/bin/Xvfb"))) + (setenv "HOME" (getcwd)) + (system (format #f "~a :1 &" Xvfb)) + (setenv "DISPLAY" ":1")))) + (replace 'build + (lambda _ + (invoke "python" "renpy.py" "launcher" "quit") + (invoke "python" "renpy.py" "the_question" "quit") + (invoke "python" "renpy.py" "tutorial" "quit"))) + (replace 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; Here we install our custom renpy program. + ;; After finishing this step, "out" will have the following: + ;; |-- bin/renpy + ;; `-- share/renpy ; i.e. path_to_renpy_base() + ;; |-- common + ;; `-- gui + ;; + ;; Note that common shares the source files that would be installed + ;; by python2-renpy (which are instead deleted from that package), + ;; but also contains their byte-compiled versions. + ;; On other systems, renpy_base would point to site-packages or + ;; even somewhere in /opt. + ;; The former approach is not as straightforward as it seems + ;; -- it causes renpy to load files twice for some weird reason -- + ;; and the latter is impossible on Guix. Hence the detour through + ;; share/renpy and the custom renpy program. + ;; + ;; As a convention, other games should be installed as + ;; subdirectories of share/renpy in their respective outputs as + ;; well. This differs from the traditional layout, which is + ;; roughly the following: + ;; `-- Super Awesome Game + ;; |-- game ; <- the folder we actually want + ;; |-- lib ; compiled renpy module and dependencies + ;; |-- renpy ; yet another copy of Ren'py's code + ;; | |-- common ; the common folder from above + ;; | `-- ... ; Python code (source + compiled) + ;; |-- Super Awesome Game.py + ;; `-- Super Awesome Game.sh + (let* ((out (assoc-ref outputs "out")) + (bin/renpy (string-append out "/bin/renpy"))) + (copy-recursively "renpy/common" + (string-append out "/share/renpy/common")) + (copy-recursively "gui" + (string-append out "/share/renpy/gui")) + + (mkdir-p (string-append out "/bin")) + (copy-file #$(local-file (search-auxiliary-file "renpy/renpy.in")) + bin/renpy) + (substitute* bin/renpy + (("@PYTHON@") (search-input-file inputs "bin/python3")) + (("@RENPY_BASE@") (string-append out "/share/renpy"))) + (chmod bin/renpy #o755)))) + + (add-after 'install 'install-games + (lambda* (#:key inputs outputs #:allow-other-keys) + (define renpy (assoc-ref outputs "out")) + ;; TODO: We should offer a renpy-build-system to make the + ;; installation of Ren'py games easier. + (define* (install-renpy-game #:key output game name (renpy renpy) + #:allow-other-keys) + (let* ((name (or name (basename game))) + (launcher (string-append output "/bin/renpy-" name)) + (share (string-append output "/share/renpy/" name))) + (copy-recursively (string-append game "/game") share) + (mkdir-p (string-append output "/bin")) + (with-output-to-file launcher + (lambda () + (format #t + "#!~a~%~a ~a \"$@\"" + (search-input-file inputs "/bin/bash") + (string-append renpy "/bin/renpy") + share))) + (chmod launcher #o755))) + + (install-renpy-game #:output (assoc-ref outputs "out") + #:game "launcher") + + (install-renpy-game #:output (assoc-ref outputs "the-question") + #:game "the_question" + #:name "the-question") + + (install-renpy-game #:output (assoc-ref outputs "tutorial") + #:game "tutorial"))) + (replace 'wrap + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (site (string-append "/lib/python" + (python-version + (assoc-ref inputs "python")) + "/site-packages"))) + (wrap-program (string-append out "/bin/renpy") + `("GUIX_PYTHONPATH" = + (,@(delete-duplicates + (map + (lambda (store-path) + (string-append store-path site)) + (cons (assoc-ref outputs "out") + (map cdr + (filter + (lambda (input) + (string-prefix? "python" (car input))) + inputs)))))))))))))) + (inputs (list bash-minimal + python + python-pefile + python-requests + python-renpy + python-six + `(,python "tk") + xdg-utils)) + (propagated-inputs '()) + (native-inputs (list xorg-server-for-tests)) + (outputs (list "out" "tutorial" "the-question")) + (home-page "https://www.renpy.org/") + (synopsis "Visual Novel Engine") + (description "Ren'Py is a visual novel engine that helps you use words, +images, and sounds to tell interactive stories that run on computers and +mobile devices. These can be both visual novels and life simulation games. +The easy to learn script language allows anyone to efficiently write large +visual novels, while its Python scripting is enough for complex simulation +games.") + (license license:expat))) + (define-public python-pyxel (package (name "python-pyxel") diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index c011622f8e..8e6ab03530 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -2200,7 +2200,7 @@ Every puzzle has a complete solution, although there may be more than one.") (license license:gpl2+))) (define-public retux - (let ((release "1.5") + (let ((release "1.6.1") (revision 0)) (package (name "retux") @@ -2216,7 +2216,7 @@ Every puzzle has a complete solution, although there may be more than one.") release "-src.zip")) (sha256 (base32 - "1yima7s36hn2kh5h08lczc5iid8jbdxk7x1g5ms6knaznzj7rll3")))) + "1bkyfm0h4kys0x7c1340fnkhgnmcrf4j2xjm250r5w8q6l7v2wj4")))) (build-system python-build-system) (arguments `(#:tests? #f ; no check target @@ -2237,12 +2237,11 @@ Every puzzle has a complete solution, although there may be more than one.") (string-append "\"" data "\","))) (copy-file "retux.py" (string-append bin "/retux")) - (copy-recursively "data" data) - #t)))))) + (copy-recursively "data" data))))))) (native-inputs (list unzip)) (inputs - (list python-sge python-six python-xsge)) + (list python-sge python-xsge)) (home-page "https://retux-game.github.io/") (synopsis "Action platformer game") (description diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm index ea7483f16f..7b29c55088 100644 --- a/gnu/packages/geo.scm +++ b/gnu/packages/geo.scm @@ -11,7 +11,7 @@ ;;; Copyright © 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2019, 2021 Wiktor Żelazny <wzelazny@vurv.cz> ;;; Copyright © 2019, 2020 Hartmut Goebel <h.goebel@crazy-compilers.com> -;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2020, 2022 Marius Bakke <marius@gnu.org> ;;; Copyright © 2020 Christopher Baines <mail@cbaines.net> ;;; Copyright © 2020, 2021, 2022 Felix Gruber <felgru@posteo.net> ;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com> @@ -2715,35 +2715,40 @@ using third-party geocoders and other data sources.") (define-public gplates (package (name "gplates") - (version "2.3.0") + ;; Note: use a pre-release to cope with newer Boost, ref + ;; https://discourse.gplates.org/t/compilation-error-with-boost-1-77/452/3 + (version "2.3.01-beta.3") (source (origin (method url-fetch) - (uri "https://www.earthbyte.org/download/8421/") - (file-name (string-append name "-" version ".tar.bz2")) + (uri "https://cloudstor.aarnet.edu.au/plus/s\ +/ojsYNOyUYE3evNp/download?path=%2F&files=gplates_2.3.1-beta.3_src.zip") + (file-name (string-append name "-" version ".zip")) (sha256 (base32 - "0lrcmcxc924ixddii8cyglqlwwxvk7f00g4yzbss5i3fgcbh8n96")))) + "06i87dfab0cq9gdi5mh6sf9wigawpp0d05zbyslv910443i26gwv")))) (build-system cmake-build-system) (arguments `(#:configure-flags (list "-DBoost_NO_BOOST_CMAKE=ON") - #:tests? #f)) ;no test target + #:tests? #f)) ;no test target + (native-inputs + (list unzip)) ;for the beta (inputs - `(("boost" ,boost) - ("cgal" ,cgal) - ("gdal" ,gdal) - ("glew" ,glew) - ("glu" ,glu) - ("gmp" ,gmp) - ("mesa" ,mesa) - ("mpfr" ,mpfr) - ("proj" ,proj) - ("python-3" ,python-3) - ("python-numpy" ,python-numpy) - ("qt" ,qtbase-5) - ("qtsvg" ,qtsvg) - ("qtxmlpatterns" ,qtxmlpatterns) - ("qwt" ,qwt) - ("zlib" ,zlib))) + (list boost + cgal + gdal + glew + glu + gmp + mesa + mpfr + proj + python-3 + python-numpy + qtbase-5 + qtsvg + qtxmlpatterns + qwt + zlib)) (home-page "https://www.gplates.org") (synopsis "Plate tectonics simulation program") (description "GPlates is a plate tectonics program. Manipulate diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm index 1bf396670e..a2a991ba4c 100644 --- a/gnu/packages/gimp.scm +++ b/gnu/packages/gimp.scm @@ -7,7 +7,7 @@ ;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de> ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> -;;; Copyright © 2021 Vinicius Monego <monego@posteo.net> +;;; Copyright © 2021, 2022 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. @@ -175,7 +175,7 @@ of a larger interface.") (define-public babl (package (name "babl") - (version "0.1.88") + (version "0.1.92") (source (origin (method url-fetch) (uri (list (string-append "https://download.gimp.org/pub/babl/" @@ -189,7 +189,7 @@ of a larger interface.") "/babl-" version ".tar.xz"))) (sha256 (base32 - "0fbh2ss1dy3sba4xjmfm4vxxjmx9a6rzgba9ycjygchbm957y3ag")))) + "1hd2i1s7fng33msxiafavk3zb4zb9jk61w8qmmsn6jwl51876rzn")))) (build-system meson-build-system) (arguments `(#:configure-flags @@ -215,7 +215,7 @@ provided, as well as a framework to add new color models and data types.") (define-public gegl (package (name "gegl") - (version "0.4.34") + (version "0.4.36") (source (origin (method url-fetch) @@ -229,7 +229,7 @@ provided, as well as a framework to add new color models and data types.") (version-major+minor version) "/gegl-" version ".tar.xz"))) (sha256 - (base32 "1amazk6g9dk76rxwaqa81j87ql5vgz539n6xk88wccdllnyg0qzg")))) + (base32 "19ic3fv0j8ysxxw7bx7gy3l8l8l9ldrvbzxfmmc24w67vh68mmbg")))) (build-system meson-build-system) (arguments `(#:configure-flags @@ -288,7 +288,7 @@ buffers.") (define-public gimp (package (name "gimp") - (version "2.10.30") + (version "2.10.32") (source (origin (method url-fetch) @@ -296,7 +296,7 @@ buffers.") (version-major+minor version) "/gimp-" version ".tar.bz2")) (sha256 - (base32 "1p375gaw2daip6aiv1icrlpws5m1my5kalxkxrvl4zgdfsm5v0c8")))) + (base32 "09csp2d8bzf012n7hvbbwngwr9phv3rnip768qdwqpdgah2wf59z")))) (build-system gnu-build-system) (outputs '("out" "doc")) ; 9 MiB of gtk-doc HTML diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index 4609f6c796..c740c087dd 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -261,7 +261,7 @@ also known as DXTn or DXTC) for Mesa.") (define-public mesa (package (name "mesa") - (version "21.3.7") + (version "21.3.8") (source (origin (method url-fetch) @@ -273,7 +273,7 @@ also known as DXTn or DXTC) for Mesa.") version "/mesa-" version ".tar.xz"))) (sha256 (base32 - "0ggw3s514z6szasbiy4dv5mdi689121yy2xly2g21gv1mavrvyml")) + "19wx5plk6z0hhi0zdzxjx8ynl3lhlc5mbd8vhwqyk92kvhxjf3g7")) (patches (search-patches "mesa-skip-tests.patch")))) (build-system meson-build-system) @@ -288,26 +288,28 @@ also known as DXTn or DXTC) for Mesa.") libxxf86vm xorgproto)) (inputs - `(("expat" ,expat) - ("libelf" ,elfutils) ;required for r600 when using llvm - ("libva" ,(force libva-without-mesa)) - ("libxml2" ,libxml2) - ("libxrandr" ,libxrandr) - ("libxvmc" ,libxvmc) - ;; Note: update the 'clang' input of mesa-opencl when bumping this. - ("llvm" ,llvm-11) - ("wayland" ,wayland) - ("wayland-protocols" ,wayland-protocols))) + (append (list expat + elfutils ;libelf required for r600 when using llvm + (force libva-without-mesa) + libxml2 + libxrandr + libxvmc + wayland + wayland-protocols) + ;; TODO: Resort alphabetically. + ;; Note: update the 'clang' input of mesa-opencl when bumping this. + (list llvm-11))) (native-inputs - `(("bison" ,bison) - ("flex" ,flex) - ("gettext" ,gettext-minimal) - ("glslang" ,glslang) - ("pkg-config" ,pkg-config) - ("python" ,python-wrapper) - ("python-libxml2", python-libxml2) ;for OpenGL ES 1.1 and 2.0 support - ("python-mako" ,python-mako) - ("which" ,(@ (gnu packages base) which)))) + (append (list bison + flex + gettext-minimal + pkg-config + python-wrapper + python-libxml2 ;for OpenGL ES 1.1 and 2.0 support + python-mako + (@ (gnu packages base) which)) + ;; TODO: Resort alphabetically. + (list glslang))) (outputs '("out" "bin")) (arguments `(#:configure-flags @@ -510,11 +512,11 @@ from software emulation to complete hardware acceleration for modern GPUs.") ((#:configure-flags flags) `(cons "-Dgallium-opencl=standalone" ,flags)))) (inputs - `(("libclc" ,libclc) - ,@(package-inputs mesa))) + (modify-inputs (package-inputs mesa) + (prepend libclc))) (native-inputs - `(("clang" ,clang-11) - ,@(package-native-inputs mesa))))) + (modify-inputs (package-native-inputs mesa) + (prepend clang-11))))) (define-public mesa-opencl-icd (package/inherit mesa-opencl diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index 95839a856d..df33374276 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -9,7 +9,7 @@ ;;; Copyright © 2017 Petter <petter@mykolab.ch> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com> -;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2019, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2019, 2020, 2021 Marius Bakke <marius@gnu.org> ;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz> @@ -176,6 +176,38 @@ or through unencrypted TCP/IP suitable for use behind a firewall with shared NFS home directories.") (license license:gpl2+))) ; or Academic Free License 2.1 +;;; This variant is used for the Jami service: it provides an entry point to +;;; further customize the configuration of the D-Bus instance run by the +;;; jami-dbus-session service. +(define-public dbus-for-jami + (hidden-package + (package/inherit dbus + (name "dbus-for-jami") + (arguments + (substitute-keyword-arguments (package-arguments dbus) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'customize-config + (lambda _ + (substitute* "bus/session.conf.in" + (("@SYSCONFDIR_FROM_PKGDATADIR@/dbus-1/session-local.conf") + "/var/run/jami/session-local.conf"))))))))))) + +;;; The reason this is not enabled in the regular dbus package is because it +;;; impacts the performance of D-Bus (including its library) as a whole, even +;;; when the DBUS_VERBOSE environment variable is not set. +(define-public dbus-verbose + (package/inherit dbus + (name "dbus-verbose") + (arguments (substitute-keyword-arguments (package-arguments dbus) + ((#:configure-flags flags '()) + `(cons "--enable-verbose-mode" ,flags)))) + (synopsis "D-Bus with verbose mode enabled for debugging") + (description "This variant D-Bus package is built with verbose mode, which +eases debugging of D-Bus services by printing various debug information when +the @code{DBUS_VERBOSE} environment variable is set to @samp{1}. For more +information, refer to the @samp{dbus-daemon(1)} man page."))) + (define glib (package (name "glib") diff --git a/gnu/packages/gnome-xyz.scm b/gnu/packages/gnome-xyz.scm index e143d5378c..9e5d319291 100644 --- a/gnu/packages/gnome-xyz.scm +++ b/gnu/packages/gnome-xyz.scm @@ -10,12 +10,13 @@ ;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com> ;;; Copyright © 2020 Ellis Kenyo <me@elken.dev> ;;; Copyright © 2020 Stefan Reichör <stefan@xsteve.at> -;;; Copyright © 2021 Vinicius Monego <monego@posteo.net> +;;; Copyright © 2021, 2022 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2021 Songlin Jiang <hollowman@hollowman.ml> ;;; Copyright © 2021, 2022 Justin Veilleux <terramorpha@cock.li> ;;; Copyright © 2021 Attila Lendvai <attila@lendvai.name> ;;; Copyright © 2021 Charles Jackson <charles.b.jackson@protonmail.com> +;;; Copyright © 2022 Eric Bavier <bavier@posteo.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -37,6 +38,7 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system copy) #:use-module (guix build-system meson) + #:use-module (guix build-system python) #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix packages) @@ -50,6 +52,7 @@ #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages build-tools) + #:use-module (gnu packages check) #:use-module (gnu packages gettext) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) @@ -58,6 +61,7 @@ #:use-module (gnu packages image) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages python-science) #:use-module (gnu packages python-xyz) #:use-module (gnu packages ssh) #:use-module (gnu packages tls) @@ -217,6 +221,86 @@ simple and consistent.") and a few extra features.") (license license:gpl3))) +(define-public gnome-plots + (package + (name "gnome-plots") + (version "0.6.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/alexhuntley/Plots") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "168wcsrkmvq79xmwvbq615msd4q0rg7f57xqicidnr78jx4x37rd")))) + (build-system python-build-system) + (inputs + (list bash-minimal ; for wrap-program + gtk+ + pango + python-freetype-py + python-jinja2 + python-lark-parser + python-numpy + python-pycairo + python-pyglm + python-pygobject + python-pyopengl)) + (native-inputs + (list python-pytest)) + (arguments + (list + #:imported-modules `((guix build glib-or-gtk-build-system) + ,@%python-build-system-modules) + #:modules '((guix build python-build-system) + ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:) + (guix build utils) + (ice-9 match)) + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'adjust-lark-requirement + (lambda _ + (substitute* "setup.py" + (("lark") "lark-parser")))) + (add-after 'install 'install-more + (lambda _ + (let* ((datadir (string-append #$output "/share")) + (help (string-append datadir "/help")) + (icons (string-append datadir "/icons/hicolor"))) + (map (lambda (filename) + (match (string-split filename #\/) + ((_ lang dir ... name) + (install-file filename + (string-join (cons* help lang "plots" dir) + "/"))))) + (find-files "help")) + (install-file "res/com.github.alexhuntley.Plots.desktop" + (string-append datadir "/applications/")) + (install-file "res/com.github.alexhuntley.Plots.svg" + (string-append icons "/scalable/apps/")) + (install-file "res/com.github.alexhuntley.Plots-symbolic.svg" + (string-append icons "/symbolic/apps/"))))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "pytest" "-vv")))) + (add-after 'wrap 'gi-wrap + (lambda _ + (let ((prog (string-append #$output "/bin/plots"))) + (wrap-program prog + `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))))) + (add-after 'wrap 'glib-or-gtk-wrap + (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))))) + (home-page "https://apps.gnome.org/app/com.github.alexhuntley.Plots/") + (synopsis "Simple graph plotting") + (description "Plots makes it easy to visualise mathematical formulae. In +addition to basic arithmetic operations, it supports trigonometric, +hyperbolic, exponential, and logarithmic functions, as well as arbitrary sums +and products. Plots is designed to integrate well with the GNOME desktop and +takes advantage of modern hardware using OpenGL.") + (license license:gpl3+))) + (define-public gnome-shell-extension-appindicator (package (name "gnome-shell-extension-appindicator") @@ -1170,7 +1254,7 @@ extended file attributes. It also functions as a standalone command.") (define-public markets (package (name "markets") - (version "0.5.3") + (version "0.5.4") (source (origin (method git-fetch) @@ -1180,7 +1264,7 @@ extended file attributes. It also functions as a standalone command.") (file-name (git-file-name name version)) (sha256 (base32 - "0sfdmz7cp8i2bymippp8jyxsidxjn69v9cqm40q77j81kfm84bfv")))) + "0ch6dfmdcpw32r23s58riv8agnyw0f1cqd1y6j7zkx5sb3zyn3zy")))) (build-system meson-build-system) (arguments `(#:glib-or-gtk? #t diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index f778068821..0cde3caebd 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -71,6 +71,7 @@ ;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> ;;; Copyright © 2022 Leo Nikkilä <hello@lnikki.la> ;;; Copyright © 2022 Rene Saavedra <nanuui@protonmail.com> +;;; Copyright © 2022 Alexandros Theodotou <alex@zrythm.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -6694,7 +6695,7 @@ a secret password store, an adblocker, and a modern UI.") (define-public epiphany (package (name "epiphany") - (version "41.2") + (version "42.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/epiphany/" @@ -6702,65 +6703,61 @@ a secret password store, an adblocker, and a modern UI.") "epiphany-" version ".tar.xz")) (sha256 (base32 - "0k7b22zq3z1kllzqxgwsvwb1lp0j6rjb3k1hvhna3i573wc4mpji")) - (patches - (search-patches "epiphany-update-libportal-usage.patch")))) + "0b8rhns3b58f8dnp83mm1g933aqf88d8wrfyyp7jq3fihvw2rh4j")))) (build-system meson-build-system) (arguments - `(#:glib-or-gtk? #t - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'skip-gtk-update-icon-cache - ;; Don't create 'icon-theme.cache'. - (lambda _ - (substitute* "post_install.py" - (("gtk-update-icon-cache") "true")))) - (add-after 'unpack 'disable-failing-tests - (lambda _ - (substitute* "tests/meson.build" - ;; embed_shell fails, because webkitgtk apparently no longer - ;; supports overriding the ftp schema web_app_utils fails due - ;; to missing network access. - (("(embed_shell|web_app_utils)_test,") - "find_program('sh'), args: ['-c', 'exit 77'],")))) - (add-before 'check 'pre-check - (lambda _ - ;; Tests require a running X server. - (system "Xvfb :1 &") - (setenv "DISPLAY" ":1")))) - #:configure-flags - ;; Otherwise, the RUNPATH will lack the final 'epiphany' path component. - (list (string-append "-Dc_link_args=-Wl,-rpath=" - (assoc-ref %outputs "out") "/lib/epiphany")))) - (propagated-inputs - (list dconf)) - (native-inputs - `(("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database - ("glib:bin" ,glib "bin") ; for glib-mkenums - ("intltool" ,intltool) - ("itstool" ,itstool) - ("pkg-config" ,pkg-config) - ("xmllint" ,libxml2) - ("xorg-server" ,xorg-server-for-tests))) - (inputs - `(("avahi" ,avahi) - ("gcr" ,gcr) - ("librsvg" ,librsvg) ; for loading SVG files - ("glib-networking" ,glib-networking) - ("gnome-desktop" ,gnome-desktop) - ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) - ("json-glib" ,json-glib) - ("iso-codes" ,iso-codes) - ("libarchive" ,libarchive) - ("libdazzle" ,libdazzle) - ("libhandy" ,libhandy) - ("libnotify" ,libnotify) - ("libportal" ,libportal) - ("libsecret" ,libsecret) - ("libxslt" ,libxslt) - ("nettle" ,nettle) ; for hogweed - ("sqlite" ,sqlite) - ("webkitgtk" ,webkitgtk-with-libsoup2))) + (list + #:glib-or-gtk? #t + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'skip-gtk-update-icon-cache + ;; Don't create 'icon-theme.cache'. + (lambda _ + (substitute* "post_install.py" + (("gtk-update-icon-cache") "true")))) + (add-after 'unpack 'disable-failing-tests + (lambda _ + (substitute* "tests/meson.build" + ;; embed_shell fails, because webkitgtk apparently no longer + ;; supports overriding the ftp schema web_app_utils fails due + ;; to missing network access. + (("(embed_shell|web_app_utils)_test,") + "find_program('sh'), args: ['-c', 'exit 77'],")))) + (add-before 'check 'pre-check + (lambda _ + ;; Tests require a running X server. + (system "Xvfb :1 &") + (setenv "DISPLAY" ":1")))) + #:configure-flags + ;; Otherwise, the RUNPATH will lack the final 'epiphany' path component. + #~(list (string-append "-Dc_link_args=-Wl,-rpath=" + #$output "/lib/epiphany")))) + (propagated-inputs (list dconf)) + (native-inputs (list desktop-file-utils ; for update-desktop-database + `(,glib "bin") ; for glib-mkenums + intltool + itstool + pkg-config + libxml2 + xorg-server-for-tests)) + (inputs (list avahi + gcr + librsvg ; for loading SVG files + glib-networking + gnome-desktop + gsettings-desktop-schemas + json-glib + iso-codes + libarchive + libdazzle + libhandy + libnotify + libportal + libsecret + libxslt + nettle ; for hogweed + sqlite + webkitgtk-with-libsoup2)) (home-page "https://wiki.gnome.org/Apps/Web") (synopsis "GNOME web browser") (description @@ -11018,7 +11015,7 @@ functionality.") (define-public gthumb (package (name "gthumb") - (version "3.12.0") + (version "3.12.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/gthumb/" @@ -11026,7 +11023,7 @@ functionality.") "gthumb-" version ".tar.xz")) (sha256 (base32 - "0grqiq6v26z8avl7mj24xy4i9bl1niwpqhqw6rblprl40c1zrvrx")))) + "09flm8s6jrvfya2ypw5873mnnani8ssy7wdv3ra1cljk4bjszy4p")))) (build-system meson-build-system) (arguments `(#:glib-or-gtk? #t @@ -12310,7 +12307,7 @@ profiler via Sysprof, debugging support, and more.") (define-public komikku (package (name "komikku") - (version "0.38.0") + (version "0.39.0") (source (origin (method git-fetch) @@ -12320,7 +12317,7 @@ profiler via Sysprof, debugging support, and more.") (file-name (git-file-name name version)) (sha256 (base32 - "1khf51r8001j0cvjja5rkqi07v08nqyz97hx8fjyi7p3l5b5vkwc")))) + "1g765kbgimfpvma67j1gscj046n2q9a9nr2pczlw65qwlm0418c5")))) (build-system meson-build-system) (arguments `(#:glib-or-gtk? #t @@ -12579,45 +12576,43 @@ Document Analysis and Recognition program.") (license license:gpl3+))) (define-public libadwaita - (let ((commit "8d66b987a19979d9d7b85dacc6bad5ce0c8743fe") - (revision "1")) - (package - (name "libadwaita") - (version (git-version "0.0.1" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://gitlab.gnome.org/GNOME/libadwaita.git") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0i3wav6jsyi4w4i2r1rad769m5y5s9djj4zqb7dfyh0bad24ba3q")))) - (build-system meson-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'pre-check - (lambda* (#:key inputs #:allow-other-keys) - ;; Tests require a running X server. - (system "Xvfb :1 &") - (setenv "DISPLAY" ":1")))))) - (native-inputs - `(("sassc" ,sassc) - ("glib:bin" ,glib "bin") - ("gtk-doc" ,gtk-doc/stable) - ("pkg-config" ,pkg-config) - ("vala" ,vala) - ("xvfb" ,xorg-server-for-tests))) - (inputs - (list gtk gobject-introspection libportal)) - (home-page "https://gnome.pages.gitlab.gnome.org/libadwaita/") - (synopsis "Building blocks for GNOME applications") - (description - "@code{libadwaita} offers widgets and objects to build GNOME + (package + (name "libadwaita") + (version "1.1.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/libadwaita/" + (version-major+minor version) "/" + "libadwaita-" version ".tar.xz")) + (sha256 + (base32 + "03h14mrm453bn03f48rmpf85pvg5cnzzab27cs1c43417s09ixdg")))) + (build-system meson-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'pre-check + (lambda* (#:key inputs #:allow-other-keys) + ;; Tests require a running X server. + (system "Xvfb :1 &") + (setenv "DISPLAY" ":1")))))) + (native-inputs + `(("sassc" ,sassc) + ("glib:bin" ,glib "bin") + ("gtk-doc" ,gtk-doc/stable) + ("pkg-config" ,pkg-config) + ("vala" ,vala) + ("xvfb" ,xorg-server-for-tests) + ("gettext" ,gettext-minimal))) + (inputs + (list gtk gobject-introspection libportal)) + (home-page "https://gnome.pages.gitlab.gnome.org/libadwaita/") + (synopsis "Building blocks for GNOME applications") + (description + "@code{libadwaita} offers widgets and objects to build GNOME applications scaling from desktop workstations to mobile phones. It is the successor of @code{libhandy} for GTK4.") - (license license:lgpl2.1+)))) + (license license:lgpl2.1+))) (define-public gnome-power-manager (package diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index 60ba76b2ea..296f0b8b07 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -53,6 +53,7 @@ (define-module (gnu packages golang) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix utils) + #:use-module (guix memoization) #:use-module ((guix build utils) #:select (alist-replace)) #:use-module (guix download) #:use-module (guix git-download) @@ -626,7 +627,7 @@ in the style of communicating sequential processes (@dfn{CSP}).") (package (inherit go-1.16) (name "go") - (version "1.17.8") + (version "1.17.9") (source (origin (method git-fetch) @@ -636,7 +637,7 @@ in the style of communicating sequential processes (@dfn{CSP}).") (file-name (git-file-name name version)) (sha256 (base32 - "05qfs17wddxmmi349g9ci12w9fjb5vbss6qpjc4qzgqzznqf0ycy")))) + "02l6gxn738kam1niy2nl2wpsbzl4x87h2wik6hd3py19kq4z2flw")))) (outputs '("out" "tests")) ; 'tests' contains distribution tests. (arguments `(#:modules ((ice-9 match) @@ -840,35 +841,43 @@ in the style of communicating sequential processes (@dfn{CSP}).") (define-public go go-1.17) -(define-public (make-go-std go) - "Return a package which builds the standard library for Go compiler GO." - (package - (name (string-append (package-name go) "-std")) - (version (package-version go)) - (source #f) - (build-system go-build-system) - (arguments - `(#:import-path "std" - #:build-flags `("-pkgdir" "pkg") ; "Install" to build directory. - #:allow-go-reference? #t - #:substitutable? #f ; Faster to build than download. - #:tests? #f ; Already tested in the main Go build. - #:go ,go - #:phases - (modify-phases %standard-phases - (delete 'unpack) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (out-cache (string-append out "/var/cache/go/build"))) - (copy-recursively (getenv "GOCACHE") out-cache) - (delete-file (string-append out-cache "/trim.txt")) - (delete-file (string-append out-cache "/README"))))) - (delete 'install-license-files)))) - (home-page (package-home-page go)) - (synopsis "Cached standard library build for Go") - (description (package-description go)) - (license (package-license go)))) +(define make-go-std + (mlambdaq (go) + "Return a package which builds the standard library for Go compiler GO." + (package + (name (string-append (package-name go) "-std")) + (version (package-version go)) + (source #f) + (build-system go-build-system) + (arguments + `(#:import-path "std" + #:build-flags `("-pkgdir" "pkg") ; "Install" to build directory. + #:allow-go-reference? #t + #:substitutable? #f ; Faster to build than download. + #:tests? #f ; Already tested in the main Go build. + #:go ,go + #:phases + (modify-phases %standard-phases + (delete 'unpack) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (out-cache (string-append out "/var/cache/go/build"))) + (copy-recursively (getenv "GOCACHE") out-cache) + (delete-file (string-append out-cache "/trim.txt")) + (delete-file (string-append out-cache "/README"))))) + (delete 'install-license-files)))) + (home-page (package-home-page go)) + (synopsis "Cached standard library build for Go") + (description (package-description go)) + (license (package-license go))))) + +(export make-go-std) + +;; Make those public so they have a corresponding Cuirass job. +(define-public go-std-1.14 (make-go-std go-1.14)) +(define-public go-std-1.16 (make-go-std go-1.16)) +(define-public go-std-1.17 (make-go-std go-1.17)) (define-public go-0xacab-org-leap-shapeshifter (let ((commit "0aa6226582efb8e563540ec1d3c5cfcd19200474") @@ -9775,3 +9784,62 @@ Features: "@code{go-github-com-go-chi-chi-v5} is an HTTP router that lets the user decompose request handling into many smaller layers.") (license license:expat))) + +(define-public go-sigs-k8s-io-yaml + (package + (name "go-sigs-k8s-io-yaml") + (version "1.3.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/kubernetes-sigs/yaml") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0qxs0ppqwqrfqs4aywyn1h28xh1qlj5ds4drmygaz1plrxj02dqn")))) + (build-system go-build-system) + (arguments '(#:import-path "sigs.k8s.io/yaml")) + (propagated-inputs (list go-gopkg-in-yaml-v2 go-github-com-davecgh-go-spew)) + (home-page "https://sigs.k8s.io/yaml") + (synopsis "YAML marshaling and unmarshaling support for Go") + (description + "This package provides a Go library that first converts YAML to JSON +using @code{go-yaml} and then uses @code{json.Marshal} and +@code{json.Unmarshal} to convert to or from the struct. This means that +it effectively reuses the JSON struct tags as well as the custom JSON +methods @code{MarshalJSON} and @code{UnmarshalJSON} unlike +@code{go-yaml}. + +kubernetes-sigs/yaml is a permanent fork of +@url{https://github.com/ghodss/yaml,ghodss/yaml}.") + (license (list license:expat license:bsd-3)))) + +(define-public go-github-com-google-go-jsonnet + (package + (name "go-github-com-google-go-jsonnet") + (version "0.18.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/google/go-jsonnet") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1dghqygag123zkgh2vrnq82cdag5z0p03v3489pwhs06r5g27wm3")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/google/go-jsonnet/cmd/jsonnet" + #:unpack-path "github.com/google/go-jsonnet")) + (propagated-inputs (list go-sigs-k8s-io-yaml go-gopkg-in-yaml-v2 + go-github-com-sergi-go-diff + go-github-com-fatih-color)) + (home-page "https://github.com/google/go-jsonnet") + (synopsis "Go implementation of Jsonnet") + (description + "This package provides an implementation of the @url{http://jsonnet.org/, +Jsonnet} data templating language in Go. It is a feature-complete, +production-ready implementation, compatible with the original Jsonnet C++ +implementation.") + (license license:asl2.0))) diff --git a/gnu/packages/gps.scm b/gnu/packages/gps.scm index 47a7441e70..a18b93c179 100644 --- a/gnu/packages/gps.scm +++ b/gnu/packages/gps.scm @@ -170,7 +170,7 @@ coordinates as well as partial support for adjustments in global coordinate syst (define-public gpxsee (package (name "gpxsee") - (version "10.3") + (version "11.1") (source (origin (method git-fetch) (uri (git-reference @@ -179,7 +179,7 @@ coordinates as well as partial support for adjustments in global coordinate syst (file-name (git-file-name name version)) (sha256 (base32 - "1i1diha617il0s2j9108xlw3vn10m6lc59r8r2fn48wmfzcj79dc")))) + "1klpjiqsvpvhlg5hsfjaszsyqr817hig9r7y7w4cp0kyn8z5fzfj")))) (build-system gnu-build-system) (arguments '(#:phases @@ -194,7 +194,7 @@ coordinates as well as partial support for adjustments in global coordinate syst (string-append "PREFIX=" (assoc-ref outputs "out")))))))) (inputs - (list qtbase-5 qtlocation)) + (list qtbase-5 qtlocation qtsvg)) (native-inputs (list qttools)) (home-page "https://www.gpxsee.org") diff --git a/gnu/packages/graph.scm b/gnu/packages/graph.scm index 0b8e76f676..3dc6eac33a 100644 --- a/gnu/packages/graph.scm +++ b/gnu/packages/graph.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017, 2018, 2019, 2020, 2022 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com> -;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018, 2020, 2022 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019, 2021, 2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2019 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2020 Alexander Krotov <krotov@iitp.ru> @@ -143,7 +143,7 @@ more.") (package (inherit igraph) (name "python-igraph") - (version "0.9.10") + (version "0.9.11") (source (origin (method git-fetch) ;; The PyPI archive lacks tests. @@ -153,7 +153,7 @@ more.") (file-name (git-file-name name version)) (sha256 (base32 - "06qvwmiw2klk3bg8g5af0ppjwrm9kzy4595w5d06qh2v3gq0svbk")))) + "1xlr0cnf3a1vs9n2psvgrmjhld4n1xr79kkjqzby4pxxyzk1bydn")))) (build-system python-build-system) (arguments (list diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm index 64286bf68d..0b66d9442f 100644 --- a/gnu/packages/graphics.scm +++ b/gnu/packages/graphics.scm @@ -1990,7 +1990,7 @@ Some feature highlights: (define-public openxr (package (name "openxr") - (version "1.0.22") + (version "1.0.23") (source (origin (method git-fetch) @@ -2004,7 +2004,7 @@ Some feature highlights: ;; Delete bundled jsoncpp. (delete-file-recursively "src/external/jsoncpp"))) (sha256 - (base32 "1l6wygazgvd8lbhqk60iim2l2h35gxpsn0y9a9f8q72sqpfianky")))) + (base32 "11w5a2ny30r8jghd5jwdxi5b2c84m21fmkp0lhpicbrwr98xgpj3")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; there are no tests diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 757c4f876b..bf88930b9c 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -15,7 +15,7 @@ ;;; Copyright © 2016 Patrick Hetu <patrick.hetu@auf.org> ;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2017 Roel Janssen <roel@gnu.org> -;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2017–2022 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2018, 2020 Arun Isaac <arunisaac@systemreboot.net> @@ -1562,14 +1562,14 @@ guile-gnome-platform (GNOME developer libraries), and guile-gtksourceview.") (define-public cairomm (package (name "cairomm") - (version "1.16.0") + (version "1.16.1") (source (origin (method url-fetch) (uri (string-append "https://www.cairographics.org/releases/" name "-" version ".tar.xz")) (sha256 (base32 - "1ya4y7qa000cjawqwswbqv26y5icfkmhs5iiiil4dxgrqn91923y")))) + "1im2yjzvjfx8s7cal9kwq23z936kppfmyag2zsnbim4dx7c60q3g")))) (build-system meson-build-system) (outputs '("out" "doc")) (arguments @@ -1587,18 +1587,17 @@ guile-gnome-platform (GNOME developer libraries), and guile-gtksourceview.") (mkdir-p (string-append doc "/share")) (rename-file (string-append out "/share/doc") - (string-append doc "/share/doc")) - #t)))))) + (string-append doc "/share/doc")))))))) (native-inputs - `(("boost" ,boost) - ("dot" ,graphviz) - ("doxygen" ,doxygen) - ("mm-common" ,mm-common) - ("perl" ,perl) - ("pkg-config" ,pkg-config) - ("xsltproc" ,libxslt))) + (list boost + doxygen + graphviz + mm-common + perl + pkg-config + libxslt)) (inputs - `(("fontconfig" ,fontconfig))) + (list fontconfig)) (propagated-inputs (list libsigc++ cairo)) (home-page "https://cairographics.org/") diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index c6f73a38e9..2ed6617fd2 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -41,6 +41,7 @@ ;;; Copyright © 2021, 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com> ;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be> ;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com> +;;; Copyright © 2022 Antero Mejr <antero@mailbox.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -83,6 +84,7 @@ #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) #:use-module (gnu packages guile) + #:use-module (gnu packages haskell-xyz) ;pandoc #:use-module (gnu packages hurd) #:use-module (gnu packages image) #:use-module (gnu packages imagemagick) @@ -5019,3 +5021,85 @@ consists of a set of Guile modules providing some of Clojure's functionality in two different guises.") ;; Dual license: LGPLv2.1+ or EPLv1.0+ at the user's option. (license (list license:lgpl2.1+ license:epl1.0))))) + +(define-public guile-tap + (package + (name "guile-tap") + (version "0.4.6") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ft/guile-tap") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "04ip5cbvsjjcicsri813f4711yh7db6fvc2px4788rl8p1iqvi6x")))) + (build-system gnu-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (replace 'configure + (lambda _ + (substitute* "Makefile" + (("PREFIX = /usr/local") (string-append "PREFIX=" + #$output))))) + (replace 'build + (lambda _ + (invoke "make") + (invoke "make" "-C" "doc" "man") + (invoke "make" "install"))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "make" "test"))))))) + (native-inputs (list guile-3.0 pandoc)) + (home-page "https://github.com/ft/guile-tap") + (synopsis "Guile test framework that emits TAP output") + (description + "guile-tap is a library for GNU Guile that implements a framework for +specifying test cases that emit output that adheres to the Test Anything +Protocol (TAP). It comes with an experimental harness (tap-harness).") + (license license:bsd-2))) + +(define-public guile-termios + (package + (name "guile-termios") + (version "0.6.4") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ft/guile-termios") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "020p3c84z09wyyb6gfzj2x6q2rfmvas7c92fcm2hhg8z1q60sqkg")))) + (build-system gnu-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (replace 'configure + (lambda _ + (substitute* "Makefile" + (("CC = cc") (string-append "CC=" + #$(cc-for-target))) + (("PREFIX = /usr/local") (string-append "PREFIX=" + #$output))))) + (replace 'build + (lambda _ + (invoke "make") + (invoke "make" "-C" "doc" "man") + (invoke "make" "install"))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "make" "test"))))))) + (native-inputs (list guile-3.0 guile-tap pandoc perl perl-io-tty)) + (home-page "https://github.com/ft/guile-termios") + (synopsis "POSIX termios interface for GNU Guile") + (description + "To query and change settings of serial devices on POSIX systems, the +termios API is used. GNU Guile doesn't have an interface for that built in. +This module implements this interface by use of Guile's dynamic FFI.") + (license license:bsd-2))) diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm index d4e43feb06..1471c28fa2 100644 --- a/gnu/packages/hardware.scm +++ b/gnu/packages/hardware.scm @@ -377,8 +377,10 @@ human-readable format and checks if it conforms to the standards.") (license license:expat)))) (define-public h-client - (let ((commit "63ff4a3bf9c3c3b6297091e08192d34991465431") - (revision "0")) + ;; The Python 3 port hasn't yet been integrated into the main branch + ;; (currently lives in the 'python3-port' branch). + (let ((commit "e6c78b16e034ccf78ae9cb4c29268c2f57a30bfc") + (revision "1")) (package (name "h-client") (version (git-version "0.0a0" revision commit)) @@ -386,14 +388,11 @@ human-readable format and checks if it conforms to the standards.") (origin (method git-fetch) (uri (git-reference - ;; Use this Python 3 fork until the changes have been reviewed - ;; and integrated into the official Savannah repository (in - ;; progress). - (url "https://git.sr.ht/~apteryx/h-client") + (url "https://git.savannah.gnu.org/git/h-client.git") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "0c6s96a1zmsnn7bnfhm790c1fr8sid0zdyh9mwig4y6ffn83czh5")))) + (base32 "0hm86d51kj5r3yxq4c23aa57cs8igz3wrkbjn20z4frx75rpf46m")))) (build-system python-build-system) (inputs (list gdk-pixbuf diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm index f4bf1724b4..0c25b41dad 100644 --- a/gnu/packages/image-processing.scm +++ b/gnu/packages/image-processing.scm @@ -435,7 +435,16 @@ integrates with various databases on GUI toolkits such as Qt and Tk.") ((#:configure-flags flags) ;; Otherwise, the build would fail with: "error: invalid conversion ;; from ‘const char*’ to ‘char*’ [-fpermissive]". - `(cons "-DCMAKE_CXX_FLAGS=-fpermissive" ,flags)))))) + `(cons "-DCMAKE_CXX_FLAGS=-fpermissive" ,flags)) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'remove-kernel-version + ;; Avoid embedding the kernel version for reproducible builds + (lambda _ + (substitute* + "ThirdParty/hdf5/vtkhdf5/config/cmake/libhdf5.settings.cmake.in" + (("Host system: \\@CMAKE_HOST_SYSTEM\\@") + "Host system: @CMAKE_SYSTEM_NAME@")))))))))) (define-public opencv (package diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index 8ecb4a1e12..5a13ce56b3 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2017, 2019, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2017, 2019, 2021-2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2015, 2016 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2014, 2015, 2016, 2020 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com> @@ -987,31 +987,31 @@ Metafile}, and @acronym{EMF+, Enhanced Metafile Plus} files.") (define-public imlib2 (package (name "imlib2") - (version "1.7.1") + (version "1.9.0") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/enlightenment/imlib2-src/" version - "/imlib2-" version ".tar.bz2")) + "/imlib2-" version ".tar.xz")) (sha256 (base32 - "01y45cdml2dr9cqgybrgxr86sd77d1qfa1gzclzy1j6bkminlfh3")))) + "0l662h74i3mzl5ligj1352rf8bf48drasj97wygr2037gk5fijas")))) (build-system gnu-build-system) (arguments '(#:configure-flags (list "--disable-static"))) (native-inputs - `(("pkgconfig" ,pkg-config))) + (list pkg-config)) (inputs - `(("bzip2" ,bzip2) - ("freetype" ,freetype) - ("giflib" ,giflib) - ("libid3tag" ,libid3tag) - ("libjpeg" ,libjpeg-turbo) - ("libpng" ,libpng) - ("libtiff" ,libtiff) - ("libx11" ,libx11) - ("libxext" ,libxext) - ("libwebp" ,libwebp))) + (list bzip2 + freetype + giflib + libid3tag + libjpeg-turbo + libpng + libtiff + libx11 + libxext + libwebp)) (home-page "https://sourceforge.net/projects/enlightenment/") (synopsis "Loading, saving, rendering and manipulating image files") @@ -1027,6 +1027,19 @@ This is a complete rewrite over the Imlib 1.x series. The architecture is more modular, simple, and flexible.") (license license:imlib2))) +(define-public imlib2-1.7 + (package + (inherit imlib2) + (version "1.7.1") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/enlightenment/imlib2-src/" version + "/imlib2-" version ".tar.bz2")) + (sha256 + (base32 + "01y45cdml2dr9cqgybrgxr86sd77d1qfa1gzclzy1j6bkminlfh3")))))) + (define-public giblib (package (name "giblib") @@ -1049,7 +1062,9 @@ more modular, simple, and flexible.") "1b4bmbmj52glq0s898lppkpzxlprq9aav49r06j2wx4dv3212rhp")))) (build-system gnu-build-system) (inputs - (list libx11 imlib2)) + (list libx11 + ;; Needs an old imlib2 with the 'imlib2-config' program. + imlib2-1.7)) (home-page ;; This vanished page is universally accepted as giblib's home despite not ;; mentioning the package once. diff --git a/gnu/packages/instrumentation.scm b/gnu/packages/instrumentation.scm index 2db21aef1b..4e23e9bed4 100644 --- a/gnu/packages/instrumentation.scm +++ b/gnu/packages/instrumentation.scm @@ -215,7 +215,9 @@ with the script @command{flamegraph.pl} and many stackcollapse scripts.") "1p7d94r275yvby6zqfxaswdl1q46zxbc8x5rkhnjxrp1d41byrsn")))) (build-system gnu-build-system) (inputs - (list liburcu numactl)) + (list numactl)) + (propagated-inputs + (list liburcu)) ;headers of liburcu are used by headers of lttng (native-inputs (list python-3 pkg-config)) (home-page "https://lttng.org/") diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm index 37d58f5d6b..8c484efb2d 100644 --- a/gnu/packages/irc.scm +++ b/gnu/packages/irc.scm @@ -7,7 +7,7 @@ ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017–2022 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com> -;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net> +;;; Copyright © 2020, 2021, 2022 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org> ;;; Copyright © 2021 WinterHound <winterhound@yandex.com> @@ -151,7 +151,7 @@ irssi, but graphical.") (define-public irssi (package (name "irssi") - (version "1.2.3") + (version "1.4.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/irssi/irssi/" @@ -159,7 +159,7 @@ irssi, but graphical.") version ".tar.xz")) (sha256 (base32 - "17vninwcdfxw39xl2q55qircckckjk2xlvkvlwgj5lhlxppvyix6")))) + "00bmwkpzhqqnsajakk7dviap1i8s89375kwpdyxg65ms3ds94xka")))) (build-system gnu-build-system) (arguments `(#:phases @@ -172,8 +172,7 @@ irssi, but graphical.") (string-append "--prefix=" out) (string-append "--enable-true-color") (string-append "--with-proxy") - (string-append "--with-socks") - (string-append "--with-bot"))))) + (string-append "--with-socks"))))) (add-before 'check 'set-home (lambda _ (setenv "HOME" (getcwd))))))) @@ -182,10 +181,14 @@ irssi, but graphical.") (native-inputs (list pkg-config)) (home-page "https://irssi.org/") - (synopsis "Terminal-based IRC client") + (synopsis "Extensible terminal-based IRC client") (description - "Irssi is a terminal based IRC client for UNIX systems. It also supports -SILC and ICB protocols via plugins.") + "Irssi is a text terminal-based @acronym{IRC, Internet relay chat} client. +It is completely themable and extensible through Perl scripts, of which many +have already been written by the community. + +Plug-ins add support for other protocols like @acronym{SILC, Secure Internet Live +Conferencing} and @acronym{ICB, Internet Citizen's Band}.") (license license:gpl2+))) (define-public weechat @@ -261,7 +264,7 @@ using a mouse. It is customizable and extensible with plugins and scripts.") (define-public srain (package (name "srain") - (version "1.3.2") + (version "1.4.0") (source (origin (method git-fetch) @@ -270,7 +273,7 @@ using a mouse. It is customizable and extensible with plugins and scripts.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "16nsxicixp7194bkiiyj7zrg05lhcp0xblqsbv6dq1lxd5wd3i96")))) + (base32 "113nvai3nr2c8mrr5q56fb7smg5awgb2f243sib4k1zj437v9q51")))) (build-system meson-build-system) (arguments `(#:tests? #f ;there are no tests diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index 336e84e3e5..7b0507d93c 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016, 2017 Roel Janssen <roel@gnu.org> ;;; Copyright © 2017, 2019, 2021 Carlo Zancanaro <carlo@zancanaro.id.au> -;;; Copyright © 2017-2021 Julien Lepiller <julien@lepiller.eu> +;;; Copyright © 2017-2022 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2016, 2017, 2018 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2017, 2019, 2021 Tobias Geerinckx-Rice <me@tobias.gr> @@ -18,6 +18,7 @@ ;;; Copyright © 2021 Mike Gerwitz <mtg@gnu.org> ;;; Copyright © 2021 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net> +;;; Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -4371,6 +4372,14 @@ from source tags and class annotations."))) (copy-recursively "src/main/resources" "build/classes/") #t)) + (add-before 'build 'fix-jdom + (lambda _ + ;; The newer version of jdom now sets multiple features by default + ;; that are not supported. + ;; Skip these features + (substitute* "src/main/java/org/codehaus/plexus/metadata/merge/MXParser.java" + (("throw new XmlPullParserException\\(\"unsupporte feature \"\\+name\\);") + "// skip")))) (add-before 'build 'reinstate-cli ;; The CLI was removed in 2.1.0, but we still need it to build some ;; maven dependencies, and some parts of maven itself. We can't use @@ -4537,6 +4546,14 @@ from source tags and class annotations."))) (copy-recursively "src/main/resources" "build/classes/") #t)) + (add-before 'build 'fix-jdom + (lambda _ + ;; The newer version of jdom now sets multiple features by default + ;; that are not supported. + ;; Skip these features + (substitute* "src/main/java/org/codehaus/plexus/metadata/merge/MXParser.java" + (("throw new XmlPullParserException\\(\"unsupporte feature \"\\+name\\);") + "// skip")))) (add-before 'check 'fix-test-location (lambda _ (substitute* '("src/test/java/org/codehaus/plexus/metadata/DefaultComponentDescriptorWriterTest.java" @@ -5452,6 +5469,18 @@ including java-asm.") (inputs (list java-asm-8 java-asm-analysis-8 java-asm-tree-8)))) +(define-public java-asm-commons-8 + (package + (inherit java-asm-8) + (name "java-asm-commons") + (arguments + (list #:jar-name "asm-commons8.jar" + #:source-dir "asm-commons/src/main/java" + #:test-dir "asm-commons/src/test" + ;; tests depend on junit5 + #:tests? #f)) + (inputs (list java-asm-8 java-asm-analysis-8 java-asm-tree-8)))) + (define-public java-cglib (package (name "java-cglib") @@ -6190,14 +6219,16 @@ included: (define-public java-commons-lang3 (package (name "java-commons-lang3") - (version "3.9") + (version "3.12.0") (source (origin (method url-fetch) (uri (string-append "mirror://apache/commons/lang/source/" "commons-lang3-" version "-src.tar.gz")) (sha256 - (base32 "0s4ffbvsyl16c90l45ximsg4dwd8hmz7wsza3p308fw43h6mwhb6")))) + (base32 "09dcv1pkdx3hpf06py8p9511f1wkin6jpacdll0c8vxpbi3yfwzv")) + (patches + (search-patches "java-commons-lang-fix-dependency.patch")))) (build-system ant-build-system) (arguments `(#:jar-name "commons-lang3.jar" diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm index 028b5c4391..666a0aa421 100644 --- a/gnu/packages/javascript.scm +++ b/gnu/packages/javascript.scm @@ -313,6 +313,63 @@ be able to view it naturally and easily."))) (description (package-description js-mathjax)) (license license:asl2.0))) +(define-public js-mathjax-for-r-mathjaxr + (package + (inherit js-mathjax-3) + (name "js-mathjax") + (version "3.1.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mathjax/MathJax-src") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0kqcb6pl0zfs4hf8zqb4l50kkfq7isv35vpy05m0lg0yr9w0w4ai")) + (patches (search-patches "mathjax-disable-webpack.patch" + "mathjax-3.1.2-no-a11y.patch")))) + (arguments + (substitute-keyword-arguments (package-arguments js-mathjax-3) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (replace 'prepare-sources + (lambda* (#:key inputs #:allow-other-keys) + ;; All a11y components depend on speech-rule-engine, which cannot be + ;; built from source. Since this only affects accessibility, remove them. + (delete-file-recursively "ts/a11y") + (delete-file-recursively "components/src/a11y") + (delete-file-recursively "components/src/sre") + (delete-file-recursively "components/src/node-main") + + ;; Copy sources of dependencies, so we can create symlinks. + (mkdir-p "node_modules") + (with-directory-excursion "node_modules" + (for-each + (lambda (p) + (copy-recursively (assoc-ref inputs (string-append "node-" p)) p)) + '("mj-context-menu"))) + + ;; Make sure esbuild can find imports. This way we don’t have to rewrite files. + (symlink "ts" "js") + (symlink "ts" "node_modules/mj-context-menu/js"))))))) + (native-inputs + `(("esbuild" ,esbuild) + ("node" ,node-lts) + ("node-mj-context-menu" + ,(let ((name "context-menu") + (version "0.6.1")) + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/zorkow/context-menu.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1q063l6477z285j6h5wvccp6iswvlp0jmb96sgk32sh0lf7nhknh"))))))))) + (define-public js-commander (package (name "js-commander") @@ -771,22 +828,31 @@ Javascript and a small built-in standard library with C library wrappers.") "19szwxzvl2g65fw95ggvb8h0ma5bd9vvnnccn59hwnc4dida1x4n")))) (build-system gnu-build-system) (arguments - `(#:tests? #f ; No tests. - #:make-flags (list "-f" "Makefile.sharedlibrary" - (string-append "INSTALL_PREFIX=" %output)) - #:phases - (modify-phases %standard-phases - (delete 'configure) - ;; At least another major GNU/Linux distribution carries their own - ;; .pc file with this package. - (add-after 'install 'install-pkg-config - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (pkg-config-dir (string-append out "/lib/pkgconfig"))) - (mkdir-p pkg-config-dir) - (with-output-to-file (string-append pkg-config-dir "/duktape.pc") - (lambda _ - (format #t "prefix=~@*~a~@ + (list #:tests? #f ; No tests. + #:make-flags + #~(list "-f" "Makefile.sharedlibrary" + (string-append "INSTALL_PREFIX=" + ;; XXX Replace with #$output on core-updates. + #$(if (%current-target-system) + #~#$output + #~%output)) + ;; XXX Unconditionally set to CC-FOR-TARGET on core-updates. + #$@(if (%current-target-system) + #~((string-append "CC=" #$(cc-for-target))) + #~())) + #:phases + #~(modify-phases %standard-phases + (delete 'configure) + ;; At least another major GNU/Linux distribution carries their own + ;; .pc file with this package. + (add-after 'install 'install-pkg-config + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (pkg-config-dir (string-append out "/lib/pkgconfig"))) + (mkdir-p pkg-config-dir) + (with-output-to-file (string-append pkg-config-dir "/duktape.pc") + (lambda _ + (format #t "prefix=~@*~a~@ libdir=${prefix}/lib~@ includedir=${prefix}/include~@ @@ -795,7 +861,7 @@ Javascript and a small built-in standard library with C library wrappers.") Version: ~a~@ Libs: -L${libdir} -lduktape~@ Cflags: -I${includedir}~%" - out ,version))))))))) + out #$version))))))))) (home-page "https://duktape.org/") (synopsis "Small embeddable Javascript engine") (description "Duktape is an embeddable Javascript engine, with a focus on diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm index e914499541..9f957692cb 100644 --- a/gnu/packages/kde-frameworks.scm +++ b/gnu/packages/kde-frameworks.scm @@ -87,7 +87,7 @@ (define-public extra-cmake-modules (package (name "extra-cmake-modules") - (version "5.70.0") + (version "5.91.0") (source (origin (method url-fetch) (uri (string-append @@ -96,7 +96,7 @@ name "-" version ".tar.xz")) (sha256 (base32 - "10c5xs5shk0dcshpdxg564ay5y8hgmvfvmlhmhjf0dy79kcah3c3")))) + "0k65rvxh926ya6qahzk2ns7g1fya1429648mlx7iipxa61g8h5wp")))) (build-system cmake-build-system) (native-inputs ;; Add test dependency, except on armhf where building it is too @@ -104,39 +104,55 @@ (if (and (not (%current-target-system)) (string=? (%current-system) "armhf-linux")) '() - `(("qtbase" ,qtbase-5)))) ;for tests (needs qmake) + (list qtbase-5))) ;for tests (needs qmake) (arguments - `(#:tests? ,(and (not (%current-target-system)) - (not (null? (package-native-inputs this-package)))) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-lib-path - (lambda _ - ;; Always install into /lib and not into /lib64. - (substitute* "kde-modules/KDEInstallDirs.cmake" - (("\"lib64\"") "\"lib\"") - ;; TODO: Base the following on values taken from Qt - ;; Install plugins into lib/qt5/plugins - ;; TODO: Check if this is okay for Android, too - ;; (see comment in KDEInstallDirs.cmake) - (("_define_relative\\(QTPLUGINDIR \"\\$\\{_pluginsDirParent}\" \"plugins\"") - "_define_relative(QTPLUGINDIR \"${_pluginsDirParent}\" \"qt5/plugins\"") - ;; Install imports into lib/qt5/imports - (("_define_relative\\(QTQUICKIMPORTSDIR QTPLUGINDIR \"imports\"") - "_define_relative(QTQUICKIMPORTSDIR LIBDIR \"qt5/imports\"") - ;; Install qml-files into lib/qt5/qml - (("_define_relative\\(QMLDIR LIBDIR \"qml\"") - "_define_relative(QMLDIR LIBDIR \"qt5/qml\"")) - (substitute* "modules/ECMGeneratePriFile.cmake" - ;; Install pri-files into lib/qt5/mkspecs - (("set\\(ECM_MKSPECS_INSTALL_DIR mkspecs/modules") - "set(ECM_MKSPECS_INSTALL_DIR lib/qt5/mkspecs/modules")) - #t)) - ;; install and check phase are swapped to prevent install from failing - ;; after testsuire has run - (add-after 'install 'check-post-install - (assoc-ref %standard-phases 'check)) - (delete 'check)))) + (list + #:tests? (and (not (%current-target-system)) + (not (null? (package-native-inputs this-package)))) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-lib-path + (lambda _ + ;; Always install into /lib and not into /lib64. + (substitute* "kde-modules/KDEInstallDirsCommon.cmake" + (("\"lib64\"") "\"lib\"")) + + ;; Determine the install path by the major version of Qt. + ;; TODO: Base the following on values taken from Qt + ;; Install plugins into lib/qt5/plugins + ;; TODO: Check if this is okay for Android, too + ;; (see comment in KDEInstallDirs.cmake) + (substitute* '("kde-modules/KDEInstallDirs5.cmake" + "kde-modules/KDEInstallDirs6.cmake") + ;; Fix the installation path of Qt plugins. + (("_define_relative\\(QTPLUGINDIR \"\\$\\{_pluginsDirParent}\" \"plugins\"") + "_define_relative(QTPLUGINDIR \"${_pluginsDirParent}\" \"qt${QT_MAJOR_VERSION}/plugins\"") + ;; Fix the installation path of QML files. + (("_define_relative\\(QMLDIR LIBDIR \"qml\"") + "_define_relative(QMLDIR LIBDIR \"qt${QT_MAJOR_VERSION}/qml\"")) + + ;; Qt Quick Control 1 is no longer available in Qt 6. + (substitute* '("kde-modules/KDEInstallDirs5.cmake") + (("_define_relative\\(QTQUICKIMPORTSDIR QTPLUGINDIR \"imports\"") + "_define_relative(QTQUICKIMPORTSDIR LIBDIR \"qt5/imports\"")) + + (substitute* "modules/ECMGeneratePriFile.cmake" + ;; Install pri-files into lib/qt${QT_MAJOR_VERSION}/mkspecs + (("set\\(ECM_MKSPECS_INSTALL_DIR mkspecs/modules") + "set(ECM_MKSPECS_INSTALL_DIR lib/qt${QT_MAJOR_VERSION}/mkspecs/modules")))) + ;; Work around for the failed test KDEFetchTranslations. + ;; It complains that the cmake project name is not + ;; "frameworks/extra-cmake-modules". + ;; TODO: Fix it upstream. + (add-after 'unpack 'fix-test + (lambda _ + (substitute* "tests/KDEFetchTranslations/CMakeLists.txt" + (("frameworks/extra-cmake-modules") "extra-cmake-modules")))) + ;; install and check phase are swapped to prevent install from failing + ;; after testsuire has run + (add-after 'install 'check-post-install + (assoc-ref %standard-phases 'check)) + (delete 'check)))) ;; optional dependencies - to save space, we do not add these inputs. ;; Sphinx > 1.2: ;; Required to build Extra CMake Modules documentation in Qt Help format. diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 53b341d7c6..e17e1ef42d 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -160,6 +160,7 @@ #:use-module (gnu packages xorg) #:use-module (gnu packages groff) #:use-module (gnu packages selinux) + #:use-module (gnu packages sphinx) #:use-module (gnu packages swig) #:use-module (guix platform) #:use-module (guix build-system cmake) @@ -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.17-version "5.17.12") +(define-public linux-libre-5.17-version "5.17.15") (define-public linux-libre-5.17-gnu-revision "gnu") (define deblob-scripts-5.17 (linux-libre-deblob-scripts linux-libre-5.17-version linux-libre-5.17-gnu-revision (base32 "08ip5g827f30qzb3j2l19zkbdqv00sij46nbrjg75h5kkasdbfgr") - (base32 "1zd4ds6ha4a2acqnalp234r2m9rz9p30qmy1aqri78i06aw7flwn"))) + (base32 "1654fibbwnbcgnikn1qqa5igd2j90kslbb3pshph5wpj052cvgjy"))) (define-public linux-libre-5.17-pristine-source (let ((version linux-libre-5.17-version) - (hash (base32 "0yr8xfds5l1s3lk8qk67mgy0l4yh2jfvjc7xwrfws3ci020ss9a2"))) + (hash (base32 "0a5n1lb43nhnhwjwclkk3dqp2nxsx5ny7zfl8idvzshf94m9472a"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.17))) @@ -369,37 +370,37 @@ 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.15-version "5.15.44") +(define-public linux-libre-5.15-version "5.15.47") (define-public linux-libre-5.15-gnu-revision "gnu") (define deblob-scripts-5.15 (linux-libre-deblob-scripts linux-libre-5.15-version linux-libre-5.15-gnu-revision (base32 "1n57mz5agvf1d0ggbg080d7hvx8p9y0iqxkq4ypg10a7n96zy7y5") - (base32 "0gs92qbpvirwd02rpwwnja7771z2azbiy9ppy9ynpr14lxmzxnnh"))) + (base32 "17xsn91h0c2d8igpzgmjm1g58nfpihlhgg9wm8zbfyd5g4airs8f"))) (define-public linux-libre-5.15-pristine-source (let ((version linux-libre-5.15-version) - (hash (base32 "1p1jz0lxmzyj0c51afqghylg9kblk8zmlw92zq6bsn37wlwbrylv"))) + (hash (base32 "1700js21yimx8rz4bsglszry564l2ycmmcr36rdqspzbmlx5w8wb"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.15))) -(define-public linux-libre-5.10-version "5.10.119") +(define-public linux-libre-5.10-version "5.10.122") (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 "0mw7qn77y9c6wrnw4rjvf75cpm1w6n1aqqhf8cnghcb97p2yxxrf") - (base32 "1xyhz0dyrkg2avz382ly3dzpa5v89x49gfzx80c1drpwsk7jg6gp"))) + (base32 "1ryfc8fppigssrzz5lfbqgli49cgs3lmf0yh46lpi2k0j2x30qcc"))) (define-public linux-libre-5.10-pristine-source (let ((version linux-libre-5.10-version) - (hash (base32 "04952zaz2kfwf7agy4laz50f9sl3mrnpqlbwbj84q1xpl9akwd9y"))) + (hash (base32 "0h0gfi3p1dd4p8xxklrl8sc3rv4xd08q7nv0i4m166w8188v62wj"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.10))) -(define-public linux-libre-5.4-version "5.4.196") +(define-public linux-libre-5.4-version "5.4.198") (define-public linux-libre-5.4-gnu-revision "gnu1") (define deblob-scripts-5.4 (linux-libre-deblob-scripts @@ -409,12 +410,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "05i286d98fm2pdf9724x1dsmfcm7gsd7yyyvxqlpisyj1kx14hda"))) (define-public linux-libre-5.4-pristine-source (let ((version linux-libre-5.4-version) - (hash (base32 "1x5irgki792f21hm5146xary0260cl9r475kvw8vm9w32vyx18ig"))) + (hash (base32 "0wvscr5wia2xdiqfxxdwl8kxf1s085qdj5h4423mraj7dh6l0ihh"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.4))) -(define-public linux-libre-4.19-version "4.19.245") +(define-public linux-libre-4.19-version "4.19.247") (define-public linux-libre-4.19-gnu-revision "gnu1") (define deblob-scripts-4.19 (linux-libre-deblob-scripts @@ -424,12 +425,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "1dnjgx1nmawm9gm0yf15nl80nmg7hy7q2vl3jxjbwj6hlrfv5dmx"))) (define-public linux-libre-4.19-pristine-source (let ((version linux-libre-4.19-version) - (hash (base32 "1s58qci6xhmss12glzkqk41kp60pqmzh4d84kyz4m4nf4xhdvzcr"))) + (hash (base32 "136gmsmvgb2nid4by2ld003w06lsr7hgn9ajx0wfziag7pfnjsv2"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.19))) -(define-public linux-libre-4.14-version "4.14.281") +(define-public linux-libre-4.14-version "4.14.283") (define-public linux-libre-4.14-gnu-revision "gnu1") (define deblob-scripts-4.14 (linux-libre-deblob-scripts @@ -439,12 +440,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "1dnjgx1nmawm9gm0yf15nl80nmg7hy7q2vl3jxjbwj6hlrfv5dmx"))) (define-public linux-libre-4.14-pristine-source (let ((version linux-libre-4.14-version) - (hash (base32 "0pivb1m2cwqnlm8bhd4ccnlq9pwp2r5lmn77gp91k6vbjv3gkqis"))) + (hash (base32 "191gybhnck4mh9yjzwgv1crrbxjc90p12bcif721rbs6xzszmxzh"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.14))) -(define-public linux-libre-4.9-version "4.9.316") +(define-public linux-libre-4.9-version "4.9.318") (define-public linux-libre-4.9-gnu-revision "gnu1") (define deblob-scripts-4.9 (linux-libre-deblob-scripts @@ -454,7 +455,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "14jyn2yrbm6ayp0bszs4f9jy3p1qkrj5p5gf5c42spr67aa2lv2v"))) (define-public linux-libre-4.9-pristine-source (let ((version linux-libre-4.9-version) - (hash (base32 "05yd7djm6dcxv3vaylhmj3p0yml421azv8qabmhv4ric1f99idjp"))) + (hash (base32 "09czsc0ynyw068yczs9qx4cliqmrh5hvz93c77lhh014wn02pba4"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.9))) @@ -3694,7 +3695,7 @@ for systems using the Linux kernel. This includes commands such as (define-public inotify-tools (package (name "inotify-tools") - (version "3.20.11.0") + (version "3.22.6.0") (source (origin (method git-fetch) (uri (git-reference @@ -3703,7 +3704,7 @@ for systems using the Linux kernel. This includes commands such as (file-name (git-file-name name version)) (sha256 (base32 - "1m8avqccrhm38krlhp88a7v949f3hrzx060bbrr5dp5qw2nmw9j2")))) + "1j9j8k5zjp8m4cl53zjncnll9z4dnvzr4ygmfcjk0ci81i59b18i")))) (build-system gnu-build-system) (native-inputs (list autoconf automake libtool)) @@ -5575,7 +5576,7 @@ and copy/paste text in the console and in xterm.") (define-public btrfs-progs (package (name "btrfs-progs") - (version "5.15.1") + (version "5.18.1") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/linux/kernel/" @@ -5583,7 +5584,7 @@ and copy/paste text in the console and in xterm.") "btrfs-progs-v" version ".tar.xz")) (sha256 (base32 - "085rg9p7kifhh8kjyyhs38y86srwk820s6v07min5gb177rzhc32")))) + "0mbj3j2fpjds9i9gm8kk8a20yjacc562ibd1v9a96bpmrxfag63f")))) (build-system gnu-build-system) (outputs '("out" "static")) ; static versions of the binaries in "out" @@ -5628,21 +5629,19 @@ and copy/paste text in the console and in xterm.") ("zstd" ,zstd "lib") ("zstd:static" ,zstd "static"))) (native-inputs `(("pkg-config" ,pkg-config) - ("asciidoc" ,asciidoc) - ("python" ,python) - ("xmlto" ,xmlto) ;; For building documentation. - ("libxml2" ,libxml2) - ("docbook-xsl" ,docbook-xsl) + ("python-sphinx" ,python-sphinx) ;; For tests. ("acl" ,acl) - ("which" ,which) ("dmsetup" ,lvm2) - ;; The tests need 'grep' with perl regexp support. - ("grep" ,grep))) + ("grep" ,grep) ; need Perl regexp support + ("libaio" ,libaio) + ("liburing" ,liburing) + ("util-linux" ,util-linux) ; for fallocate + ("which" ,which))) (home-page "https://btrfs.wiki.kernel.org/index.php/Main_Page") (synopsis "Create and manage btrfs copy-on-write file systems") - (description "Btrfs is a @dfn{copy-on-write} (CoW) file system for Linux + (description "Btrfs is a @acronym{CoW, copy-on-write} file system for Linux aimed at implementing advanced features while focusing on fault tolerance, repair and easy administration.") ;; GPL2+: crc32.c, radix-tree.c, raid6.c, rbtree.c. @@ -6343,7 +6342,7 @@ The collection contains a set of bandwidth and latency benchmark such as: (package (name "rng-tools") (home-page "https://github.com/nhorman/rng-tools") - (version "6.14") + (version "6.15") (source (origin (method git-fetch) (uri (git-reference (url home-page) @@ -6351,7 +6350,7 @@ The collection contains a set of bandwidth and latency benchmark such as: (file-name (git-file-name name version)) (sha256 (base32 - "1hrbm4y7fbzkg5j2f7vpj19ri2ff2lp77al17fhi4mv0bvdfjd9m")))) + "0i00if7xknpm0dhkrm60rxzyyvq0vdibq7dvsd2ncm9pg098qvwj")))) (build-system gnu-build-system) (arguments `(;; Disable support for various hardware entropy sources as they need @@ -6359,12 +6358,19 @@ The collection contains a set of bandwidth and latency benchmark such as: ;; increase closure size. #:configure-flags '("--without-nistbeacon" "--without-pkcs11" - "--without-rtlsdr"))) + "--without-rtlsdr") + #:phases + (modify-phases %standard-phases + (add-before 'check 'disable-failing-test + (lambda _ + (substitute* "tests/Makefile" + ;; This test requires a hwrng, rdrand, or tpm device. + ;; Worse, it appears to fail if that isn't sufficiently random. + (("\\brngtestjitter\\.sh\\b") " "))))))) (native-inputs (list autoconf automake pkg-config)) (inputs - `(("libsysfs" ,sysfsutils) - ("openssl" ,openssl))) + (list sysfsutils openssl)) (synopsis "Random number generator daemon") (description "Monitor a hardware random number generator, and supply entropy @@ -7247,14 +7253,14 @@ re-use code and to avoid re-inventing the wheel.") (define-public libnftnl (package (name "libnftnl") - (version "1.2.1") + (version "1.2.2") (source (origin (method url-fetch) (uri (string-append "mirror://netfilter.org/libnftnl/" "libnftnl-" version ".tar.bz2")) (sha256 - (base32 "0z4khm2mnys9mcl8ckwf19cw20jgrv8650nfncy3xcgs2k2aa23m")))) + (base32 "02kdxp4l1ds5lpkw6rxv6f7icc70am6ik3p9z5l8v48mkm7h1z4y")))) (build-system gnu-build-system) (native-inputs (list pkg-config)) @@ -7289,7 +7295,7 @@ used by nftables.") (define-public nftables (package (name "nftables") - (version "1.0.2") + (version "1.0.4") (source (origin (method url-fetch) @@ -7298,9 +7304,7 @@ used by nftables.") (string-append "https://www.nftables.org/projects/nftables" "/files/nftables-" version ".tar.bz2"))) (sha256 - (base32 "00jcjn1pl7qyqpg8pd4yhlkys7wbj4vkzgg73n27nmplzips6a0b")) - (patches - (search-patches "nftables-fix-makefile.patch")))) + (base32 "0ddsdj6zs78hndffl3iikpa1wzjxcpmr3xqcq4la71gnl7zb2zwj")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--disable-static" @@ -9095,7 +9099,7 @@ kernel side implementation.") (define-public erofs-utils (package (name "erofs-utils") - (version "1.4") + (version "1.5") (source (origin (method git-fetch) @@ -9104,7 +9108,7 @@ kernel side implementation.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1ygaw69pfz2hfzw9cqzg9rfnjzrdbfkwsiinz6qs2h56dssjz0y9")))) + (base32 "0rgkw3b924xdg49v3qi8a10w41zfk276wb6fp71lb9q9cfc81idw")))) (build-system gnu-build-system) (inputs (list lz4 @@ -9203,7 +9207,7 @@ older system-wide @file{/sys} interface.") (define-public libtree (package (name "libtree") - (version "3.0.2") + (version "3.1.1") (source (origin (method git-fetch) @@ -9212,7 +9216,7 @@ older system-wide @file{/sys} interface.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "072624anz9g01mp5vfkahfmzy0nb7axg5rwk3n1yrdm4hr3d4zrb")))) + (base32 "1jbc60cslzcfxk9jwva51ncr1zl1nz0fkgfjdckgv81is11nswmb")))) (arguments (list #:make-flags ;; NOTE: Official documentation recommends to build libtree with @@ -9221,6 +9225,15 @@ older system-wide @file{/sys} interface.") (string-append "PREFIX=" #$output)) #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'fix-tests + ;; XXX: '08_nodeflib' fails as 'libtree' returns a non-zero + ;; code in one of the tests. + ;; + ;; See <https://github.com/haampie/libtree/issues/80>). + (lambda _ + (substitute* "tests/08_nodeflib/Makefile" + (("! ../../libtree -vvv exe_b") + "../../libtree -vvv exe_b")))) (delete 'configure)))) (build-system gnu-build-system) (home-page "https://github.com/haampie/libtree") diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index 3b8591fb4a..a88f19e28e 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -3401,7 +3401,7 @@ is a library for creating graphical user interfaces.") (define-public sbcl-cl-webkit (package (name "sbcl-cl-webkit") - (version "3.5.1") + (version "3.5.3") (source (origin (method git-fetch) @@ -3411,7 +3411,7 @@ is a library for creating graphical user interfaces.") (file-name (git-file-name "cl-webkit" version)) (sha256 (base32 - "1zfqwr6vmdd9a2nx3j3ihf8y9sah354wi2rgpq7dy4dkc6wxxd48")))) + "076lqj8ns9s7z980g3p2llw3k6hgsqnsvw8vjjslbpas2jzf26nr")))) (build-system asdf-build-system/sbcl) (inputs `(("cffi" ,sbcl-cffi) @@ -4457,7 +4457,7 @@ addition, removal, and random selection.") (define-public sbcl-quri (package (name "sbcl-quri") - (version "0.4.0") + (version "0.5.0") (source (origin (method git-fetch) @@ -4466,7 +4466,7 @@ addition, removal, and random selection.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0ka5haq3g72hvaz4hdv7y1d6df9ncmx029wwixn4r413gll5yxy7")))) + (base32 "0zpwjhs2zz9832wsjs00kbkjjl4bcs96krlnq9y75gi4f34fxj1x")))) (build-system asdf-build-system/sbcl) (arguments ;; Test system must be loaded before, otherwise tests fail with: @@ -4481,7 +4481,7 @@ addition, removal, and random selection.") (synopsis "Yet another URI library for Common Lisp") (description "QURI (pronounced \"Q-ree\") is yet another URI library for Common -Lisp. It is intended to be a replacement of PURI.") +Lisp. It is intended to be a replacement of PURI.") (license license:bsd-3))) (define-public cl-quri @@ -6056,12 +6056,12 @@ cookie headers, cookie creation, cookie jar creation and more.") (sbcl-package->ecl-package sbcl-cl-cookie)) (define-public sbcl-dexador - (let ((commit "953090f04c4d1a9ee6632b90133cdc297b68badc") + (let ((commit "74a233edb0ebf2b8c696fb8db984ac568fbcc4e5") (revision "1")) (package (name "sbcl-dexador") (build-system asdf-build-system/sbcl) - (version "0.9.14" ) + (version (git-version "0.9.15" revision commit)) (home-page "https://github.com/fukamachi/dexador") (source (origin @@ -6069,36 +6069,35 @@ cookie headers, cookie creation, cookie jar creation and more.") (uri (git-reference (url home-page) (commit commit))) - (file-name (git-file-name name version)) + (file-name (git-file-name "cl-dexador" version)) (sha256 - (base32 - "0w18fz3301rpmwc3kwb810czcd24mbf7r1z8vdyc0v5crjfpw3mn")))) + (base32 "14cbykd9j8klm8sz3siq5zk78a0ljd6rdwfq12fi4h1ih50apyfi")))) (inputs - `(("trivial-gray-streams" ,sbcl-trivial-gray-streams) - ("babel" ,sbcl-babel) - ("usocket" ,sbcl-usocket) - ("fast-http" ,sbcl-fast-http) - ("quri" ,sbcl-quri) - ("fast-io" ,sbcl-fast-io) - ("chunga" ,sbcl-chunga) - ("cl-ppcre" ,sbcl-cl-ppcre) - ("cl-cookie" ,sbcl-cl-cookie) - ("trivial-mimes" ,sbcl-trivial-mimes) - ("chipz" ,sbcl-chipz) - ("cl-base64" ,sbcl-cl-base64) - ("cl-reexport" ,sbcl-cl-reexport) - ("cl+ssl" ,sbcl-cl+ssl) - ("bordeaux-threads" ,sbcl-bordeaux-threads) - ("alexandria" ,sbcl-alexandria))) + (list sbcl-alexandria + sbcl-babel + sbcl-bordeaux-threads + sbcl-chipz + sbcl-chunga + sbcl-cl+ssl + sbcl-cl-base64 + sbcl-cl-cookie + sbcl-cl-ppcre + sbcl-cl-reexport + sbcl-fast-http + sbcl-fast-io + sbcl-quri + sbcl-trivial-gray-streams + sbcl-trivial-mimes + sbcl-usocket)) (native-inputs - `(("prove" ,sbcl-prove) - ("lack" ,sbcl-lack) - ("clack" ,sbcl-clack) - ("babel" ,sbcl-babel) - ("alexandria" ,sbcl-alexandria) - ("cl-ppcre" ,sbcl-cl-ppcre) - ("local-time" ,sbcl-local-time) - ("trivial-features" ,sbcl-trivial-features))) + (list sbcl-alexandria + sbcl-babel + sbcl-cl-ppcre + sbcl-clack + sbcl-lack + sbcl-local-time + sbcl-prove + sbcl-trivial-features)) (arguments ;; TODO: Circular dependency: tests depend on clack-test which depends on dexador. `(#:tests? #f @@ -6242,6 +6241,42 @@ can and/or provide reasonable defaults.") (define-public ecl-introspect-environment (sbcl-package->ecl-package sbcl-introspect-environment)) +(define-public sbcl-compiler-macro + (let ((commit "7796bda64aec5af3ca175170ad3565167868789c") + (revision "0")) + (package + (name "sbcl-compiler-macro") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Bike/compiler-macro") + (commit commit))) + (file-name (git-file-name "cl-compiler-macro" version)) + (sha256 + (base32 "13sswps7s0qy6939mvj8q57hkx0qkga6rl6xjhjr7pk7by0xdsjq")))) + (build-system asdf-build-system/sbcl) + (native-inputs + (list sbcl-fiveam)) + (inputs + (list sbcl-introspect-environment)) + (home-page "https://github.com/Bike/compiler-macro") + (synopsis "Common Lisp compiler macro utilities") + (description "This library is a collection of utilities for writing +compiler macros. It is intended to make it possible to make compiler macros +much more useful, by granting them access to lexical type information, making +the protocol for declining expansion more convenient, and establishing some +information for signaling optimization advice to programmers. Some utilities +to support this, especially for reasoning on types, are also included.") + (license license:cc0)))) + +(define-public cl-compiler-macro + (sbcl-package->cl-source-package sbcl-compiler-macro)) + +(define-public ecl-compiler-macro + (sbcl-package->ecl-package sbcl-compiler-macro)) + (define-public sbcl-type-i (let ((commit "d34440ab4ebf5a46a58deccb35950b15670e3667") (revision "2")) @@ -7504,8 +7539,8 @@ implementation specific equivalent.") (sbcl-package->ecl-package sbcl-trivial-macroexpand-all)) (define-public sbcl-serapeum - (let ((commit "c29a52ff0c5f6e60b09919c3a0daa8df7599ddb9") - (revision "6")) + (let ((commit "d2150c6fb75c16f2ee0abd145a1089d0019e7f7e") + (revision "7")) (package (name "sbcl-serapeum") (version (git-version "0.0.0" revision commit)) @@ -7518,34 +7553,34 @@ implementation specific equivalent.") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "0vij9jhji09way1rpd0r5sgjnh5amm3f2ymppnqkw0c6nnk2p0kd")))) + (base32 "1czs771nyqz45ndd09iiva2swvazy1b2z0k6h4qqdd839vnjcs06")))) (build-system asdf-build-system/sbcl) (inputs - `(("alexandria" ,sbcl-alexandria) - ("trivia" ,sbcl-trivia) - ("split-sequence" ,sbcl-split-sequence) - ("string-case" ,sbcl-string-case) - ("parse-number" ,sbcl-parse-number) - ("trivial-garbage" ,sbcl-trivial-garbage) - ("bordeaux-threads" ,sbcl-bordeaux-threads) - ("named-readtables" ,sbcl-named-readtables) - ("fare-quasiquote" ,sbcl-fare-quasiquote) - ("parse-declarations-1.0" ,sbcl-parse-declarations) - ("global-vars" ,sbcl-global-vars) - ("trivial-file-size" ,sbcl-trivial-file-size) - ("trivial-macroexpand-all" ,sbcl-trivial-macroexpand-all))) + (list sbcl-alexandria + sbcl-trivia + sbcl-split-sequence + sbcl-string-case + sbcl-parse-number + sbcl-trivial-garbage + sbcl-bordeaux-threads + sbcl-parse-declarations + sbcl-introspect-environment + sbcl-trivial-cltl2 + sbcl-global-vars + sbcl-trivial-file-size + sbcl-trivial-macroexpand-all)) (native-inputs - `(("fiveam" ,sbcl-fiveam) - ("local-time" ,sbcl-local-time))) + (list sbcl-atomics + sbcl-fiveam + sbcl-local-time)) (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'disable-failing-tests - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "serapeum.asd" - ;; Guix does not have Quicklisp, and probably never will. - (("\\(:file \"quicklisp\"\\)") "")) - #t))))) + (list #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'disable-failing-tests + (lambda _ + (substitute* "serapeum.asd" + ;; Guix does not have Quicklisp, and probably never will. + (("\\(:file \"quicklisp\"\\)") ""))))))) (synopsis "Common Lisp utility library beyond Alexandria") (description "Serapeum is a conservative library of Common Lisp utilities. It is a @@ -14329,10 +14364,10 @@ standard library.") (sbcl-package->cl-source-package sbcl-shlex)) (define-public sbcl-cmd - (let ((commit "b0b79adf1214dbec082f3dd2274a72a0ff58efd7")) + (let ((commit "fda9e6bd9137ea806313151716fd87578cdbc882")) (package (name "sbcl-cmd") - (version (git-version "0.0.1" "5" commit)) + (version (git-version "0.0.1" "6" commit)) (source (origin (method git-fetch) @@ -14341,7 +14376,7 @@ standard library.") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "0kk29vydmi1fyhpbwy3mrsg3bhvx0478r6r7jcsfkr3ci2h8w8a1")))) + (base32 "0j2yns565mp2rsiz8lc75psk7wws9qz8rh74n4vf9zdyrw16ckpf")))) (build-system asdf-build-system/sbcl) (inputs `(("alexandria" ,sbcl-alexandria) @@ -15383,51 +15418,53 @@ return the CPU count of the current system.") (sbcl-package->cl-source-package sbcl-cl-cpus)) (define-public sbcl-fof - (package - (name "sbcl-fof") - (version "0.2.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://gitlab.com/ambrevar/fof") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0j64b7p40h8bq33hqkpgakm3vs1607vyx6n48d7qg3287v1akk6m")))) - (build-system asdf-build-system/sbcl) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-paths - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "ffprobe.lisp" - (("\\(defvar \\*ffprobe-command\\* \"ffprobe\"\\)") - (format #f "(defvar *ffprobe-command* \"~a/bin/ffprobe\")" - (assoc-ref inputs "ffmpeg") ))) - #t))))) - (inputs - `(("alexandria" ,sbcl-alexandria) - ("hu.dwim.defclass-star" ,sbcl-hu.dwim.defclass-star) - ("local-time" ,sbcl-local-time) - ("magicffi" ,sbcl-magicffi) - ("osicat" ,sbcl-osicat) - ("serapeum" ,sbcl-serapeum) - ("str" ,sbcl-cl-str) - ("trivia" ,sbcl-trivia) - ("trivial-package-local-nicknames" ,sbcl-trivial-package-local-nicknames) - ;; Non-CL deps: - ("ffmpeg" ,ffmpeg))) - (home-page "https://gitlab.com/ambrevar/fof") - (synopsis "File object finder library for Common Lisp") - (description - "This library enable rapid file search, inspection and manipulation + (let ((commit "522879e7da110ecf2e841998b197b34062c54b29") + (revision "1")) + (package + (name "sbcl-fof") + (version (git-version "0.2.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/ambrevar/fof") + (commit commit))) + (file-name (git-file-name "cl-fof" version)) + (sha256 + (base32 "0ipy51q2fw03xk9rqcyzbq2b9c32npc1gl3c53rdjywpak7zwwg6")))) + (build-system asdf-build-system/sbcl) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "ffprobe.lisp" + (("\\(defvar \\*ffprobe-command\\* \"ffprobe\"\\)") + (format #f "(defvar *ffprobe-command* \"~a/bin/ffprobe\")" + (assoc-ref inputs "ffmpeg"))))))))) + (inputs + (list sbcl-alexandria + sbcl-cl-str + sbcl-hu.dwim.defclass-star + sbcl-local-time + sbcl-magicffi + sbcl-named-readtables + sbcl-osicat + sbcl-serapeum + sbcl-trivia + sbcl-trivial-package-local-nicknames + ;; Non-CL deps: + ffmpeg)) + (home-page "https://gitlab.com/ambrevar/fof") + (synopsis "File object finder library for Common Lisp") + (description + "This library enable rapid file search, inspection and manipulation straight from the REPL. It aims at replacing Unix tools such as @code{find} or @code{du}. It also offers a replacement to the @code{pathname} Common Lisp API. Slot writers which commit changes to disk, e.g. permissions, modification time, etc.") - (license license:gpl3+))) + (license license:gpl3+)))) (define-public ecl-fof (sbcl-package->ecl-package sbcl-fof)) @@ -15463,6 +15500,36 @@ numbers in Common Lisp.") (define-public cl-computable-reals (sbcl-package->cl-source-package sbcl-computable-reals)) +(define-public sbcl-policy-cond + (let ((commit "eedb625520175bfdf44d385ff3b21039b7f75706") + (revision "0")) + (package + (name "sbcl-policy-cond") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/stylewarning/policy-cond") + (commit commit))) + (file-name (git-file-name "cl-policy-cond" version)) + (sha256 + (base32 "0xj2a6lcg7i7g4038sc4f641din6m8vdiha8c5afz9fik80bshxk")))) + (build-system asdf-build-system/sbcl) + (home-page "https://github.com/stylewarning/policy-cond") + (synopsis "Insert code based on compiler policy") + (description "POLICY-COND provides tools to insert and execute code +based on a compiler's OPTIMIZE policy. It also contains a contract-like notion +of expectations, which allow dynamic checking or inclusion of various things +that should happen depending on compiler policy.") + (license license:bsd-3)))) + +(define-public cl-policy-cond + (sbcl-package->cl-source-package sbcl-policy-cond)) + +(define-public ecl-policy-cond + (sbcl-package->ecl-package sbcl-policy-cond)) + (define-public sbcl-html-template (package (name "sbcl-html-template") @@ -20820,7 +20887,7 @@ access lexicographic data from WordNet.") (define-public sbcl-nfiles (package (name "sbcl-nfiles") - (version "0.4.1") + (version "0.4.2") (source (origin (method git-fetch) @@ -20830,7 +20897,7 @@ access lexicographic data from WordNet.") (file-name (git-file-name "cl-nfiles" version)) (sha256 (base32 - "05brlj99grcy2iz84dvl76inp10jxnvjyh2r262d1las112rlcrb")))) + "06cll4l5gbp98wrgdy04ar6z00sag0b46pr4dv4n6bs1ypfcgs01")))) (build-system asdf-build-system/sbcl) (inputs (list gnupg diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index ca85cab2b9..c26da670ac 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -923,7 +923,7 @@ the HTML documentation of TXR.") (define-public txr (package (name "txr") - (version "274") + (version "277") (source (origin (method git-fetch) @@ -932,7 +932,7 @@ the HTML documentation of TXR.") (commit (string-append "txr-" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0sz5wqqhmj2b9h9q95s8x4gb4cia6qddqp2mg29a5dpdh6jh3qyp")))) + (base32 "1w6q5inydz0cf4g3y8954msxfb2clf4nj4aqiiayp0z2y96b7bhk")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -991,7 +991,8 @@ the HTML documentation of TXR.") man-for-txr)) (inputs (list bash-minimal - libffi)) + libffi + zlib)) (synopsis "General-purpose, multi-paradigm programming language") (description "TXR is a general-purpose, multi-paradigm programming language. It diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index 88b582d85b..32625385ff 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -23,6 +23,7 @@ ;;; Copyright © 2021, 2022 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2022 Greg Hogan <code@greghogan.com> +;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -53,6 +54,7 @@ #:use-module (guix build-system python) #:use-module (guix build-system trivial) #:use-module (gnu packages) + #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages gcc) #:use-module (gnu packages bootstrap) ;glibc-dynamic-linker @@ -541,10 +543,10 @@ output), and Binutils.") ("libc-static" ,glibc "static"))))) (define %llvm-monorepo-hashes - '(("14.0.4" . "1y4yvx749cn3gkpc9kf48xbd2wc2lry8x5zdpk3sbrkqs8vrji4q"))) + '(("14.0.5" . "1hdv020x4k5fp38hik3bxz8k2sr3gnyj9iym3yhjhwygzgwgxjh9"))) (define %llvm-patches - '(("14.0.4" . ("clang-14.0-libc-search-path.patch")))) + '(("14.0.5" . ("clang-14.0-libc-search-path.patch")))) (define (llvm-monorepo version) (origin @@ -559,7 +561,7 @@ output), and Binutils.") (define-public llvm-14 (package (name "llvm") - (version "14.0.4") + (version "14.0.5") (source (llvm-monorepo version)) (build-system cmake-build-system) (outputs '("out" "opt-viewer")) @@ -577,9 +579,9 @@ output), and Binutils.") ;; These options are required for cross-compiling LLVM according ;; to <https://llvm.org/docs/HowToCrossCompileLLVM.html>. #$@(if (%current-target-system) - #~(,(string-append "-DLLVM_TABLEGEN=" - #+(file-append this-package - "/bin/llvm-tblgen")) + #~((string-append "-DLLVM_TABLEGEN=" + #+(file-append this-package + "/bin/llvm-tblgen")) #$(string-append "-DLLVM_DEFAULT_TARGET_TRIPLE=" (%current-target-system)) #$(string-append "-DLLVM_TARGET_ARCH=" @@ -647,7 +649,7 @@ of programming tools as well as libraries with equivalent functionality.") (package-version llvm-14))) (sha256 (base32 - "1vcgmvh0r28a1z87p3y4h2326zi8liq7l9mcfvmx22x9bmbcpfn8")))))) + "1p9y5fbcw3ynb79nzyadirwdla03bq38k6d9nhv9x8z2q4ypsga4")))))) (package (inherit template) (arguments @@ -740,6 +742,14 @@ of programming tools as well as libraries with equivalent functionality.") #:build-type "Release" #:phases (modify-phases %standard-phases + ,@(if (assoc "config" (package-native-inputs this-package)) + `((add-after 'unpack 'update-config + (lambda* (#:key inputs native-inputs #:allow-other-keys) + (let ((config.guess (search-input-file + (or inputs native-inputs) + "/bin/config.guess"))) + (copy-file config.guess "cmake/config.guess"))))) + '()) (add-before 'build 'shared-lib-workaround ;; Even with CMAKE_SKIP_BUILD_RPATH=FALSE, llvm-tblgen ;; doesn't seem to get the correct rpath to be able to run @@ -824,7 +834,14 @@ of programming tools as well as libraries with equivalent functionality.") (uri (llvm-uri "llvm" version)) (sha256 (base32 - "1wydhbp9kyjp5y0rc627imxgkgqiv3dfirbqil9dgpnbaw5y7n65")))))) + "1wydhbp9kyjp5y0rc627imxgkgqiv3dfirbqil9dgpnbaw5y7n65")))) + (native-inputs + `(("python" ,python-wrapper) + ("perl" ,perl) + ;; In llvm-11 riscv64 support was added manually to config.guess. + ,@(if (target-riscv64?) + `(("config" ,config)) + '()))))) (define-public clang-runtime-10 (clang-runtime-from-llvm @@ -1109,10 +1126,10 @@ of programming tools as well as libraries with equivalent functionality.") (define-public llvm-for-rocm (package - ;; Actually based on LLVM 13 as of v4.3, but llvm-12 works just fine. - (inherit llvm-12) + ;; Based on LLVM 14 as of v5.0.0 + (inherit llvm-14) (name "llvm-for-rocm") - (version "4.3.0") ;this must match '%rocm-version' + (version "5.1.3") ;this must match '%rocm-version' (source (origin (method git-fetch) (uri (git-reference @@ -1121,10 +1138,9 @@ of programming tools as well as libraries with equivalent functionality.") (file-name (git-file-name name version)) (sha256 (base32 - "0p75nr1qpmy6crymdax5hm40wkimman4lnglz4x5cnbiqindya7s")) + "0j6ydfkwrxwskgnhxc3cmry42n5faqbnwf2747qgf7lz5id8h8g5")) (patches - (search-patches "llvm-roc-4.2.0-add_Object.patch" - "llvm-roc-3.0.0-add_libraries.patch" + (search-patches "llvm-roc-5.0.0-linkdl.patch" "llvm-roc-4.0.0-remove-isystem-usr-include.patch")))) (arguments (substitute-keyword-arguments (package-arguments llvm-12) @@ -1141,7 +1157,7 @@ of programming tools as well as libraries with equivalent functionality.") "-DBUILD_SHARED_LIBS:BOOL=TRUE" "-DLLVM_VERSION_SUFFIX=")))) (properties `((hidden? . #t) - ,@(package-properties llvm-12))))) + ,@(package-properties llvm-14))))) @@ -1176,7 +1192,7 @@ of programming tools as well as libraries with equivalent functionality.") (define-public lld-14 (package (name "lld") - (version "14.0.4") + (version "14.0.5") (source (llvm-monorepo version)) (build-system cmake-build-system) (inputs diff --git a/gnu/packages/logging.scm b/gnu/packages/logging.scm index 4391287d12..9e7cfe613a 100644 --- a/gnu/packages/logging.scm +++ b/gnu/packages/logging.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at> ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org> -;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018–2022 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com> ;;; Copyright © 2019 Meiyo Peng <meiyo@riseup.net> ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> @@ -164,29 +164,40 @@ commands, displaying the results via a web interface.") (define-public multitail (package (name "multitail") - (version "6.5.0") + (version "6.5.2") (source (origin - (method url-fetch) - (uri (string-append "https://vanheusden.com/multitail/multitail-" - version ".tgz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/halturin/multitail") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 "1vd9vdxyxsccl64ilx542ya5vlw2bpg6gnkq1x8cfqy6vxvmx7dj")))) + (base32 "17hg5qpangyx4m7hp2x4h56mp6w3wsaslg1il39qcpwsffh1rihc")))) (build-system gnu-build-system) (arguments `(#:make-flags (list (string-append "CC=" ,(cc-for-target)) - (string-append "PREFIX=" - (assoc-ref %outputs "out"))) + (string-append "PREFIX=" (assoc-ref %outputs "out")) + "SYSCONFDIR=$(PREFIX)/etc") #:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-curses-lib - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (substitute* "mt.h" - (("ncursesw\\/panel.h") "panel.h") - (("ncursesw\\/ncurses.h") "ncurses.h"))) - #t)) + (add-after 'unpack 'fix-broken-build + ;; With some luck, you might be able to remove this when updating… + (lambda _ + (substitute* "Makefile" + ((" \\*\\.txt") "") + ((".*CONFIG_DIR.*") "") + (("^install: .*" match) + (string-append match + "\t$(INSTALL_DIR) $(DESTDIR)$(SYSCONFDIR)\n"))) + (substitute* "version" + (("(VERSION=).*" _ assign) + (string-append assign ,version))))) + (add-after 'unpack 'patch-curses-headers + (lambda _ + (substitute* "mt.h" + (("ncursesw/") "")))) (delete 'configure)) ; no configure script #:tests? #f)) ; no test suite (make check just runs cppcheck) (inputs (list ncurses)) @@ -229,7 +240,7 @@ library.") (define-public rsyslog (package (name "rsyslog") - (version "8.2112.0") + (version "8.2204.1") (source (origin (method git-fetch) @@ -238,8 +249,7 @@ library.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 - "0bp124w2qv8hix5i0p04d8yvsipy18dhqm7zw8i6cwdgnhdadq96")))) + (base32 "0bsd1n3n4hvlkwf4g85g3fg37mnvkdmxsfdmg273gcachhyl5hbx")))) (build-system gnu-build-system) (arguments (list @@ -253,9 +263,8 @@ library.") ;; them for a full-featured build. '(list "--enable-kmsg" "--enable-liblogging_stdlog" - "--enable-mmanon" - "--enable-mmcount" "--enable-unlimited_select" + "--enable-usertools" ;; Input plugins "--enable-imbatchreport" @@ -297,7 +306,9 @@ library.") "--enable-pmsnare" ;; Message Modification Modules + "--enable-mmanon" "--enable-mmaudit" + "--enable-mmcount" "--enable-mmdarwin" "--enable-mmdblookup" "--enable-mmfields" @@ -324,9 +335,18 @@ library.") "--enable-snmp" ;; Function modules - "--enable-fmhash_xxhash"))) + "--enable-fmhash_xxhash" + + ;; Needed to build rscryutil.1.gz. + "--enable-generate-man-pages"))) (native-inputs - (list autoconf automake bison flex libtool pkg-config)) + (list autoconf + automake + bison + flex + libtool + pkg-config + python-docutils)) ; rst2man for man pages (inputs (list curl cyrus-sasl diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 509b9c7cdd..53d428bd4f 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -570,21 +570,37 @@ sample proximities between pairs of cases.") (define-public openfst (package (name "openfst") - (version "1.7.9") + (version "1.8.2") (source (origin (method url-fetch) (uri (string-append "http://www.openfst.org/twiki/pub/FST/" "FstDownload/openfst-" version ".tar.gz")) (sha256 (base32 - "1pmx1yhn2gknj0an0zwqmzgwjaycapi896244np50a8y3nrsw6ck")))) + "0hlbdmjjf1jgsvi3d2hwni5lz3l9a5bzj6ijpbawa8a7cbrpp66y")))) (build-system gnu-build-system) + (arguments '(#:configure-flags '("--enable-ngram-fsts"))) (home-page "http://www.openfst.org") (synopsis "Library for weighted finite-state transducers") (description "OpenFst is a library for constructing, combining, optimizing, and searching weighted finite-state transducers (FSTs).") (license license:asl2.0))) +;; This is a temporary addition to bypass upstream issues with the kaldi +;; package. +(define-public openfst-1.7.3 + (package (inherit openfst) + (version "1.7.3") + (source (origin + (method url-fetch) + (uri (string-append "http://www.openfst.org/twiki/pub/FST/" + "FstDownload/openfst-" version ".tar.gz")) + (sha256 + (base32 + "038a60w7y8qnbxmcrsim9rafz9mihsny8xv50jpzlr7rl166pp5q")))) + (arguments '(#:configure-flags '("--enable-ngram-fsts" "CXXFLAGS=-std=c++14") + #:make-flags '("CXXFLAGS=-std=c++14"))))) + (define-public shogun (package (name "shogun") @@ -1465,8 +1481,9 @@ discrete, and conditional dimensions.") ;; There have been no proper releases yet. (define-public kaldi - (let ((commit "d4791c0f3fc1a09c042dac365e120899ee2ad21e") - (revision "2")) + (let ((commit "dd107fd594ac58af962031c1689abfdc10f84452") + (revision "0") + (openfst openfst-1.7.3)) ;; Temporary bypass for upstream issues (package (name "kaldi") (version (git-version "0" revision commit)) @@ -1478,7 +1495,7 @@ discrete, and conditional dimensions.") (file-name (git-file-name name version)) (sha256 (base32 - "07k80my6f19mhrkwbzhjsnpf9871wmrwkl0ym468i830w67qyjrz")))) + "0iqbzgn7gzmgwvjfzifpbwwidxx887qmlgmsjkg7b1yzyfv00l21")))) (build-system gnu-build-system) (arguments `(#:test-target "test" @@ -1502,6 +1519,8 @@ discrete, and conditional dimensions.") "gst-plugin/Makefile") (("../../tools/portaudio/install") (assoc-ref inputs "portaudio"))) + (substitute* "matrix/Makefile" ;temporary test bypass + (("matrix-lib-test sparse-matrix-test") "")) ;; This `configure' script doesn't support variables passed as ;; arguments, nor does it support "prefix". diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 53c7785020..15a53a337d 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -47,6 +47,7 @@ ;;; Copyright © 2022 Andrew Tropin <andrew@trop.in> ;;; Copyright © 2022 Justin Veilleux <terramorpha@cock.li> ;;; Copyright © 2022 Thiago Jung Bauermann <bauermann@kolabnow.com> +;;; Copyright © 2022 Guillaume Le Vaillant <glv@posteo.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -87,6 +88,7 @@ #:use-module (gnu packages django) #:use-module (gnu packages dns) #:use-module (gnu packages docbook) + #:use-module (gnu packages docker) #:use-module (gnu packages documentation) #:use-module (gnu packages emacs) #:use-module (gnu packages enchant) @@ -1333,14 +1335,14 @@ invoking @command{notifymuch} from the post-new hook.") (define-public notmuch (package (name "notmuch") - (version "0.35") + (version "0.36") (source (origin (method url-fetch) (uri (string-append "https://notmuchmail.org/releases/notmuch-" version ".tar.xz")) (sha256 - (base32 "0fdc81m24xrbhfrhw00g12ak4b8hap4961sq7ap6q2pjqhac8cd8")))) + (base32 "0h6f6mh9m9vrijm638x5sbsl321b74a25cdasbxhx67x62w320hk")))) (build-system gnu-build-system) (arguments (list @@ -1474,8 +1476,7 @@ useful for email address completion.") (let ((notmuch (assoc-ref inputs "notmuch"))) (substitute* "notmuch/globals.py" (("libnotmuch\\.so\\.") - (string-append notmuch "/lib/libnotmuch.so."))) - #t)))))) + (string-append notmuch "/lib/libnotmuch.so."))))))))) (home-page (package-home-page notmuch)) (synopsis "Python bindings of the Notmuch mail indexing library") (description @@ -1551,7 +1552,7 @@ pairs have previously synchronized.") (define-public getmail6 (package (name "getmail6") - (version "6.18.6") + (version "6.18.9") (source (origin (method git-fetch) (uri (git-reference @@ -1560,7 +1561,7 @@ pairs have previously synchronized.") (file-name (git-file-name name version)) (sha256 (base32 - "08a5yw6ll1kmd1ardj8rzhsw4wl48zzdc87g5lh4p5snv8w2m4ja")))) + "1ch5hagkpybmkgg2wbb2mids3nbmjqgdqjhczzz7pvj4hx2m8fdb")))) (build-system python-build-system) (arguments (list #:tests? #f)) ;tests require docker (home-page "https://github.com/getmail6/getmail6") @@ -1569,7 +1570,7 @@ pairs have previously synchronized.") "A flexible, extensible mail retrieval system with support for POP3, IMAP4, SSL variants of both, maildirs, mboxrd files, external MDAs, arbitrary message filtering, single-user and domain-mailboxes, and many other useful -features. This is a fork derived from getmali 5.14, aimed at Python 3 +features. This is a fork derived from getmail 5.14, aimed at Python 3 compatibility.") (license license:gpl2+))) ;see docs/COPYING @@ -1632,7 +1633,7 @@ compresses it.") (define-public claws-mail (package (name "claws-mail") - (version "4.0.0") + (version "4.1.0") (source (origin (method url-fetch) @@ -1640,7 +1641,7 @@ compresses it.") (string-append "https://www.claws-mail.org/releases/claws-mail-" version ".tar.xz")) (sha256 - (base32 "0xg41rxxq2q5vhjzbh8p12s248kcljk6g7y0m6raq7nrllkbvwja")))) + (base32 "13ksh4iwr23zi86fwmiwxha94xqrr5zxq373i82rwaldvfh9q6hf")))) (build-system glib-or-gtk-build-system) (arguments `(#:configure-flags @@ -1670,7 +1671,7 @@ compresses it.") (search-input-file inputs "/share/mime/globs")))))))) (native-inputs (list bison - ;;("docbook-utils" ,docbook-utils) + ;;docbook-utils flex gettext-minimal gobject-introspection @@ -1890,7 +1891,7 @@ facilities for checking incoming mail.") (package (name "dovecot") ;; Also update dovecot-pigeonhole when updating to a new minor version. - (version "2.3.19") + (version "2.3.19.1") (source (origin (method url-fetch) @@ -1898,7 +1899,7 @@ facilities for checking incoming mail.") (version-major+minor version) "/" "dovecot-" version ".tar.gz")) (sha256 - (base32 "0ys3zq9b1rgj1cz6a0i9l421y6h2j3b5zak2ia5j9dj1sj9zcwq1")))) + (base32 "0lawd8grwxass1frlw9bdd49fpwwxsv2qnxllsg6a2bkgpcbqnnv")))) (build-system gnu-build-system) (native-inputs (list pkg-config)) @@ -2423,21 +2424,29 @@ compatibility shims for the @command{sendmail}, @command{mailq}, and (define-public fdm (package (name "fdm") - (version "2.0") + (version "2.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/nicm/fdm/releases/download/" version "/fdm-" version ".tar.gz")) (sha256 - (base32 "196fs1z8y7p12wmqn1bylzz94szl58yv2aby3p30nmwjnyv8rch6")))) + (base32 "1zxd5j5x2gp6m62j83xsjyfglw1p6gn4zk5qx10djdh8xzkg53c5")))) (build-system gnu-build-system) (inputs (list tdb openssl zlib)) (home-page "https://github.com/nicm/fdm") - (synopsis "Mail Retrieval Agent (MRA) and Mail Delivery Agent (MDA)") - (description "fdm is a program designed to fetch mail from POP3 -or IMAP servers, or receive local mail from stdin, and -deliver it in various ways.") + (synopsis + "@acronym{MRA, Mail Retrieval Agent} and @acronym{MDA, Mail Delivery Agent}") + (description "fdm fetches and delivers mail in various ways. + +Mail may be fetched from IMAP or POP3 servers, from local maildirs, or read +from standard input. It is then filtered based on regular expressions, its +size or age, or the output of a (shell) command. It can be rewritten by an +external process, dropped, left on the server or delivered into maildirs, +mboxes, to a file or pipe, or any combination. + +fdm is primarily designed for use by a single user, but can use privilege +separation to safely deliver mail in multi-user setups.") (license ;; Why point to a source file? Well, all the individual files have a ;; copy of this license in their headers, but there's no seprate file @@ -3671,7 +3680,7 @@ operators and scripters.") (define-public alpine (package (name "alpine") - (version "2.25") + (version "2.26") (source (origin (method git-fetch) @@ -3684,14 +3693,12 @@ operators and scripters.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0z6dp3cpz1dmbxw41ravsx1bxychafp0ij8gvj96mzz7rm9pdnq3")) + (base32 "1padh9kgn9blzjf0016i2f15c615fk17m8vg8kx301jhmc2r973h")) (modules '((guix build utils))) (snippet '(begin ;; Remove pre-built binaries scattered across the source repository. - (for-each delete-file (find-files "." "\\.(dll|exe)")))) - (patches - (search-patches "alpine-fix-privacy-policy-crash.patch")))) + (for-each delete-file (find-files "." "\\.(dll|exe)")))))) (build-system gnu-build-system) (arguments `(#:make-flags @@ -4087,10 +4094,16 @@ Git and exports them in maildir format or to an MDA through a pipe.") (sha256 (base32 "0xni1l54v1z3p0zb52807maay0yqabp8jgf5iras5zmhgjyk3swz")) - (file-name (git-file-name name version)))) + (file-name (git-file-name name version)) + (patches (search-patches "public-inbox-fix-spawn-test.patch")))) (build-system perl-build-system) (arguments - '(#:tests? #f + `(#:imported-modules (,@%perl-build-system-modules + (guix build syscalls)) + #:modules ((guix build perl-build-system) + (guix build syscalls) + (guix build utils) + (ice-9 match)) #:phases (modify-phases %standard-phases (add-before 'configure 'qualify-paths @@ -4099,18 +4112,45 @@ Git and exports them in maildir format or to an MDA through a pipe.") (substitute* "lib/PublicInbox/Xapcmd.pm" (("'xapian-compact'") (format #f "'~a'" (search-input-file inputs - "/bin/xapian-compact")))))) + "/bin/xapian-compact")))) + (substitute* "lib/PublicInbox/TestCommon.pm" + ;; This is only used for tests, but get it from ‘inputs’ so + ;; that cross builds won't hold a reference to a package built + ;; for another architecture. + (("/bin/cp") (search-input-file inputs "/bin/cp"))))) (add-before 'check 'pre-check (lambda _ - (substitute* "t/spawn.t" - (("\\['env'\\]") (string-append "['" (which "env") "']"))) - (substitute* "t/ds-leak.t" - (("/bin/sh") (which "sh"))) - (invoke "./certs/create-certs.perl") - ;; XXX: This test fails due to zombie process is not reaped by - ;; the builder. - (substitute* "t/httpd-unix.t" - (("^SKIP: \\{") "SKIP: { skip('Guix');")))) + (invoke "./certs/create-certs.perl"))) + (replace 'check + (lambda* (#:key target + (tests? (not target)) (test-flags '()) + #:allow-other-keys) + (if tests? + (match (primitive-fork) + (0 ;child process + ;; lei tests build UNIX domain sockets in the temporary + ;; directory, but the path of those sockets can be at most + ;; 108 chars and Guix' default value for the variables + ;; below already use 47 chars. Use the shortest temporary + ;; path possible to avoid hitting the limit. + (setenv "TEMP" "/tmp") + (setenv "TEMPDIR" "/tmp") + (setenv "TMP" "/tmp") + (setenv "TMPDIR" "/tmp") + + ;; Use tini so that signals are properly handled and + ;; doubly-forked processes get reaped; otherwise, + ;; lei-daemon is kept as a zombie and the testsuite + ;; fails thinking that it didn't quit as it should. + (set-child-subreaper!) + (apply execlp "tini" "--" + "make" "check" test-flags)) + (pid + (match (waitpid pid) + ((_ . status) + (unless (zero? status) + (error "`make check' exited with status" status)))))) + (format #t "test suite not run~%")))) (add-after 'install 'wrap-programs (lambda* (#:key inputs outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) @@ -4129,7 +4169,7 @@ Git and exports them in maildir format or to an MDA through a pipe.") (find-files (string-append out "/bin"))))))))) (native-inputs (list ;; For testing. - lsof openssl)) + lsof openssl tini)) (inputs (list bash-minimal curl diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 1c408a1520..7259c046ef 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -4474,7 +4474,7 @@ parts of it.") (define-public openblas (package (name "openblas") - (version "0.3.18") + (version "0.3.20") (source (origin (method git-fetch) @@ -4484,7 +4484,7 @@ parts of it.") (file-name (git-file-name name version)) (sha256 (base32 - "17zdd8asylz2w71hczrz5y344p6d5ds1jn4901maw7zcp3dbk63g")))) + "0r4sz3rn68fyc2paq0a04pgfi7iszpm95f6ggbzxpvjzx9qxbcql")))) (build-system gnu-build-system) (arguments `(#:test-target "test" @@ -4543,14 +4543,14 @@ parts of it.") (lambda* (#:key inputs #:allow-other-keys) ;; Get libgfortran found when building in utest. (setenv "FEXTRALIB" - (string-append "-L" (assoc-ref inputs "fortran-lib") - "/lib"))))))) + (string-append + "-L" + (dirname + (search-input-file inputs "/lib/libgfortran.so"))))))))) (inputs - `(("fortran-lib" ,gfortran "lib"))) + (list `(,gfortran "lib"))) (native-inputs - `(("cunit" ,cunit) - ("fortran" ,gfortran) - ("perl" ,perl))) + (list cunit gfortran perl)) (home-page "https://www.openblas.net/") (synopsis "Optimized BLAS library based on GotoBLAS") (description diff --git a/gnu/packages/maven.scm b/gnu/packages/maven.scm index 817fee1c71..e5831ee614 100644 --- a/gnu/packages/maven.scm +++ b/gnu/packages/maven.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -3887,3 +3888,53 @@ reports in two different file formats, plain text and xml."))) (description "This plugin provides the capability to build jars. If you would like to sign jars please use the Maven Jarsigner Plugin instead.") (license license:asl2.0))) + +(define-public maven-doxia-sink-api + (package + (name "maven-doxia-sink-api") + (version "2.0.0-M2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitbox.apache.org/repos/asf/maven-doxia.git") + (commit (string-append "doxia-" version)))) + (file-name (git-file-name "doxia" version)) + (sha256 + (base32 + "0jx96lg0hgjsrm8mynhac4hwh2hmgiwjpwpx2k03yr14040zcr48")))) + (build-system ant-build-system) + (propagated-inputs + (list maven-doxia-parent-pom)) + (arguments + `(#:jar-name "doxia-sink-api.jar" + #:source-dir "doxia-sink-api/src/main/java" + #:tests? #f ; no tests + #:phases (modify-phases %standard-phases + (replace 'install + (install-from-pom "doxia-sink-api/pom.xml"))))) + (home-page "https://maven.apache.org/doxia/index.html") + (synopsis "Generic markup language interface") + (description + "The @code{Sink} interface is a generic markup language +interface provided as a Java API. It contains several methods that +encapsulate common text syntax. A start tag is denoted by @code{xxxx()} +method and a end of tag by @code{xxxx_()} method.") + (license license:asl2.0))) + +(define maven-doxia-parent-pom + (package + (inherit maven-doxia-sink-api) + (name "maven-doxia-parent-pom") + (arguments + `(#:tests? #f + #:phases (modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (replace 'install + (install-pom-file "pom.xml"))))) + (propagated-inputs + (list maven-parent-pom-34)) + (synopsis "Content generation framework") + (description "@samp{Doxia} is a content generation framework that provides +powerful techniques for generating static and dynamic content, supporting a +variety of markup languages."))) diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index d361034721..4038ef0e49 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -1713,7 +1713,7 @@ instant messenger with audio and video chat capabilities.") (define-public qtox (package (name "qtox") - (version "1.17.4") + (version "1.17.6") (source (origin (method url-fetch) (uri (string-append "https://github.com/qTox/qTox/releases" @@ -1721,7 +1721,7 @@ instant messenger with audio and video chat capabilities.") "/v" version ".tar.gz")) (sha256 (base32 - "086hvm0q2vl2lq8zlp8s9sivlic6sg7ga5ixz01hbsyrashvil63")) + "1ml8z1xpp3qhip4vkr375jf7y5kc18g0apm91n5am6ricx37c01r")) (file-name (string-append name "-" version ".tar.gz")))) (build-system cmake-build-system) (arguments diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index afd7ff40cf..60cb176320 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -17,7 +17,7 @@ ;;; Copyright © 2018 nee <nee.git@hidamari.blue> ;;; Copyright © 2018, 2021 Stefan Reichör <stefan@xsteve.at> ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz> -;;; Copyright © 2018, 2019, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2018-2019, 2021-2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> ;;; Copyright © 2019 Gabriel Hondet <gabrielhondet@gmail.com> ;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si> @@ -2281,7 +2281,7 @@ perform creative live mixes with digital music files.") (define-public synthv1 (package (name "synthv1") - (version "0.9.25") + (version "0.9.26") (source (origin (method url-fetch) (uri @@ -2289,7 +2289,7 @@ perform creative live mixes with digital music files.") "/synthv1-" version ".tar.gz")) (sha256 (base32 - "1i16036f9wm52c5pxkllq7ir749jcknbh35i9wcxd5n88p6mzw02")))) + "1asikh341f3vblrl8l07yakza80ybs8sid3n2qpsrvigaz3iymcd")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; there are no tests @@ -2299,7 +2299,8 @@ perform creative live mixes with digital music files.") alsa-lib new-session-manager liblo - qtbase-5)) + qtbase-5 + qtsvg)) (native-inputs (list pkg-config qttools)) (home-page "https://synthv1.sourceforge.io") @@ -2312,7 +2313,7 @@ oscillators and stereo effects.") (define-public drumkv1 (package (name "drumkv1") - (version "0.9.25") + (version "0.9.26") (source (origin (method url-fetch) (uri @@ -2320,7 +2321,7 @@ oscillators and stereo effects.") "/drumkv1-" version ".tar.gz")) (sha256 (base32 - "0p50b4k4zldagiwxs0micmdbqib46ysipdj8lkxqdv0pysmd72fc")))) + "0j05xqgcb7kwnnsgl6i7vbdsfq26chzs4zyq6pl0ipcmw4d82j8i")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; there are no tests @@ -2331,7 +2332,8 @@ oscillators and stereo effects.") alsa-lib new-session-manager liblo - qtbase-5)) + qtbase-5 + qtsvg)) (native-inputs (list pkg-config qttools)) (home-page "https://drumkv1.sourceforge.io") @@ -2344,7 +2346,7 @@ effects.") (define-public samplv1 (package (name "samplv1") - (version "0.9.25") + (version "0.9.26") (source (origin (method url-fetch) (uri @@ -2352,7 +2354,7 @@ effects.") "/samplv1-" version ".tar.gz")) (sha256 (base32 - "0d05b03knrwh1zr4p0kcyn58scy6a392f0xxm78cqf0gikd3bw5c")))) + "1rqz3hf39hk2m15ihrkn8f5cqgbkvz3rq6r2k35rvn7sgvcq1dli")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; there are no tests @@ -2363,7 +2365,8 @@ effects.") alsa-lib new-session-manager liblo - qtbase-5)) + qtbase-5 + qtsvg)) (native-inputs (list pkg-config qttools)) (home-page "https://samplv1.sourceforge.io") @@ -2376,7 +2379,7 @@ effects.") (define-public padthv1 (package (name "padthv1") - (version "0.9.25") + (version "0.9.26") (source (origin (method url-fetch) (uri @@ -2384,7 +2387,7 @@ effects.") "/padthv1-" version ".tar.gz")) (sha256 (base32 - "11fa2794g7dqsiw674wr2m4k0xdw89imqwa8mgms0igskxxbvjka")))) + "02pg0g4i65j46hirkc3xn7m2clm8krrafrkwjc1v8rkcdj6q2gw1")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; there are no tests @@ -2395,7 +2398,8 @@ effects.") new-session-manager liblo fftwf - qtbase-5)) + qtbase-5 + qtsvg)) (native-inputs (list pkg-config qttools)) (home-page "https://padthv1.sourceforge.io") @@ -3858,7 +3862,7 @@ using the beets FetchArt plugin.") `(("alsa-lib" ,alsa-lib) ("lhasa" ,lhasa) ("jack" ,jack-1) - ("rtmidi" ,rtmidi) + ("rtmidi" ,rtmidi-4.0) ("sdl" ,sdl2) ("zlib" ,zlib) ("zziplib" ,zziplib))) @@ -4778,7 +4782,7 @@ sample library.") (define-public muse-sequencer (package (name "muse-sequencer") - (version "4.0.0") + (version "4.1.0") (source (origin (method git-fetch) (uri (git-reference @@ -4787,24 +4791,23 @@ sample library.") (file-name (git-file-name name version)) (sha256 (base32 - "1gamr9ln10l26wwyin1a4grrqy6h05qzcgp28wsp85yczkpsh02c")))) + "1iihjivpkvmdfqf20kcl9k0s1iwlv9p5vpna7c58lbw3573fiyr4")))) (build-system qt-build-system) (arguments - `(#:tests? #f ; there is no test target - #:configure-flags - (list "-DENABLE_VST_NATIVE=OFF" - (string-append "-DCMAKE_EXE_LINKER_FLAGS=" - "-Wl,-rpath=" - (assoc-ref %outputs "out") "/lib/muse-" - ,(version-major+minor version) "/modules") - (string-append "-DCMAKE_SHARED_LINKER_FLAGS=" - "-Wl,-rpath=" - (assoc-ref %outputs "out") "/lib/muse-" - ,(version-major+minor version) "/modules")) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'chdir - (lambda _ (chdir "src")))))) + (list + #:tests? #f ; there is no test target + #:configure-flags + #~(list "-DENABLE_VST_NATIVE=OFF" + (string-append "-DCMAKE_EXE_LINKER_FLAGS=" + "-Wl,-rpath=" #$output "/lib/muse-" + #$(version-major+minor version) "/modules") + (string-append "-DCMAKE_SHARED_LINKER_FLAGS=" + "-Wl,-rpath=" #$output "/lib/muse-" + #$(version-major+minor version) "/modules")) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ (chdir "src")))))) (inputs (list alsa-lib dssi @@ -4821,7 +4824,7 @@ sample library.") lrdf lv2 pcre - pulseaudio ; required by rtaudio + pulseaudio ; required by rtaudio qtbase-5 qtsvg rtaudio @@ -6137,7 +6140,7 @@ and as an LV2 plugin.") ("pulseaudio" ,pulseaudio) ("reproc" ,reproc) ("rubberband" ,rubberband) - ("rtmidi" ,rtmidi) + ("rtmidi" ,rtmidi-4.0) ("sdl2" ,sdl2) ("xdg-utils" ,xdg-utils) ("zstd" ,zstd "lib"))) diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index ffa6d5ae52..8476da0df9 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -49,6 +49,7 @@ ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> ;;; Copyright © 2022 Simon South <simon@simonsouth.net> ;;; Copyright © 2022 Pierre Langlois <pierre.langlois@gmx.com> +;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -114,6 +115,7 @@ #:use-module (gnu packages image) #:use-module (gnu packages libevent) #:use-module (gnu packages libidn) + #:use-module (gnu packages libusb) #:use-module (gnu packages linux) #:use-module (gnu packages lua) #:use-module (gnu packages kerberos) @@ -129,6 +131,7 @@ #:use-module (gnu packages pkg-config) #:use-module (gnu packages polkit) #:use-module (gnu packages pretty-print) + #:use-module (gnu packages protobuf) #:use-module (gnu packages pulseaudio) #:use-module (gnu packages python) #:use-module (gnu packages python-crypto) @@ -547,6 +550,54 @@ It also includes some SCTP-related helper utilities.") SCTP-aware kernel (most are).") (license license:lgpl2.1+))) +(define-public kismet + (package + (name "kismet") + (version "2022-02") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://www.kismetwireless.net/git/kismet.git") + (commit (string-append "kismet-" version "-R1")))) + (file-name (git-file-name name version)) + (patches (search-patches "kismet-unbundle-boost.patch")) + (modules '((guix build utils))) + (snippet '(begin + ;; Drop bundled libraries. + (delete-file-recursively "boost"))) + (sha256 + (base32 + "01q86hrgpai433sc65dlnqy91qd26w5dwyp37adszqxfb6d2an1r")))) + (build-system gnu-build-system) + (arguments + (list #:tests? #f ;no test suite + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-install + (lambda* _ + (substitute* "Makefile.in" + (("-o \\$\\(INSTUSR\\) -g \\$\\(SUIDGROUP\\)") "") + (("-o \\$\\(INSTUSR\\) -g \\$\\(INSTGRP\\)") ""))))))) + (home-page "https://www.kismetwireless.net/") + (native-inputs (list perl pkg-config python python-2)) + (inputs (list boost + libusb + libpcap + libwebsockets + openssl + protobuf + protobuf-c + sqlite + zlib)) + (synopsis "Wireless network and device detector") + (description + "This package provides a wireless network and device detector, sniffer, +wardriving tool, and WIDS (wireless intrusion detection) framework. Kismet +works with Wi-Fi interfaces, Bluetooth interfaces, some SDR +(software defined radio) hardware like the RTLSDR, and other specialized +capture hardware") + (license license:gpl2+))) + (define-public knockd (package (name "knockd") @@ -2772,6 +2823,12 @@ updates to the zebra daemon.") #:tests? #f ; No test suite. #:phases (modify-phases %standard-phases + (add-after 'unpack 'use-source-date-epoch-in-manpages + ;; For reproducible builds + (lambda _ + (substitute* "Makefile" + (("date --iso-8601") + "date --iso-8601 --utc --date=@$(SOURCE_DATE_EPOCH)")))) (delete 'configure) ; No ./configure script. (add-before 'build 'patch-paths (lambda _ @@ -3221,7 +3278,7 @@ Ethernet and TAP interfaces is supported. Packet capture is also supported.") (define-public hcxtools (package (name "hcxtools") - (version "5.2.0") + (version "6.2.7") (source (origin (method git-fetch) @@ -3229,19 +3286,22 @@ Ethernet and TAP interfaces is supported. Packet capture is also supported.") (url "https://github.com/ZerBea/hcxtools") (commit version))) (sha256 - (base32 "0k2qlq9hz5zc21nyc6yrnfqzga7hydn5mm0x3rpl2fhkwl81lxcn")) + (base32 "0460dxbc04w60l3g06rk007yyb6qprgyii59y2zdki0vy7q63m8b")) (file-name (git-file-name name version)))) (build-system gnu-build-system) - (inputs - (list curl libpcap openssl zlib)) + (native-inputs (list pkg-config)) + (inputs (list curl libpcap openssl zlib)) (arguments - `(#:make-flags - (list ,(string-append "CC=" (cc-for-target)) - (string-append "INSTALLDIR=" (assoc-ref %outputs "out") "/bin")) - #:tests? #f ; no test suite - #:phases - (modify-phases %standard-phases - (delete 'configure)))) + (list #:make-flags + #~(list (string-append "CC=" + #$(cc-for-target)) "LDFLAGS+=-lcrypto" + "LDFLAGS+=-lcurl" "LDFLAGS+=-lz" + (string-append "PREFIX=" + #$output)) + #:tests? #f ;no test suite + #:phases + #~(modify-phases %standard-phases + (delete 'configure)))) (home-page "https://github.com/ZerBea/hcxtools") (synopsis "Capture wlan traffic to hashcat and John the Ripper") (description @@ -3359,7 +3419,7 @@ communication over HTTP.") (define-public restinio (package (name "restinio") - (version "0.6.14") + (version "0.6.15") (source (origin (method git-fetch) (uri (git-reference @@ -3368,7 +3428,7 @@ communication over HTTP.") (file-name (git-file-name name version)) (sha256 (base32 - "0j44mglsljwkw49583hcsrl5ck2g56n9srnm10kpbsz2dx5apx98")))) + "1f8d5nfm8jqhspzsslwb1b7j4glipz31i9vszrcnkx3clc39nj2n")))) (build-system cmake-build-system) (inputs ; TODO: Need to force-keep references on some inputs, e.g. boost. (list zlib diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index 093835d370..4569c526ab 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -3197,14 +3197,14 @@ OCaml code.") (define-public omake (package (name "omake") - (version "0.10.3") + (version "0.10.5") (source (origin (method url-fetch) (uri (string-append "http://download.camlcity.org/download/" "omake-" version ".tar.gz")) (sha256 (base32 - "07bdg1h5i7qnlv9xq81ad5hfypl10hxm771h4rjyl5cn8plhfcgz")) + "1i7pcv53kqplrbdx9mllrhbv4j57zf87xwq18r16cvn1lbc6mqal")) (patches (search-patches "omake-fix-non-determinism.patch")))) (build-system ocaml-build-system) (arguments @@ -3697,10 +3697,10 @@ writing to these structures, and they are accessed via the Bigarray module.") (description "Hex is a minimal library providing hexadecimal converters.") (license license:isc))) -(define-public ocaml4.07-ezjsonm +(define-public ocaml-ezjsonm (package - (name "ocaml4.07-ezjsonm") - (version "1.1.0") + (name "ocaml-ezjsonm") + (version "1.3.0") (source (origin (method git-fetch) @@ -3709,20 +3709,13 @@ writing to these structures, and they are accessed via the Bigarray module.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "064j9pzy01p3dv947khqyn7fkjbs3jmrqsg8limb4abnlaqxxs2s")))) + (base32 "004knljxqxn9zq0rnq7q7wxl4nwlzydm8p9f5cqkl8il5yl5zkjm")))) (build-system dune-build-system) (arguments `(#:package "ezjsonm" - #:test-target "." - #:ocaml ,ocaml-4.07 - #:findlib ,ocaml4.07-findlib - #:dune ,ocaml4.07-dune)) - (native-inputs - `(("ocaml-alcotest" ,(package-with-ocaml4.07 ocaml-alcotest)))) - (propagated-inputs - `(("ocaml-hex" ,(package-with-ocaml4.07 ocaml-hex)) - ("ocaml-jsonm" ,(package-with-ocaml4.07 ocaml-jsonm)) - ("ocaml-sexplib" ,(package-with-ocaml4.07 ocaml-sexplib)))) + #:test-target ".")) + (native-inputs (list ocaml-alcotest js-of-ocaml node)) + (propagated-inputs (list ocaml-jsonm ocaml-uutf ocaml-sexplib0 ocaml-hex)) (home-page "https://github.com/mirage/ezjsonm/") (synopsis "Read and write JSON data") (description "Ezjsonm provides more convenient (but far less flexible) input @@ -3800,7 +3793,7 @@ JSON.") (define-public ocaml-easy-format (package (name "ocaml-easy-format") - (version "1.3.3") + (version "1.3.4") (source (origin (method git-fetch) (uri (git-reference @@ -3809,7 +3802,7 @@ JSON.") (file-name (git-file-name name version)) (sha256 (base32 - "1dl5faibbb5nm3v70ix7k6208yib1954x20nmw3g56wff5vdlzid")))) + "0xap6az4yyb60vb1jfs640wl3cf4njv78p538x9ihhf9f6ij3nh8")))) (build-system dune-build-system) (arguments `(#:package "easy-format" @@ -3828,9 +3821,9 @@ JSON.") Format module of the OCaml standard library.") (license license:bsd-3))) -(define-public ocaml4.07-piqilib +(define-public ocaml-piqilib (package - (name "ocaml4.07-piqilib") + (name "ocaml-piqilib") (version "0.6.15") (source (origin @@ -3848,24 +3841,20 @@ Format module of the OCaml standard library.") (add-before 'configure 'fix-ocamlpath (lambda _ (substitute* '("Makefile" "make/Makefile.ocaml") - (("OCAMLPATH := ") "OCAMLPATH := $(OCAMLPATH):")) - #t)) + (("OCAMLPATH := ") "OCAMLPATH := $(OCAMLPATH):")))) (replace 'configure (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) (substitute* "make/OCamlMakefile" (("/bin/sh") (which "bash"))) (invoke "./configure" "--prefix" out "--ocaml-libdir" - (string-append out "/lib/ocaml/site-lib"))) - #t)) + (string-append out "/lib/ocaml/site-lib"))))) (add-after 'build 'build-ocaml (lambda* (#:key outputs #:allow-other-keys) - (invoke "make" "ocaml") - #t)) + (invoke "make" "ocaml"))) (add-after 'install 'install-ocaml (lambda* (#:key outputs #:allow-other-keys) - (invoke "make" "ocaml-install") - #t)) + (invoke "make" "ocaml-install"))) (add-after 'install-ocaml 'link-stubs (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -3873,17 +3862,14 @@ Format module of the OCaml standard library.") (lib (string-append out "/lib/ocaml/site-lib/piqilib"))) (mkdir-p stubs) (symlink (string-append lib "/dllpiqilib_stubs.so") - (string-append stubs "/dllpiqilib_stubs.so")) - #t)))) - #:ocaml ,ocaml-4.07 - #:findlib ,ocaml4.07-findlib)) + (string-append stubs "/dllpiqilib_stubs.so")))))))) (native-inputs (list which)) (propagated-inputs - `(("ocaml-xmlm" ,(package-with-ocaml4.07 ocaml-xmlm)) - ("ocaml-sedlex" ,(package-with-ocaml4.07 ocaml-sedlex)) - ("ocaml-easy-format" ,(package-with-ocaml4.07 ocaml-easy-format)) - ("ocaml-base64" ,(package-with-ocaml4.07 ocaml-base64)))) + `(("ocaml-xmlm" ,ocaml-xmlm) + ("ocaml-sedlex" ,ocaml-sedlex) + ("ocaml-easy-format" ,ocaml-easy-format) + ("ocaml-base64" ,ocaml-base64))) (home-page "http://piqi.org") (synopsis "Data serialization and conversion library") (description "Piqilib is the common library used by the piqi command-line @@ -3963,9 +3949,9 @@ and 4 (random based) according to RFC 4122.") (description "OCamlgraph is a generic graph library for OCaml.") (license license:lgpl2.1))) -(define-public ocaml4.07-piqi +(define-public ocaml-piqi (package - (name "ocaml4.07-piqi") + (name "ocaml-piqi") (version "0.7.7") (source (origin (method git-fetch) @@ -3989,15 +3975,13 @@ and 4 (random based) according to RFC 4122.") (lambda _ (for-each make-file-writable (find-files ".")) #t)) - (delete 'configure)) - #:ocaml ,ocaml-4.07 - #:findlib ,ocaml4.07-findlib)) + (delete 'configure)))) (native-inputs (list which protobuf)) ; for tests (propagated-inputs - `(("ocaml-num" ,(package-with-ocaml4.07 ocaml-num)) - ("ocaml-piqilib" ,ocaml4.07-piqilib) - ("ocaml-stdlib-shims" ,(package-with-ocaml4.07 ocaml-stdlib-shims)))) + `(("ocaml-num" ,ocaml-num) + ("ocaml-piqilib" ,ocaml-piqilib) + ("ocaml-stdlib-shims" ,ocaml-stdlib-shims))) (home-page "https://github.com/alavrik/piqi-ocaml") (synopsis "Protocol serialization system for OCaml") (description "Piqi is a multi-format data serialization system for OCaml. @@ -4029,12 +4013,12 @@ XML and Protocol Buffers formats.") ("ocaml-bitstring" ,(package-with-ocaml4.07 ocaml-bitstring)) ("ocaml-cmdliner" ,(package-with-ocaml4.07 ocaml-cmdliner)) ("ocaml-core-kernel" ,ocaml4.07-core-kernel) - ("ocaml-ezjsonm" ,ocaml4.07-ezjsonm) + ("ocaml-ezjsonm" ,(package-with-ocaml4.07 ocaml-ezjsonm)) ("ocaml-fileutils" ,(package-with-ocaml4.07 ocaml-fileutils)) ("ocaml-frontc" ,(package-with-ocaml4.07 ocaml-frontc)) ("ocaml-graph" ,(package-with-ocaml4.07 ocaml-graph)) ("ocaml-ocurl" ,(package-with-ocaml4.07 ocaml-ocurl)) - ("ocaml-piqi" ,ocaml4.07-piqi) + ("ocaml-piqi" ,(package-with-ocaml4.07 ocaml-piqi)) ("ocaml-ppx-jane" ,ocaml4.07-ppx-jane) ("ocaml-utop" ,ocaml4.07-utop) ("ocaml-uuidm" ,(package-with-ocaml4.07 ocaml-uuidm)) @@ -4244,7 +4228,7 @@ instead of bindings to a C library.") (define-public ocaml-utop (package (name "ocaml-utop") - (version "2.9.1") + (version "2.9.2") (source (origin (method git-fetch) @@ -4253,7 +4237,7 @@ instead of bindings to a C library.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1pmsmi0j4gb1vsd69j0bppkv79wbwz5xcffq78n1i2ibhff6r4j0")))) + (base32 "0z5anakgbndhyzbi570pfs2fy69bnmgq9jflgfbly2rhbhwa7wgj")))) (build-system dune-build-system) (arguments `(#:test-target ".")) @@ -4402,7 +4386,7 @@ OCaml projects that contain C stubs.") (define-public ocaml-tsdl (package (name "ocaml-tsdl") - (version "0.9.7") + (version "0.9.9") (home-page "https://erratique.ch/software/tsdl") (source (origin (method url-fetch) @@ -4411,7 +4395,7 @@ OCaml projects that contain C stubs.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1zwv0ixkigh1gzk5n49rwvz2f2m62jdkkqg40j7dclg4gri7691f")))) + "1m565jgfanijjzp64c1rylahkpmrrb03ywj202j49n06nvwp788s")))) (build-system ocaml-build-system) (arguments `(#:build-flags '("build") @@ -5024,11 +5008,17 @@ exclusion algorithms are typical examples of such systems.") (define-public ocaml-sexplib0 (package (name "ocaml-sexplib0") - (version "0.15.0") + (version "0.15.1") (home-page "https://github.com/janestreet/sexplib0") - (source - (janestreet-origin "sexplib0" version - "1fpg991n578m11r0ki4als4c76s3sp703b4khivx40v48402qill")) + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "05m93g4m4jhj1v8pazg3s2ydcfymr3h4476yjhdca5fm4sn35bg8")))) (build-system dune-build-system) (arguments `(#:tests? #f)) ;no tests (properties `((ocaml4.07-variant . ,(delay ocaml4.07-sexplib0)))) @@ -7996,7 +7986,7 @@ defined in OCaml 4.12.0.") (define-public ocamlformat (package (name "ocamlformat") - (version "0.21.0") + (version "0.22.4") (source (origin (method git-fetch) @@ -8006,12 +7996,16 @@ defined in OCaml 4.12.0.") (file-name (git-file-name name version)) (sha256 (base32 - "10vy102a0isd8cg94y61pm4qfgy74d6003dw0qn0bdmbd19r5071")))) + "171lq3vx4y8xj4by5zy93isx8nhg6ysxg1hxmkqkq16fdaiz8mnc")))) (build-system dune-build-system) (arguments '(#:package "ocamlformat" #:phases (modify-phases %standard-phases + ;; Tests related to other packages + (add-after 'unpack 'remove-unrelated-tests + (lambda _ + (delete-file-recursively "test/rpc"))) (add-after 'unpack 'fix-test-format (lambda _ (substitute* "test/cli/repl_file_errors.t/run.t" diff --git a/gnu/packages/orange.scm b/gnu/packages/orange.scm index 4d146468a3..d579442902 100644 --- a/gnu/packages/orange.scm +++ b/gnu/packages/orange.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2021 Vinicius Monego <monego@posteo.net> +;;; Copyright © 2021, 2022 Vinicius Monego <monego@posteo.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -102,13 +102,13 @@ GUI based workflow. It is primarily used in the Orange framework.") (define-public orange (package (name "orange") - (version "3.31.1") + (version "3.32.0") (source (origin (method url-fetch) (uri (pypi-uri "Orange3" version)) (sha256 - (base32 "0jqay46nysgfxldik7f6mfi8iylai2gwfpq60vklrfi1rhqf3pn6")))) + (base32 "0pxjwisc209cdgpqlqazc2vlmr0iqz8ry862w7jx95zic54d9p5l")))) (build-system python-build-system) (arguments `(#:phases diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index ad3a6db9af..79f7eec384 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -1650,8 +1650,8 @@ in an isolated environment, in separate namespaces.") (license license:gpl3+))) (define-public nar-herder - (let ((commit "a24fbd108f75c8f27d2f68f2d1a051e2f3f3e191") - (revision "7")) + (let ((commit "042f49e5fb52ea844ed5d29c17b26fbc8ad49f0e") + (revision "8")) (package (name "nar-herder") (version (git-version "0" revision commit)) @@ -1662,7 +1662,7 @@ in an isolated environment, in separate namespaces.") (commit commit))) (sha256 (base32 - "1jm6ks2sjcwih7j4wnp252qd73n8pydg7sd000ismpvg5p21l7fg")) + "1i9vwjdvkchwndjikqq3j73x0mvp3ny63s62ixql70yhpdgz5l69")) (file-name (string-append name "-" version "-checkout")))) (build-system gnu-build-system) (arguments diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm index 5502b415a4..ec785cedf7 100644 --- a/gnu/packages/parallel.scm +++ b/gnu/packages/parallel.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2015, 2016, 2017, 2018, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Pjotr Prins <pjotr.guix@thebird.nl> ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr> -;;; Copyright © 2016, 2020, 2021 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2016, 2020, 2021, 2022 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2018–2022 Tobias Geerinckx-Rice <me@tobias.gr> @@ -166,7 +166,7 @@ when jobs finish.") (define-public slurm (package (name "slurm") - (version "21.08.8") + (version "22.05.1") (source (origin (method url-fetch) (uri (string-append @@ -174,7 +174,7 @@ when jobs finish.") version ".tar.bz2")) (sha256 (base32 - "1sjln54idc9rhg8f2nvm38sgs6fncncyzslas8ixy65pqz2hphbf")) + "0f3hhlki8g7slllsnyj1qikbsvr62i0hig85lcdcfnmsagzlhbyi")) (modules '((guix build utils))) (snippet '(begin @@ -262,6 +262,20 @@ by managing a queue of pending work.") ;; As noted in the link, YY.MM is the release scheme, and the 'maintenance' ;; digit does not introduce incompatibilities. +(define-public slurm-21.08 + (package + (inherit slurm) + (version "21.08.8") + (source (origin + (inherit (package-source slurm)) + (method url-fetch) + (uri (string-append + "https://download.schedmd.com/slurm/slurm-" + version ".tar.bz2")) + (sha256 + (base32 + "1sjln54idc9rhg8f2nvm38sgs6fncncyzslas8ixy65pqz2hphbf")))))) + (define-public slurm-20.11 (package (inherit slurm) @@ -327,7 +341,7 @@ by managing a queue of pending work.") (define-public slurm-drmaa (package (name "slurm-drmaa") - (version "1.1.2") + (version "1.1.3") (source (origin (method url-fetch) (uri (string-append @@ -335,7 +349,7 @@ by managing a queue of pending work.") version "/slurm-drmaa-" version ".tar.gz")) (sha256 (base32 - "0dn8ypqxdaq3k4jqwwx7msckxnmr6n2z5j68yffp50yy07ajbzjv")))) + "1fn3p4wjj0sgvx0isy3hiwi35vhxa2n2ksq5cn9sq2hg7yyb2phl")))) (build-system gnu-build-system) (arguments `(#:tests? #f)) ; The tests require "bats". (inputs diff --git a/gnu/packages/patches/alpine-fix-privacy-policy-crash.patch b/gnu/packages/patches/alpine-fix-privacy-policy-crash.patch deleted file mode 100644 index d514ac33a0..0000000000 --- a/gnu/packages/patches/alpine-fix-privacy-policy-crash.patch +++ /dev/null @@ -1,39 +0,0 @@ -X-Git-Url: https://repo.or.cz/alpine.git/blobdiff_plain/fb2217ac67706e4cbef69bea41041e2fb8b910e9..3ee981816abfb7d47ffc0ac522fff002b5749b72:/alpine/help.c - -diff --git a/alpine/help.c b/alpine/help.c -index 4f1bf46..e9c7b34 100644 ---- a/alpine/help.c -+++ b/alpine/help.c -@@ -36,6 +36,7 @@ static char rcsid[] = "$Id: help.c 1032 2008-04-11 00:30:04Z hubert@u.washington - #include "../pith/detoken.h" - #include "../pith/list.h" - #include "../pith/margin.h" -+#include "../pith/busy.h" - - - typedef struct _help_scroll { -@@ -135,10 +136,12 @@ helper_internal(HelpType text, char *frag, char *title, int flags) - is_external = 0; - - if(shown_text && *shown_text && !struncmp(*shown_text, "x-alpine-http:", 14)){ -- int status; -+ int status, we_cancel = 0; -+ -+ we_cancel = busy_cue(_("Retrieving help text"), NULL, 1); - HTTPSTREAM *stream = http_open(*shown_text + 14); - if(stream) help_text = http_get(stream, NULL); -- status = stream->status ? stream->status->code : -1; -+ status = stream && stream->status ? stream->status->code : -1; - if(stream) http_close(stream); - if(status != HTTP_OK){ - shown_text = NO_HELP; -@@ -165,7 +168,8 @@ helper_internal(HelpType text, char *frag, char *title, int flags) - *rv = NULL; - } - } -- -+ if(we_cancel) -+ cancel_busy_cue(-1); - } - - if(F_ON(F_BLANK_KEYMENU,ps_global)){ diff --git a/gnu/packages/patches/epiphany-update-libportal-usage.patch b/gnu/packages/patches/epiphany-update-libportal-usage.patch deleted file mode 100644 index 0d8ea045fb..0000000000 --- a/gnu/packages/patches/epiphany-update-libportal-usage.patch +++ /dev/null @@ -1,53 +0,0 @@ -Fix for epiphany with libportal-0.5. - -This patch was adapted from upstream -https://gitlab.gnome.org/GNOME/epiphany/-/commit/e4d259f614f75c26ad0d2094f4f569ffd1bc06d1 - -diff --git a/lib/ephy-flatpak-utils.c b/lib/ephy-flatpak-utils.c -index 6fc9a5dec17a63c0660cbc1d95103c8f77231d30..0fd90b3f178392930e812a8391fd81bf1371b8bf 100644 ---- a/lib/ephy-flatpak-utils.c -+++ b/lib/ephy-flatpak-utils.c -@@ -29,7 +29,7 @@ - #include <gio/gio.h> - #include <gio/gunixfdlist.h> - #if USE_LIBPORTAL --#include <libportal/portal-gtk3.h> -+#include <libportal-gtk3/portal-gtk3.h> - #endif - #include <string.h> - #include <sys/stat.h> -diff --git a/lib/meson.build b/lib/meson.build -index 264f9c5fb66268fc248f780b8d1c06c8291f856d..db0a0557f0ae634d7fb95e57aba0cd901ca4d6c1 100644 ---- a/lib/meson.build -+++ b/lib/meson.build -@@ -66,6 +66,7 @@ libephymisc_deps = [ - libxml_dep, - m_dep, - portal_dep, -+ portal_gtk_dep, - sqlite3_dep, - webkit2gtk_dep - ] -diff --git a/meson.build b/meson.build -index 0b9f862b22a23619289342ec39fa0a0274558c25..4285a975004e48366789a4e66f8b23f3af05a636 100644 ---- a/meson.build -+++ b/meson.build -@@ -95,7 +95,8 @@ libhandy_dep = dependency('libhandy-1', version: '>= 1.5.0') - libsecret_dep = dependency('libsecret-1', version: '>= 0.19.0') - libxml_dep = dependency('libxml-2.0', version: '>= 2.6.12') - nettle_dep = dependency('nettle', version: nettle_requirement) --portal_dep = dependency('libportal', version: '>= 0.0.2', required: get_option('libportal')) -+portal_dep = dependency('libportal', version: '>= 0.5', required: get_option('libportal')) -+portal_gtk_dep = dependency('libportal-gtk3', version: '>= 0.5', required: get_option('libportal')) - sqlite3_dep = dependency('sqlite3', version: '>= 3.22') - - if get_option('soup2').enabled() -@@ -108,7 +109,7 @@ else - webkit2gtk_web_extension_dep = dependency('webkit2gtk-web-extension-4.1', version: webkitgtk_requirement) - endif - --conf.set10('USE_LIBPORTAL', portal_dep.found()) -+conf.set10('USE_LIBPORTAL', portal_dep.found() and portal_gtk_dep.found()) - - webkit_revision = webkit2gtk_dep.get_variable(pkgconfig : 'revision', default_value : '') - if webkit_revision == 'tarball' diff --git a/gnu/packages/patches/fplll-std-fenv.patch b/gnu/packages/patches/fplll-std-fenv.patch deleted file mode 100644 index aa2438f0c9..0000000000 --- a/gnu/packages/patches/fplll-std-fenv.patch +++ /dev/null @@ -1,18 +0,0 @@ -See https://github.com/fplll/fplll/issues/444 - ---- fplll-5.3.3-checkout.old/fplll/enum/enumerate_base.h 2020-09-23 13:55:27.833769823 +0200 -+++ fplll-5.3.3-checkout/fplll/enum/enumerate_base.h 2020-09-23 13:56:14.313771769 +0200 -@@ -127,10 +127,10 @@ - int rounding_backup; - void save_rounding() - { -- rounding_backup = std::fegetround(); -- std::fesetround(FE_TONEAREST); -+ rounding_backup = fegetround(); -+ fesetround(FE_TONEAREST); - } -- void restore_rounding() { std::fesetround(rounding_backup); } -+ void restore_rounding() { fesetround(rounding_backup); } - - inline bool next_pos_up() - { diff --git a/gnu/packages/patches/java-commons-lang-fix-dependency.patch b/gnu/packages/patches/java-commons-lang-fix-dependency.patch new file mode 100644 index 0000000000..4e0d42d2ed --- /dev/null +++ b/gnu/packages/patches/java-commons-lang-fix-dependency.patch @@ -0,0 +1,38 @@ +Prevent java-commons-lang3 from depending on junit-bom when used with +maven. + +From 5c15b04ff9d05235460ea58f303fcf3502a943f2 Mon Sep 17 00:00:00 2001 +From: "Artyom V. Poptsov" <poptsov.artyom@gmail.com> +Date: Mon, 13 Jun 2022 09:25:42 +0300 +Subject: [PATCH] pom.xml: Remove dependency on 'junit-bom' + +--- + pom.xml | 12 ------------ + 1 file changed, 12 deletions(-) + +diff --git a/pom.xml b/pom.xml +index 167a85a47..6cd9be57b 100644 +--- a/pom.xml ++++ b/pom.xml +@@ -513,18 +513,6 @@ + </contributor> + </contributors> + +- <dependencyManagement> +- <dependencies> +- <dependency> +- <groupId>org.junit</groupId> +- <artifactId>junit-bom</artifactId> +- <version>5.7.1</version> +- <type>pom</type> +- <scope>import</scope> +- </dependency> +- </dependencies> +- </dependencyManagement> +- + <!-- Lang should depend on very little --> + <dependencies> + <!-- testing --> +-- +2.25.1 + diff --git a/gnu/packages/patches/kismet-unbundle-boost.patch b/gnu/packages/patches/kismet-unbundle-boost.patch new file mode 100644 index 0000000000..06e028bb23 --- /dev/null +++ b/gnu/packages/patches/kismet-unbundle-boost.patch @@ -0,0 +1,104 @@ +From 170ed96fe53531f93cdbca184faeda4bdf457169 Mon Sep 17 00:00:00 2001 +From: Petr Hodina <phodina@protonmail.com> +Date: Tue, 7 Jun 2022 11:34:29 +0200 +Subject: [PATCH] Unbundle boost. + + +diff --git a/globalregistry.h b/globalregistry.h +index 1974f54..3d97364 100644 +--- a/globalregistry.h ++++ b/globalregistry.h +@@ -34,7 +34,7 @@ + #include "util.h" + #include "uuid.h" + +-#include "boost/asio.hpp" ++#include <boost/asio.hpp> + + class global_registry; + +diff --git a/gpsgpsd_v3.h b/gpsgpsd_v3.h +index 77acb14..8cb3cd4 100644 +--- a/gpsgpsd_v3.h ++++ b/gpsgpsd_v3.h +@@ -25,7 +25,7 @@ + #include "kis_gps.h" + #include "timetracker.h" + +-#include "boost/asio.hpp" ++#include <boost/asio.hpp> + + using boost::asio::ip::tcp; + +diff --git a/gpsnmea_v2.h b/gpsnmea_v2.h +index d761fd3..7518b94 100644 +--- a/gpsnmea_v2.h ++++ b/gpsnmea_v2.h +@@ -28,7 +28,7 @@ + #define ASIO_HAS_STD_CHRONO + #define ASIO_HAS_MOVE + +-#include "boost/asio.hpp" ++#include <boost/asio.hpp> + + // Generic NMEA parser for GPS + +diff --git a/gpsserial_v3.h b/gpsserial_v3.h +index c9f633f..2fa9acb 100644 +--- a/gpsserial_v3.h ++++ b/gpsserial_v3.h +@@ -29,7 +29,7 @@ + #define ASIO_HAS_STD_CHRONO + #define ASIO_HAS_MOVE + +-#include "boost/asio.hpp" ++#include <boost/asio.hpp> + + // NMEA serial-attached GPS + // Implemented using ASIO serial +diff --git a/gpstcp_v2.h b/gpstcp_v2.h +index 75ec2e9..ab46216 100644 +--- a/gpstcp_v2.h ++++ b/gpstcp_v2.h +@@ -29,7 +29,7 @@ + #define ASIO_HAS_STD_CHRONO + #define ASIO_HAS_MOVE + +-#include "boost/asio.hpp" ++#include <boost/asio.hpp> + + using boost::asio::ip::tcp; + +diff --git a/kis_external.h b/kis_external.h +index 217f18a..af397b5 100644 +--- a/kis_external.h ++++ b/kis_external.h +@@ -42,7 +42,7 @@ + #include "kis_external_packet.h" + #include "kis_net_beast_httpd.h" + +-#include "boost/asio.hpp" ++#include <boost/asio.hpp> + using boost::asio::ip::tcp; + + #include <google/protobuf/message_lite.h> +diff --git a/kis_net_beast_httpd.h b/kis_net_beast_httpd.h +index 355996c..989745e 100644 +--- a/kis_net_beast_httpd.h ++++ b/kis_net_beast_httpd.h +@@ -28,9 +28,9 @@ + #include <thread> + #include <unordered_map> + +-#include "boost/asio.hpp" +-#include "boost/beast.hpp" +-#include "boost/optional.hpp" ++#include <boost/asio.hpp> ++#include <boost/beast.hpp> ++#include <boost/optional.hpp> + + #include "entrytracker.h" + #include "future_chainbuf.h" +-- +2.35.1 + diff --git a/gnu/packages/patches/llvm-roc-3.0.0-add_libraries.patch b/gnu/packages/patches/llvm-roc-3.0.0-add_libraries.patch deleted file mode 100644 index f6bc639f33..0000000000 --- a/gnu/packages/patches/llvm-roc-3.0.0-add_libraries.patch +++ /dev/null @@ -1,22 +0,0 @@ -Taken from https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-devel/llvm-roc/files - -diff -Naur a/clang/lib/Basic/CMakeLists.txt b/clang/lib/Basic/CMakeLists.txt ---- a/clang/lib/Basic/CMakeLists.txt 2019-12-28 07:42:49.119055933 +0100 -+++ b/clang/lib/Basic/CMakeLists.txt 2019-12-28 07:42:13.265056070 +0100 -@@ -2,6 +2,7 @@ - Core - MC - Support -+ Option - ) - - find_first_existing_vc_file("${LLVM_MAIN_SRC_DIR}" llvm_vc) -diff -Naur a/clang/lib/Driver/CMakeLists.txt b/clang/lib/Driver/CMakeLists.txt ---- a/clang/lib/Driver/CMakeLists.txt 2019-12-28 07:41:39.521056199 +0100 -+++ b/clang/lib/Driver/CMakeLists.txt 2019-12-28 07:40:23.998056487 +0100 -@@ -79,4 +79,5 @@ - LINK_LIBS - clangBasic - ${system_libs} -+ pthread - ) diff --git a/gnu/packages/patches/llvm-roc-4.2.0-add_Object.patch b/gnu/packages/patches/llvm-roc-4.2.0-add_Object.patch deleted file mode 100644 index f1762a558b..0000000000 --- a/gnu/packages/patches/llvm-roc-4.2.0-add_Object.patch +++ /dev/null @@ -1,13 +0,0 @@ -Taken from https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-devel/llvm-roc/files - -diff --color -uprN orig/lib/Target/AMDGPU/Disassembler/CMakeLists.txt llvm/lib/Target/AMDGPU/Disassembler/CMakeLists.txt ---- a/llvm/lib/Target/AMDGPU/Disassembler/CMakeLists.txt 2021-06-14 11:57:54.222796911 +0800 -+++ b/llvm/lib/Target/AMDGPU/Disassembler/CMakeLists.txt 2021-06-14 11:58:35.206796875 +0800 -@@ -11,6 +11,7 @@ add_llvm_component_library(LLVMAMDGPUDis - MC - MCDisassembler - Support -+ Object - - ADD_TO_COMPONENT - AMDGPU diff --git a/gnu/packages/patches/llvm-roc-5.0.0-linkdl.patch b/gnu/packages/patches/llvm-roc-5.0.0-linkdl.patch new file mode 100644 index 0000000000..d6ed3aef93 --- /dev/null +++ b/gnu/packages/patches/llvm-roc-5.0.0-linkdl.patch @@ -0,0 +1,15 @@ +Taken from the Gentoo patch: +https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-devel/llvm-roc/files/llvm-roc-5.0.0-linkdl.patch + +LLVMOffloadArch should link libdl to fix undefined symbol 'dlsym' when linking + +--- a/llvm/lib/OffloadArch/offload-arch/CMakeLists.txt ++++ b/llvm/lib/OffloadArch/offload-arch/CMakeLists.txt +@@ -3,6 +3,7 @@ add_llvm_tool(offload-arch + ${CMAKE_CURRENT_SOURCE_DIR}/offload-arch.cpp + DEPENDS generated-table LLVMOffloadArch + ) ++target_link_libraries(LLVMOffloadArch PRIVATE ${CMAKE_DL_LIBS}) + target_link_libraries(offload-arch PRIVATE LLVMOffloadArch) + + if(CMAKE_HOST_UNIX) diff --git a/gnu/packages/patches/mathjax-3.1.2-no-a11y.patch b/gnu/packages/patches/mathjax-3.1.2-no-a11y.patch new file mode 100644 index 0000000000..97bd82c536 --- /dev/null +++ b/gnu/packages/patches/mathjax-3.1.2-no-a11y.patch @@ -0,0 +1,281 @@ +commit 9bb6f1e11264fb075bfa70fa3684f10a32414594 +Author: Lars-Dominik Braun <lars@6xq.net> +Date: Wed Dec 1 14:28:06 2021 +0100 + + guix: Remove accessibility. + + We cannot build speech-rule-engine from source and thus all dependents + must be removed. This affects all a11y modules and menu items, which + may try to load components. + +diff --git a/components/src/dependencies.js b/components/src/dependencies.js +index f9be6f93..822f8fb6 100644 +--- a/components/src/dependencies.js ++++ b/components/src/dependencies.js +@@ -16,6 +16,3 @@ + export const dependencies = { +- 'a11y/semantic-enrich': ['input/mml', '[sre]'], +- 'a11y/complexity': ['a11y/semantic-enrich'], +- 'a11y/explorer': ['a11y/semantic-enrich', 'ui/menu'], + '[tex]/all-packages': ['input/tex-base'], + '[tex]/action': ['input/tex-base', '[tex]/newcommand'], +@@ -58,6 +55,5 @@ export const dependencies = { + export const paths = { + tex: '[mathjax]/input/tex/extensions', +- sre: '[mathjax]/sre/' + (typeof window === 'undefined' ? 'sre-node' : 'sre_browser') + }; + + const allPackages = [ +diff --git a/components/src/mml-chtml/mml-chtml.js b/components/src/mml-chtml/mml-chtml.js +index c0bd18ee..a283a1ab 100644 +--- a/components/src/mml-chtml/mml-chtml.js ++++ b/components/src/mml-chtml/mml-chtml.js +@@ -5,5 +5,4 @@ import '../input/mml/mml.js'; + import '../output/chtml/chtml.js'; + import '../output/chtml/fonts/tex/tex.js'; + import '../ui/menu/menu.js'; +-import '../a11y/assistive-mml/assistive-mml.js'; + import '../startup/startup.js'; +diff --git a/components/src/mml-chtml/preload.js b/components/src/mml-chtml/preload.js +index e3f202f7..3699570e 100644 +--- a/components/src/mml-chtml/preload.js ++++ b/components/src/mml-chtml/preload.js +@@ -5,5 +5,5 @@ Loader.preLoad( + 'core', + 'input/mml', + 'output/chtml', 'output/chtml/fonts/tex.js', +- 'ui/menu', 'a11y/assistive-mml' ++ 'ui/menu' + ); +diff --git a/components/src/mml-svg/mml-svg.js b/components/src/mml-svg/mml-svg.js +index 172b2433..23b66e69 100644 +--- a/components/src/mml-svg/mml-svg.js ++++ b/components/src/mml-svg/mml-svg.js +@@ -5,5 +5,4 @@ import '../input/mml/mml.js'; + import '../output/svg/svg.js'; + import '../output/svg/fonts/tex/tex.js'; + import '../ui/menu/menu.js'; +-import '../a11y/assistive-mml/assistive-mml.js'; + import '../startup/startup.js'; +diff --git a/components/src/mml-svg/preload.js b/components/src/mml-svg/preload.js +index 3cb47d42..89f6b9f9 100644 +--- a/components/src/mml-svg/preload.js ++++ b/components/src/mml-svg/preload.js +@@ -5,5 +5,5 @@ Loader.preLoad( + 'core', + 'input/mml', + 'output/svg', 'output/svg/fonts/tex.js', +- 'ui/menu', 'a11y/assistive-mml' ++ 'ui/menu' + ); +diff --git a/components/src/source.js b/components/src/source.js +index ba6d6835..02ecf18d 100644 +--- a/components/src/source.js ++++ b/components/src/source.js +@@ -62,11 +62,5 @@ export const source = { + 'output/chtml/fonts/tex': `${src}/output/chtml/fonts/tex/tex.js`, + 'output/svg': `${src}/output/svg/svg.js`, + 'output/svg/fonts/tex': `${src}/output/svg/fonts/tex/tex.js`, +- 'a11y/assistive-mml': `${src}/a11y/assistive-mml/assistive-mml.js`, +- 'a11y/semantic-enrich': `${src}/a11y/semantic-enrich/semantic-enrich.js`, +- 'a11y/complexity': `${src}/a11y/complexity/complexity.js`, +- 'a11y/explorer': `${src}/a11y/explorer/explorer.js`, +- '[sre]': (typeof window === 'undefined' ? `${src}/../../js/a11y/sre-node.js` : +- `${src}/../../node_modules/speech-rule-engine/lib/sre_browser.js`), + 'ui/menu': `${src}/ui/menu/menu.js`, + 'ui/safe': `${src}/ui/safe/safe.js`, +diff --git a/components/src/tex-chtml-full/preload.js b/components/src/tex-chtml-full/preload.js +index 76c81c92..0eb3a8e2 100644 +--- a/components/src/tex-chtml-full/preload.js ++++ b/components/src/tex-chtml-full/preload.js +@@ -5,5 +5,5 @@ Loader.preLoad( + 'core', + 'input/tex-full', + 'output/chtml', 'output/chtml/fonts/tex.js', +- 'ui/menu', 'a11y/assistive-mml' ++ 'ui/menu' + ); +diff --git a/components/src/tex-chtml-full/tex-chtml-full.js b/components/src/tex-chtml-full/tex-chtml-full.js +index 12291be9..c3f59e6b 100644 +--- a/components/src/tex-chtml-full/tex-chtml-full.js ++++ b/components/src/tex-chtml-full/tex-chtml-full.js +@@ -5,5 +5,4 @@ import '../input/tex-full/tex-full.js'; + import '../output/chtml/chtml.js'; + import '../output/chtml/fonts/tex/tex.js'; + import '../ui/menu/menu.js'; +-import '../a11y/assistive-mml/assistive-mml.js'; + import '../startup/startup.js'; +diff --git a/components/src/tex-chtml/preload.js b/components/src/tex-chtml/preload.js +index 89f110c5..5dae092f 100644 +--- a/components/src/tex-chtml/preload.js ++++ b/components/src/tex-chtml/preload.js +@@ -5,5 +5,5 @@ Loader.preLoad( + 'core', + 'input/tex', + 'output/chtml', 'output/chtml/fonts/tex.js', +- 'ui/menu', 'a11y/assistive-mml' ++ 'ui/menu' + ); +diff --git a/components/src/tex-chtml/tex-chtml.js b/components/src/tex-chtml/tex-chtml.js +index 8d98865e..4d100a48 100644 +--- a/components/src/tex-chtml/tex-chtml.js ++++ b/components/src/tex-chtml/tex-chtml.js +@@ -5,5 +5,4 @@ import '../input/tex/tex.js'; + import '../output/chtml/chtml.js'; + import '../output/chtml/fonts/tex/tex.js'; + import '../ui/menu/menu.js'; +-import '../a11y/assistive-mml/assistive-mml.js'; + import '../startup/startup.js'; +diff --git a/components/src/tex-mml-chtml/preload.js b/components/src/tex-mml-chtml/preload.js +index 7adb6a3b..3945370f 100644 +--- a/components/src/tex-mml-chtml/preload.js ++++ b/components/src/tex-mml-chtml/preload.js +@@ -5,5 +5,5 @@ Loader.preLoad( + 'core', + 'input/tex', 'input/mml', + 'output/chtml', 'output/chtml/fonts/tex.js', +- 'ui/menu', 'a11y/assistive-mml' ++ 'ui/menu' + ); +diff --git a/components/src/tex-mml-chtml/tex-mml-chtml.js b/components/src/tex-mml-chtml/tex-mml-chtml.js +index 4167bd59..0b068dc6 100644 +--- a/components/src/tex-mml-chtml/tex-mml-chtml.js ++++ b/components/src/tex-mml-chtml/tex-mml-chtml.js +@@ -6,5 +6,4 @@ import '../input/mml/mml.js'; + import '../output/chtml/chtml.js'; + import '../output/chtml/fonts/tex/tex.js'; + import '../ui/menu/menu.js'; +-import '../a11y/assistive-mml/assistive-mml.js'; + import '../startup/startup.js'; +diff --git a/components/src/tex-mml-svg/preload.js b/components/src/tex-mml-svg/preload.js +index 69d6a2c5..bad39af1 100644 +--- a/components/src/tex-mml-svg/preload.js ++++ b/components/src/tex-mml-svg/preload.js +@@ -5,5 +5,5 @@ Loader.preLoad( + 'core', + 'input/tex', 'input/mml', + 'output/svg', 'output/svg/fonts/tex.js', +- 'ui/menu', 'a11y/assistive-mml' ++ 'ui/menu' + ); +diff --git a/components/src/tex-mml-svg/tex-mml-svg.js b/components/src/tex-mml-svg/tex-mml-svg.js +index acff78dd..3ca4e6cf 100644 +--- a/components/src/tex-mml-svg/tex-mml-svg.js ++++ b/components/src/tex-mml-svg/tex-mml-svg.js +@@ -6,5 +6,4 @@ import '../input/mml/mml.js'; + import '../output/svg/svg.js'; + import '../output/svg/fonts/tex/tex.js'; + import '../ui/menu/menu.js'; +-import '../a11y/assistive-mml/assistive-mml.js'; + import '../startup/startup.js'; +diff --git a/components/src/tex-svg-full/preload.js b/components/src/tex-svg-full/preload.js +index d4165cf8..8871781a 100644 +--- a/components/src/tex-svg-full/preload.js ++++ b/components/src/tex-svg-full/preload.js +@@ -5,5 +5,5 @@ Loader.preLoad( + 'core', + 'input/tex-full', + 'output/svg', 'output/svg/fonts/tex.js', +- 'ui/menu', 'a11y/assistive-mml' ++ 'ui/menu' + ); +diff --git a/components/src/tex-svg-full/tex-svg-full.js b/components/src/tex-svg-full/tex-svg-full.js +index 55ce32f2..09c7e65c 100644 +--- a/components/src/tex-svg-full/tex-svg-full.js ++++ b/components/src/tex-svg-full/tex-svg-full.js +@@ -5,5 +5,4 @@ import '../input/tex-full/tex-full.js'; + import '../output/svg/svg.js'; + import '../output/svg/fonts/tex/tex.js'; + import '../ui/menu/menu.js'; +-import '../a11y/assistive-mml/assistive-mml.js'; + import '../startup/startup.js'; +diff --git a/components/src/tex-svg/preload.js b/components/src/tex-svg/preload.js +index 284ce317..3eb02665 100644 +--- a/components/src/tex-svg/preload.js ++++ b/components/src/tex-svg/preload.js +@@ -5,5 +5,5 @@ Loader.preLoad( + 'core', + 'input/tex', + 'output/svg', 'output/svg/fonts/tex.js', +- 'ui/menu', 'a11y/assistive-mml' ++ 'ui/menu' + ); +diff --git a/components/src/tex-svg/tex-svg.js b/components/src/tex-svg/tex-svg.js +index f4ce644e..5d8caa5c 100644 +--- a/components/src/tex-svg/tex-svg.js ++++ b/components/src/tex-svg/tex-svg.js +@@ -5,5 +5,4 @@ import '../input/tex/tex.js'; + import '../output/svg/svg.js'; + import '../output/svg/fonts/tex/tex.js'; + import '../ui/menu/menu.js'; +-import '../a11y/assistive-mml/assistive-mml.js'; + import '../startup/startup.js'; +diff --git a/ts/ui/menu/Menu.ts b/ts/ui/menu/Menu.ts +index 7553aafc..ca0b9780 100644 +--- a/ts/ui/menu/Menu.ts ++++ b/ts/ui/menu/Menu.ts +@@ -135,7 +135,7 @@ export class Menu { + autocollapse: false, + collapsible: false, + inTabOrder: true, +- assistiveMml: true, ++ assistiveMml: false, + explorer: false + }, + jax: { +@@ -475,7 +475,7 @@ export class Menu { + this.command('Reset', 'Reset to defaults', () => this.resetDefaults()) + ]), + this.submenu('Accessibility', 'Accessibility', [ +- this.checkbox('Activate', 'Activate', 'explorer'), ++ this.checkbox('Activate', 'Activate', 'explorer', {disabled: true}), + this.submenu('Speech', 'Speech', [ + this.checkbox('Speech', 'Speech Output', 'speech'), + this.checkbox('Subtitles', 'Speech Subtitles', 'subtitles'), +@@ -534,11 +534,11 @@ export class Menu { + this.checkbox('Prefix', 'Prefix', 'infoPrefix') + ], true), + this.rule(), +- this.checkbox('Collapsible', 'Collapsible Math', 'collapsible'), ++ this.checkbox('Collapsible', 'Collapsible Math', 'collapsible', {disabled: true}), + this.checkbox('AutoCollapse', 'Auto Collapse', 'autocollapse', {disabled: true}), + this.rule(), + this.checkbox('InTabOrder', 'Include in Tab Order', 'inTabOrder'), +- this.checkbox('AssistiveMml', 'Include Hidden MathML', 'assistiveMml') ++ this.checkbox('AssistiveMml', 'Include Hidden MathML', 'assistiveMml', {disabled: true}) + ]), + this.submenu('Language', 'Language'), + this.rule(), +@@ -722,6 +722,7 @@ export class Menu { + * @param {boolean} mml True to output hidden Mathml, false to not + */ + protected setAssistiveMml(mml: boolean) { ++ mml = false; + this.document.options.enableAssistiveMml = mml; + if (!mml || (MathJax._.a11y && MathJax._.a11y['assistive-mml'])) { + this.rerender(); +@@ -734,6 +735,7 @@ export class Menu { + * @param {boolean} explore True to enable the explorer, false to not + */ + protected setExplorer(explore: boolean) { ++ explore = false; + this.enableExplorerItems(explore); + this.document.options.enableExplorer = explore; + if (!explore || (MathJax._.a11y && MathJax._.a11y.explorer)) { +@@ -747,6 +749,7 @@ export class Menu { + * @param {boolean} collapse True to enable collapsible math, false to not + */ + protected setCollapsible(collapse: boolean) { ++ collapse = false; + this.document.options.enableComplexity = collapse; + if (!collapse || (MathJax._.a11y && MathJax._.a11y.complexity)) { + this.rerender(STATE.COMPILED); +@@ -845,6 +848,8 @@ export class Menu { + * @param {string} component The name of the a11y component to load + */ + public loadA11y(component: string) { ++ console.log ('ignoring load for', component); ++ return; + const noEnrich = !STATE.ENRICHED; + this.loadComponent('a11y/' + component, () => { + const startup = MathJax.startup; diff --git a/gnu/packages/patches/nftables-fix-makefile.patch b/gnu/packages/patches/nftables-fix-makefile.patch deleted file mode 100644 index 1660635874..0000000000 --- a/gnu/packages/patches/nftables-fix-makefile.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 18a08fb7f0443f8bde83393bd6f69e23a04246b3 Mon Sep 17 00:00:00 2001 -From: Pablo Neira Ayuso <pablo@netfilter.org> -Date: Tue, 22 Feb 2022 00:56:36 +0100 -Subject: examples: compile with `make check' and add AM_CPPFLAGS - -Compile examples via `make check' like libnftnl does. Use AM_CPPFLAGS to -specify local headers via -I. - -Unfortunately, `make distcheck' did not catch this compile time error in -my system, since it was using the nftables/libnftables.h file of the -previous nftables release. - -Fixes: 5b364657a35f ("build: missing SUBIRS update") -Fixes: caf2a6ad2d22 ("examples: add libnftables example program") -Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> ---- - examples/Makefile.am | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/examples/Makefile.am b/examples/Makefile.am -index c972170d..3b8b0b67 100644 ---- a/examples/Makefile.am -+++ b/examples/Makefile.am -@@ -1,4 +1,6 @@ --noinst_PROGRAMS = nft-buffer \ -+check_PROGRAMS = nft-buffer \ - nft-json-file - -+AM_CPPFLAGS = -I$(top_srcdir)/include -+ - LDADD = $(top_builddir)/src/libnftables.la --- -cgit v1.2.3 - diff --git a/gnu/packages/patches/omake-fix-non-determinism.patch b/gnu/packages/patches/omake-fix-non-determinism.patch index 813ce3cd7d..e5060bd703 100644 --- a/gnu/packages/patches/omake-fix-non-determinism.patch +++ b/gnu/packages/patches/omake-fix-non-determinism.patch @@ -1,6 +1,6 @@ -From 2e7e254160506dc00f1beabf170512a8e932934b Mon Sep 17 00:00:00 2001 +From 9f70bca2d823b93b334ecb0f92e940d20aafc1c6 Mon Sep 17 00:00:00 2001 From: Julien Lepiller <julien@lepiller.eu> -Date: Sat, 31 Dec 2016 15:43:38 +0100 +Date: Sat, 18 Jun 2022 12:02:49 +0200 Subject: [PATCH] fix build date in binary --- @@ -8,19 +8,19 @@ Subject: [PATCH] fix build date in binary 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/magic/omake_gen_magic.ml b/src/magic/omake_gen_magic.ml -index b2419ba..fad52f5 100644 +index c2b9329..3d36c0c 100644 --- a/src/magic/omake_gen_magic.ml +++ b/src/magic/omake_gen_magic.ml @@ -150,7 +150,7 @@ let ir_magic = "%s" let obj_magic = "%s" let lib_dir = "%s" let version = "%s" --let version_message = "OMake %s:\\n\\tbuild [%s %s %d %02d:%02d:%02d %d]\\n\\ton %s" +-let version_message = "OMake %s:\n build [%s %s %d %02d:%02d:%02d %d]\n on %s" +let version_message = "OMake %s" |} default_save_interval digest_len -@@ -160,15 +160,7 @@ let version_message = "OMake %s:\\n\\tbuild [%s %s %d %02d:%02d:%02d %d]\\n\\ton +@@ -160,15 +160,7 @@ let version_message = "OMake %s:\n build [%s %s %d %02d:%02d:%02d %d]\n on (digest_files ".omo.magic" ".omo" omo_files) (String.escaped libdir) (String.escaped (shorten_version version)) @@ -37,5 +37,6 @@ index b2419ba..fad52f5 100644 List.iter (fun (name,value) -> Printf.fprintf buf "let %s = %S\n" name value --- -2.11.0 +-- +2.36.1 + diff --git a/gnu/packages/patches/public-inbox-fix-spawn-test.patch b/gnu/packages/patches/public-inbox-fix-spawn-test.patch new file mode 100644 index 0000000000..2739b1974d --- /dev/null +++ b/gnu/packages/patches/public-inbox-fix-spawn-test.patch @@ -0,0 +1,43 @@ +From 5593489d9c3ce22b1942f35c7ebb0e06fcf2bfa8 Mon Sep 17 00:00:00 2001 +From: Thiago Jung Bauermann <bauermann@kolabnow.com> +Date: Fri, 10 Jun 2022 12:39:18 -0300 +Subject: [PATCH] t/spawn: Find invalid PID to try to join its process group + +In the container used to build packages of the GNU Guix distribution, PID 1 +runs as the same user as the test so this spawn that should fail actually +succeeds. + +Fix the problem by going through different PIDs and picking one that +either doesn't exist or we aren't allowed to signal. +--- + +This patch is taken from the public-inbox repository and will appear in the +release after v1.8. + + t/spawn.t | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/t/spawn.t b/t/spawn.t +index 6168c1f6171c..5fc99a2a101c 100644 +--- a/t/spawn.t ++++ b/t/spawn.t +@@ -24,7 +24,18 @@ SKIP: { + is(waitpid($pid, 0), $pid, 'waitpid succeeds on spawned process'); + is($?, 0, 'true exited successfully'); + pipe(my ($r, $w)) or BAIL_OUT; +- $pid = eval { spawn(['true'], undef, { pgid => 1, 2 => $w }) }; ++ ++ # Find invalid PID to try to join its process group. ++ my $wrong_pgid = 1; ++ for (my $i=0x7fffffff; $i >= 2; $i--) { ++ if (kill(0, $i) == 0) { ++ $wrong_pgid = $i; ++ last; ++ } ++ } ++ ++ # Test spawn behavior when it can't join the requested process group. ++ $pid = eval { spawn(['true'], undef, { pgid => $wrong_pgid, 2 => $w }) }; + close $w; + my $err = do { local $/; <$r> }; + # diag "$err ($@)"; diff --git a/gnu/packages/patches/python-zeep-Fix-pytest_httpx-test-cases.patch b/gnu/packages/patches/python-zeep-Fix-pytest_httpx-test-cases.patch new file mode 100644 index 0000000000..7f022b4e46 --- /dev/null +++ b/gnu/packages/patches/python-zeep-Fix-pytest_httpx-test-cases.patch @@ -0,0 +1,73 @@ +From 2907848185adcb4e6d8c093db6c617c64cb8c8bf Mon Sep 17 00:00:00 2001 +From: Georg Sauthoff <mail@gms.tf> +Date: Sat, 5 Feb 2022 14:42:10 +0100 +Subject: [PATCH] Use current pytest_httpx add_response keyword + +The new text keyword was introduced in pytest_httpx 0.14, deprecated +in 0.14 and 0.17 and removed in 0.18. + +Thus, an appropriate constraint to that dependency is added. + +FWIW, this fixes the test cases on the upcoming Fedora 36 release. + +See also: +- https://github.com/Colin-b/pytest_httpx/blob/develop/CHANGELOG.md#0180---2022-01-17 +- https://github.com/Colin-b/pytest_httpx/blob/develop/CHANGELOG.md#0140---2021-10-22 +--- + setup.py | 2 +- + tests/test_async_transport.py | 8 ++++---- + 2 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/setup.py b/setup.py +index 4cf9073b..58a5c24f 100755 +--- a/setup.py ++++ b/setup.py +@@ -29,7 +29,7 @@ + "freezegun==0.3.15", + "pretend==1.0.9", + "pytest-cov==2.8.1", +- "pytest-httpx", ++ "pytest-httpx>=0.14", + "pytest-asyncio", + "pytest==6.2.5", + "requests_mock>=0.7.0", +diff --git a/tests/test_async_transport.py b/tests/test_async_transport.py +index f5e8d1b0..ee215265 100644 +--- a/tests/test_async_transport.py ++++ b/tests/test_async_transport.py +@@ -19,7 +19,7 @@ def test_load(httpx_mock): + cache = stub(get=lambda url: None, add=lambda url, content: None) + transport = AsyncTransport(cache=cache) + +- httpx_mock.add_response(url="http://tests.python-zeep.org/test.xml", data="x") ++ httpx_mock.add_response(url="http://tests.python-zeep.org/test.xml", text="x") + result = transport.load("http://tests.python-zeep.org/test.xml") + assert result == b"x" + +@@ -30,7 +30,7 @@ def test_load_cache(httpx_mock): + cache = InMemoryCache() + transport = AsyncTransport(cache=cache) + +- httpx_mock.add_response(url="http://tests.python-zeep.org/test.xml", data="x") ++ httpx_mock.add_response(url="http://tests.python-zeep.org/test.xml", text="x") + result = transport.load("http://tests.python-zeep.org/test.xml") + assert result == b"x" + +@@ -45,7 +45,7 @@ async def test_post(httpx_mock: HTTPXMock): + + envelope = etree.Element("Envelope") + +- httpx_mock.add_response(url="http://tests.python-zeep.org/test.xml", data="x") ++ httpx_mock.add_response(url="http://tests.python-zeep.org/test.xml", text="x") + result = await transport.post_xml( + "http://tests.python-zeep.org/test.xml", envelope=envelope, headers={} + ) +@@ -67,7 +67,7 @@ async def test_http_error(httpx_mock: HTTPXMock): + transport = AsyncTransport() + + httpx_mock.add_response( +- url="http://tests.python-zeep.org/test.xml", data="x", status_code=500 ++ url="http://tests.python-zeep.org/test.xml", text="x", status_code=500 + ) + with pytest.raises(exceptions.TransportError) as exc: + transport.load("http://tests.python-zeep.org/test.xml") diff --git a/gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch b/gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch index c91d273f92..fc2c74718a 100644 --- a/gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch +++ b/gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch @@ -11,11 +11,11 @@ Without these additional required dependencies, linking fails with errors such a CMakeLists.txt | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 1794a07..c7b852a 100644 +diff --git a/lib/comgr/CMakeLists.txt b/lib/comgr/CMakeLists.txt +index 8b5ca2f..a7d226f 100644 --- a/lib/comgr/CMakeLists.txt +++ b/lib/comgr/CMakeLists.txt -@@ -207,7 +207,11 @@ install(FILES +@@ -294,7 +294,11 @@ install(FILES DESTINATION "${AMD_COMGR_PACKAGE_PREFIX}") set(CLANG_LIBS @@ -28,7 +28,7 @@ index 1794a07..c7b852a 100644 set(LLD_LIBS lldELF -@@ -218,8 +222,20 @@ if (LLVM_LINK_LLVM_DYLIB) +@@ -305,8 +309,21 @@ if (LLVM_LINK_LLVM_DYLIB) else() llvm_map_components_to_libnames(LLVM_LIBS ${LLVM_TARGETS_TO_BUILD} @@ -46,7 +46,8 @@ index 1794a07..c7b852a 100644 + IRReader + CodeGen + Linker ++ Demangle + BinaryFormat) endif() - target_link_libraries(amd_comgr + target_link_options(amd_comgr diff --git a/gnu/packages/patches/rocm-opencl-runtime-3.10.0-includes.patch b/gnu/packages/patches/rocm-opencl-runtime-3.10.0-includes.patch deleted file mode 100644 index d81bb0747f..0000000000 --- a/gnu/packages/patches/rocm-opencl-runtime-3.10.0-includes.patch +++ /dev/null @@ -1,14 +0,0 @@ -Add missing include dirs for ROCclr. - ---- a/amdocl/CMakeLists.txt 2020-12-05 22:05:55.838529158 +0100 -+++ b/amdocl/CMakeLists.txt 2020-12-05 22:07:35.677524507 +0100 -@@ -23,6 +23,9 @@ - include_directories(${CMAKE_CURRENT_LIST_DIR}/../khronos) - include_directories(${CMAKE_CURRENT_LIST_DIR}/../khronos/headers) - include_directories(${CMAKE_CURRENT_LIST_DIR}/../khronos/headers/opencl2.2) -+include_directories(${ROCclr_DIR}/../../../include) -+include_directories(${ROCclr_DIR}/../../../include/compiler/lib/include/) -+include_directories(${ROCclr_DIR}/../../../include/elf/) - - if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR - (CMAKE_${COMPILER}_COMPILER_ID MATCHES "Clang")) diff --git a/gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch b/gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch index 5709e0d19a..97376fd421 100644 --- a/gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch +++ b/gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch @@ -4,25 +4,26 @@ diff --git a/CMakeLists.txt.orig b/CMakeLists.txt index 76847d3..3f62bfe 100644 --- a/CMakeLists.txt.orig +++ b/CMakeLists.txt -@@ -72,7 +72,7 @@ find_package(ROCclr REQUIRED CONFIG +@@ -15,9 +15,9 @@ option(FILE_REORG_BACKWARD_COMPATIBILITY "Enable File Reorganization backward co - add_subdirectory(khronos/icd) + + set(OPENCL_ICD_LOADER_HEADERS_DIR "${CMAKE_CURRENT_LIST_DIR}/khronos/headers/opencl2.2" CACHE PATH "") + #add_subdirectory(khronos/icd) add_subdirectory(amdocl) -add_subdirectory(tools/clinfo) +#add_subdirectory(tools/clinfo) add_subdirectory(tools/cltrace) if(BUILD_TESTS) add_subdirectory(tests/ocltst) -@@ -108,9 +108,9 @@ endif() - ###--- Packaging ------------------------------------------------------------### +diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt +index 48353eb..cd1e7c1 100644 +--- a/packaging/CMakeLists.txt ++++ b/packaging/CMakeLists.txt +@@ -5,6 +5,6 @@ set(CPACK_COMPONENTS_ALL binary dev icd) + set(CPACK_DEB_COMPONENT_INSTALL ON) + set(CPACK_RPM_COMPONENT_INSTALL ON) - # MAIN package --install(PROGRAMS $<TARGET_FILE:clinfo> -- DESTINATION bin -- COMPONENT MAIN) -+#install(PROGRAMS $<TARGET_FILE:clinfo> -+# DESTINATION bin -+# COMPONENT MAIN) - install(PROGRAMS $<TARGET_FILE:cltrace> - DESTINATION lib - COMPONENT MAIN) +-install(TARGETS clinfo DESTINATION bin COMPONENT binary) ++#install(TARGETS clinfo DESTINATION bin COMPONENT binary) + install(TARGETS amdocl DESTINATION lib COMPONENT binary) + install(FILES ${CMAKE_SOURCE_DIR}/LICENSE.txt DESTINATION share/doc/${CMAKE_PROJECT_NAME} COMPONENT binary) diff --git a/gnu/packages/patches/rocm-opencl-runtime-4.3-nocltrace.patch b/gnu/packages/patches/rocm-opencl-runtime-4.3-nocltrace.patch deleted file mode 100644 index e0328d7734..0000000000 --- a/gnu/packages/patches/rocm-opencl-runtime-4.3-nocltrace.patch +++ /dev/null @@ -1,25 +0,0 @@ -Do not build and install cltrace. - -diff --git a/CMakeLists.txt.orig b/CMakeLists.txt -index c449db4..9cff673 100644 ---- a/CMakeLists.txt.orig -+++ b/CMakeLists.txt -@@ -73,7 +73,7 @@ find_package(ROCclr REQUIRED CONFIG - #add_subdirectory(khronos/icd) - add_subdirectory(amdocl) - #add_subdirectory(tools/clinfo) --add_subdirectory(tools/cltrace) -+#add_subdirectory(tools/cltrace) - if(BUILD_TESTS) - add_subdirectory(tests/ocltst) - endif() -@@ -108,9 +108,6 @@ endif() - #install(PROGRAMS $<TARGET_FILE:clinfo> - # DESTINATION bin - # COMPONENT MAIN) --install(PROGRAMS $<TARGET_FILE:cltrace> -- DESTINATION lib -- COMPONENT MAIN) - install(PROGRAMS $<TARGET_FILE:amdocl64> - DESTINATION lib - COMPONENT MAIN) diff --git a/gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch b/gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch index ed20f02503..9f80d7da9d 100644 --- a/gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch +++ b/gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch @@ -2,36 +2,21 @@ Do not build and install libOpenCL. --- b/CMakeLists.txt +++ b/CMakeLists.txt -@@ -70,7 +70,7 @@ - ${ROCclr_DIR} - ${LIBROCclr_STATIC_DIR}) +@@ -15,9 +15,9 @@ option(FILE_REORG_BACKWARD_COMPATIBILITY "Enable File Reorganization backward co + + set(OPENCL_ICD_LOADER_HEADERS_DIR "${CMAKE_CURRENT_LIST_DIR}/khronos/headers/opencl2.2" CACHE PATH "") -add_subdirectory(khronos/icd) +#add_subdirectory(khronos/icd) add_subdirectory(amdocl) - #add_subdirectory(tools/clinfo) + add_subdirectory(tools/clinfo) add_subdirectory(tools/cltrace) -@@ -93,9 +93,6 @@ - OUTPUT_VARIABLE OPENCL_VERSION_GITDATE - OUTPUT_STRIP_TRAILING_WHITESPACE) + if(BUILD_TESTS) + add_subdirectory(tests/ocltst) +@@ -25,16 +25,6 @@ endif() + + ###--- Packaging ------------------------------------------------------------### --get_target_property(OPENCL_LIB_VERSION_MAJOR OpenCL SOVERSION) --get_target_property(OPENCL_LIB_VERSION_STRING OpenCL VERSION) -- - find_package(ROCM QUIET CONFIG PATHS /opt/rocm) - - if(ROCM_FOUND) -@@ -117,25 +114,6 @@ - install(PROGRAMS $<TARGET_FILE:amdocl64> - DESTINATION lib - COMPONENT MAIN) --install(PROGRAMS $<TARGET_FILE:OpenCL> -- DESTINATION lib -- COMPONENT MAIN) --install(PROGRAMS $<TARGET_SONAME_FILE:OpenCL> -- DESTINATION lib -- COMPONENT MAIN) -- -# DEV package -install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/khronos/headers/opencl2.2/CL" - DESTINATION include @@ -41,15 +26,26 @@ Do not build and install libOpenCL. - PATTERN cl_d3d11.h EXCLUDE - PATTERN cl_dx9_media_sharing.h EXCLUDE - PATTERN cl_egl.h EXCLUDE) --install(PROGRAMS $<TARGET_LINKER_FILE:OpenCL> -- DESTINATION lib -- COMPONENT DEV) - +- ############################# # Packaging steps + ############################# +@@ -53,8 +43,8 @@ if (DEFINED ROCM_PATCH_VERSION) + set(OPENCL_AMD_ICD_FILE "amdocl64_${ROCM_PATCH_VERSION}.icd") + endif() + +-get_target_property(OPENCL_LIB_VERSION_MAJOR OpenCL SOVERSION) +-get_target_property(OPENCL_LIB_VERSION_STRING OpenCL VERSION) ++#get_target_property(OPENCL_LIB_VERSION_MAJOR OpenCL SOVERSION) ++#get_target_property(OPENCL_LIB_VERSION_STRING OpenCL VERSION) + + #Set Package Version + set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) +diff --git a/khronos/icd/CMakeLists.txt b/khronos/icd/CMakeLists.txt +index 4bafa86..987dd6f 100644 --- a/khronos/icd/CMakeLists.txt 2020-06-07 16:05:32.425022904 +0200 +++ b/khronos/icd/CMakeLists.txt 2020-06-07 16:06:03.273022786 +0200 -@@ -132,7 +132,7 @@ +@@ -132,7 +132,7 @@ if (BUILD_TESTING) add_subdirectory (test) endif() @@ -61,3 +57,14 @@ Do not build and install libOpenCL. +# RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} +# ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} +# LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) +diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt +index 48353eb..cd1e7c1 100644 +--- a/packaging/CMakeLists.txt ++++ b/packaging/CMakeLists.txt +@@ -17,5 +17,5 @@ install(DIRECTORY ${CMAKE_SOURCE_DIR}/khronos/headers/opencl2.2/CL + PATTERN cl_dx9_media_sharing.h EXCLUDE + PATTERN cl_egl.h EXCLUDE ) + +-install(TARGETS OpenCL DESTINATION lib COMPONENT icd ) ++#install(TARGETS OpenCL DESTINATION lib COMPONENT icd ) + install(FILES ${CMAKE_SOURCE_DIR}/khronos/icd/LICENSE DESTINATION share/doc/rocm-ocl-icd COMPONENT icd) diff --git a/gnu/packages/patches/timescaledb-flaky-test.patch b/gnu/packages/patches/timescaledb-flaky-test.patch new file mode 100644 index 0000000000..6268bcecad --- /dev/null +++ b/gnu/packages/patches/timescaledb-flaky-test.patch @@ -0,0 +1,107 @@ +Use fixed dates in test for consistent results. + +Taken from upstream: + + https://github.com/timescale/timescaledb/commit/1d0670e703862b284c241ab797404f851b25b5df + +diff --git a/test/expected/copy-12.out b/test/expected/copy-12.out +index 5cb28a45a2..37abf6f6ff 100644 +--- a/test/expected/copy-12.out ++++ b/test/expected/copy-12.out +@@ -324,13 +324,12 @@ INSERT INTO hyper_copy_large + SELECT time, + random() AS value + FROM +-generate_series(now() - INTERVAL '1 months', now() - INTERVAL '1 day', +- INTERVAL '1 hour') AS g1(time) ++generate_series('2022-01-01', '2022-01-31', INTERVAL '1 hour') AS g1(time) + ORDER BY time; + SELECT COUNT(*) FROM hyper_copy_large; + count + ------- +- 697 ++ 721 + (1 row) + + -- Migrate data to chunks by using copy +@@ -345,7 +344,7 @@ NOTICE: migrating data to chunks + SELECT COUNT(*) FROM hyper_copy_large; + count + ------- +- 697 ++ 721 + (1 row) + + ---------------------------------------------------------------- +diff --git a/test/expected/copy-13.out b/test/expected/copy-13.out +index 02bf913eff..89e16fe8e2 100644 +--- a/test/expected/copy-13.out ++++ b/test/expected/copy-13.out +@@ -324,13 +324,12 @@ INSERT INTO hyper_copy_large + SELECT time, + random() AS value + FROM +-generate_series(now() - INTERVAL '1 months', now() - INTERVAL '1 day', +- INTERVAL '1 hour') AS g1(time) ++generate_series('2022-01-01', '2022-01-31', INTERVAL '1 hour') AS g1(time) + ORDER BY time; + SELECT COUNT(*) FROM hyper_copy_large; + count + ------- +- 697 ++ 721 + (1 row) + + -- Migrate data to chunks by using copy +@@ -345,7 +344,7 @@ NOTICE: migrating data to chunks + SELECT COUNT(*) FROM hyper_copy_large; + count + ------- +- 697 ++ 721 + (1 row) + + ---------------------------------------------------------------- +diff --git a/test/expected/copy-14.out b/test/expected/copy-14.out +index 02bf913eff..89e16fe8e2 100644 +--- a/test/expected/copy-14.out ++++ b/test/expected/copy-14.out +@@ -324,13 +324,12 @@ INSERT INTO hyper_copy_large + SELECT time, + random() AS value + FROM +-generate_series(now() - INTERVAL '1 months', now() - INTERVAL '1 day', +- INTERVAL '1 hour') AS g1(time) ++generate_series('2022-01-01', '2022-01-31', INTERVAL '1 hour') AS g1(time) + ORDER BY time; + SELECT COUNT(*) FROM hyper_copy_large; + count + ------- +- 697 ++ 721 + (1 row) + + -- Migrate data to chunks by using copy +@@ -345,7 +344,7 @@ NOTICE: migrating data to chunks + SELECT COUNT(*) FROM hyper_copy_large; + count + ------- +- 697 ++ 721 + (1 row) + + ---------------------------------------------------------------- +diff --git a/test/sql/copy.sql.in b/test/sql/copy.sql.in +index 91402c2ab8..bba4265064 100644 +--- a/test/sql/copy.sql.in ++++ b/test/sql/copy.sql.in +@@ -276,8 +276,7 @@ INSERT INTO hyper_copy_large + SELECT time, + random() AS value + FROM +-generate_series(now() - INTERVAL '1 months', now() - INTERVAL '1 day', +- INTERVAL '1 hour') AS g1(time) ++generate_series('2022-01-01', '2022-01-31', INTERVAL '1 hour') AS g1(time) + ORDER BY time; + + SELECT COUNT(*) FROM hyper_copy_large; diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm index 10e29cf6ca..fdc86e5047 100644 --- a/gnu/packages/pcre.scm +++ b/gnu/packages/pcre.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2017, 2021 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2017, 2021, 2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2021 Jean-Baptiste Volatier <jbv@pm.me> ;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com> @@ -42,8 +42,8 @@ (version "8.45") (source (origin (method url-fetch) - (uri (string-append "https://ftp.pcre.org/pub/pcre/pcre-" - version ".tar.bz2")) + (uri (string-append "mirror://sourceforge/pcre/pcre/" + version "/pcre-" version ".tar.bz2")) (sha256 (base32 "1f7zichy6iimmkfrqdl575sdlm795cyc75szgg1vc2xvsbf6zbjd")))) diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm index a7286fcf9a..447fc93f42 100644 --- a/gnu/packages/photo.scm +++ b/gnu/packages/photo.scm @@ -582,7 +582,7 @@ and enhance them.") (define-public photoflare (package (name "photoflare") - (version "1.6.9") + (version "1.6.10") (source (origin (method git-fetch) @@ -591,7 +591,7 @@ and enhance them.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "121fhbggsh6jhrr7m41f27fd34ql7libdr2v0ig5bj6nc2ddwd40")))) + (base32 "1sm4m9nga1lyqycgqbh08cib5dg4fnrz9qkrliycr3dbisy360lm")))) (build-system gnu-build-system) (arguments '(#:tests? #f ;no tests diff --git a/gnu/packages/polkit.scm b/gnu/packages/polkit.scm index 9d56e6e3c5..a75608cd43 100644 --- a/gnu/packages/polkit.scm +++ b/gnu/packages/polkit.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2015 Andy Wingo <wingo@igalia.com> ;;; Copyright © 2015, 2021-2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017 Huang Ying <huang.ying.caritas@gmail.com> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> @@ -54,7 +54,6 @@ (package (name "polkit") (version "0.120") - (replacement polkit-mozjs/fixed) (source (origin (method url-fetch) (uri (string-append @@ -63,7 +62,8 @@ (sha256 (base32 "00zfg9b9ivkcj2jcf5b92cpvvyljz8cmfwj86lkvy5rihnd5jypf")) - (patches (search-patches "polkit-configure-elogind.patch")) + (patches (search-patches "polkit-configure-elogind.patch" + "polkit-CVE-2021-4034.patch")) (modules '((guix build utils))) (snippet '(begin @@ -93,12 +93,12 @@ (propagated-inputs (list glib)) ; required by polkit-gobject-1.pc (native-inputs - `(("pkg-config" ,pkg-config) - ("glib:bin" ,glib "bin") ; for glib-mkenums - ("intltool" ,intltool) - ("gobject-introspection" ,gobject-introspection) - ("libxslt" ,libxslt) ; for man page generation - ("docbook-xsl" ,docbook-xsl))) ; for man page generation + (list pkg-config + `(,glib "bin") ;for glib-mkenums + intltool + gobject-introspection + libxslt ;for man page generation + docbook-xsl)) ;for man page generation (arguments `(#:configure-flags '("--sysconfdir=/etc" "--enable-man-pages" @@ -147,16 +147,6 @@ making process with respect to granting access to privileged operations for unprivileged applications.") (license lgpl2.0+))) -(define-public polkit-mozjs/fixed - (package - (inherit polkit-mozjs) - (version "0.121") - (source (origin - (inherit (package-source polkit-mozjs)) - (patches (cons (search-patch "polkit-CVE-2021-4034.patch") - (origin-patches - (package-source polkit-mozjs)))))))) - ;;; Variant of polkit built with Duktape, a lighter JavaScript engine compared ;;; to mozjs. (define-public polkit-duktape @@ -180,13 +170,11 @@ for unprivileged applications.") (lambda _ (delete-file "configure"))))))) (native-inputs - (append `(("autoconf" ,autoconf) - ("automake" ,automake) - ("libtool" ,libtool) - ("pkg-config" ,pkg-config)) - (package-native-inputs base))) - (inputs (alist-replace "mozjs" `(,duktape) - (package-inputs base)))))) + (modify-inputs (package-native-inputs base) + (prepend autoconf automake libtool))) + (inputs + (modify-inputs (package-inputs base) + (replace "mozjs" duktape)))))) (define polkit-for-system (mlambda (system) @@ -207,15 +195,15 @@ regular polkit that requires mozjs or its duktape variant." (define-public polkit-qt (package (name "polkit-qt") - (version "1-0.112.0") + (version "1-0.114.0") (source (origin (method url-fetch) (uri (string-append - "mirror://kde//stable/apps/KDE4.x/admin/" - "polkit-qt-" version ".tar.bz2")) + "mirror://kde/stable/polkit-qt-1/" + "polkit-qt-" version ".tar.xz")) (sha256 (base32 - "1ip78x20hjqvm08kxhp6gb8hf6k5n6sxyx6kk2yvvq53djzh7yv7")))) + "0zlhwgkqn8g0rkjc7c5n7fbhyyl4jcv0rg5zlbzrb0l88ljg5c1f")))) (build-system cmake-build-system) (inputs (list polkit)) diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm index 7f9b027a30..c39b4e2ed1 100644 --- a/gnu/packages/python-check.scm +++ b/gnu/packages/python-check.scm @@ -2293,3 +2293,34 @@ documentation by parsing them from their source and evaluating the parsed examples as part of your normal test run. Integration is provided for the main Python test runners.") (license license:expat))) + +(define-public python-pytest-httpx + (package + (name "python-pytest-httpx") + (version "0.21.0") + (source + (origin + ;; pypi package doesn't include the tests + (method git-fetch) + (uri (git-reference + (url "https://github.com/Colin-b/pytest_httpx") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "12mcy1f5d5cq3rqrqgi2ar0qvzw62ibys17hw6dsdfd0j2syck4r")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (setenv "PYTHONPATH" (getcwd)) + (invoke "pytest" "-vv"))))))) + (propagated-inputs (list python-httpx)) + (native-inputs (list python-pytest python-pytest-asyncio)) + (home-page "https://colin-b.github.io/pytest_httpx/") + (synopsis "Pytest plugin to mock httpx") + (description "This package provides a pytest fixture to mock httpx +requests to be replied to with user provided responses.") + (license license:expat))) diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm index 92c1638c6d..f2059dbbf5 100644 --- a/gnu/packages/python-crypto.scm +++ b/gnu/packages/python-crypto.scm @@ -437,7 +437,7 @@ for example, for recording or replaying web content.") is used by the Requests library to verify HTTPS requests.") (license license:asl2.0))) -(define-public python-cryptography-vectors +(define-public python-cryptography-vectors-next (package (name "python-cryptography-vectors") (version "36.0.1") @@ -456,53 +456,19 @@ is used by the Requests library to verify HTTPS requests.") ;; Distributed under either BSD-3 or ASL2.0 (license (list license:bsd-3 license:asl2.0)))) -(define-public python-cryptography - (package - (name "python-cryptography") - (version "3.3.1") - (source - (origin - (method url-fetch) - (uri (pypi-uri "cryptography" version)) - (sha256 - (base32 - "1ribd1vxq9wwz564mg60dzcy699gng54admihjjkgs9dx95pw5vy")))) - (build-system python-build-system) - (inputs - (list openssl)) - (propagated-inputs - (list python-asn1crypto python-cffi python-six python-idna - python-iso8601)) - (native-inputs - (list python-cryptography-vectors python-hypothesis python-pretend - python-pytz python-pytest)) - (home-page "https://github.com/pyca/cryptography") - (synopsis "Cryptographic recipes and primitives for Python") - (description - "cryptography is a package which provides cryptographic recipes and -primitives to Python developers. It aims to be the “cryptographic standard -library” for Python. The package includes both high level recipes, and low -level interfaces to common cryptographic algorithms such as symmetric ciphers, -message digests and key derivation functions.") - ;; Distributed under either BSD-3 or ASL2.0 - (license (list license:bsd-3 license:asl2.0)))) - -;; TODO: Make this the default in the next staging cycle. -(define-public python-cryptography-vectors-next +(define-public python-cryptography-vectors (package - (inherit python-cryptography-vectors) - (version "36.0.1") - (source - (origin - (method url-fetch) - (uri (pypi-uri "cryptography_vectors" version)) - (sha256 - (base32 - "166mvhhmgglqai1sjkkb76mpdkad2yykam11d2w44hs2snpr117w")))))) + (inherit python-cryptography-vectors-next) + (version "3.4.8") + (source (origin + (method url-fetch) + (uri (pypi-uri "cryptography_vectors" version)) + (sha256 + (base32 "1wl0ynh3lzhc6q59g8mybvijmnp195x7fjxlb3h3sgcraw14312c")))))) (define-public python-cryptography-next (package - (inherit python-cryptography) + (name "python-cryptography") (version "36.0.1") (source (origin @@ -600,7 +566,7 @@ message digests and key derivation functions.") (list python-asn1crypto python-cffi python-six python-idna python-iso8601)) (native-inputs - (list python-cryptography-vectors + (list python-cryptography-vectors-next python-hypothesis python-pretend python-pytz @@ -618,62 +584,45 @@ library” for Python. The package includes both high level recipes, and low level interfaces to common cryptographic algorithms such as symmetric ciphers, message digests and key derivation functions.") ;; Distributed under either BSD-3 or ASL2.0 - (license (list license:bsd-3 license:asl2.0)) - (properties `((python2-variant . ,(delay python2-cryptography)))))) + (license (list license:bsd-3 license:asl2.0)))) -(define-public python2-cryptography-vectors +(define-public python-cryptography (package - (inherit python-cryptography-vectors) - (version "3.3.1") + (inherit python-cryptography-next) + (version "3.4.8") (source (origin (method url-fetch) - (uri (pypi-uri "cryptography_vectors" version)) + (uri (pypi-uri "cryptography" version)) (sha256 - (base32 - "192wix3sr678x21brav5hgc6j93l7ab1kh69p2scr3fsblq9qy03")))) + (base32 "072awar70cwfd2hnx0pvp1dkc7gw45mbm3wcyddvxz5frva5xk4l")))) (arguments - (list #:python python-2)))) - -(define-public python2-cryptography - (let ((crypto (package-with-python2 - (strip-python2-variant python-cryptography)))) - (package - (inherit crypto) - (version "3.3.1") - (source (origin - (method url-fetch) - (uri (pypi-uri "cryptography" version)) - (sha256 - (base32 - "1ribd1vxq9wwz564mg60dzcy699gng54admihjjkgs9dx95pw5vy")))) - (arguments - `(#:python ,python-2 - #:phases - (modify-phases %standard-phases - ;; The sanity-check attempts attempts to import the non-existent - ;; modules "_openssl" and "_padding". - (delete 'sanity-check)))) - (native-inputs - (list python2-cryptography-vectors python2-hypothesis python2-pretend - python2-pytz python2-pytest)) - (inputs (list openssl)) - (propagated-inputs - (modify-inputs (package-propagated-inputs crypto) - (prepend python2-ipaddress - python2-backport-ssl-match-hostname - python2-enum34)))))) + (list #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'set-no-rust + (lambda _ + (setenv "CRYPTOGRAPHY_DONT_BUILD_RUST" "1")))))) + (inputs (list openssl)) + (native-inputs + (list python-cryptography-vectors + python-hypothesis + python-pretend + python-pytz + python-pytest + python-setuptools-rust)))) +;; This is the last version which is compatable with python-cryptography < 35. (define-public python-pyopenssl (package (name "python-pyopenssl") - (version "22.0.0") + (version "21.0.0") (source (origin (method url-fetch) (uri (pypi-uri "pyOpenSSL" version)) (sha256 (base32 - "1gzihw09sqi71lwx97c69hab7w4rbnl6hhfrl6za3i5a4la1n2v6")))) + "1cqcc20fwl521z3fxsc1c98gbnhb14q55vrvjfp6bn6h8rg8qbay")) + (patches (search-patches "python2-pyopenssl-openssl-compat.patch")))) (build-system python-build-system) (arguments (list @@ -708,7 +657,6 @@ message digests and key derivation functions.") (description "PyOpenSSL is a high-level wrapper around a subset of the OpenSSL library.") - (properties `((python2-variant . ,(delay python2-pyopenssl)))) (license license:asl2.0))) (define-public python-ed25519 @@ -923,29 +871,19 @@ Python.") (define-public python-josepy (package (name "python-josepy") - (version "1.1.0") + (version "1.13.0") (source (origin (method url-fetch) (uri (pypi-uri "josepy" version)) (sha256 (base32 - "11khz8malzrv375b27jjkv66z6z6khdx1v5mkkr4vq16gp3n4p7v")))) + "1jaxqyp53paks2z8zyzr50gqvzfxbar7r2qf98kqak4aizrxlcc9")))) (build-system python-build-system) (arguments - ;; The tests require flake8 >= 3.5, which is not yet packaged. + ;; TODO: some test dependencies are missing (see pyproject.toml). '(#:tests? #f)) (propagated-inputs - (list python-cryptography python-pyopenssl python-six)) -;; TODO Enable when we have flake8 >= 3.5. -; (native-inputs -; `(("python-coverage" ,python-coverage) -; ("python-flake8" ,python-flake8) -; ("python-isort" ,python-isort) -; ("python-mock" ,python-mock) -; ("python-pytest" ,python-pytest) -; ("python-pytest-cov" ,python-pytest-cov) -; ("python-pytest-cache" ,python-pytest-cache) -; ("python-pytest-flake8" ,python-pytest-flake8))) + (list python-cryptography python-pyopenssl)) (home-page "https://github.com/certbot/josepy") (synopsis "JOSE protocol implementation in Python") (description "This package provides a Python implementation of the JOSE diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm index 855fe9a72c..56f109e3d5 100644 --- a/gnu/packages/python-science.scm +++ b/gnu/packages/python-science.scm @@ -19,6 +19,7 @@ ;;; Copyright © 2022 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2022 Paul A. Patience <paul@apatience.com> ;;; Copyright © 2022 Wiktor Żelazny <wzelazny@vurv.cz> +;;; Copyright © 2022 Eric Bavier <bavier@posteo.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -182,13 +183,13 @@ logic, also known as grey logic.") (define-public python-scikit-image (package (name "python-scikit-image") - (version "0.19.2") + (version "0.19.3") (source (origin (method url-fetch) (uri (pypi-uri "scikit-image" version)) (sha256 - (base32 "0vc6c78780jivsg79ja0cncn1ma2wysy9fyz97kik0kg59jb8cyl")))) + (base32 "0l645smf7w1kail70z8d9r3xmvz7qh6g7n3d2bpacbbnw5ykdd94")))) (build-system python-build-system) (arguments `(#:phases @@ -858,6 +859,32 @@ and more @end itemize") (license license:gpl3))) +(define-public python-pyglm + (package + (name "python-pyglm") + (version "2.5.7") + (source + (origin + ;; Test files are not included in the archive in pypi. + (method git-fetch) + (uri (git-reference + (url "https://github.com/Zuzu-Typ/PyGLM") + (commit version) + ;; Checkout the bundled `glm` submodule. PyGLM uses the + ;; currently unreleased GLM_EXT_matrix_integer feature. Can + ;; maybe unbundle once glm@0.9.9.9 is released. + (recursive? #t))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "08v0cgkwsf8rxscx5g9c5p1dy38rvak2fy3q6hg985if1nj6d9ks")))) + (build-system python-build-system) + (home-page "https://github.com/Zuzu-Typ/PyGLM") + (synopsis "OpenGL Mathematics library for Python") + (description "PyGLM is a Python extension library which brings the OpenGL +Mathematics (GLM) library to Python.") + (license license:zlib))) + (define-public python-distributed (package (name "python-distributed") diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index 0182679acd..b4500c6d2f 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -44,7 +44,7 @@ ;;; Copyright © 2021 Greg Hogan <code@greghogan.com> ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> ;;; Copyright © 2021 Pradana Aumars <paumars@courrier.dev> -;;; Copyright © 2021 Arun Isaac <arunisaac@systemreboot.net> +;;; Copyright © 2021, 2022 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2021 jgart <jgart@dismail.de> ;;; Copyright © 2021 Alice Brenon <alice.brenon@ens-lyon.fr> ;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com> @@ -5295,7 +5295,7 @@ and serve updated contents upon changes to the directory.") (define-public python-httpcore (package (name "python-httpcore") - (version "0.14.7") + (version "0.15.0") (source (origin ;; PyPI tarball does not contain tests. @@ -5305,7 +5305,7 @@ and serve updated contents upon changes to the directory.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0wdr28vf03l6yxhk8nrvhh7y7x18rqdcfzv1sb6jgzk9zmycrvc7")))) + (base32 "0skj8f85l52gl6x449wzaixcwsyayvn59iwn0df4b7ixlz6xhp8l")))) (build-system python-build-system) (arguments `(#:phases @@ -5313,7 +5313,8 @@ and serve updated contents upon changes to the directory.") (replace 'check (lambda* (#:key tests? #:allow-other-keys) (when tests? - (invoke "pytest" "-vv" "tests"))))))) + (invoke "pytest" "-vv" "tests" + "--override-ini=asyncio_mode=auto"))))))) (native-inputs (list python-pytest python-pytest-asyncio @@ -5360,7 +5361,7 @@ Some things HTTP Core does do: (define-public python-httpx (package (name "python-httpx") - (version "0.22.0") + (version "0.23.0") (source (origin ;; PyPI tarball does not contain tests. @@ -5370,7 +5371,7 @@ Some things HTTP Core does do: (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1awr56488b66zyl3cx1f03lq2n07xdg5kb4l46vnsm59s6hr02c5")))) + (base32 "0bihm7ylq9ajxz8qyba0xp9qkwm7n06hk01ywkq2vpz65ix5hpdk")))) (build-system python-build-system) (arguments `(#:phases @@ -7477,3 +7478,60 @@ metadata from HTML markup. Currently, extruct supports: (description "The @code{wadllib} Python library allows navigating HTTP resources using Web Application Description Language (WADL) files as guides.") (license license:lgpl3))) + +(define-public python-zeep + (package + (name "python-zeep") + (version "4.1.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "zeep" version)) + (patches + (search-patches "python-zeep-Fix-pytest_httpx-test-cases.patch")) + (sha256 + (base32 "1ranr4hkjd2kbbhxa3is1qlgkankj3sml5gla6bqs0kbvpmg4rsq")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (setenv "HOME" (getcwd)) ; one test requires write access + (invoke "pytest" "-vv"))))))) + (propagated-inputs + (list python-attrs + python-cached-property + python-isodate + python-lxml + python-platformdirs + python-pytz + python-requests + python-requests-file + python-requests-toolbelt)) + (native-inputs + (list python-aiohttp + python-aioresponses + python-freezegun + python-mock + python-pretend + python-pytest + python-pytest-asyncio + python-pytest-cov + python-pytest-httpx + python-requests-mock)) + (home-page "https://docs.python-zeep.org/en/stable/") + (synopsis "Python SOAP client based on lxml / requests") + (description "Zeep is a Python SOAP client. Highlights: + +@itemize +@item Build on top of @code{lxml} and @code{requests}. +@item Support for Soap 1.1, Soap 1.2 and HTTP bindings. +@item Support for WS-Addressing headers. +@item Support for WSSE (UserNameToken / x.509 signing). +@item Support for @code{asyncio} via @code{httpx}. +@item Experimental support for XOP messages. +@end itemize") + (license license:expat))) + diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 7d73c145b7..75682be6ab 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2013-2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2016, 2019 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2014, 2017, 2021 Eric Bavier <bavier@posteo.net> +;;; Copyright © 2014, 2017, 2021, 2022 Eric Bavier <bavier@posteo.net> ;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2015 Omar Radwan <toxemicsquire4@gmail.com> ;;; Copyright © 2015 Pierre-Antoine Rault <par@rigelk.eu> @@ -123,6 +123,7 @@ ;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com> ;;; Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com> ;;; Copyright © 2022 Paul A. Patience <paul@apatience.com> +;;; Copyright © 2022 Jean-Pierre De Jesus DIAZ <me@jeandudey.tech> ;;; ;;; This file is part of GNU Guix. ;;; @@ -197,6 +198,7 @@ #:use-module (gnu packages multiprecision) #:use-module (gnu packages networking) #:use-module (gnu packages ncurses) + #:use-module (gnu packages node) #:use-module (gnu packages ninja) #:use-module (gnu packages openstack) #:use-module (gnu packages pcre) @@ -3086,7 +3088,13 @@ server.") (chdir "miniupnpc") (setenv "CC" #$(cc-for-target)) (substitute* "Makefile" - (("/bin/sh") (search-input-file inputs "/bin/sh")))))))) + (("/bin/sh") (search-input-file inputs "/bin/sh"))))) + (add-before 'subdir 'remove-kernel-version + ;; Avoid embedding the running kernel version for reproducible builds + (lambda _ + (substitute* + "miniupnpc/updateminiupnpcstrings.sh" + (("^OS_VERSION=`uname -r`") "OS_VERSION=Guix"))))))) (inputs (list python)) ;we are building a Python extension (synopsis "UPnP client for Python") (description "Miniupnpc is a client library for Python programs to set up @@ -3894,6 +3902,71 @@ adds a 'now' tag providing a convenient access to the arrow.now() API from templates. A format string can be provided to control the output.") (license license:expat))) +(define-public python-pysdl2 + (package + (name "python-pysdl2") + (version "0.9.11") + (source (origin + (method url-fetch) + (uri (pypi-uri "PySDL2" version)) + (sha256 + (base32 + "19id1qswgcj4v4j5kn49shq1xxx3slhjpm0102w87mczsdbi1rck")))) + (build-system python-build-system) + (arguments + (list #:tests? #f ;; Requires /dev/dri, OpenGL module, etc. + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "sdl2/dll.py" + ;; Disable pysdl2-dll. It can't be packaged on GNU Guix + ;; as it duplicates an existing package (sdl2). + (("prepath = os\\.getenv\\('PYSDL2_DLL_PATH'\\)") + "prepath = \"system\"") + (("^import sdl2dll$") "") + (("postpath = os\\.getenv\\('PYSDL2_DLL_PATH'\\)") + "postpath = \"system\"") + (("DLL\\(.*, os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)\\)") + (string-append + "DLL(\"SDL2\", [\"SDL2\", \"SDL2-2.0\", \"SDL2-2.0.0\"], \"" + (dirname (search-input-file inputs "/lib/libSDL2.so")) + "\")"))) + (substitute* "sdl2/sdlimage.py" + (("os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)") + (string-append + "\"" + (dirname (search-input-file inputs "/lib/libSDL2_image.so")) + "\""))) + (substitute* "sdl2/sdlgfx.py" + (("os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)") + (string-append + "\"" + (dirname (search-input-file inputs "/lib/libSDL2_gfx.so")) + "\""))) + (substitute* "sdl2/sdlmixer.py" + (("os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)") + (string-append + "\"" + (dirname (search-input-file inputs "/lib/libSDL2_mixer.so")) + "\""))) + (substitute* "sdl2/sdlttf.py" + (("os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)") + (string-append + "\"" + (dirname (search-input-file inputs "/lib/libSDL2_ttf.so")) + "\"")))))))) + (inputs + (list sdl2 sdl2-image sdl2-gfx sdl2-mixer sdl2-ttf)) + (home-page "https://github.com/py-sdl/py-sdl2") + (synopsis "Python bindings around the SDL2 game development library") + (description "PySDL2 is a pure Python wrapper around the @code{SDL2}, +@code{SDL2_mixer}, @code{SDL2_image}, @code{SDL2_ttf}, and @code{SDL2_gfx} +libraries. Instead of relying on C code, it uses the built-in ctypes module +to interface with SDL2, and provides simple Python classes and wrappers for +common SDL2 functionality.") + (license license:cc0))) + (define-public python-pystache (package (name "python-pystache") @@ -5384,7 +5457,14 @@ include_dirs = ~:*~a/include~%" #$(this-package-input "openblas")))))) ;; These tests may fail on 32-bit systems (see: ;; https://github.com/numpy/numpy/issues/18387). "not test_float_remainder_overflow " - "and not test_pareto")))))))) + "and not test_pareto" + ;; These tests seem to fail on machines without + ;; an FPU is still under investigation upstream. + ;; https://github.com/numpy/numpy/issues/20635 + #$@(if (target-riscv64?) + `(" and not test_float" + " and not test_fpclass") + '()))))))))) (native-inputs (list python-cython python-hypothesis-next @@ -10256,6 +10336,26 @@ cyclomatic complexity of Python source code.") (list python-pycodestyle-2.6 python-entrypoints python-pyflakes-2.2 python-mccabe)))) +(define-public python-flake8-blind-except + (package + (name "python-flake8-blind-except") + (version "0.2.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "flake8-blind-except" version)) + (sha256 + (base32 "05nxsxfzfhwsm8gys90228imm2qbnqnw5y8bfqyfngnbkmd5fnpj")))) + (build-system python-build-system) + (arguments + `(#:tests? #f)) ; no tests + (native-inputs (list python-pycodestyle)) + (home-page "https://github.com/elijahandrews/flake8-blind-except") + (synopsis "Check for blind @code{except:} statements") + (description "This package provides a flake8 extension that checks for +blind @code{except:} statements.") + (license license:expat))) + (define-public python-flake8-bugbear (package (name "python-flake8-bugbear") @@ -10316,6 +10416,29 @@ These should be used in preference to using a backslash for line continuation. @end quotation") (license license:asl2.0))) +(define-public python-flake8-debugger + (package + (name "python-flake8-debugger") + (version "4.1.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "flake8-debugger" version)) + (sha256 + (base32 "0h1qlzbxxhjsw6kg3mcml9h8byy77m9a5z06z2dnvqs115b05c2j")))) + (build-system python-build-system) + (arguments + `(#:tests? #f)) ; no tests in PyPI and no setup.py in GitHub + (propagated-inputs + (list python-flake8 python-pycodestyle)) + (home-page "https://github.com/jbkahn/flake8-debugger") + (synopsis "@code{ipdb} and @code{pdb} statement checker plugin for flake8") + (description "This package provides a Flake8 plugin that checks for +@code{ipdb} and @code{pdb} imports and set traces, as well as +@code{from IPython.terminal.embed}, @code{import InteractiveShellEmbed} +and @code{InteractiveShellEmbed()()}.") + (license license:expat))) + (define-public python-flake8-implicit-str-concat (package (name "python-flake8-implicit-str-concat") @@ -11846,7 +11969,6 @@ from the earlier standard from 2003. The library is also intended to act as a suitable drop-in replacement for the “encodings.idna” module that comes with the Python standard library but currently only supports the older 2003 specification.") - (properties `((python2-variant . ,(delay python2-idna)))) (license license:bsd-4))) (define-public python-libsass @@ -12347,7 +12469,11 @@ libmagic."))) ;; This test validates that 'pydevd' is not in the ;; exception message, but it is due to being part ;; of the build file name present in the message. - "and not test_evaluate_exception_trace"))))) + "and not test_evaluate_exception_trace " + ;; These fail on systems with YAMA LSM’s ptrace + ;; scope > 0. Upstream issue: + ;; https://github.com/fabioz/PyDev.Debugger/issues/218 + "and not test_attach_to_pid"))))) (add-after 'install 'install-attach-binary (lambda _ (install-file "attach.so" @@ -12392,6 +12518,7 @@ and other @acronym{IDEs, Integrated Development Environments}.") (build-system python-build-system) (arguments (list + #:tests? #f ; Fail on systems with YAMA LSM’s ptrace scope > 0. #:phases #~(modify-phases %standard-phases (add-after 'unpack 'patch-sh-in-tests @@ -12412,17 +12539,18 @@ and other @acronym{IDEs, Integrated Development Environments}.") (setenv "DEBUGPY_BUNDLING_DISABLED" "1"))) (replace 'check (lambda* (#:key tests? #:allow-other-keys) - (invoke "pytest" "-vv" - "-n" (number->string (parallel-job-count)) - "-k" - (string-append - ;; These tests cannot be run in parallel because their - ;; test data would not be copied by xdist and lead to - ;; import errors. (see: - ;; https://github.com/microsoft/debugpy/issues/342 and - ;; https://github.com/microsoft/debugpy/issues/880). - "not test_custom_python_args " - "and not test_autokill "))))))) + (when tests? + (invoke "pytest" "-vv" + "-n" (number->string (parallel-job-count)) + "-k" + (string-append + ;; These tests cannot be run in parallel because their + ;; test data would not be copied by xdist and lead to + ;; import errors. (see: + ;; https://github.com/microsoft/debugpy/issues/342 and + ;; https://github.com/microsoft/debugpy/issues/880). + "not test_custom_python_args " + "and not test_autokill ")))))))) (native-inputs ;; See: https://raw.githubusercontent.com/microsoft/debugpy/ ;; main/tests/requirements.txt. @@ -12923,10 +13051,10 @@ time.") texlive-unicode-math texlive-xcolor (texlive-updmap.cfg (list texlive-amsfonts + texlive-amsmath texlive-eurosym texlive-fonts-rsfs texlive-jknappen - texlive-latex-amsmath texlive-latex-ucs texlive-lm texlive-lm-math @@ -14366,6 +14494,97 @@ named for) extending the Levenberg-Marquardt method from enhancements to optimization and data fitting problems.") (license license:bsd-3))) +(define-public python-bokeh + (package + (name "python-bokeh") + (version "2.4.3") + (source (origin + (method url-fetch) + (uri (pypi-uri "bokeh" version)) + (sha256 + (base32 + "00sbhya9vfdv3yi07j6mxwx1x1h9497nhd3smdjrcdxgc48q0czg")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + ;; These require selenium. + (delete-file "tests/unit/bokeh/io/test_export.py") + (delete-file "tests/unit/bokeh/io/test_webdriver.py") + (delete-file "tests/unit/bokeh/embed/test_standalone.py") + + ;; Doesn't find ManagedServerLoop fixture + (delete-file "tests/unit/bokeh/test_client_server.py") + + ;; This fails because of the Guix wrapper around pytest + (delete-file "tests/unit/bokeh/io/test_util__io.py") + + ;; Fixture ipython not found. + (delete-file "tests/unit/bokeh/application/handlers/test_notebook__handlers.py") + (delete-file "tests/unit/bokeh/command/subcommands/test_info.py") + + ;; pd fixture not found. + (delete-file "tests/unit/bokeh/models/test_mappers.py") + (delete-file "tests/unit/bokeh/models/util/test_structure.py") + (delete-file "tests/unit/bokeh/plotting/test__plot.py") + (delete-file "tests/unit/bokeh/plotting/test__graph.py") + (delete-file "tests/unit/bokeh/plotting/test_figure.py") + (delete-file "tests/unit/bokeh/core/test_json_encoder.py") + (delete-file "tests/unit/bokeh/core/property/test_bases.py") + (delete-file "tests/unit/bokeh/core/property/test_container.py") + (delete-file "tests/unit/bokeh/core/property/test_dataspec.py") + (delete-file "tests/unit/bokeh/core/property/test_datetime.py") + (delete-file "tests/unit/bokeh/core/property/test_pandas.py") + + ;; nx fixture not found. + (delete-file "tests/unit/bokeh/plotting/test_graph.py") + (delete-file "tests/unit/bokeh/models/test_graphs.py") + (delete-file "tests/unit/bokeh/io/test_showing.py") + (delete-file "tests/unit/bokeh/document/test_events__document.py") + + ;; These tests need external sample data + (delete-file-recursively "tests/unit/bokeh/sampledata/") + + ;; Attempts to install something via npm. + (delete-file "tests/unit/bokeh/test_ext.py") + + ;; More failures due to set up problems. + (delete-file "tests/unit/bokeh/server/test_server__server.py") + (delete-file "tests/unit/bokeh/server/test_tornado__server.py") + (delete-file "tests/unit/bokeh/util/test_serialization.py") + (delete-file "tests/unit/bokeh/util/test_hex.py") + (delete-file "tests/unit/bokeh/models/test_sources.py") + (delete-file "tests/unit/bokeh/embed/test_bundle.py") + + (invoke "pytest" "-v"))))))) + (propagated-inputs + (list node-lts + python-jinja2 + python-numpy + python-packaging + python-pillow + python-pyyaml + python-tornado + python-typing-extensions)) + (native-inputs + (list python-beautifulsoup4 + python-dateutil + python-flaky + python-nbconvert + python-pandas + python-pytest + python-pytz + python-requests)) + (home-page "https://github.com/bokeh/bokeh") + (synopsis "Interactive plots and applications in the browser from Python") + (description + "This package provides tools for interactive plots and applications in the +browser from Python.") + (license license:bsd-3))) + (define-public python-boto (package (name "python-boto") @@ -17783,6 +18002,28 @@ JSON) codec.") Record Format (DWARF).") (license license:public-domain))) +(define-public python-pefile + (package + (name "python-pefile") + (version "2022.5.30") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/erocarrera/pefile") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1qj90a0s2gd5hn2zggypqc1077inid5dcl1fp5973b04kf2b9z8a")))) + (build-system python-build-system) + (propagated-inputs (list python-future)) + (home-page "https://github.com/erocarrera/pefile") + (synopsis "Portable Executable (PE) file parser") + (description "This python library provides interfaces for parsing and +working with Portable Executable (PE) files. It makes to most information +from the header, as well as section details and data available.") + (license license:expat))) + (define-public python-pyev (package (name "python-pyev") @@ -19933,22 +20174,14 @@ design and layout.") (define-public python-pkginfo (package (name "python-pkginfo") - (version "1.8.2") + (version "1.8.3") (source (origin (method url-fetch) (uri (pypi-uri "pkginfo" version)) (sha256 - (base32 "1zrbn2gblb1q1rx0jlbd0vc9h1dm1bj0760p40ff5qjhcw5hsbjl")))) + (base32 "0z46w559hrl79gf7navgzimj21ma821wka27jh58fvyqilqs8kd8")))) (build-system python-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'patch-tests - (lambda _ - (substitute* "pkginfo/tests/test_installed.py" - (("test_ctor_w_package_no_PKG_INFO") - "_test_ctor_w_package_no_PKG_INFO"))))))) (native-inputs (list python-wheel)) (home-page "https://code.launchpad.net/~tseaver/pkginfo/trunk") @@ -21617,19 +21850,24 @@ and corruption checks.") (define-public python-requests-file (package (name "python-requests-file") - (version "1.4.3") + (version "1.5.1") (source (origin (method url-fetch) (uri (pypi-uri "requests-file" version)) (sha256 - (base32 - "1yp2jaxg3v86pia0q512dg3hz6s9y5vzdivsgrba1kds05ial14g")))) + (base32 "13kx4k83i9zcv20h0fnmawwwdzhcmw1z97mqib1h379qsc445mq7")))) (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "python" "tests/test_requests_file.py"))))))) (propagated-inputs (list python-requests python-six)) - (home-page - "https://github.com/dashea/requests-file") + (home-page "https://github.com/dashea/requests-file") (synopsis "File transport adapter for Requests") (description "Requests-File is a transport adapter for use with the Requests Python @@ -22171,6 +22409,34 @@ which supports the spawning of processes using the API of the standard library's @code{threading} module.") (license license:bsd-3))) +(define-public python-multiprocessing-on-dill + (package + (name "python-multiprocessing-on-dill") + (version "3.5.0a4") + (source (origin + (method url-fetch) + (uri (pypi-uri "multiprocessing_on_dill" version)) + (sha256 + (base32 + "1rs5a3hx1fcpfsxxkl5kx6g06c82wqjqgdqyny5l1ggl1wq0rmfn")))) + (build-system python-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "pytest" "-vv"))))))) + (propagated-inputs (list python-dill)) + (native-inputs (list python-check-manifest python-pytest python-wheel)) + (home-page "https://github.com/sixty-north/multiprocessing_on_dill") + (synopsis "Multiprocessing using dill instead of pickle") + (description + "This package provides a friendly fork of multiprocessing which uses dill +instead of pickle.") + (license license:psfl))) + (define-public python-toolrack (package (name "python-toolrack") @@ -22383,14 +22649,14 @@ data.") (define-public python-locket (package (name "python-locket") - (version "0.2.0") + (version "1.0.0") (source (origin (method url-fetch) (uri (pypi-uri "locket" version)) (sha256 (base32 - "1d4z2zngrpqkrfhnd4yhysh66kjn4mblys2l06sh5dix2p0n7vhz")))) + "0cm6290zm3ba62n2x2piy3s8d41hrmffda2nw18ggfwb582lq3aw")))) (build-system python-build-system) (home-page "https://github.com/mwilliamson/locket.py") (synopsis "File-based locks for Python") @@ -23582,6 +23848,23 @@ several convenience Python scripts, including \"classic\" hex2bin and bin2hex converters and more, those based on the library itself.") (license license:bsd-3))) +(define-public python-interlap + (package + (name "python-interlap") + (version "0.2.7") + (source (origin + (method url-fetch) + (uri (pypi-uri "interlap" version)) + (sha256 + (base32 + "1jbfh00bkrf0i5psa6n75rlgmqp5389xixa9j29w8rxhah6g7r1i")))) + (build-system python-build-system) + (home-page "https://brentp.github.io/interlap") + (synopsis "Fast, simple interval overlap testing") + (description "InterLap does fast interval overlap testing with a simple Python data +structure.") + (license license:expat))) + (define-public python-pykwalify (package (name "python-pykwalify") @@ -24395,7 +24678,7 @@ with features similar to the @command{wget} utility.") (define-public offlate (package (name "offlate") - (version "0.5") + (version "0.6.1") (source (origin (method git-fetch) @@ -24405,33 +24688,37 @@ with features similar to the @command{wget} utility.") (file-name (git-file-name name version)) (sha256 (base32 - "13pqnbl05wcyldfvl75fp89vjgwsvxyc69vhnb17kkha2rc2k1h7")))) + "1sx5cv8pamyw1m089b6x8ykaxdkx26jk9cblhbzlf0m3ckz52jik")))) (build-system python-build-system) (arguments ;; No tests `(#:tests? #f - #:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-for-pygit2 - (lambda _ - (substitute* "offlate/systems/git.py" - (("pygit2.remote.RemoteCallbacks") - "pygit2.RemoteCallbacks"))))))) + #:phases + (modify-phases %standard-phases + (add-before 'build 'generate-fonts + (lambda _ + (invoke "make" "fonts"))) + (add-before 'build 'generate-translations + (lambda _ + (invoke "make" "update-langs")))))) (propagated-inputs (list python-android-stringslib python-dateutil python-gitlab python-lxml python-polib + python-pycountry python-pyenchant python-pygit2 python-pygithub python-pyqt python-requests python-ruamel.yaml + python-translate-toolkit python-translation-finder python-watchdog)) (native-inputs - (list qttools)) + (list qttools fontforge)) (home-page "https://framagit.org/tyreunom/offlate") (synopsis "Offline translation interface for online translation tools") (description "Offlate offers a unified interface for different translation @@ -24768,6 +25055,38 @@ usable as a configuration language. This Python package implements parsing and dumping of JSON5 data structures.") (license license:asl2.0))) +(define-public python-freetype-py + (package + (name "python-freetype-py") + (version "2.3.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "freetype-py" version ".zip")) + (sha256 + (base32 "1l55wzy21jmdayjna29ahzxrf2fp68580978rs6kap1a4zilrdpr")))) + (build-system python-build-system) + (native-inputs + (list python-setuptools-scm + unzip)) + (inputs (list freetype)) + (arguments + `(#:phases + ;; Note: the pypi archive does not contain tests, but running the check + ;; phase will at least test whether the module loads correctly. + (modify-phases %standard-phases + (add-before 'build 'embed-library-reference + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "freetype/raw.py" + (("^(filename = ).*" _ >) + (string-append > "\"" (search-input-file inputs "/lib/libfreetype.so") + "\"\n")))))))) + (home-page "https://github.com/rougier/freetype-py") + (synopsis "Freetype python bindings") + (description "Freetype Python provides bindings for the FreeType +library. Only the high-level API is bound.") + (license license:bsd-3))) + (define-public python-frozendict (package (name "python-frozendict") @@ -29471,3 +29790,32 @@ Information about these scales can be @url{https://en.wikipedia.org/wiki/List_of_musical_scales_and_modes, found on Wikipedia}.") (license license:expat))) + +(define-public python-langcodes + (package + (name "python-langcodes") + (version "3.3.0") + (source (origin + (method url-fetch) + (uri (pypi-uri "langcodes" version)) + (sha256 + (base32 + "1xkyh3qdcigb18qiimbwl2669y22hhdmd89mqcd270c7lbahfkbr")))) + (build-system python-build-system) + (native-inputs (list python-pytest)) + (home-page "https://github.com/rspeer/langcodes") + (synopsis "Python library for working with language codes") + (description + "This package provides a Python library for working with and comparing +language codes. + +@code{python-langcodes} implements @url{http://tools.ietf.org/html/bcp47, BCP +47}, the IETF Best Current Practices on Tags for Identifying Languages. BCP +47 is also known as RFC 5646. It subsumes ISO 639 and is backward compatible +with it, and it also implements recommendations from the +@url{http://cldr.unicode.org/, Unicode CLDR}. + +@code{python-langcodes} can also refer to a database of language properties +and names, built from Unicode CLDR and the IANA subtag registry, if you +install @code{python-language-data}.") + (license license:expat))) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 9920af74fb..9593009ae3 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -354,7 +354,8 @@ system, and the core design of Django is reused in Grantlee.") ("nss" ,nss) ("openssl" ,openssl) ("pcre2" ,pcre2) - ("postgresql" ,postgresql) + ;; TODO: Switch to 'postgres' in the next rebuild cycle. + ("postgresql" ,postgresql-13) ("pulseaudio" ,pulseaudio) ("sqlite" ,sqlite) ("unixodbc" ,unixodbc) diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm index d60a749d91..3399bcc3fe 100644 --- a/gnu/packages/racket.scm +++ b/gnu/packages/racket.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2018, 2020, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013-2016, 2018, 2020-2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2021, 2022 Philip McGrath <philip@philipmcgrath.com> @@ -28,10 +28,12 @@ #:use-module (guix gexp) #:use-module (guix build-system copy) #:use-module (guix build-system gnu) + #:use-module (guix diagnostics) + #:use-module (guix i18n) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) + #:use-module (srfi srfi-34) #:use-module (ice-9 match) - #:use-module (ice-9 exceptions) #:use-module (gnu packages) #:use-module (gnu packages autotools) #:use-module (gnu packages bash) @@ -925,13 +927,10 @@ DrRacket IDE, are not included.") ((this-package-input name) => (cut file-append <> "/lib")) (else - (raise-exception - (make-exception - (make-assertion-failure) - (make-exception-with-message - "missing input to the 'racket' package") - (make-exception-with-irritants - (list name))))))) + (raise + (formatted-message + (G_ "missing input '~a' to the 'racket' package") + name))))) '("cairo" "fontconfig-minimal" ;; aka fontconfig "glib" diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm index 03add6d49d..5df217cc2e 100644 --- a/gnu/packages/radio.scm +++ b/gnu/packages/radio.scm @@ -530,7 +530,7 @@ used by RDS Spy, and audio files containing @dfn{multiplex} signals (MPX).") ("python-scipy" ,python-scipy) ("python-sphinx" ,python-sphinx) ("texlive" ,(texlive-updmap.cfg (list texlive-amsfonts - texlive-latex-amsmath + texlive-amsmath ;; TODO: Add newunicodechar. texlive-graphics))) ("xorg-server" ,xorg-server-for-tests))) @@ -738,7 +738,7 @@ to access different radio hardware.") ("libtool" ,libtool) ("pkg-config" ,pkg-config) ("texlive" ,(texlive-updmap.cfg (list texlive-amsfonts - texlive-latex-amsmath + texlive-amsmath ;; TODO: Add newunicodechar. texlive-graphics))))) (inputs diff --git a/gnu/packages/rails.scm b/gnu/packages/rails.scm index 45fa5d8606..8f5bda4638 100644 --- a/gnu/packages/rails.scm +++ b/gnu/packages/rails.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2019, 2021 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2019, 2021, 2022 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -20,6 +20,7 @@ (define-module (gnu packages rails) #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix gexp) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix packages) @@ -291,6 +292,13 @@ directly.") (base32 "17vdh273cmmfpzy5m546dd13zqmimv54jjx0f7sl0zi5lwz0gnck")))) (build-system ruby-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'delete-gemfile.lock + (lambda _ + (delete-file "Gemfile.lock")))))) (native-inputs (list bundler)) (propagated-inputs diff --git a/gnu/packages/rocm.scm b/gnu/packages/rocm.scm index 2ccc6d3251..6c1a83cc88 100644 --- a/gnu/packages/rocm.scm +++ b/gnu/packages/rocm.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2021 Lars-Dominik Braun <lars@6xq.net> +;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com> ;;; ;;; This program is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by @@ -18,21 +19,25 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix gexp) #:use-module (guix utils) #:use-module (guix git-download) #:use-module (guix build-system cmake) #:use-module (gnu packages) #:use-module (gnu packages elf) + #:use-module (gnu packages gcc) #:use-module (gnu packages gl) #:use-module (gnu packages linux) #:use-module (gnu packages llvm) #:use-module (gnu packages opencl) + #:use-module (gnu packages pkg-config) #:use-module (gnu packages version-control) - #:use-module (gnu packages vim)) + #:use-module (gnu packages vim) + #:use-module (gnu packages xdisorg)) ;; The components are tightly integrated and can only be upgraded as a unit. If ;; you want to upgrade ROCm, bump this version number and update hashes below. -(define %rocm-version "4.3.0") +(define %rocm-version "5.1.3") (define-public rocm-cmake (package @@ -46,7 +51,7 @@ (file-name (git-file-name name version)) (sha256 (base32 - "0sic2zxmzl2pb2865vvq55mbpcr8pby8v19pjdlm08pypqw5h6h6")))) + "1bn3l04qnc1ls9abs15s1sgsrwmkfk0g8jgdjqshrcr3ab8ffcpf")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; Tests try to use git commit (native-inputs (list git)) @@ -68,7 +73,7 @@ tasks needed for the ROCM software stack.") (file-name (git-file-name name version)) (sha256 (base32 - "1f8xsylfajpxqjk6ayjnrry53y8b0a6lh9d72pd41nffxfyzvw3w")))) + "07vkrxxc49i72r0lcl6dap0qcw1bignsw920rj4h1mac3bwa8q4j")))) (build-system cmake-build-system) (arguments `(#:configure-flags @@ -93,7 +98,7 @@ oclc, ocml, ockl, opencl, hip and hc.") (file-name (git-file-name name version)) (sha256 (base32 - "0bakbm7shr0l67lph44b5cnc9psd6rivg1mp79qizaawkn380x60")) + "1achb3216cbm7x2d05xj7j7ivn24y11q2d2p5whw3v4ykgfqql6f")) (patches (search-patches "rocm-comgr-3.1.0-dependencies.patch")))) (build-system cmake-build-system) @@ -125,10 +130,11 @@ AMDGPU code objects.") (file-name (git-file-name name version)) (sha256 (base32 - "0ffqhrrscmcydfqf61dk58d7nnxk6n2k68jhqfj7a4hvhlphb74f")))) + "0k5bchq1jhgraqrhj9q47b45n33wnd2ipwrrj39q51jzxmyyzxj2")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; Not sure how to run tests. - (inputs (list numactl)) + (inputs (list libdrm numactl)) + (native-inputs (list `(,gcc "lib") pkg-config)) (home-page "https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface") (synopsis "Radeon Open Compute Thunk Interface") (description "User-mode API interfaces used to interact with the ROCk @@ -147,7 +153,7 @@ driver.") (file-name (git-file-name name version)) (sha256 (base32 - "0jqfqf5ymwlbpac065bhigmkgsk7mbyimdgvca7ymn38wpf80ka7")))) + "1j1cy64w13plgsy20mir4xm6x4xnwkyil3g03xnda6ynhd7bkhv7")))) (build-system cmake-build-system) (arguments `(#:configure-flags @@ -174,10 +180,23 @@ driver.") applications to launch compute kernels to available HSA ROCm kernel agents.") (license license:ncsa))) -(define-public rocclr +;; This is the source only for ROCclr as from v4.5 it should only be built as +;; part of a client. A warning is output if attempting to build stand-alone +;; and there is no install. The previous version is kept as rocclr-4. +(define rocclr-src + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ROCm-Developer-Tools/ROCclr.git") + (commit (string-append "rocm-" %rocm-version)))) + (sha256 + (base32 + "0x1frzpz9j1s516vscbdm9g5cqirvv5w7wmq2kyljcygnci7yqar")))) + +(define-public rocclr-4 (package - (name "rocclr") - (version %rocm-version) + (name "rocclr-4") + (version "4.3.0") (source (origin (method git-fetch) (uri (git-reference @@ -232,39 +251,41 @@ allows runtimes to work on Windows as well as on Linux without much effort.") (file-name (git-file-name name version)) (sha256 (base32 - "1cglpiaj3ny1z74ssmy6j63vj92sfy4q38ix6qsga0mg3b2wvqz3")) + "1rirvc8h0ahicw1vw4js4jq5gw25x47gmg3gczmyz97c72wvgfiv")) (patches (search-patches - "rocm-opencl-runtime-3.10.0-includes.patch" ;; Do not install libOpenCL, which ocl-icd provides. "rocm-opencl-runtime-4.3-noopencl.patch" ;; Guix includes a program clinfo already. - "rocm-opencl-runtime-4.3-noclinfo.patch" - ;; cltrace linking fails, remove it. - "rocm-opencl-runtime-4.3-nocltrace.patch")))) + "rocm-opencl-runtime-4.3-noclinfo.patch")))) (build-system cmake-build-system) (arguments - `(#:tests? #f ; Not sure how to run them. - #:phases - (modify-phases %standard-phases - (add-after 'install 'create-icd - ;; Manually install ICD, which simply consists of dumping - ;; the path of the .so into the correct file. - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (vendors (string-append out "/etc/OpenCL/vendors")) - (sopath (string-append out "/lib/libamdocl64.so"))) - (mkdir-p vendors) - (with-output-to-file (string-append vendors "/amdocl64.icd") - (lambda _ (display sopath))))))))) + (list + #:tests? #f ; Not sure how to run them. + #:configure-flags + #~(list + (string-append "-DAMD_OPENCL_PATH=" #$(package-source this-package)) + ;; The ROCclr source is needed to build the runtime. + (string-append "-DROCCLR_PATH=" #$rocclr-src) + (string-append "-DROCM_PATH=" #$output)) + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'create-icd + ;; Manually install ICD, which simply consists of dumping + ;; the path of the .so into the correct file. + (lambda* (#:key outputs #:allow-other-keys) + (let* ((vendors (string-append #$output "/etc/OpenCL/vendors")) + (sopath (string-append #$output "/lib/libamdocl64.so"))) + (mkdir-p vendors) + (with-output-to-file (string-append vendors "/amdocl64.icd") + (lambda _ (display sopath))))))))) (inputs - (list mesa - rocm-comgr - rocr-runtime - rocclr + (list glew + mesa + numactl opencl-icd-loader - glew)) - (native-inputs `()) + rocm-comgr + rocr-runtime)) (synopsis "ROCm OpenCL Runtime") (description "OpenCL 2.0 compatible language runtime, supporting offline and in-process/in-memory compilation.") @@ -282,7 +303,7 @@ and in-process/in-memory compilation.") (file-name (git-file-name name version)) (sha256 (base32 - "0pcm308vwkjrwnrk507iya20mkil8j0vx699w9jk2gas4n4jvkcz")))) + "0hdfbvn55h5lk5s8vqlmri5r94vlas8v8yjxwd9d70igslk0kr67")))) (build-system cmake-build-system) (arguments `(#:tests? #f ; No tests. @@ -314,7 +335,7 @@ available to ROCm and show their properties.") (file-name (git-file-name name version)) (sha256 (base32 - "0a14kwkjpiyljgzxblh031qibn6xgbxp6m12zdy1pmwb2c44jjmm")))) + "0rnn2ms68mvzpcp31dk304sfqnv352i7vb48k7rw3qjahhrjm48c")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; No tests. (inputs (list rocr-runtime)) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 0df90f3b20..d03540213e 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2015, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2016, 2017 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2017 Nikita <nikita@n0.is> -;;; Copyright © 2017, 2019, 2020, 2021 Marius Bakke <marius@gnu.org> +;;; Copyright © 2017, 2019-2022 Marius Bakke <marius@gnu.org> ;;; Copyright © 2017, 2018, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017, 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> @@ -6500,17 +6500,49 @@ alternative to Marshal for Object serialization.") (define-public ruby-pg (package (name "ruby-pg") - (version "1.2.3") + (version "1.3.5") + (home-page "https://github.com/ged/ruby-pg") (source (origin - (method url-fetch) - (uri (rubygems-uri "pg" version)) + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "13mfrysrdrh8cka1d96zm0lnfs59i5x2g6ps49r2kz5p3q81xrzj")))) + "0c2k2cibd5wwdhva68j5hhfpybm3wmvn2ym4ppn5mqmddwkjkvnk")))) (build-system ruby-build-system) (arguments - '(#:test-target "spec")) + (list + #:test-target "spec" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'disable-failing-tests + (lambda _ + ;; These tests fail because DNS is unavailable, giving an + ;; unexpected fallback executable in the connection string. + (substitute* "spec/pg/connection_spec.rb" + (("it (\"accepts an URI and adds( proper)? hostaddr\")" test) + (string-append "xit " test)) + (("it \"can create a connection option string from an option\ + string and a hash\"" test) + (string-append "xit " test))))) + (add-before 'build 'compile + (lambda _ + (invoke "rake" "compile"))) + ;; Some tests rely on postgresql_lib_path.rb, but it is not + ;; available until the gem is installed. Run tests after + ;; installing to work around it. + (delete 'check) + (add-after 'install 'check + (lambda* (#:key tests? #:allow-other-keys) + (let ((new-gem (string-append #$output + "/lib/ruby/vendor_ruby"))) + (setenv "GEM_PATH" + (string-append (getenv "GEM_PATH") ":" new-gem)) + (when tests? + (invoke "rspec")))))))) (native-inputs (list ruby-rake-compiler ruby-hoe ruby-rspec)) (inputs @@ -6518,7 +6550,6 @@ alternative to Marshal for Object serialization.") (synopsis "Ruby interface to PostgreSQL") (description "Pg is the Ruby interface to the PostgreSQL RDBMS. It works with PostgreSQL 9.0 and later.") - (home-page "https://bitbucket.org/ged/ruby-pg") (license license:ruby))) (define-public ruby-byebug diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm index 6d97e289c2..0d5034ffb7 100644 --- a/gnu/packages/rust-apps.scm +++ b/gnu/packages/rust-apps.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019, 2020 John Soo <jsoo1@asu.edu> -;;; Copyright © 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2019-2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2020 Leo Famulari <leo@famulari.name> @@ -1571,7 +1571,7 @@ support for Rust.") (native-inputs (list pkg-config)) (inputs - (list curl libssh2 openssl zlib)) + (list curl libgit2-1.3 libssh2 openssl zlib)) (home-page "https://github.com/lu-zero/cargo-c") (synopsis "Build and install C-compatible libraries") (description diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index 26d6df7a94..67dc5cdaf3 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -121,12 +121,10 @@ (package-native-inputs base-rust)))))) ;;; Note: mrustc's only purpose is to be able to bootstap Rust; it's designed -;;; to be used in source form. The latest support for bootstrapping from -;;; 1.39.0 is not yet released so use the latest commit (see: -;;; https://github.com/thepowersgang/mrustc/issues/185). -(define %mrustc-commit "c7066542f8e93d320323749216bf3c82aecb67c2") +;;; to be used in source form. +(define %mrustc-commit "b364724f15fd6fce8234ad8add68107c23a22151") (define %mrustc-source - (let* ((version "0.9") + (let* ((version "0.10") (commit %mrustc-commit) (revision "1") (name "mrustc")) @@ -138,7 +136,7 @@ (file-name (git-file-name name (git-version version revision commit))) (sha256 (base32 - "0zv1x6601s5fnnkcdlqkc4bknisqz569qb0iyb9rjsmaf1kh0na3"))))) + "0f7kh4n2663sn0z3xib8gzw0s97qpvwag40g2vs3bfjlrbpgi9z0"))))) ;;; Rust 1.39 is special in that it is built with mrustc, which shortens the ;;; bootstrap path. @@ -237,10 +235,11 @@ ,(string-take %mrustc-commit 7) "\\\"" " -D VERSION_BUILDTIME=" "\"\\\"Thu, 01 Jan 1970 00:00:01 +0000\\\"\"" - " -D VERSION_GIT_ISDIRTY=0\n")) + " -D VERSION_GIT_ISDIRTY=0\n"))) + (substitute* "minicargo.mk" ;; Do not try to fetch sources from the Internet. - ((": \\$\\(RUSTC_SRC_DL\\)") - ":")) + (("\\$\\(MINICARGO\\) \\$\\(RUSTC_SRC_DL\\)") + "$(MINICARGO)")) (substitute* "run_rustc/Makefile" (("[$]Vtime ") "$V ") @@ -249,6 +248,9 @@ "") ;; Patch the shebang of a generated wrapper for rustc (("#!/bin/sh") + (string-append "#!" (which "sh")))) + (substitute* "run_rustc/rustc_proxy.sh" + (("#!/bin/sh") (string-append "#!" (which "sh")))))))) (add-after 'patch-generated-file-shebangs 'patch-cargo-checksums (lambda* _ @@ -322,9 +324,9 @@ safety and thread safety guarantees.") (home-page "https://github.com/thepowersgang/mrustc") - ;; So far mrustc is x86_64-only. It may support i686 soon: + ;; So far mrustc is (x86_64|aarch64)-only. It may support i686 soon: ;; <https://github.com/thepowersgang/mrustc/issues/78>. - (supported-systems '("x86_64-linux")) + (supported-systems '("x86_64-linux" "aarch64-linux")) ;; Dual licensed. (license (list license:asl2.0 license:expat)))) diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm index d0f4068062..ad674a3989 100644 --- a/gnu/packages/shellutils.scm +++ b/gnu/packages/shellutils.scm @@ -368,7 +368,7 @@ are already there.") (define-public direnv (package (name "direnv") - (version "2.28.0") + (version "2.31.0") (source (origin (method git-fetch) (uri (git-reference @@ -377,7 +377,7 @@ are already there.") (file-name (git-file-name name version)) (sha256 (base32 - "0yk53jn7wafklixclka17wyjjs2g5giigjr2bd0xzy10nrzwp7c9")))) + "1c52izjzkdhmyrfx1gmbp34n0qpxyxw0s94f0vy3ldlg8xr36wmk")))) (build-system go-build-system) (arguments '(#:import-path "github.com/direnv/direnv" @@ -405,8 +405,7 @@ are already there.") (invoke "go" "test" "./...") ;; Clean up from the tests, especially so that the extra ;; direnv executable that's generated is removed. - (invoke "make" "clean"))) - #t))))) + (invoke "make" "clean")))))))) (native-inputs (list go-github-com-burntsushi-toml go-github-com-direnv-go-dotenv go-github-com-mattn-go-isatty go-golang-org-x-mod which)) diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index 2e2be68770..aa540c1012 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -15,7 +15,7 @@ ;;; Copyright © 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com> -;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re> ;;; ;;; This file is part of GNU Guix. @@ -35,9 +35,11 @@ (define-module (gnu packages ssh) #:use-module (gnu packages) + #:use-module (gnu packages admin) #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages boost) + #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages crypto) #:use-module (gnu packages elf) @@ -506,7 +508,7 @@ responsive, especially over Wi-Fi, cellular, and long-distance links.") (define-public dropbear (package (name "dropbear") - (version "2020.81") + (version "2022.82") (source (origin (method url-fetch) @@ -514,21 +516,34 @@ responsive, especially over Wi-Fi, cellular, and long-distance links.") "https://matt.ucc.asn.au/dropbear/releases/" "dropbear-" version ".tar.bz2")) (sha256 - (base32 "0fy5ma4cfc2pk25mcccc67b2mf1rnb2c06ilb7ddnxbpnc85s8s8")) + (base32 "1lbmmmm8f56p24c6jq74rg2kw6kl3w4i5h10vnxjigq2phmqs0rs")) (modules '((guix build utils))) (snippet '(begin (delete-file-recursively "libtommath") (delete-file-recursively "libtomcrypt") (substitute* "configure" - (("-ltomcrypt") "-ltomcrypt -ltommath")) - #t)))) + (("-ltomcrypt") "-ltomcrypt -ltommath")))))) (build-system gnu-build-system) (arguments - `(#:configure-flags '("--disable-bundled-libtom") - #:tests? #f)) ; there is no "make check" or anything similar - (inputs - (list libtomcrypt libtommath zlib)) + (list + #:configure-flags #~(list "--disable-bundled-libtom") + ;; The test suite runs an instance of dropbear, which requires a + ;; resolver ("Error resolving: Servname not supported for ai_socktype"). + #:tests? #f + #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'enable-x11-forwarding + (lambda _ + ;; The following patch was retrieved from: + ;; https://github.com/mkj/dropbear/commit/ + ;; 0292aacdf0aa57d03f2a3ab7e53cf650e6f29389. + (substitute* "svr-x11fwd.c" + (("DROPBEAR_CHANNEL_PRIO_INTERACTIVE") + "DROPBEAR_PRIO_LOWDELAY")) + (substitute* "default_options.h" + (("#define DROPBEAR_X11FWD 0") + "#define DROPBEAR_X11FWD 1"))))))) + (inputs (list libtomcrypt libtommath zlib)) (synopsis "Small SSH server and client") (description "Dropbear is a relatively small SSH server and client. It runs on a variety of POSIX-based platforms. Dropbear is @@ -785,31 +800,38 @@ shell services and remote host selection.") (define-public python-asyncssh (package (name "python-asyncssh") - (version "2.7.1") + (version "2.11.0") (source (origin (method url-fetch) (uri (pypi-uri "asyncssh" version)) (sha256 (base32 - "0lnhh2h1mj79j66ni883s9f3xldnbjb10vh80g24b7m003mm524c")))) + "0mkvyv2fmbdfnfdh7g2im0gxnp8hwxv5g1xdazfsipd9ggknrhsr")))) (build-system python-build-system) (propagated-inputs (list python-cryptography python-pyopenssl python-gssapi - python-bcrypt)) + python-bcrypt python-typing-extensions)) (native-inputs - (list openssh openssl)) + (list openssh openssl python-fido2 python-aiofiles netcat + python-pytest)) (arguments `(#:phases (modify-phases %standard-phases (add-after 'unpack 'disable-tests (lambda* _ + (substitute* "tests/test_connection.py" + ;; nc is always available. + (("which nc") "true")) (substitute* "tests/test_agent.py" ;; TODO Test fails for unknown reason (("(.+)async def test_confirm" all indent) (string-append indent "@unittest.skip('disabled by guix')\n" - indent "async def test_confirm"))) - #t))))) + indent "async def test_confirm"))))) + (replace 'check + (lambda* (#:key tests? inputs outputs #:allow-other-keys) + (when tests? + (invoke "pytest" "-vv"))))))) (home-page "https://asyncssh.readthedocs.io/") (synopsis "Asynchronous SSHv2 client and server library for Python") (description diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 9fe5bbd95e..88d7f534b4 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -1137,14 +1137,14 @@ designed by Cynthia Brewer as described at http://colorbrewer2.org") (define-public r-sendmailr (package (name "r-sendmailr") - (version "1.2-1") + (version "1.2-1.1") (source (origin (method url-fetch) (uri (cran-uri "sendmailR" version)) (sha256 (base32 - "0z7ipywnzgkhfvl4zb2fjwl1xq7b5wib296vn9c9qgbndj6b1zh4")))) + "1dgxl6wnadlw5b3m4has5zalpk3pd5j70hfps92b9lbx4i7xbmr0")))) (properties `((upstream-name . "sendmailR"))) (build-system r-build-system) (propagated-inputs @@ -1840,24 +1840,25 @@ database.") (define-public r-dbplyr (package (name "r-dbplyr") - (version "2.1.1") + (version "2.2.0") (source (origin (method url-fetch) (uri (cran-uri "dbplyr" version)) (sha256 (base32 - "025wqpmxdhzblb0pf58m3qh5h6bf5x8qvkf47vyl1cjsp13wz95b")))) + "1qfwk8g8z5l9vbh4pj53pippsqsiqmn8qbvm1h1v7y29jcn0jvja")))) (build-system r-build-system) (propagated-inputs (list r-assertthat r-blob + r-cli r-dbi r-dplyr - r-ellipsis r-glue r-lifecycle r-magrittr + r-pillar r-purrr r-r6 r-rlang @@ -2952,13 +2953,13 @@ engine (version 3.8.8.2) is included.") (define-public r-rcurl (package (name "r-rcurl") - (version "1.98-1.6") + (version "1.98-1.7") (source (origin (method url-fetch) (uri (cran-uri "RCurl" version)) (sha256 (base32 - "18nif4phr5vfhri07mnchiym0qfm31ak9nxvb2v9ac84mij6idbc")))) + "138qfkw03j0g5wby24811w9f3virz1fxlgkgnavf6gv3c00jvhia")))) (properties `((upstream-name . "RCurl"))) (build-system r-build-system) (arguments @@ -2994,13 +2995,13 @@ ldap, and also supports cookies, redirects, authentication, etc.") (define-public r-xml (package (name "r-xml") - (version "3.99-0.9") + (version "3.99-0.10") (source (origin (method url-fetch) (uri (cran-uri "XML" version)) (sha256 (base32 - "02ba407ddgil4jbjzrbw756hlxzy3mihc5dk1ngcbvsp67gxw5cw")))) + "0nzkgylnqnnvsh27007np8klwv2xi9wqxhw05mzczhxdxnsr2nf4")))) (properties `((upstream-name . "XML"))) (build-system r-build-system) @@ -3115,16 +3116,16 @@ statements.") (define-public r-segmented (package (name "r-segmented") - (version "1.5-0") + (version "1.6-0") (source (origin (method url-fetch) (uri (cran-uri "segmented" version)) (sha256 (base32 - "1d8np6psnmqyq3bxxd17ivp6pq6p8rx5hal4bgz8ckc4d1i9lp6n")))) + "0sg59j59kz3zrwl3mi4ps1qw3hvwljygqa1d652vjdsx9w57zbvb")))) (build-system r-build-system) - (propagated-inputs (list r-mass)) + (propagated-inputs (list r-mass r-nlme)) (home-page "https://cran.r-project.org/web/packages/segmented") (synopsis "Regression models with breakpoints estimation") (description @@ -3834,14 +3835,14 @@ Stochastic Neighbor Embedding using a Barnes-Hut implementation.") (define-public r-e1071 (package (name "r-e1071") - (version "1.7-9") + (version "1.7-11") (source (origin (method url-fetch) (uri (cran-uri "e1071" version)) (sha256 (base32 - "09i2hmyf1bxansqp24p9n9djlzzarclqs173gjjv3fg0giga3ycv")))) + "0byr92csnydycdarxdkq4cghddnx5qp6fqxm6wnp9g6aww88xha8")))) (build-system r-build-system) (propagated-inputs (list r-class r-proxy)) @@ -3946,13 +3947,13 @@ want to migrate to S4.") (define-public r-r-oo (package (name "r-r-oo") - (version "1.24.0") + (version "1.25.0") (source (origin (method url-fetch) (uri (cran-uri "R.oo" version)) (sha256 (base32 - "1divisff26fmiqg6vmabnwlrx079c066r8qvkakfp336vnwdm89p")))) + "1vxy8yw4yblb3vgl64yh0b6zf1d51rnc2c23kmyyw629fxhr1cdq")))) (properties `((upstream-name . "R.oo"))) (build-system r-build-system) (propagated-inputs @@ -5101,14 +5102,14 @@ to change in the future.") (define-public r-flexmix (package (name "r-flexmix") - (version "2.3-17") + (version "2.3-18") (source (origin (method url-fetch) (uri (cran-uri "flexmix" version)) (sha256 (base32 - "0jangf89174p0idh9afbicfiln2sz8jxc3bjc6n0j9036dw9n09n")))) + "0lcvsvmhkbwac50l109an6prl1ng4mkyvr436344b20897ph28j6")))) (build-system r-build-system) (propagated-inputs (list r-lattice r-modeltools r-nnet)) @@ -5724,17 +5725,15 @@ normals.") (define-public r-mnormt (package (name "r-mnormt") - (version "2.0.2") + (version "2.1.0") (source (origin (method url-fetch) (uri (cran-uri "mnormt" version)) (sha256 (base32 - "0d7ka4l4fl1wi77r2r81dc91n6cbj2xrb3lsizz5y0ziscva0sjw")))) + "1f07ngi89px437az030anbh8afmf6n635ax1akxak2idwc2qaj9d")))) (build-system r-build-system) - (propagated-inputs - (list r-tmvnsim)) (native-inputs (list gfortran)) (home-page "http://azzalini.stat.unipd.it/SW/Pkg-mnormt") @@ -6409,7 +6408,7 @@ files, including Rmarkdown files.") (define-public readstat (package (name "readstat") - (version "1.1.5") + (version "1.1.8") (source (origin (method git-fetch) @@ -6418,7 +6417,7 @@ files, including Rmarkdown files.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "00sdmaq0qzp6kyv53fpfi6jf3iv4pd0ap0gmw3mbfip52bbnl55w")))) + (base32 "1r04lq45h1yn34v1mgfiqjfzyaqv4axqlby0nkandamcsqyhc7y4")))) (build-system gnu-build-system) (native-inputs (list autoconf automake gnu-gettext libtool)) @@ -6433,18 +6432,21 @@ popular stats packages like SAS, Stata and SPSS.") (define-public r-quantpsyc (package (name "r-quantpsyc") - (version "1.5") + (version "1.6") (source (origin (method url-fetch) (uri (cran-uri "QuantPsyc" version)) (sha256 (base32 - "1i9bh88r8zxndzjqsj14qw64gnvm5a9kvhjhzk3qsrvl3qzjgh93")))) + "1dbj830p5837fiwa800nzsaf19lf95vc3n7jmds2q9v06mrz6syq")))) (properties `((upstream-name . "QuantPsyc"))) (build-system r-build-system) (propagated-inputs - (list r-boot r-mass)) + (list r-boot + r-dplyr + r-mass + r-purrr)) (home-page "https://cran.r-project.org/web/packages/QuantPsyc/") (synopsis "Quantitative Psychology Tools") (description diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm index 4ad21fd05a..4dfc51b283 100644 --- a/gnu/packages/terminals.scm +++ b/gnu/packages/terminals.scm @@ -835,7 +835,7 @@ eye-candy, customizable, and reasonably lightweight.") (define-public foot (package (name "foot") - (version "1.11.0") + (version "1.12.1") (home-page "https://codeberg.org/dnkl/foot") (source (origin (method git-fetch) @@ -843,7 +843,7 @@ eye-candy, customizable, and reasonably lightweight.") (file-name (git-file-name name version)) (sha256 (base32 - "1d9bk8lhmw5lc8k0mw80g0vbwgxyh3gw5c7ppy3sir07s9y0y0fn")))) + "14jqs4sarxbrgi5pxz0afqa9jxq90cb5ayqd21qj2n65whqa5bpk")))) (build-system meson-build-system) (arguments `(;; Using a "release" build is recommended both for performance, and diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index 529ecee891..18e1155b95 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr> +;;; Copyright © 2013, 2014, 2015, 2016, 2022 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Roel Janssen <roel@gnu.org> @@ -1460,139 +1460,6 @@ Taco Hoekwater.") "/fonts/source/public/amsfonts/" "/fonts/type1/public/amsfonts/" "/fonts/afm/public/amsfonts/" - "/fonts/map/dvips/amsfonts/" - "/tex/plain/amsfonts/" - "/doc/fonts/amsfonts/") - (base32 - "15q70nkjf8wqzbd5ivcdx3i2sdgqxjb38q0qn9a2qw9i0qcnx6zw")))) - (package - (inherit template) - ;; TODO: This package is missing files. - (replacement texlive-amsfonts/fixed) - (arguments - (substitute-keyword-arguments (package-arguments template) - ((#:build-targets _ #t) - '(list "amsfonts.ins")) - ((#:tex-directory _ #t) - "latex/amsfonts") - ((#:modules modules '()) - `((guix build texlive-build-system) - (guix build utils) - (ice-9 match) - (srfi srfi-1) - (srfi srfi-26))) - ((#:phases phases) - `(modify-phases ,phases - (add-before 'build 'build-fonts - (lambda* (#:key inputs #:allow-other-keys) - ;; Allow self fonts sources and other resources to be - ;; discovered. - (setenv "GUIX_TEXMF" (string-append (getenv "GUIX_TEXMF") - ":" (getcwd))) - - (let ((build (string-append (getcwd) "/build-fonts"))) - (mkdir-p build) - (with-directory-excursion "fonts/source/public/amsfonts" - (for-each (lambda (font) - (format #t "building font ~a\n" (basename font ".mf")) - (with-directory-excursion (dirname font) - (invoke "mf" "-progname=mf" - (string-append "-output-directory=" build) - (string-append "\\" - "mode:=ljfour; " - "mag:=1; " - "nonstopmode; " - "input " - (getcwd) "/" - (basename font ".mf"))))) - (find-files "." "[0-9]+\\.mf$")))) - - ;; There are no metafont sources for the Euler fonts, so we - ;; convert the afm files instead. - (let ((build (string-append (getcwd) "/build-fonts/euler"))) - (mkdir build) - (with-directory-excursion "fonts/afm/public/amsfonts/euler" - (for-each (lambda (font) - (format #t "converting afm font ~a\n" (basename font ".afm")) - (invoke "afm2tfm" font - (string-append build "/" - (basename font ".tfm")))) - (find-files "(cmextra|cyrillic|dummy|euler|symbols)" - "\\.afm$"))) - - ;; Frustratingly, not all fonts can be created this way. To - ;; generate eufm8.tfm, for example, we first scale down - ;; eufm10.afm to eufm8.pl, and then generate the tfm file from - ;; the pl file. - (setenv "TEXINPUTS" - (string-append ":" build "//:" - (getcwd) "/fonts/afm/public/amsfonts//:" - (getcwd) "/source/latex/amsfonts//:")) - (with-directory-excursion build - (for-each (match-lambda - (((target-base target-size) - (source-base source-size)) - (let ((factor (number->string - (truncate/ (* 1000 target-size) - source-size)))) - (invoke "tex" - "-interaction=scrollmode" - (string-append "\\input fontinst.sty " - "\\transformfont{" target-base "}" - "{\\scalefont{" factor "}" - "{\\fromafm{" source-base "}}} " - "\\bye"))) - (invoke "pltotf" - (string-append target-base ".pl") - (string-append target-base ".tfm")) - (delete-file (string-append target-base ".pl")))) - - '((("eufm8" 8) ("eufm10" 10)) - - (("eufb6" 6) ("eufb7" 7)) - (("eufb8" 8) ("eufb10" 10)) - (("eufb9" 9) ("eufb10" 10)) - - (("eufm6" 6) ("eufb7" 7)) - (("eufm9" 9) ("eufb10" 10)) - - (("eurb6" 6) ("eurb7" 7)) - (("eurb8" 8) ("eurb10" 10)) - (("eurb9" 9) ("eurb10" 10)) - - (("eurm6" 6) ("eurm7" 7)) - (("eurm8" 8) ("eurm10" 10)) - (("eurm9" 9) ("eurm10" 10)))))))) - (add-after 'install 'install-generated-fonts - (lambda* (#:key inputs outputs #:allow-other-keys) - (copy-recursively "build-fonts" - (string-append - (assoc-ref outputs "out") - "/share/texmf-dist/fonts/tfm/public/amsfonts")))))))) - (native-inputs - (list (texlive-updmap.cfg (list texlive-fontinst)))) - (home-page "https://www.ctan.org/pkg/amsfonts") - (synopsis "TeX fonts from the American Mathematical Society") - (description - "This package provides an extended set of fonts for use in mathematics, -including: extra mathematical symbols; blackboard bold letters (uppercase -only); fraktur letters; subscript sizes of bold math italic and bold Greek -letters; subscript sizes of large symbols such as sum and product; added sizes -of the Computer Modern small caps font; cyrillic fonts (from the University of -Washington); Euler mathematical fonts. All fonts are provided as Adobe Type 1 -files, and all except the Euler fonts are provided as Metafont source. The -distribution also includes the canonical Type 1 versions of the Computer -Modern family of fonts. The Euler fonts are supported by separate packages; -details can be found in the documentation.") - (license license:silofl1.1)))) - -(define-public texlive-amsfonts/fixed - (let ((template (simple-texlive-package - "texlive-amsfonts-fixed" - (list "/source/latex/amsfonts/" - "/fonts/source/public/amsfonts/" - "/fonts/type1/public/amsfonts/" - "/fonts/afm/public/amsfonts/" "/fonts/tfm/public/amsfonts/" "/fonts/map/dvips/amsfonts/" "/tex/plain/amsfonts/" @@ -4257,37 +4124,6 @@ loading fonts by their proper names instead of file names.") (define-deprecated-package texlive-luatex-luaotfload texlive-luaotfload) -(define-public texlive-latex-amsmath - (package - (name "texlive-latex-amsmath") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (texlive-ref "latex" "amsmath")) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "172zybw7rp05jca8wl6x0mh6z6gncdyi1j9wdfyjnhbvqw0z4wi4")))) - ;; This package misses important files - (replacement texlive-amsmath) - (build-system texlive-build-system) - (arguments '(#:tex-directory "latex/amsmath")) - (home-page "https://www.ctan.org/pkg/amsmath") - (synopsis "AMS mathematical facilities for LaTeX") - (description - "This is the principal package in the AMS-LaTeX distribution. It adapts -for use in LaTeX most of the mathematical features found in AMS-TeX; it is -highly recommended as an adjunct to serious mathematical typesetting in LaTeX. -When amsmath is loaded, AMS-LaTeX packages @code{amsbsyamsbsy} (for bold -symbols), @code{amsopnamsopn} (for operator names) and -@code{amstextamstext} (for text embedded in mathematics) are also loaded. -This package is part of the LaTeX required distribution; however, several -contributed packages add still further to its appeal; examples are -@code{empheqempheq}, which provides functions for decorating and highlighting -mathematics, and @code{ntheoremntheorem}, for specifying theorem (and similar) -definitions.") - (license license:lppl1.3c+))) - (define-public texlive-amsmath (let ((template (simple-texlive-package "texlive-amsmath" @@ -4334,6 +4170,8 @@ mathematics, and @code{ntheoremntheorem}, for specifying theorem (and similar) definitions.") (license license:lppl1.3c+)))) +(define-deprecated-package texlive-latex-amsmath texlive-amsmath) + (define-public texlive-amscls (let ((template (simple-texlive-package "texlive-amscls" @@ -4374,8 +4212,6 @@ distribution.") "0qr5vjp79g1c1l6k173qhfdfabgbky73wymzhm56pazx4a8r08wz")))) (package (inherit template) - ;; TODO: This package is missing files. - (replacement texlive-babel/fixed) (arguments (substitute-keyword-arguments (package-arguments template) ((#:tex-directory _ #t) @@ -4383,14 +4219,27 @@ distribution.") ((#:phases phases) `(modify-phases ,phases (add-after 'unpack 'chdir - (lambda _ (chdir "source/latex/babel/") #t)) + (lambda _ (chdir "source/latex/babel/"))) ;; This package tries to produce babel.aux twice but refuses to ;; overwrite the first one. (add-before 'build 'fix-ins (lambda _ (substitute* "babel.ins" - (("askonceonly") "askforoverwritefalse")) - #t)) + (("askonceonly") "askforoverwritefalse")))) + (add-before 'copy-files 'unchdir + (lambda _ + (chdir "../../.."))) + (add-after 'copy-files 'delete-extra-files + (lambda* (#:key outputs #:allow-other-keys) + (delete-file-recursively + (string-append (assoc-ref outputs "out") + "/share/texmf-dist/source/latex/babel/build")) + (delete-file + (string-append (assoc-ref outputs "out") + "/share/texmf-dist/tex/generic/babel/bbind.ist")) + (delete-file + (string-append (assoc-ref outputs "out") + "/share/texmf-dist/tex/generic/babel/bbglo.ist")))) (add-after 'install 'install-locales (lambda* (#:key outputs #:allow-other-keys) (let ((locale-directory @@ -4413,29 +4262,6 @@ what has to be done for each language. Users of XeTeX are advised to use the polyglossia package rather than Babel.") (license license:lppl1.3+)))) -(define-public texlive-babel/fixed - (package - (inherit texlive-babel) - (name "texlive-babel-fixed") - (arguments - (substitute-keyword-arguments (package-arguments texlive-babel) - ((#:phases phases) - `(modify-phases ,phases - (add-before 'copy-files 'unchdir - (lambda _ - (chdir "../../.."))) - (add-after 'copy-files 'delete-extra-files - (lambda* (#:key outputs #:allow-other-keys) - (delete-file-recursively - (string-append (assoc-ref outputs "out") - "/share/texmf-dist/source/latex/babel/build")) - (delete-file - (string-append (assoc-ref outputs "out") - "/share/texmf-dist/tex/generic/babel/bbind.ist")) - (delete-file - (string-append (assoc-ref outputs "out") - "/share/texmf-dist/tex/generic/babel/bbglo.ist")))))))))) - (define-deprecated-package texlive-latex-babel texlive-babel) (define-public texlive-cs @@ -4729,8 +4555,6 @@ language that is written in a Cyrillic alphabet.") "11f14dzhwsy4pli21acccip43d36nf3pac33ihjffnps1i2mhqkd")))) (package (inherit template) - ;; TODO: This package is missing files. - (replacement texlive-psnfss/fixed) (arguments (substitute-keyword-arguments (package-arguments template) ((#:tex-directory _ #t) @@ -4740,34 +4564,14 @@ language that is written in a Cyrillic alphabet.") (add-after 'unpack 'chdir (lambda _ (chdir "source/latex/psnfss"))) - (add-after 'install 'chdir-back - (lambda _ - (chdir "../../.."))) - (add-after 'chdir-back 'clean-installed-files - (lambda _ - ;; Remove the generated .sty files from the build area as - ;; these were already copied to the default output in the - ;; "install" phase. - (delete-file-recursively "source/latex/psnfss/build"))) - (add-after 'clean-installed-files 'move-doc-files - (lambda* (#:key outputs #:allow-other-keys) - (let* ((doc (assoc-ref outputs "doc")) - (doc-root (string-append doc "/share/texmf-dist")) - (doc-path "doc/latex/psnfss") - (source-path "source/latex/psnfss")) - ;; Move the PDF documentation to the "doc" output. - (let* ((file-name "psnfss2e.pdf") - (source (string-append doc-path "/" file-name)) - (target-dir (string-append doc-root "/" doc-path))) - (mkdir-p target-dir) - (copy-file source - (string-append target-dir "/" file-name)) - (delete-file source)) - - ;; Keep the remaining files together with the package's - ;; source, as per the installation instructions. - (copy-recursively doc-path source-path) - (delete-file-recursively "doc")))))))) + (add-before 'copy-files 'unchdir + (lambda _ + (chdir "../../.."))) + (add-after 'copy-files 'delete-extra-files + (lambda* (#:key outputs #:allow-other-keys) + (delete-file-recursively + (string-append (assoc-ref outputs "out") + "/share/texmf-dist/source/latex/psnfss/build")))))))) (native-inputs (list texlive-cm)) (home-page "https://www.ctan.org/pkg/psnfss") @@ -4786,23 +4590,6 @@ means to select single glyphs from symbol fonts. The bundle as a whole is part of the LaTeX required set of packages.") (license license:lppl1.2+)))) -(define-public texlive-psnfss/fixed - (package - (inherit texlive-psnfss) - (name "texlive-psnfss-fixed") - (arguments - (substitute-keyword-arguments (package-arguments texlive-psnfss) - ((#:phases phases) - `(modify-phases ,phases - (add-before 'copy-files 'unchdir - (lambda _ - (chdir "../../.."))) - (add-after 'copy-files 'delete-extra-files - (lambda* (#:key outputs #:allow-other-keys) - (delete-file-recursively - (string-append (assoc-ref outputs "out") - "/share/texmf-dist/source/latex/psnfss/build")))))))))) - (define-deprecated-package texlive-latex-psnfss texlive-psnfss) ;; For user profiles @@ -4819,7 +4606,7 @@ part of the LaTeX required set of packages.") texlive-latex-base texlive-kpathsea ;for mktex.opt ;; LaTeX packages from the "required" set. - texlive-latex-amsmath + texlive-amsmath texlive-amscls texlive-babel texlive-generic-babel-english @@ -7408,8 +7195,6 @@ and alphabets with a set of text faces suitable for professional publishing.") "0yn0yl6x1z9ab5gb56lhvkqabd2agz3ggxifwxkiysrj5780j29z")))) (package (inherit template) - ;; TODO: This package is missing files. - (replacement texlive-stmaryrd/fixed) (arguments (substitute-keyword-arguments (package-arguments template) ((#:tex-directory _ #t) "latex/stmaryrd") @@ -7425,7 +7210,15 @@ and alphabets with a set of text faces suitable for professional publishing.") (("^%% LaTeX2e.*") "\\input docstrip\n") (("fontdef\\}\\}" line) (string-append line "\n\\endbatchfile"))) - #t)))))) + #t)) + (add-before 'copy-files 'unchdir + (lambda _ + (chdir "../../.."))) + (add-after 'copy-files 'delete-extra-files + (lambda* (#:key outputs #:allow-other-keys) + (delete-file-recursively + (string-append (assoc-ref outputs "out") + "/share/texmf-dist/source/fonts/stmaryrd/build")))))))) (home-page "https://www.ctan.org/pkg/stmaryrd") (synopsis "St Mary Road symbols for theoretical computer science") (description @@ -7436,25 +7229,6 @@ use under LaTeX; the package supports the @code{only} option (provided by the the whole font.") (license license:lppl)))) -(define-public texlive-stmaryrd/fixed - (package - (inherit texlive-stmaryrd) - (name "texlive-stmaryrd-fixed") - (arguments - (substitute-keyword-arguments (package-arguments texlive-stmaryrd) - ((#:tex-directory _ #t) - "latex/stmaryrd") - ((#:phases phases) - `(modify-phases ,phases - (add-before 'copy-files 'unchdir - (lambda _ - (chdir "../../.."))) - (add-after 'copy-files 'delete-extra-files - (lambda* (#:key outputs #:allow-other-keys) - (delete-file-recursively - (string-append (assoc-ref outputs "out") - "/share/texmf-dist/source/fonts/stmaryrd/build")))))))))) - (define-deprecated-package texlive-fonts-stmaryrd texlive-stmaryrd) (define-public texlive-subfigure @@ -9754,6 +9528,27 @@ titles.") ;; No version of the GPL is specified. (license license:gpl3+))) +(define-public texlive-xunicode + (package + (inherit + (simple-texlive-package "texlive-xunicode" + (list "doc/xelatex/xunicode/" + "tex/xelatex/xunicode/") + (base32 + "1d96i8kd2lhbykc3rxy2jjvws404f2vy1cvdcp5bdr6l9m72q1fa") + #:trivial? #t)) + (propagated-inputs (list texlive-tipa)) + (home-page "https://ctan.org/macros/xetex/latex/xunicode") + (synopsis "Generate Unicode characters from accented glyphs") + (description + "The package supports XeTeX's (and other putative future similar engines') +need for Unicode characters, in a similar way to what the fontenc does for +8-bit (and the like) fonts: convert accent-glyph sequence to a single Unicode +character for output. The package also covers glyphs specified by +packages (such as @code{tipa}) which define many commands for single text +glyphs.") + (license license:lppl1.3+))) + (define-public texlive-xypic (let ((template (simple-texlive-package "texlive-xypic" @@ -11655,6 +11450,76 @@ family and SGML-based languages. Xindy is highly configurable, both in markup terms and in terms of the collating order of the text being processed.") (license license:gpl2+))) +(define-public texlive-fmtcount + (package + (inherit (simple-texlive-package + "texlive-fmtcount" + (list "doc/latex/fmtcount/" + "scripts/fmtcount/" + "source/latex/fmtcount/" + "tex/latex/fmtcount/") + (base32 + "1biw0g6s2arq6kq52c1yfkl0vzafja2az65c3d0syq0vgjzj9763") + #:trivial? #t)) + (home-page "https://ctan.org/macros/latex/contrib/fmtcount") + (synopsis "Display the value of a LaTeX counter in a variety of formats") + (description + "The package provides commands that display the value of a LaTeX counter in a +variety of formats (ordinal, text, hexadecimal, decimal, octal, binary etc). +The package offers some multilingual support; configurations for use in English +(both British and American usage), French (including Belgian and Swiss +variants), German, Italian, Portuguese and Spanish documents are provided. This +package was originally provided as part of the author's datetime package, but is +now distributed separately."))) + +(define-public texlive-inriafonts + (package + (inherit (simple-texlive-package + "texlive-inriafonts" + (list "doc/fonts/inriafonts/" + "fonts/enc/dvips/inriafonts/" + "fonts/map/dvips/inriafonts/" + "fonts/opentype/public/inriafonts/" + "fonts/tfm/public/inriafonts/" + "fonts/truetype/public/inriafonts/" + "fonts/type1/public/inriafonts/" + "fonts/vf/public/inriafonts/" + "tex/latex/inriafonts/") + (base32 + "0ngbpr4pl7r82jmdhiksp32qvbvggf2nawwqq0pkb7cffp95ya49") + #:trivial? #t)) + (propagated-inputs (list texlive-ly1)) ;requires LY1 font encoding + (home-page "https://ctan.org/fonts/inriafonts") + (synopsis "Inria fonts with LaTeX support") + (description + "Inria is a free font designed by Black[Foundry] for Inria, a French research +institute. It comes as Serif and Sans Serif, each with three weights and +matching italics. Using these fonts with XeLaTeX and LuaLaTeX is easy using +the fontspec package; we refer to the documentation of fontspec for more +information. The present package provides a way of using them with LaTeX and +pdfLaTeX: it provides two style files, @file{InriaSerif.sty} and +@file{InriaSans.sty}, together with the PostScript version of the fonts and +their associated files. These were created using autoinst.") + (license (list license:lppl license:silofl1.1)))) + +(define-public texlive-floatflt + (package + (inherit (simple-texlive-package + "texlive-floatflt" + (list "doc/latex/floatflt/" + "source/latex/floatflt/" + "tex/latex/floatflt/") + (base32 + "1piy8ajbbcadsjwp0mhlgxm2ggggnb5sn75arfs5fxiaqrwd572j") + #:trivial? #t)) + (home-page "https://ctan.org/macros/latex/contrib/floatflt") + (synopsis "Wrap text around floats") + (description + "The package can float text around figures and tables which do not +span the full width of a page; it improves upon floatfig, and allows +tables and figures to be set left/right or alternating on even/odd pages.") + (license license:lppl1.3+))) + (define-public bibtool (package (name "bibtool") diff --git a/gnu/packages/texinfo.scm b/gnu/packages/texinfo.scm index f3c870d9e6..a1834923c4 100644 --- a/gnu/packages/texinfo.scm +++ b/gnu/packages/texinfo.scm @@ -9,6 +9,7 @@ ;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> +;;; Copyright © 2022 ( <paren@disroot.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,6 +28,7 @@ (define-module (gnu packages texinfo) #:use-module (gnu packages autotools) + #:use-module (guix gexp) #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix utils) @@ -254,49 +256,42 @@ Texi2HTML.") (base32 "1wdli2szkgm3l0vx8rf6lylw0b0m47dlz9iy004n928nqkzix76n")))))) (define-public pinfo - (package - (name "pinfo") - (version "0.6.13") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/baszoetekouw/pinfo") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "173d2p22irwiabvr4z6qvr6zpr6ysfkhmadjlyhyiwd7z62larvy")))) - (build-system gnu-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'remove-Werror - (lambda _ - (substitute* "configure.ac" - (("-Werror") "")) - #t)) - (add-after 'unpack 'embed-reference-to-clear - (lambda* (#:key inputs #:allow-other-keys) - (substitute* '("src/manual.c" - "src/mainfunction.c" - "src/utils.c") - (("\"clear\"") - (string-append "\"" (which "clear") "\""))) - #t))))) - (inputs - (list ncurses readline)) - (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("gettext" ,gettext-minimal) - ("libtool" ,libtool) - ("texinfo" ,texinfo))) - (home-page "https://github.com/baszoetekouw/pinfo") - (synopsis "Lynx-style Info file and man page reader") - (description - "Pinfo is an Info file viewer. Pinfo is similar in use to the Lynx web + (let ((commit "3d76eecde211e41ccc28b04e229f159b3f924399") + (revision "0")) + (package + (name "pinfo") + ;; Latest tag is completely broken and does not build. + (version (git-version "0.6.13" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/baszoetekouw/pinfo") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0qym323d9my5l4bhw9vry453hhlxhjjvy8mcdi38sk0bqqid0vd1")))) + (build-system gnu-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'embed-reference-to-clear + (lambda* (#:key inputs #:allow-other-keys) + (let ((ncurses (assoc-ref inputs "ncurses"))) + (substitute* (list "src/manual.c" + "src/mainfunction.c" + "src/utils.c") + (("\"clear\"") + (string-append "\"" ncurses "/bin/clear\""))))))))) + (inputs + (list ncurses readline)) + (native-inputs + (list autoconf automake gettext-minimal libtool texinfo)) + (home-page "https://github.com/baszoetekouw/pinfo") + (synopsis "Lynx-style Info file and man page reader") + (description + "Pinfo is an Info file viewer. Pinfo is similar in use to the Lynx web browser. You just move across info nodes, and select links, follow them, etc. It supports many colors. Pinfo also supports viewing of manual pages -- they are colorized like in the midnight commander's viewer, and additionally they are hypertextualized.") - (license gpl2+))) + (license gpl2+)))) diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm index cbc657172d..fb4f52025c 100644 --- a/gnu/packages/textutils.scm +++ b/gnu/packages/textutils.scm @@ -76,14 +76,14 @@ (define-public dos2unix (package (name "dos2unix") - (version "7.4.2") + (version "7.4.3") (source (origin (method url-fetch) (uri (string-append "https://waterlan.home.xs4all.nl/dos2unix/" "dos2unix-" version ".tar.gz")) (sha256 - (base32 "00dfsf4rfyjb5j12gan8xjiirm0asshdz6dmd3l34a7ays6wadb0")))) + (base32 "0wnacvz99rnlx0ayf5jrxwljvh801r8k1ai3hj137yfsaqcv93dn")))) (build-system gnu-build-system) (arguments `(#:make-flags diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm index 5b0ef6af9e..eede7b9bd7 100644 --- a/gnu/packages/time.scm +++ b/gnu/packages/time.scm @@ -123,14 +123,14 @@ expressions.") (package (name "python-pytz") ;; This package should be kept in sync with tzdata in (gnu packages base). - (version "2021.1") + (version "2022.1") (source (origin (method url-fetch) (uri (pypi-uri "pytz" version)) (sha256 (base32 - "1nn459q7zg20n75akxl3ljkykgw1ydc8nb05rx1y4f5zjh4ak943")))) + "19ya5sh7if819flgmszz585glailhi7rr8frng03n5m8wqphwxhy")))) (build-system python-build-system) (home-page "http://pythonhosted.org/pytz") (synopsis "Python timezone library") @@ -359,7 +359,6 @@ ISO 8601 dates, time and duration.") (description "This module parses the most common forms of ISO 8601 date strings (e.g. @code{2007-01-14T20:34:22+00:00}) into @code{datetime} objects.") - (properties `((python2-variant . ,(delay python2-iso8601)))) (license expat))) (define-public python-monotonic diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index 86dc249984..243b2bc3cb 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015 David Thompson <davet@gnu.org> ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Leo Famulari <leo@famulari.name> -;;; Copyright © 2016, 2017, 2019, 2021 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017, 2019, 2021, 2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017, 2018 Nikita <nikita@n0.is> ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> @@ -631,13 +631,13 @@ netcat implementation that supports TLS.") (package (name "python-acme") ;; Remember to update the hash of certbot when updating python-acme. - (version "1.18.0") + (version "1.28.0") (source (origin (method url-fetch) (uri (pypi-uri "acme" version)) (sha256 (base32 - "1bv2swaqmzpcx2nq1nbhrc6b825d5sxkdv0al972sjfcpcqn1q4s")))) + "12fmw4g63pzbrmmrkk6hgg0k5px6jyx3scv9fmn60h21387jv0hz")))) (build-system python-build-system) (arguments `(#:phases @@ -651,8 +651,11 @@ netcat implementation that supports TLS.") (man (string-append out "/share/man/man1")) (info (string-append out "/info"))) (install-file "docs/_build/texinfo/acme-python.info" info) - (install-file "docs/_build/man/acme-python.1" man) - #t)))))) + (install-file "docs/_build/man/acme-python.1" man)))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "pytest" "-vv"))))))) (native-inputs (list python-pytest ;; For documentation @@ -661,7 +664,8 @@ netcat implementation that supports TLS.") python-sphinx-rtd-theme texinfo)) (propagated-inputs - (list python-josepy + (list python-chardet + python-josepy python-requests python-requests-toolbelt python-pytz @@ -685,7 +689,7 @@ netcat implementation that supports TLS.") (uri (pypi-uri "certbot" version)) (sha256 (base32 - "0yr8sxfg5zspal04l9lpd9xis6gp8il20bhka54xr9bb4hc6xrgk")))) + "0p4cpakx1kc8lczlgxqryr2asnyrvw6p5wmkamkjqdsf3z7xhm2b")))) (build-system python-build-system) (arguments `(,@(substitute-keyword-arguments (package-arguments python-acme) @@ -740,14 +744,14 @@ certificates for free.") (define-public perl-net-ssleay (package (name "perl-net-ssleay") - (version "1.88") + (version "1.92") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/C/CH/CHRISN/" "Net-SSLeay-" version ".tar.gz")) (sha256 (base32 - "1pfgh4h3szcpvqlcimc60pjbk9zwls99x5863sva0wc47i4dl010")))) + "1acnjd5180dca26dmjq0b9ib0dbavlrzd6fnf4nidrzj02rz5hj7")))) (build-system perl-build-system) (inputs (list openssl)) (arguments diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm index 40f941fcea..139ef4b9e4 100644 --- a/gnu/packages/tor.scm +++ b/gnu/packages/tor.scm @@ -58,14 +58,14 @@ (define-public tor (package (name "tor") - (version "0.4.7.7") + (version "0.4.7.8") (source (origin (method url-fetch) (uri (string-append "https://dist.torproject.org/tor-" version ".tar.gz")) (sha256 (base32 - "0i2v3a2h7d0bjn64pi1c6h2x15lb53plf71xwkbkb51bnmc124ry")))) + "15g1dyk0y2lrcr039y5b10bnn1zd3xcys55yz3qdbk9ammkmr6ly")))) (build-system gnu-build-system) (arguments (list #:configure-flags diff --git a/gnu/packages/toys.scm b/gnu/packages/toys.scm index 09426fe6fa..4fa6966ca9 100644 --- a/gnu/packages/toys.scm +++ b/gnu/packages/toys.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2017, 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2017, 2018, 2020–2022 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix@gmail.com> ;;; Copyright © 2019, 2020, 2021 Timotej Lazar <timotej.lazar@araneo.si> ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> @@ -57,8 +57,7 @@ (for-each delete-file-recursively (cons* "bitmaps/bsd" "bitmaps/sakura" "bitmaps/tomoyo" "bitmasks/bsd" "bitmasks/sakura" "bitmasks/tomoyo" - (find-files "cursors" "(bsd|card|petal).*\\.xbm"))) - #t)))) + (find-files "cursors" "(bsd|card|petal).*\\.xbm"))))))) (build-system gnu-build-system) (native-inputs (list imake)) @@ -73,8 +72,7 @@ (invoke "xmkmf") ;; Fix incorrectly generated compiler flags. (substitute* "Makefile" - (("(CDEBUGFLAGS = ).*" _ front) (string-append front "-O2\n"))) - #t)) + (("(CDEBUGFLAGS = ).*" _ front) (string-append front "-O2\n"))))) (replace 'install (lambda* (#:key outputs make-flags #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -89,12 +87,14 @@ (copy-file "oneko.man" (string-append man6 "/oneko.6")) (copy-file "oneko.man.jp" (string-append man6-ja "/oneko.6")) (for-each (lambda (file) (install-file file doc)) - (find-files "." "README.*"))) - #t))))) + (find-files "." "README.*")))))))) (home-page "http://www.daidouji.com/oneko/") (synopsis "Cute cat chasing your mouse pointer") - (description "Displays a cat or another animated character that chases the -mouse pointer around the screen while you work.") + (description + "Oneko displays an animated cat or dog that chases the mouse pointer---now +an actual mouse or a bone---around the screen while you work. + +It was written for the X Window system and does not work well on Wayland.") (license license:public-domain))) ; see https://directory.fsf.org/wiki/Oneko (define-public sl diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 48c7c3a46d..3f565867aa 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -1886,7 +1886,7 @@ videoformats depend on the configuration flags of ffmpeg.") (define-public vlc (package (name "vlc") - (version "3.0.17.3") + (version "3.0.17.4") (source (origin (method url-fetch) (uri (string-append @@ -1895,7 +1895,7 @@ videoformats depend on the configuration flags of ffmpeg.") "/vlc-" version ".tar.xz")) (sha256 (base32 - "0510vqf35f0v9c498yki5441aig3fdqq3nv4vsb1vlvki7pr0zkg")))) + "0cs1vnv91mg7p6253v6wms3zlz91xzphpwaw14dmrd2gibc64nlc")))) (build-system gnu-build-system) (native-inputs `(("flex" ,flex) @@ -2031,6 +2031,8 @@ videoformats depend on the configuration flags of ffmpeg.") (description "VLC is a cross-platform multimedia player and framework that plays most multimedia files as well as DVD, Audio CD, VCD, and various streaming protocols.") + (properties + '((release-monitoring-url . "https://download.videolan.org/pub/videolan/vlc/last"))) (license license:gpl2+))) (define-public mplayer diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm index f82f8498e1..7ef782f390 100644 --- a/gnu/packages/vim.scm +++ b/gnu/packages/vim.scm @@ -461,7 +461,7 @@ trouble using them, because you do not have to remember each snippet name.") (define-public vim-fugitive (package (name "vim-fugitive") - (version "3.6") + (version "3.7") (source (origin (method git-fetch) @@ -470,7 +470,7 @@ trouble using them, because you do not have to remember each snippet name.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "17c3wzqkbzbf0nmlxpgk90yyv3d09209fqxqysand8bzb1cbfwzn")))) + (base32 "138290g2aph1jjhaza6biky5qi4ka6435s01bwxivllgb53g3irc")))) (build-system copy-build-system) (arguments '(#:install-plan diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index b522b9d474..4cb83b4d85 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2020, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013-2017, 2020-2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016, 2017, 2018. 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net> @@ -27,6 +27,7 @@ ;;; Copyright © 2022 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2022 Ekaitz Zarraga <ekaitz@elenq.tech> ;;; Copyright © 2022 Arun Isaac <arunisaac@systemreboot.net> +;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -1212,15 +1213,17 @@ It started as a side project of LXC but can be used by any run-time.") (wrap-program (string-append bin-dir "lxd") `("PATH" ":" prefix ,(fold (lambda (input paths) + ;; TODO: Use 'search-input-directory' rather + ;; than look up inputs by name. (let* ((in (assoc-ref inputs input)) (bin (string-append in "/bin")) (sbin (string-append in "/sbin"))) (append (filter file-exists? (list bin sbin)) paths))) '() - '("bash" "acl" "rsync" "tar" "xz" "btrfs-progs" + '("bash-minimal" "acl" "rsync" "tar" "xz" "btrfs-progs" "gzip" "dnsmasq" "squashfs-tools" "iproute2" - "criu" "iptables")))) + "criu" "iptables" "attr")))) ;; Remove unwanted binaries. (for-each (lambda (prog) (delete-file (string-append bin-dir prog))) @@ -1239,24 +1242,25 @@ It started as a side project of LXC but can be used by any run-time.") ;; ("go-golang-org-x-lint" ,go-golang-org-x-lint) pkg-config)) (inputs - `(("acl" ,acl) - ("eudev" ,eudev) - ("libdqlite" ,libdqlite) - ("libraft" ,libraft) - ("libcap" ,libcap) - ("lxc" ,lxc) - ;; Run-time dependencies. - ("bash" ,bash-minimal) - ("rsync" ,rsync) - ("tar" ,tar) - ("xz" ,xz) - ("btrfs-progs" ,btrfs-progs) - ("gzip" ,gzip) - ("dnsmasq" ,dnsmasq) - ("squashfs-tools" ,squashfs-tools) - ("iproute2" ,iproute) - ("criu" ,criu) - ("iptables" ,iptables))) + (list acl + eudev + libdqlite + libraft + libcap + lxc + ;; Run-time dependencies. + attr + bash-minimal + rsync + tar + xz + btrfs-progs + gzip + dnsmasq + squashfs-tools + iproute + criu + iptables)) (synopsis "Daemon based on liblxc offering a REST API to manage containers") (home-page "https://linuxcontainers.org/lxd/") (description "LXD is a next generation system container manager. It @@ -2001,7 +2005,7 @@ virtual machines.") (define-public bubblewrap (package (name "bubblewrap") - (version "0.5.0") + (version "0.6.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/containers/bubblewrap/" @@ -2009,7 +2013,7 @@ virtual machines.") version ".tar.xz")) (sha256 (base32 - "0608l2sjwhnb1c0mslah1h6yjvqr17wk60by6i710qwxg4rszz8n")) + "10ij62jg7p2scwdx0pm141ss7p2gjdkbbymb56y8miib2vfcf2cn")) (patches (search-patches "bubblewrap-fix-locale-in-tests.patch")))) (build-system gnu-build-system) (arguments diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 64d747a312..006ac26ace 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -57,6 +57,7 @@ ;;; Copyright © 2021 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2022 cage <cage-dev@twistfold.it> ;;; Copyright © 2022 Pradana Aumars <paumars@courrier.dev> +;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -831,7 +832,7 @@ stream. Remote control of the module is possible over HTTP.") (define-public lighttpd (package (name "lighttpd") - (version "1.4.64") + (version "1.4.65") (source (origin (method url-fetch) (uri (string-append "https://download.lighttpd.net/lighttpd/" @@ -839,7 +840,7 @@ stream. Remote control of the module is possible over HTTP.") "lighttpd-" version ".tar.xz")) (sha256 (base32 - "09hf3cp4ivy9a9z9drgi4f6d60137dcqncqw0wpbyvs9lygrsj71")))) + "1gi84fsc7x4d7r5vpg4pcwfk6j80wxvv64m94d041g4zca5ac3xz")))) (build-system gnu-build-system) (arguments (list #:configure-flags @@ -1451,9 +1452,7 @@ parser written in ANSI C and a small validating JSON generator.") and server WebSockets connections---a protocol layered above HTTP that allows for efficient socket-like bidirectional reliable communication channels.") (home-page "https://libwebsockets.org") - - ;; This is LGPLv2.1-only with extra exceptions specified in 'LICENSE'. - (license license:lgpl2.1))) + (license license:expat))) (define-public wabt (package diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm index 476c33a1cd..42a2893a38 100644 --- a/gnu/packages/webkit.scm +++ b/gnu/packages/webkit.scm @@ -123,7 +123,7 @@ the WPE-flavored port of WebKit.") engine that uses Wayland for graphics output.") (license license:bsd-2))) -(define %webkit-version "2.36.0") +(define %webkit-version "2.36.3") (define-public webkitgtk (package @@ -134,7 +134,7 @@ engine that uses Wayland for graphics output.") (uri (string-append "https://www.webkitgtk.org/releases/" name "-" version ".tar.xz")) (sha256 - (base32 "0kf6avqlq9f74lwzji7l3xlnng5yqarc4ykwsmfmy8q5y6hwqxxq")) + (base32 "1lbqqjpqc9yiwpsvvagy1ag9vazbq7bvnvml53nvhi669s6cybvk")) (patches (search-patches "webkitgtk-adjust-bubblewrap-paths.patch")))) (build-system cmake-build-system) @@ -300,7 +300,7 @@ propagated by default) such as @code{gst-plugins-good} and (uri (string-append "https://wpewebkit.org/releases/" name "-" version ".tar.xz")) (sha256 - (base32 "0nkdx6pckbkhs85z3pidnh4cbp0wfa38lf2qyn0grywvgpwajsh9")))) + (base32 "1j1gijb8jz15vz65sv5pml3shqk2sm6769kq7bzxm5vlrbmms9v6")))) (arguments (substitute-keyword-arguments (package-arguments webkitgtk) ((#:configure-flags flags) diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index 40da17b561..d946fa4d2f 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -8,7 +8,7 @@ ;;; Copyright © 2016, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Al McElrath <hello@yrns.org> ;;; Copyright © 2016 Carlo Zancanaro <carlo@zancanaro.id.au> -;;; Copyright © 2016, 2017, 2018, 2019, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016 2019, 2021-2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016, 2017, 2018, 2020 Nikita <nikita@n0.is> ;;; Copyright © 2016 doncatnip <gnopap@gmail.com> ;;; Copyright © 2016 Ivan Vilata i Balaguer <ivan@selidor.net> @@ -54,6 +54,7 @@ ;;; Copyright © 2022 Daniel Meißner <daniel.meissner-i4k@ruhr-uni-bochum.de> ;;; Copyright © 2022 Pier-Hugues Pellerin <ph@heykimo.com> ;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2022 muradm <mail@muradm.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -88,6 +89,7 @@ #:use-module (guix utils) #:use-module (gnu packages) #:use-module (gnu packages bash) + #:use-module (gnu packages admin) #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages bison) @@ -181,14 +183,14 @@ the leaves of a full binary tree.") (define-public herbstluftwm (package (name "herbstluftwm") - (version "0.9.3") + (version "0.9.4") (source (origin (method url-fetch) (uri (string-append "https://herbstluftwm.org/tarballs/herbstluftwm-" version ".tar.gz")) (sha256 - (base32 "01f1bv9axjhw1l2gwhdwahljssj0h8q7a1bqwbpnwvln0ayv39qb")) + (base32 "1k03rdr6irsgnjl4w0vac0kk9nsz46qhy74iflmaycxgfv8fxy7f")) (file-name (string-append "herbstluftwm-" version ".tar.gz")))) (build-system cmake-build-system) (inputs @@ -200,6 +202,7 @@ the leaves of a full binary tree.") xsetroot libx11 libxext + libxfixes libxinerama libxrandr libxft)) @@ -258,31 +261,33 @@ or musca). (define-public i3status (package (name "i3status") - (version "2.13") + (version "2.14") (source (origin (method url-fetch) (uri (string-append "https://i3wm.org/i3status/i3status-" - version ".tar.bz2")) + version ".tar.xz")) (sha256 (base32 - "0rhlzb96mw64z2jnhwz9nibc7pxg549626lz5642xxk5hpzwk2ff")))) - (build-system gnu-build-system) + "0929chhvyq9hg4scpcz8r9zn3s9jvbg6a86k3wqa77qg85rh4kaw")) + (snippet + ;; Delete the pregenerated man page, to be rebuilt from source. + '(delete-file "man/i3status.1")))) + (build-system meson-build-system) (arguments - `(;; XXX: Do an "out of source" build to work around - ;; <https://github.com/i3/i3status/issues/339>. - #:out-of-source? #t - #:tests? #f)) ; no test suite + (list #:configure-flags + '(list "-Dmans=True") + #:tests? #f)) ; no test suite (inputs - (list openlibm + (list alsa-lib libconfuse - libyajl - alsa-lib - pulseaudio libnl - libcap - asciidoc)) + libyajl + pulseaudio)) (native-inputs - (list pkg-config docbook-xsl libxml2 ;for XML_CATALOG_FILES + (list asciidoc + perl + pkg-config + docbook-xsl libxml2 ; for XML_CATALOG_FILES xmlto)) (home-page "https://i3wm.org/i3status/") (synopsis "Status bar for i3bar, dzen2, xmobar or similar programs") @@ -1537,7 +1542,7 @@ functionality to display information about the most commonly used services.") libxkbcommon mesa pixman - seatd + libseat wayland wayland-protocols xcb-util-errors @@ -2441,7 +2446,7 @@ selected to stdout. It can be controlled both via mouse and via keyboard.") libxpm libpng freetype - imlib2 + imlib2-1.7 sed)) (native-inputs (list pkg-config)) diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 39dd69c920..f632c20f5d 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2014, 2015, 2017, 2018, 2020 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org> -;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2015-2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org> ;;; Copyright © 2015 Cyrill Schenkel <cyrill.schenkel@gmail.com> @@ -1590,16 +1590,16 @@ input from UTF-8 into the locale's encoding.") (define-public mkfontscale (package (name "mkfontscale") - (version "1.2.1") + (version "1.2.2") (source (origin (method url-fetch) (uri (string-append "mirror://xorg/individual/app/mkfontscale-" version - ".tar.bz2")) + ".tar.xz")) (sha256 - (base32 "1ixsnsm2mn0zy9ksdid0lj6irnhvasfik9mz8bbrs5sajzmra16a")))) + (base32 "1i6mw97r2s1rb6spjj8fbdsgw6197smaqq2haqgnwhz73xdzpqwa")))) (build-system gnu-build-system) (inputs (list zlib xorgproto freetype libfontenc)) @@ -1991,14 +1991,14 @@ server.") (define-public xauth (package (name "xauth") - (version "1.1") + (version "1.1.2") (source (origin (method url-fetch) (uri (string-append "mirror://xorg/individual/app/xauth-" version - ".tar.bz2")) + ".tar.xz")) (sha256 - (base32 "032klzzw8r09z36x1272ssd79bcisz8j5p8gbdy111fiknvx27bd")))) + (base32 "0072ivzn4z59ysanz838nh8s4mcmdsx6q9xkvlfysv2k37ynmfkq")))) (build-system gnu-build-system) (inputs (list libxmu libxext libxau libx11)) @@ -2067,14 +2067,14 @@ legacy X clients.") (define-public xcalc (package (name "xcalc") - (version "1.1.0") + (version "1.1.1") (source (origin (method url-fetch) (uri (string-append "mirror://xorg/individual/app/" "xcalc-" version ".tar.gz")) (sha256 - (base32 "0c768lh0nh28ram9ldldhaf51024fngc589v4pjmf3lxmzcihr58")))) + (base32 "0fwgnva716ymnrf8f4lvnqlyikf5c837054sxxlf3l5jpy4wh6cj")))) (build-system gnu-build-system) (arguments `(#:phases (modify-phases %standard-phases @@ -2084,8 +2084,7 @@ legacy X clients.") (substitute* "Makefile" (("^appdefaultdir = .*$") (string-append "appdefaultdir = " %output - ,%app-defaults-dir "\n"))) - #t))))) + ,%app-defaults-dir "\n")))))))) (inputs (list libxaw)) (native-inputs @@ -2299,17 +2298,17 @@ left-handed version of the cursors is also included.") (define-public xdpyinfo (package (name "xdpyinfo") - (version "1.3.2") + (version "1.3.3") (source (origin (method url-fetch) (uri (string-append "mirror://xorg/individual/app/xdpyinfo-" version - ".tar.bz2")) + ".tar.xz")) (sha256 (base32 - "0ldgrj4w2fa8jng4b3f3biaj0wyn8zvya88pnk70d7k12pcqw8rh")))) + "01n21ygbvzycjasv97rk33b14qdbshr1pkxysqvfx61y5zb5yv9m")))) (build-system gnu-build-system) (inputs (list xorgproto @@ -2486,15 +2485,15 @@ including most mice, keyboards, tablets and touchscreens.") (define-public xf86-input-libinput (package (name "xf86-input-libinput") - (version "1.1.0") + (version "1.2.1") (source (origin (method url-fetch) (uri (string-append "mirror://xorg/individual/driver/" - name "-" version ".tar.bz2")) + name "-" version ".tar.xz")) (sha256 (base32 - "05ldqr10f2rrnshyk3lc773rz0gp3ccdzwa8n7lsc94i850jl7g1")))) + "06wpgqga4kc5ph5bd5cabfg0gdcdkbd65jrdx467qcfvkmdxnlc1")))) (build-system gnu-build-system) (arguments '(#:configure-flags @@ -2658,14 +2657,14 @@ as USB mice.") (define-public xf86-video-amdgpu (package (name "xf86-video-amdgpu") - (version "21.0.0") + (version "22.0.0") (source (origin (method url-fetch) (uri (string-append "mirror://xorg/individual/driver/" - "xf86-video-amdgpu-" version ".tar.bz2")) + "xf86-video-amdgpu-" version ".tar.xz")) (sha256 - (base32 "125dq85n46yqmnmr2hknxwcqicwlvz2b2phf0m963fpg9l1j6y30")))) + (base32 "0rl2fxhhgcjywn2z8h9gmvm58zjy93lx391ax76krp0m55hgn8wx")))) (build-system gnu-build-system) (inputs (list xorg-server)) (native-inputs (list pkg-config)) @@ -2777,14 +2776,14 @@ X server.") (define-public xf86-video-dummy (package (name "xf86-video-dummy") - (version "0.3.8") + (version "0.4.0") (source (origin (method url-fetch) (uri (string-append "mirror://xorg/individual/driver/" - "xf86-video-dummy-" version ".tar.bz2")) + "xf86-video-dummy-" version ".tar.xz")) (sha256 - (base32 "1fcm9vwgv8wnffbvkzddk4yxrh3kc0np6w65wj8k88q7jf3bn4ip")))) + (base32 "0nhy9sd49ig9z00mp9sjbdkfzjgsm71szwjqnry8qn60r3jym377")))) (build-system gnu-build-system) (inputs (list xorg-server)) (native-inputs (list pkg-config)) @@ -4088,17 +4087,17 @@ running on X server.") (define-public xlsfonts (package (name "xlsfonts") - (version "1.0.6") + (version "1.0.7") (source (origin (method url-fetch) (uri (string-append "mirror://xorg/individual/app/xlsfonts-" version - ".tar.bz2")) + ".tar.xz")) (sha256 (base32 - "0s6kxgv78chkwsqmhw929f4pf91gq63f4yvixxnan1h00cx0pf49")))) + "0r84wp4352hbfcaybqp2khipm40293byvrfyrlslrd37m52njwkv")))) (build-system gnu-build-system) (inputs (list xorgproto libx11)) @@ -4214,7 +4213,7 @@ tastes.") (define-public xorg-sgml-doctools (package (name "xorg-sgml-doctools") - (version "1.11") + (version "1.12") (source (origin (method url-fetch) @@ -4224,7 +4223,7 @@ tastes.") ".tar.bz2")) (sha256 (base32 - "0k5pffyi5bx8dmfn033cyhgd3gf6viqj3x769fqixifwhbgy2777")))) + "01n8zqlkqjcxk1c59pk279y08gzhc14r03dhq3lxayy1xpfzvab5")))) (build-system gnu-build-system) (native-inputs (list pkg-config)) (home-page "https://www.x.org/wiki/") @@ -5678,7 +5677,7 @@ Intrinsics (Xt) Library.") (define-public twm (package (name "twm") - (version "1.0.11") + (version "1.0.12") (source (origin (method url-fetch) @@ -5686,7 +5685,7 @@ Intrinsics (Xt) Library.") version ".tar.xz")) (sha256 (base32 - "1iv8kdb18n9vk3is5fyh6l40ipq9mkgx8ppj86byf464vr1ais7l")))) + "1r5gfv1gvcjn39v7n6znpnvifwhlw2zf8gfrxq8vph84vva03wma")))) (build-system gnu-build-system) (inputs (list libxt libxmu libxext xorgproto)) @@ -6483,8 +6482,6 @@ X11 servers, Windows, or macOS.") (guix build emacs-utils)) #:imported-modules (,@%gnu-build-system-modules (guix build emacs-utils)) - #:parallel-build? #f ; for reproducible generation of - ; share/uim/installed-modules.scm #:configure-flags (list "--with-anthy-utf8" (string-append "--with-lispdir=" %output "/share/emacs") @@ -6947,7 +6944,7 @@ the server and cleaning up before returning the exit status of the command.") (modify-phases %standard-phases (delete 'configure)))) (inputs - (list imlib2 libx11 libxinerama)) + (list imlib2-1.7 libx11 libxinerama)) (home-page "https://github.com/ttzhou/setroot") (synopsis "Simple X background setter inspired by imlibsetroot and feh") (description "Setroot is a lightweight X background setter with feh's diff --git a/gnu/packages/zig.scm b/gnu/packages/zig.scm index 9e99fdb857..cda93bed2e 100644 --- a/gnu/packages/zig.scm +++ b/gnu/packages/zig.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2021 Liliana Marie Prikler <liliana.prikler@gmail.com> ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev> ;;; Copyright © 2021 Calum Irwin <calumirwin1@gmail.com> +;;; Copyright © 2022 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -99,4 +100,7 @@ toolchain. Among other features it provides @item concurrency via async functions. @end itemize") (home-page "https://github.com/ziglang/zig") + ;; Currently building zig can take up to 10GB of RAM for linking stage1: + ;; https://github.com/ziglang/zig/issues/6485 + (supported-systems %64bit-supported-systems) (license license:expat))) diff --git a/gnu/services/authentication.scm b/gnu/services/authentication.scm index cb0ef6d85a..f7becdfafb 100644 --- a/gnu/services/authentication.scm +++ b/gnu/services/authentication.scm @@ -218,7 +218,7 @@ ;; Runtime options (threads - (maybe-number 'disabled) + maybe-number "The number of threads to start that can handle requests and perform LDAP queries. Each thread opens a separate connection to the LDAP server. The default is to start 5 threads.") @@ -243,45 +243,45 @@ messages with the specified log level or higher are logged.") "The list of LDAP server URIs. Normally, only the first server will be used with the following servers as fall-back.") (ldap-version - (maybe-string 'disabled) + maybe-string "The version of the LDAP protocol to use. The default is to use the maximum version supported by the LDAP library.") (binddn - (maybe-string 'disabled) + maybe-string "Specifies the distinguished name with which to bind to the directory server for lookups. The default is to bind anonymously.") (bindpw - (maybe-string 'disabled) + maybe-string "Specifies the credentials with which to bind. This option is only applicable when used with binddn.") (rootpwmoddn - (maybe-string 'disabled) + maybe-string "Specifies the distinguished name to use when the root user tries to modify a user's password using the PAM module.") (rootpwmodpw - (maybe-string 'disabled) + maybe-string "Specifies the credentials with which to bind if the root user tries to change a user's password. This option is only applicable when used with rootpwmoddn") ;; SASL authentication options (sasl-mech - (maybe-string 'disabled) + maybe-string "Specifies the SASL mechanism to be used when performing SASL authentication.") (sasl-realm - (maybe-string 'disabled) + maybe-string "Specifies the SASL realm to be used when performing SASL authentication.") (sasl-authcid - (maybe-string 'disabled) + maybe-string "Specifies the authentication identity to be used when performing SASL authentication.") (sasl-authzid - (maybe-string 'disabled) + maybe-string "Specifies the authorization identity to be used when performing SASL authentication.") (sasl-canonicalize? - (maybe-boolean 'disabled) + maybe-boolean "Determines whether the LDAP server host name should be canonicalised. If this is enabled the LDAP library will do a reverse host name lookup. By default, it is left up to the LDAP library whether this check is performed or @@ -289,7 +289,7 @@ not.") ;; Kerberos authentication options (krb5-ccname - (maybe-string 'disabled) + maybe-string "Set the name for the GSS-API Kerberos credentials cache.") ;; Search / mapping options @@ -302,11 +302,11 @@ not.") default scope is subtree; base scope is almost never useful for name service lookups; children scope is not supported on all servers.") (deref - (maybe-deref-option 'disabled) + maybe-deref-option "Specifies the policy for dereferencing aliases. The default policy is to never dereference aliases.") (referrals - (maybe-boolean 'disabled) + maybe-boolean "Specifies whether automatic referral chasing should be enabled. The default behaviour is to chase referrals.") (maps @@ -322,132 +322,132 @@ applies and an LDAP search filter expression.") ;; Timing / reconnect options (bind-timelimit - (maybe-number 'disabled) + maybe-number "Specifies the time limit in seconds to use when connecting to the directory server. The default value is 10 seconds.") (timelimit - (maybe-number 'disabled) + maybe-number "Specifies the time limit (in seconds) to wait for a response from the LDAP server. A value of zero, which is the default, is to wait indefinitely for searches to be completed.") (idle-timelimit - (maybe-number 'disabled) + maybe-number "Specifies the period if inactivity (in seconds) after which the con‐ nection to the LDAP server will be closed. The default is not to time out connections.") (reconnect-sleeptime - (maybe-number 'disabled) + maybe-number "Specifies the number of seconds to sleep when connecting to all LDAP servers fails. By default one second is waited between the first failure and the first retry.") (reconnect-retrytime - (maybe-number 'disabled) + maybe-number "Specifies the time after which the LDAP server is considered to be permanently unavailable. Once this time is reached retries will be done only once per this time period. The default value is 10 seconds.") ;; TLS options (ssl - (maybe-ssl-option 'disabled) + maybe-ssl-option "Specifies whether to use SSL/TLS or not (the default is not to). If 'start-tls is specified then StartTLS is used rather than raw LDAP over SSL.") (tls-reqcert - (maybe-tls-reqcert-option 'disabled) + maybe-tls-reqcert-option "Specifies what checks to perform on a server-supplied certificate. The meaning of the values is described in the ldap.conf(5) manual page.") (tls-cacertdir - (maybe-string 'disabled) + maybe-string "Specifies the directory containing X.509 certificates for peer authen‐ tication. This parameter is ignored when using GnuTLS.") (tls-cacertfile - (maybe-string 'disabled) + maybe-string "Specifies the path to the X.509 certificate for peer authentication.") (tls-randfile - (maybe-string 'disabled) + maybe-string "Specifies the path to an entropy source. This parameter is ignored when using GnuTLS.") (tls-ciphers - (maybe-string 'disabled) + maybe-string "Specifies the ciphers to use for TLS as a string.") (tls-cert - (maybe-string 'disabled) + maybe-string "Specifies the path to the file containing the local certificate for client TLS authentication.") (tls-key - (maybe-string 'disabled) + maybe-string "Specifies the path to the file containing the private key for client TLS authentication.") ;; Other options (pagesize - (maybe-number 'disabled) + maybe-number "Set this to a number greater than 0 to request paged results from the LDAP server in accordance with RFC2696. The default (0) is to not request paged results.") (nss-initgroups-ignoreusers - (maybe-ignore-users-option 'disabled) + maybe-ignore-users-option "This option prevents group membership lookups through LDAP for the specified users. Alternatively, the value 'all-local may be used. With that value nslcd builds a full list of non-LDAP users on startup.") (nss-min-uid - (maybe-number 'disabled) + maybe-number "This option ensures that LDAP users with a numeric user id lower than the specified value are ignored.") (nss-uid-offset - (maybe-number 'disabled) + maybe-number "This option specifies an offset that is added to all LDAP numeric user ids. This can be used to avoid user id collisions with local users.") (nss-gid-offset - (maybe-number 'disabled) + maybe-number "This option specifies an offset that is added to all LDAP numeric group ids. This can be used to avoid user id collisions with local groups.") (nss-nested-groups - (maybe-boolean 'disabled) + maybe-boolean "If this option is set, the member attribute of a group may point to another group. Members of nested groups are also returned in the higher level group and parent groups are returned when finding groups for a specific user. The default is not to perform extra searches for nested groups.") (nss-getgrent-skipmembers - (maybe-boolean 'disabled) + maybe-boolean "If this option is set, the group member list is not retrieved when looking up groups. Lookups for finding which groups a user belongs to will remain functional so the user will likely still get the correct groups assigned on login.") (nss-disable-enumeration - (maybe-boolean 'disabled) + maybe-boolean "If this option is set, functions which cause all user/group entries to be loaded from the directory will not succeed in doing so. This can dramatically reduce LDAP server load in situations where there are a great number of users and/or groups. This option is not recommended for most configurations.") (validnames - (maybe-string 'disabled) + maybe-string "This option can be used to specify how user and group names are verified within the system. This pattern is used to check all user and group names that are requested and returned from LDAP.") (ignorecase - (maybe-boolean 'disabled) + maybe-boolean "This specifies whether or not to perform searches using case-insensitive matching. Enabling this could open up the system to authorization bypass vulnerabilities and introduce nscd cache poisoning vulnerabilities which allow denial of service.") (pam-authc-ppolicy - (maybe-boolean 'disabled) + maybe-boolean "This option specifies whether password policy controls are requested and handled from the LDAP server when performing user authentication.") (pam-authc-search - (maybe-string 'disabled) + maybe-string "By default nslcd performs an LDAP search with the user's credentials after BIND (authentication) to ensure that the BIND operation was successful. The default search is a simple check to see if the user's DN exists. A search filter can be specified that will be used instead. It should return at least one entry.") (pam-authz-search - (maybe-string 'disabled) + maybe-string "This option allows flexible fine tuning of the authorisation check that should be performed. The search filter specified is executed and if any entries match, access is granted, otherwise access is denied.") (pam-password-prohibit-message - (maybe-string 'disabled) + maybe-string "If this option is set password modification using pam_ldap will be denied and the specified message will be presented to the user instead. The message can be used to direct the user to an alternative means of changing their diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 6865d03f25..d58afb27e3 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -16,7 +16,9 @@ ;;; Copyright © 2021 qblade <qblade@protonmail.com> ;;; Copyright © 2021 Hui Lu <luhuins@163.com> ;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2021 muradm <mail@muradm.net> ;;; Copyright © 2022 Guillaume Le Vaillant <glv@posteo.net> +;;; Copyright © 2022 Justin Veilleux <terramorpha@cock.li> ;;; ;;; This file is part of GNU Guix. ;;; @@ -187,6 +189,12 @@ guix-configuration-extra-options guix-configuration-log-file + guix-extension + guix-extension? + guix-extension-authorized-keys + guix-extension-substitute-urls + guix-extension-chroot-directories + guix-service-type guix-publish-configuration guix-publish-configuration? @@ -219,6 +227,11 @@ pam-limits-service-type pam-limits-service + greetd-service-type + greetd-configuration + greetd-terminal-configuration + greetd-agreety-session + %base-services)) ;;; Commentary: @@ -1439,7 +1452,7 @@ information on the configuration file syntax." (module "pam_limits.so") (arguments '("conf=/etc/security/limits.conf"))))) (if (member (pam-service-name pam) - '("login" "su" "slim" "gdm-password" "sddm" + '("login" "greetd" "su" "slim" "gdm-password" "sddm" "sudo" "sshd")) (pam-service (inherit pam) @@ -1768,6 +1781,25 @@ proxy of 'guix-daemon'...~%") (substitute-key-authorization authorized-keys guix) #~#f)))) +(define-record-type* <guix-extension> + guix-extension make-guix-extension + guix-extension? + (authorized-keys guix-extension-authorized-keys ;list of file-like + (default '())) + (substitute-urls guix-extension-substitute-urls ;list of strings + (default '())) + (chroot-directories guix-extension-chroot-directories ;list of file-like/strings + (default '()))) + +(define (guix-extension-merge a b) + (guix-extension + (authorized-keys (append (guix-extension-authorized-keys a) + (guix-extension-authorized-keys b))) + (substitute-urls (append (guix-extension-substitute-urls a) + (guix-extension-substitute-urls b))) + (chroot-directories (append (guix-extension-chroot-directories a) + (guix-extension-chroot-directories b))))) + (define guix-service-type (service-type (name 'guix) @@ -1778,14 +1810,19 @@ proxy of 'guix-daemon'...~%") (service-extension profile-service-type (compose list guix-configuration-guix)))) - ;; Extensions can specify extra directories to add to the build chroot. - (compose concatenate) - (extend (lambda (config directories) + ;; Extensions can specify extra directories to add to the build chroot, + ;; extra substitute urls and extra authorized keys + (compose (lambda (args) (fold guix-extension-merge (guix-extension) args))) + (extend (lambda (config extension) (guix-configuration (inherit config) + (authorized-keys (append (guix-extension-authorized-keys extension) + (guix-configuration-authorized-keys config))) + (substitute-urls (append (guix-extension-substitute-urls extension) + (guix-configuration-substitute-urls config))) (chroot-directories - (append (guix-configuration-chroot-directories config) - directories))))) + (append (guix-extension-chroot-directories extension) + (guix-configuration-chroot-directories config)))))) (default-value (guix-configuration)) (description @@ -1801,7 +1838,7 @@ proxy of 'guix-daemon'...~%") (default 80)) (host guix-publish-configuration-host ;string (default "localhost")) - (advertise? guix-publish-advertise? ;boolean + (advertise? guix-publish-advertise? ;boolean (default #f)) (compression guix-publish-configuration-compression (thunked) @@ -2776,6 +2813,221 @@ to handle." (name-servers '("10.0.2.3")))) +;;; +;;; greetd-service-type -- minimal and flexible login manager daemon +;;; + +(define-record-type* <greetd-agreety-session> + greetd-agreety-session make-greetd-agreety-session + greetd-agreety-session? + (agreety greetd-agreety (default greetd)) + (command greetd-agreety-command (default (file-append bash "/bin/bash"))) + (command-args greetd-agreety-command-args (default '("-l"))) + (extra-env greetd-agreety-extra-env (default '())) + (xdg-env? greetd-agreety-xdg-env? (default #t))) + +(define greetd-agreety-tty-session-command + (match-lambda + (($ <greetd-agreety-session> _ command args extra-env) + (program-file + "agreety-tty-session-command" + #~(begin + (use-modules (ice-9 match)) + (for-each (match-lambda ((var . val) (setenv var val))) + (quote (#$@extra-env))) + (apply execl #$command #$command (list #$@args))))))) + +(define greetd-agreety-tty-xdg-session-command + (match-lambda + (($ <greetd-agreety-session> _ command args extra-env) + (program-file + "agreety-tty-xdg-session-command" + #~(begin + (use-modules (ice-9 match)) + (let* + ((username (getenv "USER")) + (useruid (passwd:uid (getpwuid username))) + (useruid (number->string useruid))) + (setenv "XDG_SESSION_TYPE" "tty") + (setenv "XDG_RUNTIME_DIR" (string-append "/run/user/" useruid))) + (for-each (match-lambda ((var . val) (setenv var val))) + (quote (#$@extra-env))) + (apply execl #$command #$command (list #$@args))))))) + +(define (make-greetd-agreety-session-command config command) + (let ((agreety (file-append (greetd-agreety config) "/bin/agreety"))) + (program-file + "agreety-command" + #~(execl #$agreety #$agreety "-c" #$command)))) + +(define (make-greetd-default-session-command config-or-command) + (cond ((greetd-agreety-session? config-or-command) + (cond ((greetd-agreety-xdg-env? config-or-command) + (make-greetd-agreety-session-command + config-or-command + (greetd-agreety-tty-xdg-session-command config-or-command))) + (#t + (make-greetd-agreety-session-command + config-or-command + (greetd-agreety-tty-session-command config-or-command))))) + (#t config-or-command))) + +(define-record-type* <greetd-terminal-configuration> + greetd-terminal-configuration make-greetd-terminal-configuration + greetd-terminal-configuration? + (greetd greetd-package (default greetd)) + (config-file-name greetd-config-file-name (thunked) + (default (default-config-file-name this-record))) + (log-file-name greetd-log-file-name (thunked) + (default (default-log-file-name this-record))) + (terminal-vt greetd-terminal-vt (default "7")) + (terminal-switch greetd-terminal-switch (default #f)) + (default-session-user greetd-default-session-user (default "greeter")) + (default-session-command greetd-default-session-command + (default (greetd-agreety-session)) + (sanitize make-greetd-default-session-command))) + +(define (default-config-file-name config) + (string-join (list "config-" (greetd-terminal-vt config) ".toml") "")) + +(define (default-log-file-name config) + (string-join (list "/var/log/greetd-" (greetd-terminal-vt config) ".log") "")) + +(define (make-greetd-terminal-configuration-file config) + (let* + ((config-file-name (greetd-config-file-name config)) + (terminal-vt (greetd-terminal-vt config)) + (terminal-switch (greetd-terminal-switch config)) + (default-session-user (greetd-default-session-user config)) + (default-session-command (greetd-default-session-command config))) + (mixed-text-file + config-file-name + "[terminal]\n" + "vt = " terminal-vt "\n" + "switch = " (if terminal-switch "true" "false") "\n" + "[default_session]\n" + "user = " default-session-user "\n" + "command = " default-session-command "\n"))) + +(define %greetd-accounts + (list (user-account + (name "greeter") + (group "wheel") + (supplementary-groups '("users" "tty" "input" "video" "audio")) + (system? #t)))) + +(define %greetd-file-systems + (list (file-system + (device "none") + (mount-point "/run/greetd/pam_mount") + (type "tmpfs") + (check? #f) + (flags '(no-suid no-dev no-exec)) + (options "mode=0755") + (create-mount-point? #t)))) + +(define %greetd-pam-mount-rules + `((debug (@ (enable "0"))) + (volume (@ (sgrp "users") + (fstype "tmpfs") + (mountpoint "/run/user/%(USERUID)") + (options "noexec,nosuid,nodev,size=1g,mode=0700,uid=%(USERUID),gid=%(USERGID)"))) + (logout (@ (wait "0") + (hup "0") + (term "yes") + (kill "no"))) + (mkmountpoint (@ (enable "1") (remove "true"))))) + +(define-record-type* <greetd-configuration> + greetd-configuration make-greetd-configuration + greetd-configuration? + (motd greetd-motd (default %default-motd)) + (allow-empty-passwords? greetd-allow-empty-passwords? (default #t)) + (terminals greetd-terminals (default '()))) + +(define (make-greetd-pam-mount-conf-file config) + (computed-file + "greetd_pam_mount.conf.xml" + #~(begin + (use-modules (sxml simple)) + (call-with-output-file #$output + (lambda (port) + (sxml->xml + '(*TOP* + (*PI* xml "version='1.0' encoding='utf-8'") + (pam_mount + #$@%greetd-pam-mount-rules + (pmvarrun + #$(file-append greetd-pam-mount + "/sbin/pmvarrun -u '%(USER)' -o '%(OPERATION)'")))) + port)))))) + +(define (greetd-etc-service config) + `(("security/greetd_pam_mount.conf.xml" + ,(make-greetd-pam-mount-conf-file config)))) + +(define (greetd-pam-service config) + (define optional-pam-mount + (pam-entry + (control "optional") + (module #~(string-append #$greetd-pam-mount "/lib/security/pam_mount.so")) + (arguments '("disable_interactive")))) + + (list + (unix-pam-service "greetd" + #:login-uid? #t + #:allow-empty-passwords? + (greetd-allow-empty-passwords? config) + #:motd + (greetd-motd config)) + (lambda (pam) + (if (member (pam-service-name pam) + '("login" "greetd" "su" "slim" "gdm-password")) + (pam-service + (inherit pam) + (auth (append (pam-service-auth pam) + (list optional-pam-mount))) + (session (append (pam-service-session pam) + (list optional-pam-mount)))) + pam)))) + +(define (greetd-shepherd-services config) + (map + (lambda (tc) + (let* + ((greetd-bin (file-append (greetd-package tc) "/sbin/greetd")) + (greetd-conf (make-greetd-terminal-configuration-file tc)) + (greetd-log (greetd-log-file-name tc)) + (greetd-vt (greetd-terminal-vt tc))) + (shepherd-service + (documentation "Minimal and flexible login manager daemon") + (requirement '(user-processes host-name udev virtual-terminal)) + (provision (list (symbol-append + 'term-tty + (string->symbol (greetd-terminal-vt tc))))) + (start #~(make-forkexec-constructor + (list #$greetd-bin "-c" #$greetd-conf) + #:log-file #$greetd-log)) + (stop #~(make-kill-destructor))))) + (greetd-terminals config))) + +(define greetd-service-type + (service-type + (name 'greetd) + (description "Provides necessary infrastructure for logging into the +system including @code{greetd} PAM service, @code{pam-mount} module to +mount/unmount /run/user/<uid> directory for user and @code{greetd} +login manager daemon.") + (extensions + (list + (service-extension account-service-type (const %greetd-accounts)) + (service-extension file-system-service-type (const %greetd-file-systems)) + (service-extension etc-service-type greetd-etc-service) + (service-extension pam-root-service-type greetd-pam-service) + (service-extension shepherd-root-service-type greetd-shepherd-services))) + (default-value (greetd-configuration)))) + + (define %base-services ;; Convenience variable holding the basic services. (list (service login-service-type) diff --git a/gnu/services/cgit.scm b/gnu/services/cgit.scm index bfc89a40a4..c2c003983a 100644 --- a/gnu/services/cgit.scm +++ b/gnu/services/cgit.scm @@ -241,27 +241,27 @@ is no suitable HEAD.") (repo-file-object "") "Override the default @code{email-filter}.") (enable-commit-graph? - (maybe-repo-boolean 'disabled) + maybe-repo-boolean "A flag which can be used to disable the global setting @code{enable-commit-graph?}.") (enable-log-filecount? - (maybe-repo-boolean 'disabled) + maybe-repo-boolean "A flag which can be used to disable the global setting @code{enable-log-filecount?}.") (enable-log-linecount? - (maybe-repo-boolean 'disabled) + maybe-repo-boolean "A flag which can be used to disable the global setting @code{enable-log-linecount?}.") (enable-remote-branches? - (maybe-repo-boolean 'disabled) + maybe-repo-boolean "Flag which, when set to @code{#t}, will make cgit display remote branches in the summary and refs views.") (enable-subject-links? - (maybe-repo-boolean 'disabled) + maybe-repo-boolean "A flag which can be used to override the global setting @code{enable-subject-links?}.") (enable-html-serving? - (maybe-repo-boolean 'disabled) + maybe-repo-boolean "A flag which can be used to override the global setting @code{enable-html-serving?}.") (hide? diff --git a/gnu/services/configuration.scm b/gnu/services/configuration.scm index 0de350a4df..f6b20fb82b 100644 --- a/gnu/services/configuration.scm +++ b/gnu/services/configuration.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2021 Andrew Tropin <andrew@trop.in> +;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be> ;;; ;;; This file is part of GNU Guix. ;;; @@ -92,7 +93,7 @@ (define (configuration-missing-field kind field) (configuration-error (format #f "~a configuration missing required field ~a" kind field))) -(define (configuration-no-default-value kind field) +(define (configuration-missing-default-value kind field) (configuration-error (format #f "The field `~a' of the `~a' configuration record \ does not have a default value" field kind))) @@ -141,7 +142,8 @@ does not have a default value" field kind))) (id #'stem #'serialize-maybe- #'stem)))) #`(begin (define (maybe-stem? val) - (or (eq? val 'disabled) (stem? val))) + (or (unspecified? val) + (stem? val))) #,@(if serialize? (list #'(define (serialize-maybe-stem field-name val) (if (stem? val) @@ -162,78 +164,88 @@ does not have a default value" field kind))) (define-syntax-rule (define-maybe/no-serialization stem) (define-maybe stem (no-serialization))) +(define (normalize-field-type+def s) + (syntax-case s () + ((field-type def) + (identifier? #'field-type) + (values #'(field-type def))) + ((field-type) + (identifier? #'field-type) + (values #'(field-type *unspecified*))) + (field-type + (identifier? #'field-type) + (values #'(field-type *unspecified*))))) + (define (define-configuration-helper serialize? serializer-prefix syn) (syntax-case syn () - ((_ stem (field (field-type def ...) doc custom-serializer ...) ...) - (with-syntax (((field-getter ...) - (map (lambda (field) - (id #'stem #'stem #'- field)) - #'(field ...))) - ((field-predicate ...) - (map (lambda (type) - (id #'stem type #'?)) - #'(field-type ...))) - ((field-default ...) - (map (match-lambda - ((field-type default-value) - default-value) - ((field-type) - ;; Quote `undefined' to prevent a possibly - ;; unbound warning. - (syntax 'undefined))) - #'((field-type def ...) ...))) - ((field-serializer ...) - (map (lambda (type custom-serializer) - (and serialize? - (match custom-serializer - ((serializer) - serializer) - (() - (if serializer-prefix - (id #'stem - serializer-prefix - #'serialize- type) - (id #'stem #'serialize- type)))))) - #'(field-type ...) - #'((custom-serializer ...) ...)))) - #`(begin - (define-record-type* #,(id #'stem #'< #'stem #'>) - #,(id #'stem #'% #'stem) - #,(id #'stem #'make- #'stem) - #,(id #'stem #'stem #'?) - (%location #,(id #'stem #'stem #'-location) - (default (and=> (current-source-location) - source-properties->location)) - (innate)) - #,@(map (lambda (name getter def) - (if (eq? (syntax->datum def) (quote 'undefined)) - #`(#,name #,getter) - #`(#,name #,getter (default #,def)))) - #'(field ...) - #'(field-getter ...) - #'(field-default ...))) - (define #,(id #'stem #'stem #'-fields) - (list (configuration-field - (name 'field) - (type 'field-type) - (getter field-getter) - (predicate field-predicate) - (serializer field-serializer) - (default-value-thunk - (lambda () - (display '#,(id #'stem #'% #'stem)) - (if (eq? (syntax->datum field-default) - 'undefined) - (configuration-no-default-value - '#,(id #'stem #'% #'stem) 'field) - field-default))) - (documentation doc)) - ...)) - (define-syntax-rule (stem arg (... ...)) - (let ((conf (#,(id #'stem #'% #'stem) arg (... ...)))) - (validate-configuration conf - #,(id #'stem #'stem #'-fields)) - conf))))))) + ((_ stem (field field-type+def doc custom-serializer ...) ...) + (with-syntax + ((((field-type def) ...) + (map normalize-field-type+def #'(field-type+def ...)))) + (with-syntax + (((field-getter ...) + (map (lambda (field) + (id #'stem #'stem #'- field)) + #'(field ...))) + ((field-predicate ...) + (map (lambda (type) + (id #'stem type #'?)) + #'(field-type ...))) + ((field-default ...) + (map (match-lambda + ((field-type default-value) + default-value)) + #'((field-type def) ...))) + ((field-serializer ...) + (map (lambda (type custom-serializer) + (and serialize? + (match custom-serializer + ((serializer) + serializer) + (() + (if serializer-prefix + (id #'stem + serializer-prefix + #'serialize- type) + (id #'stem #'serialize- type)))))) + #'(field-type ...) + #'((custom-serializer ...) ...)))) + #`(begin + (define-record-type* #,(id #'stem #'< #'stem #'>) + #,(id #'stem #'% #'stem) + #,(id #'stem #'make- #'stem) + #,(id #'stem #'stem #'?) + (%location #,(id #'stem #'stem #'-location) + (default (and=> (current-source-location) + source-properties->location)) + (innate)) + #,@(map (lambda (name getter def) + #`(#,name #,getter (default #,def))) + #'(field ...) + #'(field-getter ...) + #'(field-default ...))) + (define #,(id #'stem #'stem #'-fields) + (list (configuration-field + (name 'field) + (type 'field-type) + (getter field-getter) + (predicate field-predicate) + (serializer field-serializer) + (default-value-thunk + (lambda () + (display '#,(id #'stem #'% #'stem)) + (if (eq? (syntax->datum field-default) + '*unspecified*) + (configuration-missing-default-value + '#,(id #'stem #'% #'stem) 'field) + field-default))) + (documentation doc)) + ...)) + (define-syntax-rule (stem arg (... ...)) + (let ((conf (#,(id #'stem #'% #'stem) arg (... ...)))) + (validate-configuration conf + #,(id #'stem #'stem #'-fields)) + conf)))))))) (define no-serialization ;syntactic keyword for 'define-configuration' '(no serialization)) @@ -241,26 +253,26 @@ does not have a default value" field kind))) (define-syntax define-configuration (lambda (s) (syntax-case s (no-serialization prefix) - ((_ stem (field (field-type def ...) doc custom-serializer ...) ... + ((_ stem (field field-type+def doc custom-serializer ...) ... (no-serialization)) (define-configuration-helper - #f #f #'(_ stem (field (field-type def ...) doc custom-serializer ...) + #f #f #'(_ stem (field field-type+def doc custom-serializer ...) ...))) - ((_ stem (field (field-type def ...) doc custom-serializer ...) ... + ((_ stem (field field-type+def doc custom-serializer ...) ... (prefix serializer-prefix)) (define-configuration-helper - #t #'serializer-prefix #'(_ stem (field (field-type def ...) + #t #'serializer-prefix #'(_ stem (field field-type+def doc custom-serializer ...) ...))) - ((_ stem (field (field-type def ...) doc custom-serializer ...) ...) + ((_ stem (field field-type+def doc custom-serializer ...) ...) (define-configuration-helper - #t #f #'(_ stem (field (field-type def ...) doc custom-serializer ...) + #t #f #'(_ stem (field field-type+def doc custom-serializer ...) ...)))))) (define-syntax-rule (define-configuration/no-serialization - stem (field (field-type def ...) + stem (field field-type+def doc custom-serializer ...) ...) - (define-configuration stem (field (field-type def ...) + (define-configuration stem (field field-type+def doc custom-serializer ...) ... (no-serialization))) diff --git a/gnu/services/dbus.scm b/gnu/services/dbus.scm index ef6b82c572..52cb1e3a51 100644 --- a/gnu/services/dbus.scm +++ b/gnu/services/dbus.scm @@ -53,7 +53,9 @@ (dbus dbus-configuration-dbus ;file-like (default dbus)) (services dbus-configuration-services ;list of <package> - (default '()))) + (default '())) + (verbose? dbus-configuration-verbose? ;boolean + (default #f))) (define (system-service-directory services) "Return the system service directory, containing @code{.service} files for @@ -191,7 +193,7 @@ includes the @code{etc/dbus-1/system.d} directories of each package listed in (define dbus-shepherd-service (match-lambda - (($ <dbus-configuration> dbus) + (($ <dbus-configuration> dbus _ verbose?) (list (shepherd-service (documentation "Run the D-Bus system daemon.") (provision '(dbus-system)) @@ -199,6 +201,12 @@ includes the @code{etc/dbus-1/system.d} directories of each package listed in (start #~(make-forkexec-constructor (list (string-append #$dbus "/bin/dbus-daemon") "--nofork" "--system" "--syslog-only") + #$@(if verbose? + ;; Since the verbose output goes to the console, + ;; not syslog, add a log file to capture it. + '(#:environment-variables '("DBUS_VERBOSE=1") + #:log-file "/var/log/dbus-daemon.log") + '()) #:pid-file "/var/run/dbus/pid")) (stop #~(make-kill-destructor))))))) @@ -234,9 +242,12 @@ includes the @code{etc/dbus-1/system.d} directories of each package listed in bus. It allows programs and daemons to communicate and is also responsible for spawning (@dfn{activating}) D-Bus services on demand."))) -(define* (dbus-service #:key (dbus dbus) (services '())) +(define* (dbus-service #:key (dbus dbus) (services '()) verbose?) "Return a service that runs the \"system bus\", using @var{dbus}, with -support for @var{services}. +support for @var{services}. When @var{verbose?} is true, it causes the +@samp{DBUS_VERBOSE} environment variable to be set to @samp{1}; a +verbose-enabled D-Bus package such as @code{dbus-verbose} should be provided +as @var{dbus} in this scenario. @uref{http://dbus.freedesktop.org/, D-Bus} is an inter-process communication facility. Its system bus is used to allow system services to communicate and @@ -248,7 +259,8 @@ and policy files. For example, to allow avahi-daemon to use the system bus, @var{services} must be equal to @code{(list avahi)}." (service dbus-root-service-type (dbus-configuration (dbus dbus) - (services services)))) + (services services) + (verbose? verbose?)))) (define (wrapped-dbus-service service program variables) "Return a wrapper for @var{service}, a package containing a D-Bus service, diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm index 0499071436..29a3722f1b 100644 --- a/gnu/services/desktop.scm +++ b/gnu/services/desktop.scm @@ -13,6 +13,7 @@ ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Reza Alizadeh Majd <r.majd@pantherx.org> ;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re> +;;; Copyright © 2021 muradm <mail@muradm.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -39,7 +40,9 @@ #:use-module (gnu services networking) #:use-module (gnu services sound) #:use-module ((gnu system file-systems) - #:select (%elogind-file-systems file-system)) + #:select (%control-groups + %elogind-file-systems + file-system)) #:autoload (gnu services sddm) (sddm-service-type) #:use-module (gnu system) #:use-module (gnu system setuid) @@ -157,6 +160,9 @@ gnome-keyring-configuration? gnome-keyring-service-type + seatd-configuration + seatd-service-type + %desktop-services)) ;;; Commentary: @@ -1632,6 +1638,60 @@ or setting its password with passwd."))) ;;; +;;; seatd-service-type -- minimal seat management daemon +;;; + +(define-record-type* <seatd-configuration> seatd-configuration + make-seatd-configuration + seatd-configuration? + (seatd seatd-package (default seatd)) + (user seatd-user (default "root")) + (group seatd-group (default "users")) + (socket seatd-socket (default "/run/seatd.sock")) + (logfile seatd-logfile (default "/var/log/seatd.log")) + (loglevel seatd-loglevel (default "info"))) + +(define (seatd-shepherd-service config) + (list (shepherd-service + (documentation "Minimal seat management daemon") + (requirement '()) + ;; TODO: once cgroups is separate dependency + ;; here we should depend on it rather than elogind + (provision '(seatd elogind)) + (start #~(make-forkexec-constructor + (list #$(file-append (seatd-package config) "/bin/seatd") + "-u" #$(seatd-user config) + "-g" #$(seatd-group config)) + #:environment-variables + (list (string-append "SEATD_LOGLEVEL=" + #$(seatd-loglevel config)) + (string-append "SEATD_DEFAULTPATH=" + #$(seatd-socket config))) + #:log-file #$(seatd-logfile config))) + (stop #~(make-kill-destructor))))) + +(define seatd-environment + (match-lambda + (($ <seatd-configuration> _ _ _ socket) + `(("SEATD_SOCK" . ,socket))))) + +(define seatd-service-type + (service-type + (name 'seatd) + (description "Seat management takes care of mediating access +to shared devices (graphics, input), without requiring the +applications needing access to be root.") + (extensions + (list + (service-extension session-environment-service-type seatd-environment) + ;; TODO: once cgroups is separate dependency we should not mount it here + ;; for now it is mounted here, because elogind mounts it + (service-extension file-system-service-type (const %control-groups)) + (service-extension shepherd-root-service-type seatd-shepherd-service))) + (default-value (seatd-configuration)))) + + +;;; ;;; The default set of desktop services. ;;; diff --git a/gnu/services/file-sharing.scm b/gnu/services/file-sharing.scm index e3d681b08f..e32d1f145d 100644 --- a/gnu/services/file-sharing.scm +++ b/gnu/services/file-sharing.scm @@ -115,8 +115,7 @@ type generated and used by Transmission clients, suitable for passing to the (set! serialize-maybe-string (lambda (field-name val) (serialize-string field-name - (if (and (symbol? val) - (eq? val 'disabled)) + (if (unspecified? val) "" val)))) @@ -181,8 +180,7 @@ type generated and used by Transmission clients, suitable for passing to the (define-maybe file-object) (set! serialize-maybe-file-object (lambda (field-name val) - (if (and (symbol? val) - (eq? val 'disabled)) + (if (unspecified? val) (serialize-string field-name "") (serialize-file-object field-name val)))) @@ -281,7 +279,7 @@ torrent is being downloaded, then moved to @code{download-dir} once the torrent is complete. Otherwise, files for all torrents (including those still being downloaded) will be placed in @code{download-dir}.") (incomplete-dir - (maybe-string 'disabled) + maybe-string "The directory in which files from incompletely downloaded torrents will be held when @code{incomplete-dir-enabled?} is @code{#t}.") (umask @@ -305,7 +303,7 @@ for new @file{.torrent} files and the torrents they describe added automatically (and the original files removed, if @code{trash-original-torrent-files?} is @code{#t}).") (watch-dir - (maybe-string 'disabled) + maybe-string "The directory to be watched for @file{.torrent} files indicating new torrents to be added, when @code{watch-dir-enabled} is @code{#t}.") (trash-original-torrent-files? @@ -401,11 +399,11 @@ upstream gateway automatically using @acronym{UPnP} and @acronym{NAT-PMP}.") @code{prefer-unencrypted-connections}, @code{prefer-encrypted-connections} or @code{require-encrypted-connections}.") (peer-congestion-algorithm - (maybe-string 'disabled) + maybe-string "The TCP congestion-control algorithm to use for peer connections, specified using a string recognized by the operating system in calls to -@code{setsockopt} (or set to @code{disabled}, in which case the -operating-system default is used). +@code{setsockopt} (or leave it unset, in which case the operating-system +default is used). Note that on GNU/Linux systems, the kernel must be configured to allow processes to use a congestion-control algorithm not in the default set; @@ -465,7 +463,7 @@ torrent before it is regenerated.") "When @code{#t}, the daemon will ignore peers mentioned in the blocklist it has most recently downloaded from @code{blocklist-url}.") (blocklist-url - (maybe-string 'disabled) + maybe-string "The URL of a peer blocklist (in @acronym{P2P}-plaintext or eMule @file{.dat} format) to be periodically downloaded and applied when @code{blocklist-enabled?} is @code{#t}.") @@ -564,11 +562,11 @@ which allows remote control of the daemon via its Web interface, the the side effect of disabling host-name whitelisting (see @code{rpc-host-whitelist-enabled?}.") (rpc-username - (maybe-string 'disabled) + maybe-string "The username required by clients to access the @acronym{RPC} interface when @code{rpc-authentication-required?} is @code{#t}.") (rpc-password - (maybe-transmission-password-hash 'disabled) + maybe-transmission-password-hash "The password required by clients to access the @acronym{RPC} interface when @code{rpc-authentication-required?} is @code{#t}. This must be specified using a password hash in the format recognized by Transmission clients, either @@ -613,7 +611,7 @@ they are added in ``paused'' state.") @code{script-torrent-done-filename} will be invoked each time a torrent completes.") (script-torrent-done-filename - (maybe-file-object 'disabled) + maybe-file-object "A file name or file-like object specifying a script to run each time a torrent completes, when @code{script-torrent-done-enabled?} is @code{#t}.") (scrape-paused-torrents-enabled? diff --git a/gnu/services/linux.scm b/gnu/services/linux.scm index 2eb02ac5a3..60e2093e1d 100644 --- a/gnu/services/linux.scm +++ b/gnu/services/linux.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2021 raid5atemyhomework <raid5atemyhomework@protonmail.com> ;;; Copyright © 2021 B. Wilson <elaexuotee@wilsonb.com> +;;; Copyright © 2022 Josselin Poiret <dev@jpoiret.xyz> ;;; ;;; This file is part of GNU Guix. ;;; @@ -21,9 +22,12 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu services linux) + #:use-module (guix diagnostics) #:use-module (guix gexp) #:use-module (guix records) #:use-module (guix modules) + #:use-module (guix i18n) + #:use-module (guix ui) #:use-module (gnu services) #:use-module (gnu services base) #:use-module (gnu services shepherd) @@ -252,7 +256,21 @@ representation." (memory-limit zram-device-configuration-memory-limit (default 0)) ; string or integer (priority zram-device-configuration-priority - (default -1))) ; integer + (default #f) ; integer | #f + (delayed) ; to avoid printing the deprecation + ; warning multiple times + (sanitize warn-zram-priority-change))) + +(define-with-syntax-properties + (warn-zram-priority-change (priority properties)) + (if (eqv? priority -1) + (begin + (warning (source-properties->location properties) + (G_ "using -1 for zram priority is deprecated~%")) + (display-hint (G_ "Use #f or leave as default instead (@pxref{Linux \ +Services}).")) + #f) + priority)) (define (zram-device-configuration->udev-string config) "Translate a <zram-device-configuration> into a string which can be @@ -278,9 +296,12 @@ placed in a udev rules file." "") "RUN+=\"/run/current-system/profile/sbin/mkswap /dev/zram0\" " "RUN+=\"/run/current-system/profile/sbin/swapon " - (if (not (equal? -1 priority)) - (string-append "--priority " (number->string priority) " ") - "") + ;; TODO: Revert to simply use 'priority' after removing the deprecation + ;; warning and the delayed property of the field. + (let ((priority* (force priority))) + (if priority* + (format #f "--priority ~a " priority*) + "")) "/dev/zram0\"\n")))) (define %zram-device-config diff --git a/gnu/services/messaging.scm b/gnu/services/messaging.scm index 48eff27b49..651f90adb2 100644 --- a/gnu/services/messaging.scm +++ b/gnu/services/messaging.scm @@ -76,6 +76,7 @@ (lambda (field target) (and (memq (syntax->datum target) `(common ,arg)) field))) (syntax-case stx () + ;; TODO Also handle (field-type) form, without a default. ((_ stem (field (field-type def) doc target) ...) (with-syntax (((new-field-type ...) (map (lambda (field-type target) @@ -89,7 +90,7 @@ ((new-def ...) (map (lambda (def target) (if (eq? 'common (syntax->datum target)) - #''disabled def)) + #'*unspecified* def)) #'(def ...) #'(target ...))) ((new-doc ...) (map (lambda (doc target) @@ -199,7 +200,7 @@ (define-maybe file-object-list) (define (raw-content? val) - (not (eq? val 'disabled))) + (not (unspecified? val))) (define (serialize-raw-content field-name val) val) (define-maybe raw-content) @@ -227,15 +228,15 @@ just joined the room.")) (define-configuration ssl-configuration (protocol - (maybe-string 'disabled) + maybe-string "This determines what handshake to use.") (key - (maybe-file-name 'disabled) + maybe-file-name "Path to your private key file.") (certificate - (maybe-file-name 'disabled) + maybe-file-name "Path to your certificate file.") (capath @@ -244,48 +245,48 @@ just joined the room.")) trust when verifying the certificates of remote servers.") (cafile - (maybe-file-object 'disabled) + maybe-file-object "Path to a file containing root certificates that you wish Prosody to trust. Similar to @code{capath} but with all certificates concatenated together.") (verify - (maybe-string-list 'disabled) + maybe-string-list "A list of verification options (these mostly map to OpenSSL's @code{set_verify()} flags).") (options - (maybe-string-list 'disabled) + maybe-string-list "A list of general options relating to SSL/TLS. These map to OpenSSL's @code{set_options()}. For a full list of options available in LuaSec, see the LuaSec source.") (depth - (maybe-non-negative-integer 'disabled) + maybe-non-negative-integer "How long a chain of certificate authorities to check when looking for a trusted root certificate.") (ciphers - (maybe-string 'disabled) + maybe-string "An OpenSSL cipher string. This selects what ciphers Prosody will offer to clients, and in what order.") (dhparam - (maybe-file-name 'disabled) + maybe-file-name "A path to a file containing parameters for Diffie-Hellman key exchange. You can create such a file with: @code{openssl dhparam -out /etc/prosody/certs/dh-2048.pem 2048}") (curve - (maybe-string 'disabled) + maybe-string "Curve for Elliptic curve Diffie-Hellman. Prosody's default is @samp{\"secp384r1\"}.") (verifyext - (maybe-string-list 'disabled) + maybe-string-list "A list of \"extra\" verification options.") (password - (maybe-string 'disabled) + maybe-string "Password for encrypted private keys.")) (define (serialize-ssl-configuration field-name val) #~(format #f "ssl = {\n~a};\n" @@ -473,12 +474,12 @@ by the Prosody service. See @url{https://prosody.im/doc/logging}." global) (http-max-content-size - (maybe-non-negative-integer 'disabled) + (maybe-non-negative-integer *unspecified*) "Maximum allowed size of the HTTP body (in bytes)." common) (http-external-url - (maybe-string 'disabled) + (maybe-string *unspecified*) "Some modules expose their own URL in various ways. This URL is built from the protocol, host and port used. If Prosody sits behind a proxy, the public URL will be @code{http-external-url} instead. See @@ -555,7 +556,7 @@ support. To add an external component, you simply fill the hostname field. See int-component) (mod-muc - (maybe-mod-muc-configuration 'disabled) + (maybe-mod-muc-configuration *unspecified*) "Multi-user chat (MUC) is Prosody's module for allowing you to create hosted chatrooms/conferences for XMPP users. @@ -572,7 +573,7 @@ See also @url{https://prosody.im/doc/modules/mod_muc}." ext-component) (raw-content - (maybe-raw-content 'disabled) + (maybe-raw-content *unspecified*) "Raw content that will be added to the configuration file." common))) diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index 90b9317510..a9560db66b 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -771,17 +771,17 @@ logging is disabled.") "The node host name that is used to make the first connection to the network. A specific port value can be provided by appending the @code{:PORT} suffix. By default, it uses the Jami bootstrap nodes, but any host can be -specified here. It's also possible to disable bootstrapping by setting this -to the @code{'disabled} symbol.") +specified here. It's also possible to disable bootstrapping by explicitly +setting this field to the @code{*unspecified*} value.") (port (maybe-number 4222) - "The UDP port to bind to. When set to @code{'disabled}, an available port -is automatically selected.") + "The UDP port to bind to. When set to @code{*unspecified*}, an available +port is automatically selected.") (proxy-server-port - (maybe-number 'disabled) + maybe-number "Spawn a proxy server listening on the specified port.") (proxy-server-port-tls - (maybe-number 'disabled) + maybe-number "Spawn a proxy server listening to TLS connections on the specified port.")) diff --git a/gnu/services/pam-mount.scm b/gnu/services/pam-mount.scm index 33649b0f7c..e60781d05b 100644 --- a/gnu/services/pam-mount.scm +++ b/gnu/services/pam-mount.scm @@ -90,7 +90,7 @@ (module #~(string-append #$pam-mount "/lib/security/pam_mount.so")))) (list (lambda (pam) (if (member (pam-service-name pam) - '("login" "su" "slim" "gdm-password" "sddm")) + '("login" "greetd" "su" "slim" "gdm-password" "sddm")) (pam-service (inherit pam) (auth (append (pam-service-auth pam) diff --git a/gnu/services/pm.scm b/gnu/services/pm.scm index e48236dbca..3daf484cc1 100644 --- a/gnu/services/pm.scm +++ b/gnu/services/pm.scm @@ -114,55 +114,55 @@ before syncing on AC.") "Same as @code{max-lost-work-secs-on-ac} but on BAT mode.") (cpu-scaling-governor-on-ac - (maybe-space-separated-string-list 'disabled) + maybe-space-separated-string-list "CPU frequency scaling governor on AC mode. With intel_pstate driver, alternatives are powersave and performance. With acpi-cpufreq driver, alternatives are ondemand, powersave, performance and conservative.") (cpu-scaling-governor-on-bat - (maybe-space-separated-string-list 'disabled) + maybe-space-separated-string-list "Same as @code{cpu-scaling-governor-on-ac} but on BAT mode.") (cpu-scaling-min-freq-on-ac - (maybe-non-negative-integer 'disabled) + maybe-non-negative-integer "Set the min available frequency for the scaling governor on AC.") (cpu-scaling-max-freq-on-ac - (maybe-non-negative-integer 'disabled) + maybe-non-negative-integer "Set the max available frequency for the scaling governor on AC.") (cpu-scaling-min-freq-on-bat - (maybe-non-negative-integer 'disabled) + maybe-non-negative-integer "Set the min available frequency for the scaling governor on BAT.") (cpu-scaling-max-freq-on-bat - (maybe-non-negative-integer 'disabled) + maybe-non-negative-integer "Set the max available frequency for the scaling governor on BAT.") (cpu-min-perf-on-ac - (maybe-non-negative-integer 'disabled) + maybe-non-negative-integer "Limit the min P-state to control the power dissipation of the CPU, in AC mode. Values are stated as a percentage of the available performance.") (cpu-max-perf-on-ac - (maybe-non-negative-integer 'disabled) + maybe-non-negative-integer "Limit the max P-state to control the power dissipation of the CPU, in AC mode. Values are stated as a percentage of the available performance.") (cpu-min-perf-on-bat - (maybe-non-negative-integer 'disabled) + maybe-non-negative-integer "Same as @code{cpu-min-perf-on-ac} on BAT mode.") (cpu-max-perf-on-bat - (maybe-non-negative-integer 'disabled) + maybe-non-negative-integer "Same as @code{cpu-max-perf-on-ac} on BAT mode.") (cpu-boost-on-ac? - (maybe-boolean 'disabled) + maybe-boolean "Enable CPU turbo boost feature on AC mode.") (cpu-boost-on-bat? - (maybe-boolean 'disabled) + maybe-boolean "Same as @code{cpu-boost-on-ac?} on BAT mode.") (sched-powersave-on-ac? @@ -179,7 +179,7 @@ used under light load conditions.") "Enable Linux kernel NMI watchdog.") (phc-controls - (maybe-string 'disabled) + maybe-string "For Linux kernels with PHC patch applied, change CPU voltages. An example value would be @samp{\"F:V F:V F:V F:V\"}.") @@ -205,16 +205,16 @@ performance, normal, powersave.") "Same as @code{disk-apm-bat} but on BAT mode.") (disk-spindown-timeout-on-ac - (maybe-space-separated-string-list 'disabled) + maybe-space-separated-string-list "Hard disk spin down timeout. One value has to be specified for each declared hard disk.") (disk-spindown-timeout-on-bat - (maybe-space-separated-string-list 'disabled) + maybe-space-separated-string-list "Same as @code{disk-spindown-timeout-on-ac} but on BAT mode.") (disk-iosched - (maybe-space-separated-string-list 'disabled) + maybe-space-separated-string-list "Select IO scheduler for disk devices. One value has to be specified for each declared hard disk. Example alternatives are cfq, deadline and noop.") @@ -228,16 +228,16 @@ min_power, medium_power, max_performance.") "Same as @code{sata-linkpwr-ac} but on BAT mode.") (sata-linkpwr-blacklist - (maybe-string 'disabled) + maybe-string "Exclude specified SATA host devices for link power management.") (ahci-runtime-pm-on-ac? - (maybe-on-off-boolean 'disabled) + maybe-on-off-boolean "Enable Runtime Power Management for AHCI controller and disks on AC mode.") (ahci-runtime-pm-on-bat? - (maybe-on-off-boolean 'disabled) + maybe-on-off-boolean "Same as @code{ahci-runtime-pm-on-ac} on BAT mode.") (ahci-runtime-pm-timeout @@ -254,19 +254,19 @@ default, performance, powersave.") "Same as @code{pcie-aspm-ac} but on BAT mode.") (start-charge-thresh-bat0 - (maybe-non-negative-integer 'disabled) + maybe-non-negative-integer "Percentage when battery 0 should begin charging.") (stop-charge-thresh-bat0 - (maybe-non-negative-integer 'disabled) + maybe-non-negative-integer "Percentage when battery 0 should stop charging.") (start-charge-thresh-bat1 - (maybe-non-negative-integer 'disabled) + maybe-non-negative-integer "Percentage when battery 1 should begin charging.") (stop-charge-thresh-bat1 - (maybe-non-negative-integer 'disabled) + maybe-non-negative-integer "Percentage when battery 1 should stop charging.") (radeon-power-profile-on-ac @@ -346,7 +346,7 @@ on and auto.") blacklisted ones.") (runtime-pm-blacklist - (maybe-space-separated-string-list 'disabled) + maybe-space-separated-string-list "Exclude specified PCI(e) device addresses from Runtime Power Management.") (runtime-pm-driver-blacklist @@ -359,7 +359,7 @@ Runtime Power Management.") "Enable USB autosuspend feature.") (usb-blacklist - (maybe-string 'disabled) + maybe-string "Exclude specified devices from USB autosuspend.") (usb-blacklist-wwan? @@ -367,12 +367,12 @@ Runtime Power Management.") "Exclude WWAN devices from USB autosuspend.") (usb-whitelist - (maybe-string 'disabled) + maybe-string "Include specified devices into USB autosuspend, even if they are already excluded by the driver or via @code{usb-blacklist-wwan?}.") (usb-autosuspend-disable-on-shutdown? - (maybe-boolean 'disabled) + maybe-boolean "Enable USB autosuspend before shutdown.") (restore-device-state-on-startup? diff --git a/gnu/services/telephony.scm b/gnu/services/telephony.scm index d8ebc7b39d..e8bfbc88c5 100644 --- a/gnu/services/telephony.scm +++ b/gnu/services/telephony.scm @@ -26,6 +26,7 @@ #:use-module (gnu packages admin) #:use-module (gnu packages certs) #:use-module (gnu packages glib) + #:use-module (gnu packages guile-xyz) #:use-module (gnu packages jami) #:use-module (gnu packages telephony) #:use-module (guix deprecation) @@ -48,7 +49,7 @@ jami-account-name-server-uri jami-configuration - jami-configuration-jamid + jami-configuration-libjami jami-configuration-dbus jami-configuration-enable-logging? jami-configuration-debug? @@ -156,7 +157,7 @@ the @samp{root} user (i.e., not in the store), to guard against leaking the secret key material of the Jami account it contains." empty-serializer) (allowed-contacts - (maybe-account-fingerprint-list 'disabled) + maybe-account-fingerprint-list "The list of allowed contacts for the account, entered as their 40 characters long fingerprint. Messages or calls from accounts not in that list will be rejected. When unspecified, the configuration of the account archive @@ -165,7 +166,7 @@ allowance, which typically defaults to allow any contact to communicate with the account." empty-serializer) (moderators - (maybe-account-fingerprint-list 'disabled) + maybe-account-fingerprint-list "The list of contacts that should have moderation privileges (to ban, mute, etc. other users) in rendezvous conferences, entered as their 40 characters long fingerprint. When unspecified, the configuration of the account archive @@ -174,24 +175,24 @@ anyone to moderate." empty-serializer) ;; The serializable fields below are to be set with set-account-details. (rendezvous-point? - (maybe-boolean 'disabled) + maybe-boolean "Whether the account should operate in the rendezvous mode. In this mode, all the incoming audio/video calls are mixed into a conference. When left unspecified, the value from the account archive prevails.") (peer-discovery? - (maybe-boolean 'disabled) + maybe-boolean "Whether peer discovery should be enabled. Peer discovery is used to discover other OpenDHT nodes on the local network, which can be useful to maintain communication between devices on such network even when the connection to the the Internet has been lost. When left unspecified, the value from the account archive prevails.") (bootstrap-hostnames - (maybe-string-list 'disabled) + maybe-string-list "A list of hostnames or IPs pointing to OpenDHT nodes, that should be used to initially join the OpenDHT network. When left unspecified, the value from the account archive prevails.") (name-server-uri - (maybe-string 'disabled) + maybe-string "The URI of the name server to use, that can be used to retrieve the account fingerprint for a registered username.")) @@ -213,7 +214,7 @@ SET-ACCOUNT-DETAILS." name ((configuration-field-getter field) jami-account-object))) ;; The define-maybe default serializer produces an - ;; empty string for the 'disabled value. + ;; empty string for unspecified values. (value* (if (string-null? value) #f value))) @@ -227,11 +228,11 @@ SET-ACCOUNT-DETAILS." (define-maybe/no-serialization jami-account-list) (define-configuration/no-serialization jami-configuration - (jamid + (libjami (file-like libjami) "The Jami daemon package to use.") (dbus - (file-like dbus) + (file-like dbus-for-jami) "The D-Bus package to use to start the required D-Bus session.") (nss-certs (file-like nss-certs) @@ -246,7 +247,7 @@ SET-ACCOUNT-DETAILS." (boolean #f) "Whether to force automatic answer to incoming calls.") (accounts - (maybe-jami-account-list 'disabled) + maybe-jami-account-list "A list of Jami accounts to be (re-)provisioned every time the Jami daemon service starts. When providing this field, the account directories under @file{/var/lib/jami/} are recreated every time the service starts, ensuring a @@ -265,8 +266,8 @@ consistent state.")) "Derive the command line arguments to used to launch the Jami daemon from CONFIG, a <jami-configuration> object." (match-record config <jami-configuration> - (jamid dbus enable-logging? debug? auto-answer?) - `(,(file-append jamid "/libexec/jamid") + (libjami dbus enable-logging? debug? auto-answer?) + `(,(file-append libjami "/libexec/jamid") "--persistent" ;stay alive after client quits ,@(if enable-logging? '() ;logs go to syslog by default @@ -284,34 +285,48 @@ CONFIG, a <jami-configuration> object." #~(begin (use-modules (gnu build activation)) (let ((user (getpwnam "jami"))) - (mkdir-p/perms "/var/run/jami" user #o700))))) + (mkdir-p/perms "/var/run/jami" user #o700) + ;; Customize the D-Bus policy to allow 'root' to access other users' + ;; session bus. Also modify the location of the written PID file, + ;; from the default '/var/run/dbus/pid' location. This file is only + ;; honored by the 'dbus-for-jami' package variant. + (call-with-output-file "/var/run/jami/session-local.conf" + (lambda (port) + (format port "\ +<busconfig> + <pidfile>/var/run/jami/pid</pidfile> + <policy context=\"mandatory\"> + <allow user=\"root\"/> + </policy> +</busconfig>~%"))))))) (define (jami-shepherd-services config) "Return a <shepherd-service> running the Jami daemon." - (let* ((jamid (jami-configuration-jamid config)) + (let* ((libjami (jami-configuration-libjami config)) (nss-certs (jami-configuration-nss-certs config)) (dbus (jami-configuration-dbus config)) (dbus-daemon (file-append dbus "/bin/dbus-daemon")) - (dbus-send (file-append dbus "/bin/dbus-send")) (accounts (jami-configuration-accounts config)) - (declarative-mode? (not (eq? 'disabled accounts)))) - - (with-imported-modules (source-module-closure - '((gnu build jami-service) - (gnu build shepherd) - (gnu system file-systems))) - - (define list-accounts-action - (shepherd-action - (name 'list-accounts) - (documentation "List the available Jami accounts. Return the account + (declarative-mode? (not (unspecified? accounts)))) + + (with-extensions (list guile-packrat ;used by guile-ac-d-bus + guile-ac-d-bus + ;; Fibers is needed to provide the non-blocking + ;; variant of the 'sleep' procedure. + guile-fibers) + (with-imported-modules (source-module-closure + '((gnu build dbus-service) + (gnu build jami-service) + (gnu build shepherd) + (gnu system file-systems))) + + (define list-accounts-action + (shepherd-action + (name 'list-accounts) + (documentation "List the available Jami accounts. Return the account details alists keyed by their account username.") - (procedure - #~(lambda _ - (parameterize ((%send-dbus-binary #$dbus-send) - (%send-dbus-bus "unix:path=/var/run/jami/bus") - (%send-dbus-user "jami") - (%send-dbus-group "jami")) + (procedure + #~(lambda _ ;; Print the accounts summary or long listing, according to ;; user-provided option. (let* ((usernames (get-usernames)) @@ -341,39 +356,31 @@ details alists keyed by their account username.") accounts) (display "\n"))) ;; Return the account-details-list alist. - (map cons usernames accounts))))))) + (map cons usernames accounts)))))) - (define list-account-details-action - (shepherd-action - (name 'list-account-details) - (documentation "Display the account details of the available Jami + (define list-account-details-action + (shepherd-action + (name 'list-account-details) + (documentation "Display the account details of the available Jami accounts in the @code{recutils} format. Return the account details alists keyed by their account username.") - (procedure - #~(lambda _ - (parameterize ((%send-dbus-binary #$dbus-send) - (%send-dbus-bus "unix:path=/var/run/jami/bus") - (%send-dbus-user "jami") - (%send-dbus-group "jami")) + (procedure + #~(lambda _ (let* ((usernames (get-usernames)) (accounts (map-in-order username->account usernames))) (for-each (lambda (account) (display (account-details->recutil account)) (display "\n\n")) accounts) - (map cons usernames accounts))))))) + (map cons usernames accounts)))))) - (define list-contacts-action - (shepherd-action - (name 'list-contacts) - (documentation "Display the contacts for each Jami account. Return + (define list-contacts-action + (shepherd-action + (name 'list-contacts) + (documentation "Display the contacts for each Jami account. Return an alist containing the contacts keyed by the account usernames.") - (procedure - #~(lambda _ - (parameterize ((%send-dbus-binary #$dbus-send) - (%send-dbus-bus "unix:path=/var/run/jami/bus") - (%send-dbus-user "jami") - (%send-dbus-group "jami")) + (procedure + #~(lambda _ (let* ((usernames (get-usernames)) (contacts (map-in-order username->contacts usernames))) (for-each (lambda (username contacts) @@ -381,19 +388,15 @@ an alist containing the contacts keyed by the account usernames.") username) (format #t "~{ - ~a~%~}~%" contacts)) usernames contacts) - (map cons usernames contacts))))))) + (map cons usernames contacts)))))) - (define list-moderators-action - (shepherd-action - (name 'list-moderators) - (documentation "Display the moderators for each Jami account. Return + (define list-moderators-action + (shepherd-action + (name 'list-moderators) + (documentation "Display the moderators for each Jami account. Return an alist containing the moderators keyed by the account usernames.") - (procedure - #~(lambda _ - (parameterize ((%send-dbus-binary #$dbus-send) - (%send-dbus-bus "unix:path=/var/run/jami/bus") - (%send-dbus-user "jami") - (%send-dbus-group "jami")) + (procedure + #~(lambda _ (let* ((usernames (get-usernames)) (moderators (map-in-order username->moderators usernames))) @@ -406,12 +409,12 @@ an alist containing the moderators keyed by the account usernames.") (format #t "Moderators for account ~a:~%" username) (format #t "~{ - ~a~%~}~%" moderators)))) usernames moderators) - (map cons usernames moderators))))))) + (map cons usernames moderators)))))) - (define add-moderator-action - (shepherd-action - (name 'add-moderator) - (documentation "Add a moderator for a given Jami account. The + (define add-moderator-action + (shepherd-action + (name 'add-moderator) + (documentation "Add a moderator for a given Jami account. The MODERATOR contact must be given as its 40 characters fingerprint, while the Jami account can be provided as its registered USERNAME or fingerprint. @@ -420,21 +423,17 @@ herd add-moderator jami 1dbcb0f5f37324228235564b79f2b9737e9a008f username @end example Return the moderators for the account known by USERNAME.") - (procedure - #~(lambda (_ moderator username) - (parameterize ((%send-dbus-binary #$dbus-send) - (%send-dbus-bus "unix:path=/var/run/jami/bus") - (%send-dbus-user "jami") - (%send-dbus-group "jami")) + (procedure + #~(lambda (_ moderator username) (set-all-moderators #f username) (add-contact moderator username) (set-moderator moderator #t username) - (username->moderators username)))))) + (username->moderators username))))) - (define ban-contact-action - (shepherd-action - (name 'ban-contact) - (documentation "Ban a contact for a given or all Jami accounts, and + (define ban-contact-action + (shepherd-action + (name 'ban-contact) + (documentation "Ban a contact for a given or all Jami accounts, and clear their moderator flag. The CONTACT must be given as its 40 characters fingerprint, while the Jami account can be provided as its registered USERNAME or fingerprint, or omitted. When the account is omitted, CONTACT is banned @@ -443,31 +442,22 @@ from all accounts. @example herd ban-contact jami 1dbcb0f5f37324228235564b79f2b9737e9a008f [username] @end example") - (procedure - #~(lambda* (_ contact #:optional username) - (parameterize ((%send-dbus-binary #$dbus-send) - (%send-dbus-bus "unix:path=/var/run/jami/bus") - (%send-dbus-user "jami") - (%send-dbus-group "jami")) + (procedure + #~(lambda* (_ contact #:optional username) (let ((usernames (or (and=> username list) (get-usernames)))) (for-each (lambda (username) (set-moderator contact #f username) (remove-contact contact username #:ban? #t)) - usernames))))))) + usernames)))))) - (define list-banned-contacts-action - (shepherd-action - (name 'list-banned-contacts) - (documentation "List the banned contacts for each accounts. Return + (define list-banned-contacts-action + (shepherd-action + (name 'list-banned-contacts) + (documentation "List the banned contacts for each accounts. Return an alist of the banned contacts, keyed by the account usernames.") - (procedure - #~(lambda _ - (parameterize ((%send-dbus-binary #$dbus-send) - (%send-dbus-bus "unix:path=/var/run/jami/bus") - (%send-dbus-user "jami") - (%send-dbus-group "jami")) - + (procedure + #~(lambda _ (define banned-contacts (let ((usernames (get-usernames))) (map cons usernames @@ -484,183 +474,157 @@ an alist of the banned contacts, keyed by the account usernames.") username) (format #t "~{ - ~a~%~}~%" banned)))) banned-contacts) - banned-contacts))))) + banned-contacts)))) - (define enable-account-action - (shepherd-action - (name 'enable-account) - (documentation "Enable an account. It takes USERNAME as an argument, + (define enable-account-action + (shepherd-action + (name 'enable-account) + (documentation "Enable an account. It takes USERNAME as an argument, either a registered username or the fingerprint of the account.") - (procedure - #~(lambda (_ username) - (parameterize ((%send-dbus-binary #$dbus-send) - (%send-dbus-bus "unix:path=/var/run/jami/bus") - (%send-dbus-user "jami") - (%send-dbus-group "jami")) - (enable-account username)))))) - - (define disable-account-action - (shepherd-action - (name 'disable-account) - (documentation "Disable an account. It takes USERNAME as an + (procedure + #~(lambda (_ username) + (enable-account username))))) + + (define disable-account-action + (shepherd-action + (name 'disable-account) + (documentation "Disable an account. It takes USERNAME as an argument, either a registered username or the fingerprint of the account.") - (procedure - #~(lambda (_ username) - (parameterize ((%send-dbus-binary #$dbus-send) - (%send-dbus-bus "unix:path=/var/run/jami/bus") - (%send-dbus-user "jami") - (%send-dbus-group "jami")) - (disable-account username)))))) - - (list (shepherd-service - (documentation "Run a D-Bus session for the Jami daemon.") - (provision '(jami-dbus-session)) - (modules `((gnu build shepherd) - (gnu build jami-service) - (gnu system file-systems) - ,@%default-modules)) - ;; The requirement on dbus-system is to ensure other required - ;; activation for D-Bus, such as a /etc/machine-id file. - (requirement '(dbus-system syslogd)) - (start - #~(lambda args - (define pid - ((make-forkexec-constructor/container - (list #$dbus-daemon "--session" - "--address=unix:path=/var/run/jami/bus" - "--nofork" "--syslog-only" "--nopidfile") - #:mappings (list (file-system-mapping - (source "/dev/log") ;for syslog - (target source)) - (file-system-mapping - (source "/var/run/jami") - (target source) - (writable? #t))) - #:user "jami" - #:group "jami" - #:environment-variables - ;; This is so that the cx.ring.Ring service D-Bus - ;; definition is found by dbus-send. - (list (string-append "XDG_DATA_DIRS=" - #$jamid "/share"))))) - - ;; XXX: This manual synchronization probably wouldn't be - ;; needed if we were using a PID file, but providing it via a - ;; customized config file with <pidfile> would not override - ;; the one inherited from the base config of D-Bus. - (let ((sock (socket PF_UNIX SOCK_STREAM 0))) - (with-retries 20 1 (catch 'system-error - (lambda () - (connect sock AF_UNIX - "/var/run/jami/bus") - (close-port sock) - #t) - (lambda args - #f)))) - - pid)) - (stop #~(make-kill-destructor))) - - (shepherd-service - (documentation "Run the Jami daemon.") - (provision '(jami)) - (actions (list list-accounts-action - list-account-details-action - list-contacts-action - list-moderators-action - add-moderator-action - ban-contact-action - list-banned-contacts-action - enable-account-action - disable-account-action)) - (requirement '(jami-dbus-session)) - (modules `((ice-9 format) - (ice-9 ftw) - (ice-9 match) - (ice-9 receive) - (srfi srfi-1) - (srfi srfi-26) - (gnu build jami-service) - (gnu build shepherd) - (gnu system file-systems) - ,@%default-modules)) - (start - #~(lambda args - (define (delete-file-recursively/safe file) - ;; Ensure we're not deleting things outside of - ;; /var/lib/jami. This prevents a possible attack in case - ;; the daemon is compromised and an attacker gains write - ;; access to /var/lib/jami. - (let ((parent-directory (dirname file))) - (if (eq? 'symlink (stat:type (stat parent-directory))) - (error "abnormality detected; unexpected symlink found at" - parent-directory) - (delete-file-recursively file)))) - - (when #$declarative-mode? - ;; Clear the Jami configuration and accounts, to enforce the - ;; declared state. - (catch #t - (lambda () - (for-each (cut delete-file-recursively/safe <>) - '("/var/lib/jami/.cache/jami" - "/var/lib/jami/.config/jami" - "/var/lib/jami/.local/share/jami" - "/var/lib/jami/accounts"))) - (lambda args - #t)) - ;; Copy the Jami account archives from somewhere readable - ;; by root to a place only the jami user can read. - (let* ((accounts-dir "/var/lib/jami/accounts/") - (pwd (getpwnam "jami")) - (user (passwd:uid pwd)) - (group (passwd:gid pwd))) - (mkdir-p accounts-dir) - (chown accounts-dir user group) - (for-each (lambda (f) - (let ((dest (string-append accounts-dir - (basename f)))) - (copy-file f dest) - (chown dest user group))) - '#$(and declarative-mode? - (map jami-account-archive accounts))))) - - ;; Start the daemon. - (define daemon-pid - ((make-forkexec-constructor/container - '#$(jami-configuration->command-line-arguments config) - #:mappings - (list (file-system-mapping - (source "/dev/log") ;for syslog - (target source)) - (file-system-mapping - (source "/var/lib/jami") - (target source) - (writable? #t)) - (file-system-mapping - (source "/var/run/jami") - (target source) - (writable? #t)) - ;; Expose TLS certificates for GnuTLS. - (file-system-mapping - (source #$(file-append nss-certs "/etc/ssl/certs")) - (target "/etc/ssl/certs"))) - #:user "jami" - #:group "jami" - #:environment-variables - (list (string-append "DBUS_SESSION_BUS_ADDRESS=" - "unix:path=/var/run/jami/bus") - ;; Expose TLS certificates for OpenSSL. - "SSL_CERT_DIR=/etc/ssl/certs")))) - - (parameterize ((%send-dbus-binary #$dbus-send) - (%send-dbus-bus "unix:path=/var/run/jami/bus") - (%send-dbus-user "jami") - (%send-dbus-group "jami")) + (procedure + #~(lambda (_ username) + (disable-account username))))) + + (list (shepherd-service + (documentation "Run a D-Bus session for the Jami daemon.") + (provision '(jami-dbus-session)) + (modules `((gnu build shepherd) + (gnu build dbus-service) + (gnu build jami-service) + (gnu system file-systems) + ,@%default-modules)) + ;; The requirement on dbus-system is to ensure other required + ;; activation for D-Bus, such as a /etc/machine-id file. + (requirement '(dbus-system syslogd)) + (start + #~(make-forkexec-constructor/container + (list #$dbus-daemon "--session" + "--address=unix:path=/var/run/jami/bus" + "--syslog-only") + #:pid-file "/var/run/jami/pid" + #:mappings + (list (file-system-mapping + (source "/dev/log") ;for syslog + (target source)) + (file-system-mapping + (source "/var/run/jami") + (target source) + (writable? #t))) + #:user "jami" + #:group "jami" + #:environment-variables + ;; This is so that the cx.ring.Ring service D-Bus + ;; definition is found by dbus-daemon. + (list (string-append "XDG_DATA_DIRS=" #$libjami "/share")))) + (stop #~(make-kill-destructor))) + + (shepherd-service + (documentation "Run the Jami daemon.") + (provision '(jami)) + (actions (list list-accounts-action + list-account-details-action + list-contacts-action + list-moderators-action + add-moderator-action + ban-contact-action + list-banned-contacts-action + enable-account-action + disable-account-action)) + (requirement '(jami-dbus-session)) + (modules `((ice-9 format) + (ice-9 ftw) + (ice-9 match) + (ice-9 receive) + (srfi srfi-1) + (srfi srfi-26) + (gnu build dbus-service) + (gnu build jami-service) + (gnu build shepherd) + (gnu system file-systems) + ,@%default-modules)) + (start + #~(lambda args + (define (delete-file-recursively/safe file) + ;; Ensure we're not deleting things outside of + ;; /var/lib/jami. This prevents a possible attack in case + ;; the daemon is compromised and an attacker gains write + ;; access to /var/lib/jami. + (let ((parent-directory (dirname file))) + (if (eq? 'symlink (stat:type (stat parent-directory))) + (error "abnormality detected; unexpected symlink found at" + parent-directory) + (delete-file-recursively file)))) + + (when #$declarative-mode? + ;; Clear the Jami configuration and accounts, to enforce the + ;; declared state. + (catch #t + (lambda () + (for-each (cut delete-file-recursively/safe <>) + '("/var/lib/jami/.cache/jami" + "/var/lib/jami/.config/jami" + "/var/lib/jami/.local/share/jami" + "/var/lib/jami/accounts"))) + (lambda args + #t)) + ;; Copy the Jami account archives from somewhere readable + ;; by root to a place only the jami user can read. + (let* ((accounts-dir "/var/lib/jami/accounts/") + (pwd (getpwnam "jami")) + (user (passwd:uid pwd)) + (group (passwd:gid pwd))) + (mkdir-p accounts-dir) + (chown accounts-dir user group) + (for-each (lambda (f) + (let ((dest (string-append accounts-dir + (basename f)))) + (copy-file f dest) + (chown dest user group))) + '#$(and declarative-mode? + (map jami-account-archive accounts))))) + + ;; Start the daemon. + (define daemon-pid + ((make-forkexec-constructor/container + '#$(jami-configuration->command-line-arguments config) + #:mappings + (list (file-system-mapping + (source "/dev/log") ;for syslog + (target source)) + (file-system-mapping + (source "/var/lib/jami") + (target source) + (writable? #t)) + (file-system-mapping + (source "/var/run/jami") + (target source) + (writable? #t)) + ;; Expose TLS certificates for GnuTLS. + (file-system-mapping + (source #$(file-append nss-certs "/etc/ssl/certs")) + (target "/etc/ssl/certs"))) + #:user "jami" + #:group "jami" + #:environment-variables + (list (string-append "DBUS_SESSION_BUS_ADDRESS=" + "unix:path=/var/run/jami/bus") + ;; Expose TLS certificates for OpenSSL. + "SSL_CERT_DIR=/etc/ssl/certs")))) + + (setenv "DBUS_SESSION_BUS_ADDRESS" + "unix:path=/var/run/jami/bus") ;; Wait until the service name has been acquired by D-Bus. - (with-retries 20 1 - (dbus-service-available? "cx.ring.Ring")) + (with-retries 20 1 (jami-service-available?)) (when #$declarative-mode? ;; Provision the accounts via the D-Bus API of the daemon. @@ -685,7 +649,7 @@ argument, either a registered username or the fingerprint of the account.") account-details) (let ((username (archive-name->username archive))) - (when (not (eq? 'disabled allowed-contacts)) + (when (not (unspecified? allowed-contacts)) ;; Reject calls from unknown contacts. (set-account-details '(("DHT.PublicInCalls" . "false")) username) @@ -695,7 +659,7 @@ argument, either a registered username or the fingerprint of the account.") ;; Add allowed ones. (for-each (cut add-contact <> username) allowed-contacts)) - (when (not (eq? 'disabled moderators)) + (when (not (unspecified? moderators)) ;; Disable the 'AllModerators' property. (set-all-moderators #f username) ;; Remove all moderators. @@ -717,17 +681,17 @@ argument, either a registered username or the fingerprint of the account.") (map-in-order (cut jami-account-moderators <>) accounts)) '#$(and declarative-mode? - (map-in-order jami-account->alist accounts)))))) - - ;; Finally, return the PID of the daemon process. - daemon-pid)) - (stop - #~(lambda (pid . args) - (kill pid SIGKILL) - ;; Wait for the process to exit; this prevents overlapping - ;; processes when issuing 'herd restart'. - (waitpid pid) - #f))))))) + (map-in-order jami-account->alist accounts))))) + + ;; Finally, return the PID of the daemon process. + daemon-pid)) + (stop + #~(lambda (pid . args) + (kill pid SIGKILL) + ;; Wait for the process to exit; this prevents overlapping + ;; processes when issuing 'herd restart'. + (waitpid pid) + #f)))))))) (define jami-service-type (service-type diff --git a/gnu/services/vpn.scm b/gnu/services/vpn.scm index a3dc96c1a2..8be632d55f 100644 --- a/gnu/services/vpn.scm +++ b/gnu/services/vpn.scm @@ -363,7 +363,7 @@ poll/epoll/select prior to the write operation.") channel to protect against DoS attacks.") (auth-user-pass - (maybe-string 'disabled) + maybe-string "Authenticate with server using username/password. The option is a file containing username/password on 2 lines. Do not use a file-like object as it would be added to the store and readable by any user.") diff --git a/gnu/system.scm b/gnu/system.scm index 2c81478d00..ba1b7b5152 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -1582,8 +1582,13 @@ configurations." (lambda (store) ;; XXX: This is not super elegant but we can't pass SYSTEM and TARGET to ;; 'operating-system-derivation'. - (run-with-store store (operating-system-derivation os) - #:system system - #:target target))))) + (parameterize ((%current-system system) + (%current-target-system target)) + (run-with-store store + (mbegin %store-monad + (set-guile-for-build (default-guile)) + (operating-system-derivation os)) + #:system system + #:target target)))))) ;;; system.scm ends here diff --git a/gnu/tests/desktop.scm b/gnu/tests/desktop.scm index 57069c0ede..25971f9225 100644 --- a/gnu/tests/desktop.scm +++ b/gnu/tests/desktop.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2021 muradm <mail@muradm.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,13 +19,17 @@ (define-module (gnu tests desktop) #:use-module (gnu tests) + #:use-module (gnu packages shells) #:use-module (gnu services) + #:use-module (gnu services base) #:use-module (gnu services dbus) #:use-module (gnu services desktop) + #:use-module (gnu system) #:use-module (gnu system vm) #:use-module (guix gexp) #:use-module (srfi srfi-1) - #:export (%test-elogind)) + #:export (%test-elogind + %test-minimal-desktop)) ;;; @@ -100,3 +105,208 @@ #:imported-modules '((gnu services herd) (guix combinators))))) (run-elogind-test (virtual-machine os)))))) + + +;;; +;;; Seatd/greetd based minimal desktop +;;; + +(define %minimal-services + (append + (modify-services %base-services + ;; greetd-service-type provides "greetd" PAM service + (delete login-service-type) + ;; and can be used in place of mingetty-service-type + (delete mingetty-service-type)) + (list + (service seatd-service-type) + (service greetd-service-type + (greetd-configuration + (terminals + (list + ;; we can make any terminal active by default + (greetd-terminal-configuration (terminal-vt "1") (terminal-switch #t)) + ;; we can make environment without XDG_RUNTIME_DIR set + ;; even provide our own environment variables + (greetd-terminal-configuration + (terminal-vt "2") + (default-session-command + (greetd-agreety-session + (extra-env '(("MY_VAR" . "1"))) + (xdg-env? #f)))) + ;; we can use different shell instead of default bash + (greetd-terminal-configuration + (terminal-vt "3") + (default-session-command + (greetd-agreety-session (command (file-append zsh "/bin/zsh"))))) + ;; we can use any other executable command as greeter + (greetd-terminal-configuration + (terminal-vt "4") + (default-session-command (program-file "my-noop-greeter" #~(exit)))) + (greetd-terminal-configuration (terminal-vt "5")) + (greetd-terminal-configuration (terminal-vt "6")))))) + ;; mingetty-service-type can be used in parallel + ;; if needed to do so, do not (delete login-service-type) + ;; as illustrated above + #| (service mingetty-service-type (mingetty-configuration (tty "tty8"))) |#))) + +(define-syntax-rule (minimal-operating-system user-services ...) + "Return an operating system that includes USER-SERVICES in addition to +minimal %BASE-SERVICES." + (operating-system (inherit %simple-os) + (services (cons* user-services ... %minimal-services)))) + +(define (run-minimal-desktop-test os vm) + (define test + (with-imported-modules '((gnu build marionette) + (guix build syscalls)) + #~(begin + (use-modules (gnu build marionette) + (guix build syscalls) + (srfi srfi-1) + (srfi srfi-64) + (ice-9 pretty-print)) + + (define marionette + (make-marionette #$vm)) + + (define (file-get-all-strings fname) + (marionette-eval '(use-modules (rnrs io ports)) marionette) + (wait-for-file fname marionette #:read 'get-string-all)) + + (define (wait-for-unix-socket-m socket) + (wait-for-unix-socket socket marionette)) + + (mkdir #$output) + (chdir #$output) + + (test-runner-current (system-test-runner #$output)) + (test-begin "minimal-desktop") + + (test-assert "seatd is ready" + (wait-for-unix-socket-m "/run/seatd.sock")) + + (test-equal "login user on tty1" + "alice\n" + (begin + ;; Wait for tty1. + (marionette-eval + '(begin + (use-modules (gnu services herd)) + (start-service 'term-tty1)) + marionette) + (marionette-control "sendkey ctrl-alt-f1" marionette) + + ;; login as root change alice password and exit + ;; then login as alice + (for-each + (lambda (cmd) (marionette-type cmd marionette) (sleep 1)) + (list + "root\n" + "passwd alice\n" + "alice\n" + "alice\n" + "exit\n" + "alice\n" + "alice\n" + "id -un > logged-in\n")) + + (file-get-all-strings "/home/alice/logged-in"))) + + (test-equal "validate user environment" + '("SEATD_SOCK=/run/seatd.sock" + "XDG_RUNTIME_DIR=/run/user/1000" + "XDG_SEAT=seat0" + "XDG_VTNR=1") + + (begin + (marionette-type "env > env\n" marionette) + (sleep 1) + + (define user-env (string-tokenize + (file-get-all-strings "/home/alice/env"))) + + (define (expected-var var) + (any (lambda (s) (string-contains var s)) + '("SEATD_SOCK" + "XDG_RUNTIME_DIR" + "XDG_SEAT" + "XDG_VTNR"))) + + (sort (filter expected-var user-env) string<?))) + + (test-assert "validate SEATD_SOCK and GREETD_SOCK" + (begin + (marionette-type "env > env\n" marionette) + (sleep 1) + + (define (sock-var? var) + (any (lambda (s) (string-contains var s)) + '("SEATD_SOCK" "GREETD_SOCK"))) + + (define (sock-var-sock var) + (car (cdr (string-split var #\=)))) + + (let* + ((out (file-get-all-strings "/home/alice/env")) + (out (string-tokenize out)) + (out (filter sock-var? out)) + (socks (map sock-var-sock out)) + (socks (map wait-for-unix-socket-m socks))) + (and (= 2 (length socks)) (every identity socks))))) + + (test-assert "greetd is ready" + (begin + (marionette-type "ps -C greetd -o pid,args --no-headers > ps-greetd\n" + marionette) + (sleep 1) + + (define (greetd-daemon? cmd) + (string-contains cmd "config")) + + (define (greetd-cmd-to-pid cmd) + (car (string-split cmd #\space))) + + (define (greetd-pid-to-sock pid) + (string-append "/run/greetd-" pid ".sock")) + + (let* ((out (file-get-all-strings "/home/alice/ps-greetd")) + (out (string-split out #\newline)) + (out (map string-trim-both out)) + (out (filter greetd-daemon? out)) + (pids (map greetd-cmd-to-pid out)) + (socks (map greetd-pid-to-sock pids)) + (socks (map wait-for-unix-socket-m socks))) + (every identity socks)))) + + ;; a bit weak, but tests everything at once actually + (test-equal "check /run/user/<uid> mounted and writable" + "alice\n" + (begin + (marionette-type "echo alice > /run/user/1000/test\n" marionette) + (file-get-all-strings "/run/user/1000/test"))) + + (test-assert "screendump" + (begin + (marionette-control (string-append "screendump " #$output + "/tty1.ppm") + marionette) + (file-exists? "tty1.ppm"))) + + (test-end)))) + + (gexp->derivation "minimal-desktop" test)) + +(define %test-minimal-desktop + (system-test + (name "minimal-desktop") + (description + "Test whether we can log in when seatd and greetd is enabled") + (value + (let* ((os (marionette-operating-system + (minimal-operating-system) + #:imported-modules '((gnu services herd) + (guix combinators)))) + (vm (virtual-machine os))) + (run-minimal-desktop-test (virtualized-operating-system os '()) + #~(list #$vm)))))) diff --git a/gnu/tests/telephony.scm b/gnu/tests/telephony.scm index bc464a431a..16ee313f69 100644 --- a/gnu/tests/telephony.scm +++ b/gnu/tests/telephony.scm @@ -20,6 +20,7 @@ #:use-module (gnu) #:use-module (gnu packages) #:use-module (gnu packages guile) + #:use-module (gnu packages guile-xyz) #:use-module (gnu tests) #:use-module (gnu system vm) #:use-module (gnu services) @@ -125,221 +126,204 @@ accounts provisioning feature of the service." "Account.username")) (define test - (with-imported-modules (source-module-closure - '((gnu build marionette) - (gnu build jami-service))) - #~(begin - (use-modules (rnrs base) - (srfi srfi-11) - (srfi srfi-64) - (gnu build marionette) - (gnu build jami-service)) - - (define marionette - (make-marionette (list #$vm))) - - (test-runner-current (system-test-runner #$output)) - (test-begin "jami") - - (test-assert "service is running" - (marionette-eval - '(begin - (use-modules (gnu services herd)) - (match (start-service 'jami) - (#f #f) - (('service response-parts ...) - (match (assq-ref response-parts 'running) - ((pid) (number? pid)))))) - marionette)) - - (test-assert "service can be stopped" - (marionette-eval - '(begin - (use-modules (gnu services herd) - (rnrs base)) - (setenv "PATH" "/run/current-system/profile/bin") - (let ((pid (match (start-service 'jami) - (#f #f) - (('service response-parts ...) - (match (assq-ref response-parts 'running) - ((pid) pid)))))) - - (assert (number? pid)) - - (match (stop-service 'jami) - (services ;a list of service symbols - (member 'jami services))) - ;; Sometimes, the process still appear in pgrep, even - ;; though we are using waitpid after sending it SIGTERM - ;; in the service; use retries. + (with-extensions (list guile-packrat ;used by guile-ac-d-bus + guile-ac-d-bus + ;; Fibers is needed to provide the non-blocking + ;; variant of the 'sleep' procedure. + guile-fibers) + (with-imported-modules (source-module-closure + '((gnu build marionette) + (gnu build dbus-service) + (gnu build jami-service))) + #~(begin + (use-modules (rnrs base) + (srfi srfi-11) + (srfi srfi-64) + (gnu build marionette) + (gnu build dbus-service) + (gnu build jami-service)) + + (setenv "DBUS_SESSION_BUS_ADDRESS" "unix:path=/var/run/jami/bus") + + (define marionette + (make-marionette (list #$vm))) + + (test-runner-current (system-test-runner #$output)) + (test-begin "jami") + + (test-assert "service is running" + (marionette-eval + '(begin + (use-modules (gnu build jami-service)) + (jami-service-available?)) + marionette)) + + (test-assert "service can be stopped" + (marionette-eval + '(begin + (use-modules (gnu build jami-service) + (gnu services herd) + (rnrs base)) + (assert (jami-service-available?)) + + (stop-service 'jami) + + (with-retries 20 1 (not (jami-service-available?)))) + marionette)) + + (test-assert "service can be restarted" + (marionette-eval + '(begin + (use-modules (gnu build dbus-service) + (gnu build jami-service) + (gnu services herd) + (rnrs base) ) + ;; Start the service. + (start-service 'jami) + (with-retries 20 1 (jami-service-available?)) + ;; Restart the service. + (restart-service 'jami) + (with-retries 20 1 (jami-service-available?))) + marionette)) + + (unless #$provisioning? (test-skip 1)) + (test-assert "jami accounts provisioning, account present" + (marionette-eval + '(begin + (use-modules (gnu build dbus-service) + (gnu services herd) + (rnrs base)) + ;; Accounts take some time to appear after being added. (with-retries 20 1 - (not (zero? (status:exit-val - (system* "pgrep" "jamid"))))))) - marionette)) - - (test-assert "service can be restarted" - (marionette-eval - '(begin - (use-modules (gnu services herd) - (rnrs base)) - ;; Start and retrieve the current PID. - (define pid (match (start-service 'jami) - (#f #f) - (('service response-parts ...) - (match (assq-ref response-parts 'running) - ((pid) pid))))) - (assert (number? pid)) - - ;; Restart the service. - (restart-service 'jami) - - (define new-pid (match (start-service 'jami) - (#f #f) - (('service response-parts ...) - (match (assq-ref response-parts 'running) - ((pid) pid))))) - (assert (number? new-pid)) - - (not (eq? pid new-pid))) - marionette)) - - (unless #$provisioning? (test-skip 1)) - (test-assert "jami accounts provisioning, account present" - (marionette-eval - '(begin - (use-modules (gnu services herd) - (rnrs base)) - ;; Accounts take some time to appear after being added. - (with-retries 20 1 - (with-shepherd-action 'jami ('list-accounts) results + (with-shepherd-action 'jami ('list-accounts) results + (let ((account (assoc-ref (car results) #$username))) + (assert (string=? #$username + (assoc-ref account + "Account.username"))))))) + marionette)) + + (unless #$provisioning? (test-skip 1)) + (test-assert "jami accounts provisioning, allowed-contacts" + (marionette-eval + '(begin + (use-modules (gnu services herd) + (rnrs base) + (srfi srfi-1)) + + ;; Public mode is disabled. + (with-shepherd-action 'jami ('list-account-details) + results (let ((account (assoc-ref (car results) #$username))) - (assert (string=? #$username + (assert (string=? "false" (assoc-ref account - "Account.username"))))))) - marionette)) - - (unless #$provisioning? (test-skip 1)) - (test-assert "jami accounts provisioning, allowed-contacts" - (marionette-eval - '(begin - (use-modules (gnu services herd) - (rnrs base) - (srfi srfi-1)) - - ;; Public mode is disabled. - (with-shepherd-action 'jami ('list-account-details) - results - (let ((account (assoc-ref (car results) #$username))) - (assert (string=? "false" - (assoc-ref account - "DHT.PublicInCalls"))))) - - ;; Allowed contacts match those declared in the configuration. - (with-shepherd-action 'jami ('list-contacts) results - (let ((contacts (assoc-ref (car results) #$username))) - (assert (lset= string-ci=? contacts '#$%allowed-contacts))))) - marionette)) - - (unless #$provisioning? (test-skip 1)) - (test-assert "jami accounts provisioning, moderators" - (marionette-eval - '(begin - (use-modules (gnu services herd) - (rnrs base) - (srfi srfi-1)) - - ;; Moderators match those declared in the configuration. - (with-shepherd-action 'jami ('list-moderators) results - (let ((moderators (assoc-ref (car results) #$username))) - (assert (lset= string-ci=? moderators '#$%moderators)))) - - ;; Moderators can be added via the Shepherd action. - (with-shepherd-action 'jami - ('add-moderator "cccccccccccccccccccccccccccccccccccccccc" - #$username) results - (let ((moderators (car results))) - (assert (lset= string-ci=? moderators - (cons "cccccccccccccccccccccccccccccccccccccccc" - '#$%moderators)))))) - marionette)) - - (unless #$provisioning? (test-skip 1)) - (test-assert "jami service actions, ban/unban contacts" - (marionette-eval - '(begin - (use-modules (gnu services herd) - (rnrs base) - (srfi srfi-1)) - - ;; Globally ban a contact. - (with-shepherd-action 'jami - ('ban-contact "1dbcb0f5f37324228235564b79f2b9737e9a008f") _ - (with-shepherd-action 'jami ('list-banned-contacts) results - (every (match-lambda - ((username . banned-contacts) - (member "1dbcb0f5f37324228235564b79f2b9737e9a008f" - banned-contacts))) - (car results)))) - - ;; Ban a contact for a single account. - (with-shepherd-action 'jami - ('ban-contact "dddddddddddddddddddddddddddddddddddddddd" - #$username) _ - (with-shepherd-action 'jami ('list-banned-contacts) results - (every (match-lambda - ((username . banned-contacts) - (let ((found? (member "dddddddddddddddddddddddddddddddddddddddd" - banned-contacts))) - (if (string=? #$username username) - found? - (not found?))))) - (car results))))) - marionette)) - - (unless #$provisioning? (test-skip 1)) - (test-assert "jami service actions, enable/disable accounts" - (marionette-eval - '(begin - (use-modules (gnu services herd) - (rnrs base)) - - (with-shepherd-action 'jami - ('disable-account #$username) _ - (with-shepherd-action 'jami ('list-accounts) results - (let ((account (assoc-ref (car results) #$username))) - (assert (string= "false" - (assoc-ref account "Account.enable")))))) - - (with-shepherd-action 'jami - ('enable-account #$username) _ - (with-shepherd-action 'jami ('list-accounts) results - (let ((account (assoc-ref (car results) #$username))) - (assert (string= "true" - (assoc-ref account "Account.enable"))))))) - marionette)) - - (unless #$provisioning? (test-skip 1)) - (test-assert "jami account parameters" - (marionette-eval - '(begin - (use-modules (gnu services herd) - (rnrs base) - (srfi srfi-1)) - - (with-shepherd-action 'jami ('list-account-details) results - (let ((account-details (assoc-ref (car results) - #$username))) - (assert (lset<= - equal? - '(("Account.hostname" . - "bootstrap.me;fallback.another.host") - ("Account.peerDiscovery" . "false") - ("Account.rendezVous" . "true") - ("RingNS.uri" . "https://my.name.server")) - account-details))))) - marionette)) - - (test-end)))) + "DHT.PublicInCalls"))))) + + ;; Allowed contacts match those declared in the configuration. + (with-shepherd-action 'jami ('list-contacts) results + (let ((contacts (assoc-ref (car results) #$username))) + (assert (lset= string-ci=? contacts '#$%allowed-contacts))))) + marionette)) + + (unless #$provisioning? (test-skip 1)) + (test-assert "jami accounts provisioning, moderators" + (marionette-eval + '(begin + (use-modules (gnu services herd) + (rnrs base) + (srfi srfi-1)) + + ;; Moderators match those declared in the configuration. + (with-shepherd-action 'jami ('list-moderators) results + (let ((moderators (assoc-ref (car results) #$username))) + (assert (lset= string-ci=? moderators '#$%moderators)))) + + ;; Moderators can be added via the Shepherd action. + (with-shepherd-action 'jami + ('add-moderator "cccccccccccccccccccccccccccccccccccccccc" + #$username) results + (let ((moderators (car results))) + (assert (lset= string-ci=? moderators + (cons "cccccccccccccccccccccccccccccccccccccccc" + '#$%moderators)))))) + marionette)) + + (unless #$provisioning? (test-skip 1)) + (test-assert "jami service actions, ban/unban contacts" + (marionette-eval + '(begin + (use-modules (gnu services herd) + (rnrs base) + (srfi srfi-1)) + + ;; Globally ban a contact. + (with-shepherd-action 'jami + ('ban-contact "1dbcb0f5f37324228235564b79f2b9737e9a008f") _ + (with-shepherd-action 'jami ('list-banned-contacts) results + (every (match-lambda + ((username . banned-contacts) + (member "1dbcb0f5f37324228235564b79f2b9737e9a008f" + banned-contacts))) + (car results)))) + + ;; Ban a contact for a single account. + (with-shepherd-action 'jami + ('ban-contact "dddddddddddddddddddddddddddddddddddddddd" + #$username) _ + (with-shepherd-action 'jami ('list-banned-contacts) results + (every (match-lambda + ((username . banned-contacts) + (let ((found? (member "dddddddddddddddddddddddddddddddddddddddd" + banned-contacts))) + (if (string=? #$username username) + found? + (not found?))))) + (car results))))) + marionette)) + + (unless #$provisioning? (test-skip 1)) + (test-assert "jami service actions, enable/disable accounts" + (marionette-eval + '(begin + (use-modules (gnu services herd) + (rnrs base)) + + (with-shepherd-action 'jami + ('disable-account #$username) _ + (with-shepherd-action 'jami ('list-accounts) results + (let ((account (assoc-ref (car results) #$username))) + (assert (string= "false" + (assoc-ref account "Account.enable")))))) + + (with-shepherd-action 'jami + ('enable-account #$username) _ + (with-shepherd-action 'jami ('list-accounts) results + (let ((account (assoc-ref (car results) #$username))) + (assert (string= "true" + (assoc-ref account "Account.enable"))))))) + marionette)) + + (unless #$provisioning? (test-skip 1)) + (test-assert "jami account parameters" + (marionette-eval + '(begin + (use-modules (gnu services herd) + (rnrs base) + (srfi srfi-1)) + + (with-shepherd-action 'jami ('list-account-details) results + (let ((account-details (assoc-ref (car results) + #$username))) + (assert (lset<= + equal? + '(("Account.hostname" . + "bootstrap.me;fallback.another.host") + ("Account.peerDiscovery" . "false") + ("Account.rendezVous" . "true") + ("RingNS.uri" . "https://my.name.server")) + account-details))))) + marionette)) + + (test-end))))) (gexp->derivation (if provisioning? "jami-provisioning-test" @@ -357,7 +341,3 @@ accounts provisioning feature of the service." (name "jami-provisioning") (description "Provisioning test for the jami service.") (value (run-jami-test #:provisioning? #t)))) - -;; Local Variables: -;; eval: (put 'with-retries 'scheme-indent-function 2) -;; End: diff --git a/guix/build-system/rebar.scm b/guix/build-system/rebar.scm new file mode 100644 index 0000000000..6ca5abe4d6 --- /dev/null +++ b/guix/build-system/rebar.scm @@ -0,0 +1,158 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (guix build-system rebar) + #:use-module (guix store) + #:use-module (guix utils) + #:use-module (guix gexp) + #:use-module (guix packages) + #:use-module (guix monads) + #:use-module (guix search-paths) + #:use-module (guix build-system) + #:use-module (guix build-system gnu) + #:use-module (ice-9 match) + #:use-module (srfi srfi-26) + #:export (hexpm-uri + hexpm-package-url + %rebar-build-system-modules + rebar-build + rebar-build-system)) + +;;; +;;; Definitions for the hex.pm repository, +;;; + +;; URL and paths from +;; https://github.com/hexpm/specifications/blob/master/endpoints.md +(define %hexpm-repo-url + (make-parameter "https://repo.hex.pm")) + +(define hexpm-package-url + (string-append (%hexpm-repo-url) "/tarballs/")) + +(define (hexpm-uri name version) + "Return a URI string for the package hosted at hex.pm corresponding to NAME +and VERSION." + (string-append hexpm-package-url name "-" version ".tar")) + +;; +;; Standard build procedure for Erlang packages using Rebar. +;; + +(define %rebar-build-system-modules + ;; Build-side modules imported by default. + `((guix build rebar-build-system) + ,@%gnu-build-system-modules)) + +(define (default-rebar3) + "Return the default Rebar3 package." + ;; Lazily resolve the binding to avoid a circular dependency. + (let ((erlang-mod (resolve-interface '(gnu packages erlang)))) + (module-ref erlang-mod 'rebar3))) + +(define (default-erlang) + "Return the default Erlang package." + ;; Lazily resolve the binding to avoid a circular dependency. + (let ((erlang-mod (resolve-interface '(gnu packages erlang)))) + (module-ref erlang-mod 'erlang))) + +(define* (lower name + #:key source inputs native-inputs outputs system target + (rebar (default-rebar3)) + (erlang (default-erlang)) + #:allow-other-keys + #:rest arguments) + "Return a bag for NAME from the given arguments." + (define private-keywords + '(#:target #:rebar #:erlang #:inputs #:native-inputs)) + + (and (not target) ;XXX: no cross-compilation + (bag + (name name) + (system system) + (host-inputs `(,@(if source + `(("source" ,source)) + '()) + ,@inputs)) + (build-inputs `(("rebar" ,rebar) + ("erlang" ,erlang) ;; for escriptize + ,@native-inputs + ;; Keep the standard inputs of 'gnu-build-system'. + ,@(standard-packages))) + (outputs outputs) + (build rebar-build) + (arguments (strip-keyword-arguments private-keywords arguments))))) + +(define* (rebar-build name inputs + #:key + guile source + (rebar-flags ''("skip_deps=true" "-vv")) + (tests? #t) + (test-target "eunit") + ;; TODO: install-name ; default: based on guix package name + (install-profile "default") + (phases '(@ (guix build rebar-build-system) + %standard-phases)) + (outputs '("out")) + (search-paths '()) + (native-search-paths '()) + (system (%current-system)) + (imported-modules %rebar-build-system-modules) + (modules '((guix build rebar-build-system) + (guix build utils)))) + "Build SOURCE with INPUTS." + + (define builder + (with-imported-modules imported-modules + #~(begin + (use-modules #$@(sexp->gexp modules)) + + #$(with-build-variables inputs outputs + #~(rebar-build #:source #+source + #:system #$system + #:name #$name + #:rebar-flags #$rebar-flags + #:tests? #$tests? + #:test-target #$test-target + ;; TODO: #:install-name #$install-name + #:install-profile #$install-profile + #:phases #$(if (pair? phases) + (sexp->gexp phases) + phases) + #:outputs %outputs + #:search-paths '#$(sexp->gexp + (map search-path-specification->sexp + search-paths)) + #:inputs %build-inputs))))) + + (mlet %store-monad ((guile (package->derivation (or guile (default-guile)) + system #:graft? #f))) + ;; Note: Always pass #:graft? #f. Without it, ALLOWED-REFERENCES & + ;; co. would be interpreted as referring to grafted packages. + (gexp->derivation name builder + #:system system + #:target #f + #:graft? #f + #:guile-for-build guile))) + +(define rebar-build-system + (build-system + (name 'rebar) + (description "The standard Rebar build system") + (lower lower))) diff --git a/guix/build/emacs-utils.scm b/guix/build/emacs-utils.scm index 60a754b9e9..8ee547f2b3 100644 --- a/guix/build/emacs-utils.scm +++ b/guix/build/emacs-utils.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2014 Alex Kost <alezost@gmail.com> ;;; Copyright © 2018, 2020, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2019 Liliana Marie Prikler <liliana.prikler@gmail.com> +;;; Copyright © 2022 Fredrik Salomonsson <plattfot@posteo.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,12 +23,22 @@ (define-module (guix build emacs-utils) #:use-module (guix build utils) #:use-module (ice-9 format) + #:use-module (ice-9 popen) + #:use-module (ice-9 rdelim) + #:use-module (srfi srfi-34) + #:use-module (srfi srfi-35) #:export (%emacs emacs-batch-eval emacs-batch-edit-file emacs-batch-disable-compilation + emacs-batch-script + + emacs-batch-error? + emacs-batch-error-message + emacs-generate-autoloads emacs-byte-compile-directory + emacs-header-parse as-display emacs-substitute-sexps @@ -69,6 +80,26 @@ true, evaluate using dynamic scoping." (add-file-local-variable 'no-byte-compile t) (basic-save-buffer)))) +(define-condition-type &emacs-batch-error &error + emacs-batch-error? + (message emacs-batch-error-message)) + +(define (emacs-batch-script expr) + "Execute the Elisp code EXPR in Emacs batch mode and return output." + (let* ((error-pipe (pipe)) + (port (parameterize ((current-error-port (cdr error-pipe))) + (open-pipe* + OPEN_READ + (%emacs) "--quick" "--batch" + (string-append "--eval=" (expr->string expr))))) + (output (read-string port)) + (status (close-pipe port))) + (close-port (cdr error-pipe)) + (unless (zero? status) + (raise (condition (&emacs-batch-error + (message (read-string (car error-pipe))))))) + output)) + (define (emacs-generate-autoloads name directory) "Generate autoloads for Emacs package NAME placed in DIRECTORY." (let* ((file (string-append directory "/" name "-autoloads.el")) @@ -84,6 +115,14 @@ true, evaluate using dynamic scoping." (byte-recompile-directory (file-name-as-directory ,dir) 0 1)))) (emacs-batch-eval expr))) +(define (emacs-header-parse section file) + "Parse the header SECTION in FILE and return it as a string." + (emacs-batch-script + `(progn + (require 'lisp-mnt) + (find-file ,file) + (princ (lm-header ,section))))) + (define as-display ;syntactic keyword for 'emacs-substitute-sexps' '(as display)) diff --git a/guix/build/rebar-build-system.scm b/guix/build/rebar-build-system.scm new file mode 100644 index 0000000000..fb66422877 --- /dev/null +++ b/guix/build/rebar-build-system.scm @@ -0,0 +1,147 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2019 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> +;;; Copyright © 2020, 2022 Hartmut Goebel <h.goebel@crazy-compilers.com> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (guix build rebar-build-system) + #:use-module ((guix build gnu-build-system) #:prefix gnu:) + #:use-module ((guix build utils) #:hide (delete)) + #:use-module (ice-9 match) + #:use-module (ice-9 ftw) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) + #:export (rebar-build + %standard-phases)) + +;; +;; Builder-side code of the standard build procedure for Erlang packages using +;; rebar3. +;; +;; TODO: Think about whether bindir ("ebin"), libdir ("priv") and includedir +;; "(include") need to be configurable + +(define %erlang-libdir "/lib/erlang/lib") + +(define* (erlang-depends #:key inputs #:allow-other-keys) + (define input-directories + (match inputs + (((_ . dir) ...) + dir))) + (mkdir-p "_checkouts") + + (for-each + (lambda (input-dir) + (let ((elibdir (string-append input-dir %erlang-libdir))) + (when (directory-exists? elibdir) + (for-each + (lambda (dirname) + (let ((dest (string-append elibdir "/" dirname)) + (link (string-append "_checkouts/" dirname))) + (when (not (file-exists? link)) + ;; RETHINK: Maybe better copy and make writable to avoid some + ;; error messages e.g. when using with rebar3-git-vsn. + (symlink dest link)))) + (list-directories elibdir))))) + input-directories)) + +(define* (unpack #:key source #:allow-other-keys) + "Unpack SOURCE in the working directory, and change directory within the +source. When SOURCE is a directory, copy it in a sub-directory of the current +working directory." + (let ((gnu-unpack (assoc-ref gnu:%standard-phases 'unpack))) + (gnu-unpack #:source source) + ;; Packages from hex.pm typically have a contents.tar.gz containing the + ;; actual source. If this tar file exists, extract it. + (when (file-exists? "contents.tar.gz") + (invoke "tar" "xvf" "contents.tar.gz")))) + +(define* (build #:key (rebar-flags '()) #:allow-other-keys) + (apply invoke `("rebar3" "compile" ,@rebar-flags))) + +(define* (check #:key target (rebar-flags '()) (tests? (not target)) + (test-target "eunit") + #:allow-other-keys) + (if tests? + (apply invoke `("rebar3" ,test-target ,@rebar-flags)) + (format #t "test suite not run~%"))) + +(define (erlang-package? name) + "Check if NAME correspond to the name of an Erlang package." + (string-prefix? "erlang-" name)) + +(define (package-name-version->erlang-name name+ver) + "Convert the Guix package NAME-VER to the corresponding Erlang name-version +format. Essentially drop the prefix used in Guix and replace dashes by +underscores." + (let* ((name- (package-name->name+version name+ver))) + (string-join + (string-split + (if (erlang-package? name-) ; checks for "erlang-" prefix + (string-drop name- (string-length "erlang-")) + name-) + #\-) + "_"))) + +(define (list-directories directory) + "Return file names of the sub-directory of DIRECTORY." + (scandir directory + (lambda (file) + (and (not (member file '("." ".."))) + (file-is-directory? (string-append directory "/" file)))))) + +(define* (install #:key name outputs + (install-name (package-name-version->erlang-name name)) + (install-profile "default") ; build profile outputs to install + #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (pkg-dir (string-append out %erlang-libdir "/" install-name))) + (let ((bin-dir (string-append "_build/" install-profile "/bin")) + (lib-dir (string-append "_build/" install-profile "/lib"))) + ;; install _build/PROFILE/bin + (when (file-exists? bin-dir) + (copy-recursively bin-dir out #:follow-symlinks? #t)) + ;; install _build/PROFILE/lib/*/{ebin,include,priv} + (for-each + (lambda (*) + (for-each + (lambda (dirname) + (let ((src-dir (string-append lib-dir "/" * "/" dirname)) + (dst-dir (string-append pkg-dir "/" dirname))) + (when (file-exists? src-dir) + (copy-recursively src-dir dst-dir #:follow-symlinks? #t)) + (false-if-exception + (delete-file (string-append dst-dir "/.gitignore"))))) + '("ebin" "include" "priv"))) + (list-directories lib-dir)) + (false-if-exception + (delete-file (string-append pkg-dir "/priv/Run-eunit-loop.expect")))))) + +(define %standard-phases + (modify-phases gnu:%standard-phases + (replace 'unpack unpack) + (delete 'bootstrap) + (delete 'configure) + (add-before 'build 'erlang-depends erlang-depends) + (replace 'build build) + (replace 'check check) + (replace 'install install))) + +(define* (rebar-build #:key inputs (phases %standard-phases) + #:allow-other-keys #:rest args) + "Build the given Erlang package, applying all of PHASES in order." + (apply gnu:gnu-build #:inputs inputs #:phases phases args)) diff --git a/guix/build/renpy-build-system.scm b/guix/build/renpy-build-system.scm index e4a88456be..7c15d52f19 100644 --- a/guix/build/renpy-build-system.scm +++ b/guix/build/renpy-build-system.scm @@ -37,10 +37,9 @@ game ;; should be "compile", but renpy wants to compile itself really ;; badly if we do - "quit") - #t) + "quit")) -(define* (install #:key outputs game (output "out") #:allow-other-keys) +(define* (install #:key inputs outputs game (output "out") #:allow-other-keys) (let* ((out (assoc-ref outputs output)) (json-dump (call-with-input-file (string-append game "/renpy-build.json") @@ -58,13 +57,12 @@ (call-with-output-file launcher (lambda (port) (format port "#!~a~%~a ~s \"$@\"" - (which "bash") - (which "renpy") + (search-input-file inputs "/bin/sh") + (search-input-file inputs "/bin/renpy") data))) - (chmod launcher #o755))) - #t) + (chmod launcher #o755)))) -(define* (install-desktop-file #:key outputs game (output "out") +(define* (install-desktop-file #:key inputs outputs game (output "out") #:allow-other-keys) (let* ((out (assoc-ref outputs output)) (json-dump (call-with-input-file (string-append game @@ -78,10 +76,9 @@ #:name (assoc-ref json-dump "name") #:generic-name (assoc-ref build "display_name") #:exec (format #f "~a ~s" - (which "renpy") + (search-input-file inputs "/bin/renpy") (string-append out "/share/renpy/" directory-name)) - #:categories '("Game" "Visual Novel"))) - #t) + #:categories '("Game" "Visual Novel")))) (define %standard-phases (modify-phases gnu:%standard-phases diff --git a/guix/channels.scm b/guix/channels.scm index 5f47834c10..ce1a60436f 100644 --- a/guix/channels.scm +++ b/guix/channels.scm @@ -907,7 +907,14 @@ be used as a profile hook." (format (current-error-port) "Generating package cache for '~a'...~%" #$profile) - (generate-package-cache #$output)) + ;; This script runs through (primitive-load), which by default + ;; doesn't print backtraces when it encounters an exception, + ;; so manually do it. Use with-throw-handler because it is + ;; supported by all Guile versions. + (with-throw-handler #t + (lambda () (generate-package-cache #$output)) + (lambda (key . args) + (backtrace)))) (mkdir #$output)))) (gexp->derivation-in-inferior "guix-package-cache" build diff --git a/guix/extracting-download.scm b/guix/extracting-download.scm deleted file mode 100644 index 4b7dcc7e83..0000000000 --- a/guix/extracting-download.scm +++ /dev/null @@ -1,179 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2017 Mathieu Lirzin <mthl@gnu.org> -;;; Copyright © 2017 Christopher Baines <mail@cbaines.net> -;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> -;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com> -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. - -(define-module (guix extracting-download) - #:use-module (ice-9 match) - #:use-module (ice-9 popen) - #:use-module ((guix build download) #:prefix build:) - #:use-module ((guix build utils) #:hide (delete)) - #:use-module (guix gexp) - #:use-module (guix modules) - #:use-module (guix monads) - #:use-module (guix packages) ;; for %current-system - #:use-module (guix store) - #:use-module (guix utils) - #:use-module (srfi srfi-26) - #:export (http-fetch/extract - download-to-store/extract)) - -;;; -;;; Produce fixed-output derivations with data extracted from n archive -;;; fetched over HTTP or FTP. -;;; -;;; This is meant to be used for package repositories where the actual source -;;; archive is packed into another archive, eventually carrying meta-data. -;;; Using this derivation saves both storing the outer archive and extracting -;;; the actual one at build time. The hash is calculated on the actual -;;; archive to ease validating the stored file. -;;; - -(define* (http-fetch/extract url filename-to-extract hash-algo hash - #:optional name - #:key (system (%current-system)) (guile (default-guile))) - "Return a fixed-output derivation that fetches an archive at URL, and -extracts FILE_TO_EXTRACT from the archive. The FILE_TO_EXTRACT is expected to -have hash HASH of type HASH-ALGO (a symbol). By default, the file name is the -base name of URL; optionally, NAME can specify a different file name." - (define file-name - (match url - ((head _ ...) - (basename head)) - (_ - (basename url)))) - - (define guile-zlib - (module-ref (resolve-interface '(gnu packages guile)) 'guile-zlib)) - - (define guile-json - (module-ref (resolve-interface '(gnu packages guile)) 'guile-json-4)) - - (define gnutls - (module-ref (resolve-interface '(gnu packages tls)) 'gnutls)) - - (define inputs - `(("tar" ,(module-ref (resolve-interface '(gnu packages base)) - 'tar)))) - - (define config.scm - (scheme-file "config.scm" - #~(begin - (define-module (guix config) - #:export (%system)) - - (define %system - #$(%current-system))))) - - (define modules - (cons `((guix config) => ,config.scm) - (delete '(guix config) - (source-module-closure '((guix build download) - (guix build utils) - (guix utils) - (web uri)))))) - - (define build - (with-imported-modules modules - (with-extensions (list guile-json gnutls ;for (guix swh) - guile-zlib) - #~(begin - (use-modules (guix build download) - (guix build utils) - (guix utils) - (web uri) - (ice-9 match) - (ice-9 popen)) - ;; The code below expects tar to be in $PATH. - (set-path-environment-variable "PATH" '("bin") - (match '#+inputs - (((names dirs outputs ...) ...) - dirs))) - - (setvbuf (current-output-port) 'line) - (setvbuf (current-error-port) 'line) - - (call-with-temporary-directory - (lambda (directory) - ;; TODO: Support different archive types, based on content-type - ;; or archive name extention. - (let* ((file-to-extract (getenv "extract filename")) - (port (http-fetch (string->uri (getenv "download url")) - #:verify-certificate? #f)) - (tar (open-pipe* OPEN_WRITE "tar" "-C" directory - "-xf" "-" file-to-extract))) - (dump-port port tar) - (close-port port) - (let ((status (close-pipe tar))) - (unless (zero? status) - (error "tar extraction failure" status))) - (copy-file (string-append directory "/" - (getenv "extract filename")) - #$output)))))))) - - (mlet %store-monad ((guile (package->derivation guile system))) - (gexp->derivation (or name file-name) build - - ;; Use environment variables and a fixed script name so - ;; there's only one script in store for all the - ;; downloads. - #:script-name "extract-download" - #:env-vars - `(("download url" . ,url) - ("extract filename" . ,filename-to-extract)) - #:leaked-env-vars '("http_proxy" "https_proxy" - "LC_ALL" "LC_MESSAGES" "LANG" - "COLUMNS") - #:system system - #:local-build? #t ; don't offload download - #:hash-algo hash-algo - #:hash hash - #:guile-for-build guile))) - - -(define* (download-to-store/extract store url filename-to-extract - #:optional (name (basename url)) - #:key (log (current-error-port)) - (verify-certificate? #t)) - "Download an archive from URL, and extracts FILE_TO_EXTRACT from the archive -to STORE, either under NAME or URL's basename if omitted. Write progress -reports to LOG. VERIFY-CERTIFICATE? determines whether or not to validate -HTTPS server certificates." - (call-with-temporary-output-file - (lambda (temp port) - (let ((result - (parameterize ((current-output-port log)) - (build:url-fetch url temp - ;;#:mirrors %mirrors - #:verify-certificate? - verify-certificate?)))) - (close port) - (and result - (call-with-temporary-output-file - (lambda (contents port) - (let ((tar (open-pipe* OPEN_READ - "tar" ;"--auto-compress" - "-xf" temp "--to-stdout" filename-to-extract))) - (dump-port tar port) - (close-port port) - (let ((status (close-pipe tar))) - (unless (zero? status) - (error "tar extraction failure" status))) - (add-to-store store name #f "sha256" contents))))))))) diff --git a/guix/import/hexpm.scm b/guix/import/hexpm.scm new file mode 100644 index 0000000000..2a7a9f3d82 --- /dev/null +++ b/guix/import/hexpm.scm @@ -0,0 +1,347 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com> +;;; Copyright © 2016 David Craven <david@craven.ch> +;;; Copyright © 2017, 2019-2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2019 Martin Becze <mjbecze@riseup.net> +;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2020-2022 Hartmut Goebel <h.goebel@crazy-compilers.com> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (guix import hexpm) + #:use-module (guix base32) + #:use-module ((guix download) #:prefix download:) + #:use-module (gcrypt hash) + #:use-module (guix http-client) + #:use-module (json) + #:use-module (guix import utils) + #:use-module ((guix import json) #:select (json-fetch)) + #:use-module ((guix build utils) + #:select ((package-name->name+version + . hyphen-package-name->name+version) + dump-port)) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix monads) + #:use-module (guix packages) + #:use-module (guix upstream) + #:use-module (guix utils) + #:use-module (ice-9 match) + #:use-module (ice-9 regex) + #:use-module (ice-9 popen) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-2) + #:use-module (srfi srfi-26) + #:use-module (guix build-system rebar) + #:export (hexpm->guix-package + guix-package->hexpm-name + strings->licenses ;; why used here? + hexpm-recursive-import + %hexpm-updater)) + +;;; +;;; Interface to https://hex.pm/api, version 2. +;;; REST-API end-points: +;;; https://github.com/hexpm/specifications/blob/master/apiary.apib +;;; Repository end-points: +;;; https://github.com/hexpm/specifications/blob/master/endpoints.md +;;; + +(define %hexpm-api-url + (make-parameter "https://hex.pm/api")) + +(define (package-url name) + (string-append (%hexpm-api-url) "/packages/" name)) + +;; +;; Hexpm Package. /packages/${name} +;; https://github.com/hexpm/specifications/blob/master/apiary.apib#Package +;; +;; Each package can have several "releases", each of which has its own set of +;; requirements, build-tool, etc. - see <hexpm-release> below. +(define-json-mapping <hexpm-pkgdef> make-hexpm-pkgdef hexpm-pkgdef? + json->hexpm + (name hexpm-name) ; string + (html-url hexpm-html-url "html_url") ; string + (docs-html-url hexpm-docs-html-url "docs_html_url") ; string | 'null + (meta hexpm-meta "meta" json->hexpm-meta) + (versions hexpm-versions "releases" ; list of <hexpm-version> + (lambda (vector) + (map json->hexpm-version + (vector->list vector)))) + ;; "latest_version" and "latest_stable_version" are not named in the + ;; specification, butt seen in practice. + (latest-version hexpm-latest-version "latest_version") ; string + (latest-stable hexpm-latest-stable "latest_stable_version")) ; string + +;; Hexpm package metadata. +(define-json-mapping <hexpm-meta> make-hexpm-meta hexpm-meta? + json->hexpm-meta + (description hexpm-meta-description) ;string + (licenses hexpm-meta-licenses "licenses" ;list of strings + (lambda (vector) + (or (and vector (vector->list vector)) + #f)))) + +;; Hexpm package versions. +(define-json-mapping <hexpm-version> make-hexpm-version hexpm-version? + json->hexpm-version + (number hexpm-version-number "version") ;string + (url hexpm-version-url)) ;string + + +(define (lookup-hexpm name) + "Look up NAME on hex.pm and return the corresopnding <hexpm> record +or #f if it was not found." + (and=> (json-fetch (package-url name)) + json->hexpm)) + +;; +;; Hexpm release. /packages/${name}/releases/${version} +;; https://github.com/hexpm/specifications/blob/master/apiary.apib#Release +;; +(define-json-mapping <hexpm-release> make-hexpm-release hexpm-release? + json->hexpm-release + (version hexpm-release-version) ; string + (url hexpm-release-url) ; string + (meta hexpm-release-meta "meta" json->hexpm-release-meta) + ;; Specification names the next fields "dependencies", but in practice it is + ;; "requirements". + (dependencies hexpm-requirements "requirements")) ; list of <hexpm-dependency> + +;; Hexpm release meta. +;; https://github.com/hexpm/specifications/blob/main/package_metadata.md +(define-json-mapping <hexpm-release-meta> + make-hexpm-release-meta hexpm-release-meta? + json->hexpm-release-meta + (app hexpm-release-meta-app) ; string + (elixir hexpm-release-meta-elixir) ; string + (build-tools hexpm-release-meta-build-tools "build_tools" ; list of strings + (lambda (vector) + (or (and vector (vector->list vector)) + (list))))) + +;; Hexpm dependency. Each requirement has information about the required +;; version, such as "~> 2.1.2" or ">= 2.1.2 and < 2.2.0", see +;; <https://hexdocs.pm/elixir/Version.html#module-requirements>, and whether +;; the dependency is optional. +(define-json-mapping <hexpm-dependency> make-hexpm-dependency + hexpm-dependency? + json->hexpm-dependency + (name hexpm-dependency-name "app") ; string + (requirement hexpm-dependency-requirement) ; string + (optional hexpm-dependency-optional)) ; bool + +(define (hexpm-release-dependencies release) + "Return the list of dependency names of RELEASE, a <hexpm-release>." + (let ((reqs (or (hexpm-requirements release) '#()))) + (map first reqs))) ;; TODO: also return required version + + +(define (lookup-hexpm-release version*) + "Look up RELEASE on hexpm-version-url and return the corresopnding +<hexpm-release> record or #f if it was not found." + (and=> (json-fetch (hexpm-version-url version*)) + json->hexpm-release)) + + +;;; +;;; Converting hex.pm packages to Guix packages. +;;; + +(define (maybe-inputs package-inputs input-type) + "Given a list of PACKAGE-INPUTS, tries to generate the 'inputs' field of a +package definition. INPUT-TYPE, a symbol, is used to populate the name of +the input field." + (match package-inputs + (() + '()) + ((package-inputs ...) + `((,input-type (list ,@package-inputs)))))) + +(define (dependencies->package-names names) + "Given a list of hexpm package NAMES, returns a list of guix package names +as symbols." + ;; TODO: Base name on language of dependency. + ;; The language used for implementing the dependency is not know without + ;; recursing the dependencies. So for now assume more packages are based on + ;; Erlang and prefix all dependencies with "erlang-" (the default). + (map string->symbol + (map hexpm-name->package-name + (sort names string-ci<?)))) + +(define* (make-hexpm-sexp #:key name version tarball-url + home-page synopsis description license + language build-system dependencies + #:allow-other-keys) + "Return the `package' s-expression for a hexpm package with the given NAME, +VERSION, TARBALL-URL, HOME-PAGE, SYNOPSIS, DESCRIPTION, and LICENSE. The +created package's name will stem from LANGUAGE. BUILD-SYSTEM defined the +build-system, and DEPENDENCIES the inputs for the package." + (call-with-temporary-output-file + (lambda (temp port) + (and (url-fetch tarball-url temp) + (values + `(package + (name ,(hexpm-name->package-name name language)) + (version ,version) + (source (origin + (method url-fetch) + (uri (hexpm-uri ,name version)) + (sha256 (base32 ,(guix-hash-url temp))))) + (build-system ,build-system) + ,@(maybe-inputs (dependencies->package-names dependencies) 'inputs) + (synopsis ,synopsis) + (description ,(beautify-description description)) + (home-page ,(match home-page + (() "") + (_ home-page))) + (license ,(match license + (() #f) + ((license) license) + (_ `(list ,@license)))))))))) + +(define (strings->licenses strings) + "Convert the list of STRINGS into a list of license objects." + (filter-map (lambda (license) + (and (not (string-null? license)) + (not (any (lambda (elem) (string=? elem license)) + '("AND" "OR" "WITH"))) + (or (spdx-string->license license) + license))) + strings)) + +(define (hexpm-latest-release package) + "Return the version string for the latest stable release of PACKAGE." + ;; Use latest-stable if specified (see comment in hexpm-pkgdef above), + ;; otherwise compare the lists of release versions. + (let ((latest-stable (hexpm-latest-stable package))) + (if (not (unspecified? latest-stable)) + latest-stable + (let ((versions (map hexpm-version-number (hexpm-versions package)))) + (fold (lambda (a b) + (if (version>? a b) a b)) (car versions) versions))))) + +(define* (hexpm->guix-package package-name #:key repo version) + "Fetch the metadata for PACKAGE-NAME from hexpms.io, and return the +`package' s-expression corresponding to that package, or #f on failure. +When VERSION is specified, attempt to fetch that version; otherwise fetch the +latest version of PACKAGE-NAME." + + (define package + (lookup-hexpm package-name)) + + (define version-number + (and package + (or version + (hexpm-latest-release package)))) + + (define version* + (and package + (find (lambda (version) + (string=? (hexpm-version-number version) + version-number)) + (hexpm-versions package)))) + + (define release + (and package version* + (lookup-hexpm-release version*))) + + (define release-meta + (and package version* + (hexpm-release-meta release))) + + (define build-system + (and package version* + (let ((build-tools (hexpm-release-meta-build-tools release-meta))) + (cond + ((member "rebar3" build-tools) 'rebar-build-system) + ((member "mix" build-tools) 'mix-build-system) + ((member "make" build-tools) 'gnu-build-system) + (else #f))))) + + (define language + (and package version* + (let ((elixir (hexpm-release-meta-elixir release-meta))) + (cond + ((and (string? elixir) (not (string-null? elixir))) "elixir") + (else "erlang"))))) + + (and package version* + (let ((dependencies (hexpm-release-dependencies release)) + (pkg-meta (hexpm-meta package)) + (docs-html-url (hexpm-docs-html-url package))) + (values + (make-hexpm-sexp + #:language language + #:build-system build-system + #:name package-name + #:version version-number + #:dependencies dependencies + #:home-page (or (and (not (eq? docs-html-url 'null)) + docs-html-url) + ;; TODO: Homepage? + (hexpm-html-url package)) + #:synopsis (hexpm-meta-description pkg-meta) + #:description (hexpm-meta-description pkg-meta) + #:license (or (and=> (hexpm-meta-licenses pkg-meta) + strings->licenses)) + #:tarball-url (hexpm-uri package-name version-number)) + dependencies)))) + +(define* (hexpm-recursive-import pkg-name #:optional version) + (recursive-import pkg-name + #:version version + #:repo->guix-package hexpm->guix-package + #:guix-name hexpm-name->package-name)) + +(define (guix-package->hexpm-name package) + "Return the hex.pm name of PACKAGE." + (define (url->hexpm-name url) + (hyphen-package-name->name+version + (basename (file-sans-extension url)))) + + (match (and=> (package-source package) origin-uri) + ((? string? url) + (url->hexpm-name url)) + ((lst ...) + (any url->hexpm-name lst)) + (#f #f))) + +(define* (hexpm-name->package-name name #:optional (language "erlang")) + (string-append language "-" (string-join (string-split name #\_) "-"))) + + +;;; +;;; Updater +;;; + +(define (latest-release package) + "Return an <upstream-source> for the latest release of PACKAGE." + (let* ((hexpm-name (guix-package->hexpm-name package)) + (hexpm (lookup-hexpm hexpm-name)) + (version (hexpm-latest-release hexpm)) + (url (hexpm-uri hexpm-name version))) + (upstream-source + (package (package-name package)) + (version version) + (urls (list url))))) + +(define %hexpm-updater + (upstream-updater + (name 'hexpm) + (description "Updater for hex.pm packages") + (pred (url-prefix-predicate hexpm-package-url)) + (latest latest-release))) diff --git a/guix/least-authority.scm b/guix/least-authority.scm index d871816fca..bfd7275e7c 100644 --- a/guix/least-authority.scm +++ b/guix/least-authority.scm @@ -51,7 +51,7 @@ "Return a wrapper of PROGRAM that executes it with the least authority. PROGRAM is executed in separate namespaces according to NAMESPACES, a list of -symbols; it turns with GUEST-UID and GUEST-GID. MAPPINGS is a list of +symbols; it runs with GUEST-UID and GUEST-GID. MAPPINGS is a list of <file-system-mapping> records indicating directories mirrored inside the execution environment of PROGRAM. DIRECTORY is the working directory of the wrapped process. Each environment listed in PRESERVED-ENVIRONMENT-VARIABLES diff --git a/guix/packages.scm b/guix/packages.scm index 7425389618..94e464cd01 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2014, 2015, 2017, 2018, 2019 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2016 Alex Kost <alezost@gmail.com> -;;; Copyright © 2017, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2017, 2019, 2020, 2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com> @@ -149,6 +149,8 @@ transitive-input-references + %32bit-supported-systems + %64bit-supported-systems %supported-systems %hurd-systems %cuirass-supported-systems @@ -400,11 +402,19 @@ from forcing GEXP-PROMISE." #:guile-for-build guile))) +(define %32bit-supported-systems + ;; This is the list of 32-bit system types that are supported. + '("i686-linux" "armhf-linux" "i586-gnu" "powerpc-linux")) + +(define %64bit-supported-systems + ;; This is the list of 64-bit system types that are supported. + '("x86_64-linux" "mips64el-linux" "aarch64-linux" "powerpc64le-linux" + "riscv64-linux")) + (define %supported-systems ;; This is the list of system types that are supported. By default, we ;; expect all packages to build successfully here. - '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux" "mips64el-linux" "i586-gnu" - "powerpc64le-linux" "powerpc-linux" "riscv64-linux")) + (append %64bit-supported-systems %32bit-supported-systems)) (define %hurd-systems ;; The GNU/Hurd systems for which support is being developed. diff --git a/guix/platform.scm b/guix/platform.scm index 361241cb2e..19d4527e29 100644 --- a/guix/platform.scm +++ b/guix/platform.scm @@ -121,7 +121,7 @@ otherwise." (define (platform-target->system target) "Return the system matching the given TARGET if it exists or false otherwise." - (let ((platform (lookup-platform-by-target system))) + (let ((platform (lookup-platform-by-target target))) (and=> platform platform-system))) diff --git a/guix/scripts/challenge.scm b/guix/scripts/challenge.scm index c29d5105ae..5c0f837d13 100644 --- a/guix/scripts/challenge.scm +++ b/guix/scripts/challenge.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015, 2016, 2017, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2015-2017, 2019-2022 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,6 +18,7 @@ (define-module (guix scripts challenge) #:use-module (guix ui) + #:use-module (guix colors) #:use-module (guix scripts) #:use-module (guix store) #:use-module (guix utils) @@ -32,6 +33,7 @@ #:use-module (rnrs bytevectors) #:autoload (guix http-client) (http-fetch) #:use-module ((guix build syscalls) #:select (terminal-columns)) + #:autoload (guix build utils) (make-file-writable) #:use-module (gcrypt hash) #:use-module (srfi srfi-1) #:use-module (srfi srfi-9) @@ -310,6 +312,23 @@ specified in COMPARISON-REPORT." (length files))) (format #t "~{ ~a~%~}" files)))) +(define (make-directory-writable directory) + "Recurse into DIRECTORY and make each entry writable, similar to +'chmod -R +w DIRECTORY'." + (file-system-fold (const #t) + (lambda (file stat _) ;leaf + (unless (eq? 'symlink (stat:type stat)) + (make-file-writable file))) + (lambda (directory stat _) ;down + (make-file-writable directory)) + (const #t) ;up + (const #f) ;skip + (lambda (file stat errno _) ;error + (leave (G_ "failed to delete '~a': ~a~%") + file (strerror errno))) + #t + directory)) + (define (call-with-mismatches comparison-report proc) "Call PROC with two directories containing the mismatching store items." (define local-hash @@ -318,6 +337,13 @@ specified in COMPARISON-REPORT." (define narinfos (comparison-report-narinfos comparison-report)) + (define (restore-file* port directory) + ;; Since 'restore-file' sets "canonical" file permissions (read-only), + ;; make an extra traversal to make DIRECTORY writable so it can be deleted + ;; when the dynamic extent of 'call-with-temporary-directory' is left. + (restore-file port directory) + (make-directory-writable directory)) + (call-with-temporary-directory (lambda (directory1) (call-with-temporary-directory @@ -338,10 +364,10 @@ specified in COMPARISON-REPORT." narinfos))) (rmdir directory1) - (call-with-nar narinfo1 (cut restore-file <> directory1)) + (call-with-nar narinfo1 (cut restore-file* <> directory1)) (when narinfo2 (rmdir directory2) - (call-with-nar narinfo2 (cut restore-file <> directory2))) + (call-with-nar narinfo2 (cut restore-file* <> directory2))) (proc directory1 (if local-hash (comparison-report-item comparison-report) @@ -363,6 +389,11 @@ COMPARISON-REPORT." (append command (list directory1 directory2)))))) +(define good-news + (coloring-procedure (color BOLD GREEN))) +(define bad-news + (coloring-procedure (color BOLD RED))) + (define* (summarize-report comparison-report #:key (report-differences (const #f)) @@ -385,7 +416,7 @@ with COMPARISON-REPORT." (match comparison-report (($ <comparison-report> item 'mismatch local (narinfos ...)) - (report (G_ "~a contents differ:~%") item) + (report (bad-news (G_ "~a contents differ:~%")) item) (report-hashes item local narinfos) (report-differences comparison-report)) (($ <comparison-report> item 'inconclusive #f narinfos) @@ -394,7 +425,7 @@ with COMPARISON-REPORT." (warning (G_ "could not challenge '~a': no substitutes~%") item)) (($ <comparison-report> item 'match local (narinfos ...)) (when verbose? - (report (G_ "~a contents match:~%") item) + (report (good-news (G_ "~a contents match:~%")) item) (report-hashes item local narinfos))))) (define (summarize-report-list reports) @@ -403,10 +434,11 @@ with COMPARISON-REPORT." (inconclusive (count comparison-report-inconclusive? reports)) (matches (count comparison-report-match? reports)) (discrepancies (count comparison-report-mismatch? reports))) - (report (G_ "~h store items were analyzed:~%") total) - (report (G_ " - ~h (~,1f%) were identical~%") + (report (highlight (G_ "~h store items were analyzed:~%")) total) + (report (highlight (G_ " - ~h (~,1f%) were identical~%")) matches (* 100. (/ matches total))) - (report (G_ " - ~h (~,1f%) differed~%") + (report ((if (zero? discrepancies) good-news bad-news) + (G_ " - ~h (~,1f%) differed~%")) discrepancies (* 100. (/ discrepancies total))) (report (G_ " - ~h (~,1f%) were inconclusive~%") inconclusive (* 100. (/ inconclusive total))))) diff --git a/guix/scripts/import.scm b/guix/scripts/import.scm index 62aa7bdbc5..71ab4b4fed 100644 --- a/guix/scripts/import.scm +++ b/guix/scripts/import.scm @@ -50,7 +50,7 @@ (define importers '("gnu" "pypi" "cpan" "hackage" "stackage" "egg" "elpa" "gem" "go" "cran" "crate" "texlive" "json" "opam" - "minetest" "elm")) + "minetest" "elm" "hexpm")) (define (resolve-importer name) (let ((module (resolve-interface diff --git a/guix/scripts/import/hexpm.scm b/guix/scripts/import/hexpm.scm new file mode 100644 index 0000000000..eb9a1b0af5 --- /dev/null +++ b/guix/scripts/import/hexpm.scm @@ -0,0 +1,105 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2020, 2022 Hartmut Goebel <h.goebel@crazy-compilers.com> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (guix scripts import hexpm) + #:use-module (guix ui) + #:use-module (guix utils) + #:use-module (guix scripts) + #:use-module (guix import hexpm) + #:use-module (guix scripts import) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-37) + #:use-module (srfi srfi-71) + #:use-module (ice-9 match) + #:use-module (ice-9 format) + #:export (guix-import-hexpm)) + + +;;; +;;; Command-line options. +;;; + +(define %default-options + '()) + +(define (show-help) + (display (G_ "Usage: guix import hexpm PACKAGE-NAME +Import and convert the hex.pm package for PACKAGE-NAME.\n")) + (display (G_ " + -h, --help display this help and exit")) + (display (G_ " + -V, --version display version information and exit")) + (newline) + (display (G_ " + -r, --recursive import packages recursively")) + (newline) + (show-bug-report-information)) + +(define %options + ;; Specification of the command-line options. + (cons* (option '(#\h "help") #f #f + (lambda args + (show-help) + (exit 0))) + (option '(#\V "version") #f #f + (lambda args + (show-version-and-exit "guix import hexpm"))) + (option '(#\r "recursive") #f #f + (lambda (opt name arg result) + (alist-cons 'recursive #t result))) + %standard-import-options)) + + +;;; +;;; Entry point. +;;; + +(define (guix-import-hexpm . args) + (define (parse-options) + ;; Return the alist of option values. + (parse-command-line args %options (list %default-options) + #:build-options? #f)) + + (let* ((opts (parse-options)) + (args (filter-map (match-lambda + (('argument . value) + value) + (_ #f)) + (reverse opts)))) + (match args + ((spec) + (with-error-handling + (let ((name version (package-name->name+version spec))) + (if (assoc-ref opts 'recursive) + ;; Recursive import + (map (match-lambda + ((and ('package ('name name) . rest) pkg) + `(define-public ,(string->symbol name) + ,pkg)) + (_ #f)) + (hexpm-recursive-import name version)) + ;; Single import + (let ((sexp (hexpm->guix-package name #:version version))) + (unless sexp + (leave (G_ "failed to download meta-data for package '~a'~%") + spec)) + sexp))))) + (() + (leave (G_ "too few arguments~%"))) + ((many ...) + (leave (G_ "too many arguments~%")))))) diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index f01764637b..b0cc459d63 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -20,6 +20,7 @@ (define-module (guix scripts pull) #:use-module ((guix ui) #:hide (display-profile-content)) + #:use-module (guix diagnostics) #:use-module (guix colors) #:use-module (guix utils) #:use-module ((guix status) #:select (with-status-verbosity)) @@ -786,6 +787,35 @@ Use '~/.config/guix/channels.scm' instead.")) channels)) channels))) +(define (validate-cache-directory-ownership) + "Bail out if the cache directory is not owned by the current user." + (let ((stats dir + (let loop ((dir (cache-directory))) + (let ((stats (stat dir #f))) + (if stats + (values stats dir) + (loop (dirname dir))))))) + (let ((dir:uid (stat:uid stats)) + (our:uid (getuid))) + (unless (= dir:uid our:uid) + (let* ((user (lambda (uid) ;handle the unthinkable invalid UID + (or (false-if-exception (passwd:name + (getpwuid uid))) + uid))) + (our:user (user our:uid)) + (dir:user (user dir:uid))) + (raise + (make-compound-condition + (formatted-message + (G_ "directory '~a' is not owned by user ~a") + dir our:user) + (condition + (&fix-hint + (hint + (format #f (G_ "You should run this command as ~a; use \ +@command{sudo -i} or equivalent if you really want to pull as ~a.") + dir:user our:user))))))))))) + (define-command (guix-pull . args) (synopsis "pull the latest revision of Guix") @@ -810,6 +840,10 @@ Use '~/.config/guix/channels.scm' instead.")) ((assoc-ref opts 'generation) (process-generation-change opts profile)) (else + ;; Bail out early when users accidentally run, e.g., ’sudo guix pull’. + ;; If CACHE-DIRECTORY doesn't yet exist, test where it would end up. + (validate-cache-directory-ownership) + (with-store store (with-status-verbosity (assoc-ref opts 'verbosity) (parameterize ((%current-system (assoc-ref opts 'system)) diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm index 68bb9040d8..4d52200b84 100644 --- a/guix/scripts/refresh.scm +++ b/guix/scripts/refresh.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013-2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015 Alex Kost <alezost@gmail.com> @@ -46,9 +46,9 @@ #:use-module (ice-9 vlist) #:use-module (ice-9 format) #:use-module (srfi srfi-1) - #:use-module (srfi srfi-11) #:use-module (srfi srfi-26) #:use-module (srfi srfi-37) + #:use-module (srfi srfi-71) #:use-module (ice-9 binary-ports) #:export (guix-refresh)) @@ -315,12 +315,11 @@ KEY-DOWNLOAD specifies a download policy for missing OpenPGP keys; allowed values: 'interactive' (default), 'always', and 'never'. When WARN? is true, warn about packages that have no matching updater." (if (lookup-updater package updaters) - (let-values (((version output source) - (package-update store package updaters - #:key-download key-download)) - ((loc) - (or (package-field-location package 'version) - (package-location package)))) + (let ((version output source + (package-update store package updaters + #:key-download key-download)) + (loc (or (package-field-location package 'version) + (package-location package)))) (when version (if (and=> output file-exists?) (begin diff --git a/guix/scripts/shell.scm b/guix/scripts/shell.scm index 1a6df98829..004ed7af2e 100644 --- a/guix/scripts/shell.scm +++ b/guix/scripts/shell.scm @@ -256,6 +256,7 @@ Return the modified OPTS." ((('package . _) . _) #t) ((('load . _) . _) #t) ((('manifest . _) . _) #t) + ((('profile . _) . _) #t) ((('expression . _) . _) #t) ((_ . rest) (options-contain-payload? rest)))) @@ -465,6 +466,8 @@ concatenates MANIFESTS, a list of expressions." (filter-map (match-lambda (('manifest . file) (load-manifest file)) + (('profile . file) + (profile-manifest file)) (_ #f)) opts))))) (display (G_ "\ diff --git a/guix/self.scm b/guix/self.scm index 9a64051c32..36ada4d171 100644 --- a/guix/self.scm +++ b/guix/self.scm @@ -569,10 +569,12 @@ instead of 'C'." (filter package? packages)))) ":")) (setenv "LIBRARY_PATH" #$(file-append gcc "/lib")) + (setenv "GUIX_LD_WRAPPER_DISABLE_RPATH" "1") (invoke "gcc" #$(local-file source) "-Wall" "-g0" "-O2" "-I" #$(file-append guile "/include/guile/" effective) "-L" #$(file-append guile "/lib") + "-Wl,-rpath" #$(file-append guile "/lib") #$(string-append "-lguile-" effective) "-o" (string-append #$output "/bin/guile"))))) diff --git a/guix/ssh.scm b/guix/ssh.scm index 232b6bfe94..a6f0f2eb96 100644 --- a/guix/ssh.scm +++ b/guix/ssh.scm @@ -102,7 +102,8 @@ actual key does not match." (define* (open-ssh-session host #:key user port identity host-key (compression %compression) - (timeout 3600)) + (timeout 3600) + (connection-timeout 10)) "Open an SSH session for HOST and return it. IDENTITY specifies the file name of a private key to use for authenticating with the host. When USER, PORT, or IDENTITY are #f, use default values or whatever '~/.ssh/config' @@ -112,15 +113,16 @@ When HOST-KEY is true, it must be a string like \"ssh-ed25519 AAAAC3Nz… root@example.org\"; the server is authenticated and an error is raised if its host key is different from HOST-KEY. -Install TIMEOUT as the maximum time in seconds after which a read or write -operation on a channel of the returned session is considered as failing. +Error out if connection establishment takes more than CONNECTION-TIMEOUT +seconds. Install TIMEOUT as the maximum time in seconds after which a read or +write operation on a channel of the returned session is considered as failing. Throw an error on failure." (let ((session (make-session #:user user #:identity identity #:host host #:port port - #:timeout 10 ;seconds + #:timeout connection-timeout ;; #:log-verbosity 'protocol ;; Prevent libssh from reading diff --git a/guix/ui.scm b/guix/ui.scm index cb68a07c6c..a7acd41440 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -17,6 +17,7 @@ ;;; Copyright © 2020 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2018 Steve Sprang <scs@stevesprang.com> +;;; Copyright © 2022 Taiju HIGASHI <higashi@taiju.info> ;;; ;;; This file is part of GNU Guix. ;;; @@ -1672,11 +1673,18 @@ return the underlying port. Otherwise return #f." (_ #f))) +(define (find-available-pager) + "Return the program name of an available pager or the empty string if none is +available." + (or (getenv "GUIX_PAGER") + (getenv "PAGER") + (which "less") + (which "more") + "")) + (define* (call-with-paginated-output-port proc #:key (less-options "FrX")) - (let ((pager-command-line (or (getenv "GUIX_PAGER") - (getenv "PAGER") - "less"))) + (let ((pager-command-line (find-available-pager))) ;; Setting PAGER to the empty string conventionally disables paging. (if (and (not (string-null? pager-command-line)) (isatty?* (current-output-port))) diff --git a/guix/upstream.scm b/guix/upstream.scm index 6666803a92..dac8153905 100644 --- a/guix/upstream.scm +++ b/guix/upstream.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2010-2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Alex Kost <alezost@gmail.com> ;;; Copyright © 2019, 2022 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev> @@ -464,6 +464,7 @@ SOURCE, an <upstream-source>." #:key-download key-download))) (values version tarball source)))))) + (define* (package-update/git-fetch store package source #:key key-download) "Return the version, checkout, and SOURCE, to update PACKAGE to SOURCE, an <upstream-source>." @@ -487,30 +488,36 @@ SOURCE, an <upstream-source>." #:optional (updaters (force %updaters)) #:key (key-download 'interactive)) "Return the new version, the file name of the new version tarball, and input -changes for PACKAGE; return #f (three values) when PACKAGE is up-to-date. +changes for PACKAGE; return #f (three values) when PACKAGE is up-to-date; +raise an error when the updater could not determine available releases. KEY-DOWNLOAD specifies a download policy for missing OpenPGP keys; allowed values: 'always', 'never', and 'interactive' (default)." - (match (package-latest-release* package updaters) + (match (package-latest-release package updaters) ((? upstream-source? source) - (let ((method (match (package-source package) - ((? origin? origin) - (origin-method origin)) - (_ - #f)))) - (match (assq method %method-updates) - (#f - (raise (make-compound-condition - (formatted-message (G_ "cannot download for \ + (if (version>? (upstream-source-version source) + (package-version package)) + (let ((method (match (package-source package) + ((? origin? origin) + (origin-method origin)) + (_ + #f)))) + (match (assq method %method-updates) + (#f + (raise (make-compound-condition + (formatted-message (G_ "cannot download for \ this method: ~s") - method) - (condition - (&error-location - (location (package-location package))))))) - ((_ . update) - (update store package source - #:key-download key-download))))) + method) + (condition + (&error-location + (location (package-location package))))))) + ((_ . update) + (update store package source + #:key-download key-download)))) + (values #f #f #f))) (#f - (values #f #f #f)))) + (raise (formatted-message + (G_ "updater failed to determine available releases for ~a~%") + (package-name package)))))) (define* (update-package-source package source hash) "Modify the source file that defines PACKAGE to refer to SOURCE, an diff --git a/guix/utils.scm b/guix/utils.scm index 37b2e29800..5c36b15cfe 100644 --- a/guix/utils.scm +++ b/guix/utils.scm @@ -13,6 +13,7 @@ ;;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com> ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> ;;; Copyright © 2018 Steve Sprang <scs@stevesprang.com> +;;; Copyright © 2022 Taiju HIGASHI <higashi@taiju.info> ;;; ;;; This file is part of GNU Guix. ;;; @@ -158,6 +159,8 @@ (dynamic-wind (lambda () (for-each (match-lambda + ((variable #false) + (unsetenv variable)) ((variable value) (setenv variable value))) variables)) diff --git a/po/guix/POTFILES.in b/po/guix/POTFILES.in index 6b8bd92bb7..201e5dcc87 100644 --- a/po/guix/POTFILES.in +++ b/po/guix/POTFILES.in @@ -6,6 +6,7 @@ gnu/services.scm gnu/system.scm gnu/services/shepherd.scm gnu/home/services.scm +gnu/home/services/ssh.scm gnu/home/services/symlink-manager.scm gnu/system/file-systems.scm gnu/system/image.scm diff --git a/tests/build-emacs-utils.scm b/tests/build-emacs-utils.scm new file mode 100644 index 0000000000..081032285a --- /dev/null +++ b/tests/build-emacs-utils.scm @@ -0,0 +1,68 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2022 Fredrik Salomonsson <plattfot@posteo.net> +;;; +;;; 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 build-emacs-utils) + #:use-module (guix tests) + #:use-module (guix build emacs-utils) + #:use-module (guix build utils) + #:use-module ((guix utils) + #:select (call-with-temporary-directory)) + #:use-module (srfi srfi-34) + #:use-module (srfi srfi-64)) + +(test-begin "build-emacs-utils") +;; Only run the following tests if emacs is present. +(test-skip (if (which "emacs") 0 5)) + +(test-equal "emacs-batch-script: print foo from emacs" + "foo" + (emacs-batch-script '(princ "foo"))) + +(test-assert "emacs-batch-script: raise &emacs-batch-error on failure" + (guard (c ((emacs-batch-error? c) + (string-contains (emacs-batch-error-message c) + "Lisp error: (wrong-type-argument numberp \"three\")"))) + (emacs-batch-script '(mapcar 'number-to-string (list 1 2 "three"))))) + +(call-with-temporary-directory + (lambda (directory) + (let ((mock-elisp-file (string-append directory "/foo.el"))) + (call-with-output-file mock-elisp-file + (lambda (port) + (display ";;; foo --- mock emacs package -*- lexical-binding: t -*- + +;; Created: 4 Jun 2022 +;; Keywords: lisp test +;; Version: 1.0.0 +;;; Commentary: +;;; Code: +;;; foo.el ends here +" + port))) + (test-equal "emacs-header-parse: fetch version" + "1.0.0" + (emacs-header-parse "version" mock-elisp-file)) + (test-equal "emacs-header-parse: fetch keywords" + "lisp test" + (emacs-header-parse "keywords" mock-elisp-file)) + (test-equal "emacs-header-parse: fetch nonexistent author" + "nil" + (emacs-header-parse "author" mock-elisp-file))))) + +(test-end "build-emacs-utils") diff --git a/tests/guix-shell-export-manifest.sh b/tests/guix-shell-export-manifest.sh index 05429955b9..6c42c40f3b 100644 --- a/tests/guix-shell-export-manifest.sh +++ b/tests/guix-shell-export-manifest.sh @@ -46,6 +46,17 @@ cat "$manifest.second" cmp "$manifest" "$manifest.second" +# Manifest for a profile. +guix shell --bootstrap guile-bootstrap -r "$tmpdir/profile" -- \ + guile --version +test -x "$tmpdir/profile/bin/guile" +guix shell -p "$tmpdir/profile" --export-manifest > "$manifest.second" +guix shell --export-manifest guile-bootstrap > "$manifest" +cat "$manifest.second" +cmp "$manifest" "$manifest.second" + +rm "$tmpdir/profile" + # Combining manifests. guix shell --export-manifest -m "$manifest" gash gash-utils \ > "$manifest.second" diff --git a/tests/hexpm.scm b/tests/hexpm.scm new file mode 100644 index 0000000000..e9f899f166 --- /dev/null +++ b/tests/hexpm.scm @@ -0,0 +1,253 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2022 Hartmut Goebel <h.goebel@crazy-compilers.com> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (test-hexpm) + #:use-module (guix import hexpm) + #:use-module (guix base32) + #:use-module (gcrypt hash) + #:use-module (guix tests) + #:use-module (srfi srfi-64) + #:use-module (ice-9 binary-ports) + #:use-module (ice-9 match)) + +(define test-bla-package + "{\"name\": \"bla\", + \"html_url\": \"https://hex.pm/packages/bla\", + \"docs_html_url\": null, + \"meta\": { + \"description\": \"A cool package\", + \"licenses\": [\"MIT\", \"Apache-2.0\"] + }, + \"releases\": [ + {\"url\": \"https://hex.pm/api/packages/bla/releases/1.5.0\", + \"version\": \"1.5.0\"}, + {\"url\": \"https://hex.pm/api/packages/bla/releases/1.4.7\", + \"version\": \"1.4.7\"} + ] +}") + +(define test-bla-release + "{ + \"version\": \"1.5.0\", + \"url\": \"https://hex.pm/api/packages/bla/releases/1.5.0\", + \"requirements\": { + \"blubb\":{\"app\": \"blubb\", + \"optional\": false, + \"requirement\": \"~>0.3\" + }, + \"fasel\":{\"app\": \"fasel\", + \"optional\": false, + \"requirement\": \"~>1.0\" + } + }, + \"meta\":{ \"build_tools\":[\"mix\", \"make\", \"rebar3\"] } + }") + +(define test-blubb-package + "{\"name\": \"blubb\", + \"latest_stable_version\": \"0.3.1\", + \"latest_version\": \"0.3.1\", + \"html_url\": \"https://hex.pm/packages/blubb\", + \"docs_html_url\": null, + \"meta\": { + \"description\": \"Another cool package\", + \"licenses\": [\"MIT\"] + }, + \"releases\": [ + {\"url\": \"https://hex.pm/api/packages/blubb/releases/0.3.1\", + \"version\": \"0.3.1\"}, + {\"url\": \"https://hex.pm/api/packages/blubb/releases/0.3.0\", + \"version\": \"0.3.0\"} + ] +}") + +(define test-blubb-release + "{ + \"version\": \"0.3.1\", + \"url\": \"https://hex.pm/api/packages/blubb/releases/0.3.1\", + \"requirements\": { + \"fasel\":{\"app\": \"fasel\", + \"optional\": false, + \"requirement\": \"~>1.0\" + } + }, + \"meta\": { \"build_tools\":[\"mix\"] } + }") + +(define test-fasel-package + "{\"name\": \"fasel\", + \"latest_stable_version\": \"1.2.1\", + \"latest_version\": \"1.2.1\", + \"html_url\": \"https://hex.pm/packages/fasel\", + \"docs_html_url\": null, + \"meta\": { + \"description\": \"Yet another cool package\", + \"licenses\": [\"GPL\"] + }, + \"releases\": [ + {\"url\": \"https://hex.pm/api/packages/fasel/releases/1.2.1\", + \"version\": \"1.2.1\"} + ] +}") + +(define test-fasel-release + "{ + \"version\": \"1.2.1\", + \"url\": \"https://hex.pm/api/packages/fasel/releases/1.2.1\", + \"requirements\" :{}, + \"meta\":{ \"build_tools\":[\"make\"] } + }") + +(test-begin "hexpm") + +(test-assert "hexpm->guix-package" + ;; Replace network resources with sample data. + (mock ((guix http-client) http-fetch + (lambda (url . rest) + (match url + ("https://hex.pm/api/packages/bla" + (values (open-input-string test-bla-package) + (string-length test-bla-package))) + ("https://hex.pm/api/packages/bla/releases/1.5.0" + (values (open-input-string test-bla-release) + (string-length test-bla-release))) + (_ (error "http-fetch got unexpected URL: " url))))) + (mock ((guix build download) url-fetch + (lambda* (url file-name + #:key + (mirrors '()) verify-certificate?) + (with-output-to-file file-name + (lambda () + (display + (match url + ("https://repo.hex.pm/tarballs/bla-1.5.0.tar" + "source") + (_ (error "url-fetch got unexpected URL: " url)))))))) + (match (hexpm->guix-package "bla") + (('package + ('name "erlang-bla") + ('version "1.5.0") + ('source + ('origin + ('method 'url-fetch) + ('uri ('hexpm-uri "bla" 'version)) + ('sha256 + ('base32 + "0zcl4dgcmqwl1g5xb901pd6dz61r1xgmac9mqlwvh022paa6gks1")))) + ('build-system 'rebar-build-system) + ('inputs ('list 'erlang-blubb 'erlang-fasel)) + ('synopsis "A cool package") + ('description "This package provides a cool package") + ('home-page "https://hex.pm/packages/bla") + ('license ('list 'license:expat 'license:asl2.0))) + #t) + (x + (pk 'fail x #f)))))) + +(test-assert "hexpm-recursive-import" + ;; Replace network resources with sample data. + (mock ((guix http-client) http-fetch + (lambda (url . rest) + (match url + ("https://hex.pm/api/packages/bla" + (values (open-input-string test-bla-package) + (string-length test-bla-package))) + ("https://hex.pm/api/packages/bla/releases/1.5.0" + (values (open-input-string test-bla-release) + (string-length test-bla-release))) + ("https://hex.pm/api/packages/blubb" + (values (open-input-string test-blubb-package) + (string-length test-blubb-package))) + ("https://hex.pm/api/packages/blubb/releases/0.3.1" + (values (open-input-string test-blubb-release) + (string-length test-blubb-release))) + ("https://hex.pm/api/packages/fasel" + (values (open-input-string test-fasel-package) + (string-length test-fasel-package))) + ("https://hex.pm/api/packages/fasel/releases/1.2.1" + (values (open-input-string test-fasel-release) + (string-length test-fasel-release))) + (_ (error "http-fetch got unexpected URL: " url))))) + (mock ((guix build download) url-fetch + (lambda* (url file-name + #:key + (mirrors '()) verify-certificate?) + (with-output-to-file file-name + (lambda () + (display + (match url + ("https://repo.hex.pm/tarballs/bla-1.5.0.tar" + "bla-source") + ("https://repo.hex.pm/tarballs/blubb-0.3.1.tar" + "blubb-source") + ("https://repo.hex.pm/tarballs/fasel-1.2.1.tar" + "fasel-source") + (_ (error "url-fetch got unexpected URL: " url)))))))) + (match (hexpm-recursive-import "bla") + ((('package + ('name "erlang-blubb") + ('version "0.3.1") + ('source + ('origin + ('method 'url-fetch) + ('uri ('hexpm-uri "blubb" 'version)) + ('sha256 + ('base32 + "17y88b5y8ld7s1c2bcwwwa04pf1cl4402i9zk3inna221ps3ppj2")))) + ('build-system 'mix-build-system) + ('inputs ('list 'erlang-fasel)) + ('synopsis "Another cool package") + ('description "Another cool package") + ('home-page "https://hex.pm/packages/blubb") + ('license 'license:expat)) + ('package + ('name "erlang-fasel") + ('version "1.2.1") + ('source + ('origin + ('method 'url-fetch) + ('uri ('hexpm-uri "fasel" 'version)) + ('sha256 + ('base32 + "1k6d70mxwqgq78jrbr7yqnw187yki74jnagybi7nacrj4a67qjha")))) + ('build-system 'gnu-build-system) + ('synopsis "Yet another cool package") + ('description "Yet another cool package") + ('home-page "https://hex.pm/packages/fasel") + ('license "GPL")) + ('package + ('name "erlang-bla") + ('version "1.5.0") + ('source + ('origin + ('method 'url-fetch) + ('uri ('hexpm-uri "bla" 'version)) + ('sha256 + ('base32 + "0d3gj746c4swbb1m6ycylxb239jsavvdcizag6bfbg2aqccxwij8")))) + ('build-system 'rebar-build-system) + ('inputs ('list 'erlang-blubb 'erlang-fasel)) + ('synopsis "A cool package") + ('description "This package provides a cool package") + ('home-page "https://hex.pm/packages/bla") + ('license ('list 'license:expat 'license:asl2.0)))) + #t) + (x + (pk 'fail x #f)))))) + +(test-end "hexpm") diff --git a/tests/services/configuration.scm b/tests/services/configuration.scm index 86a36a388d..334a1e409b 100644 --- a/tests/services/configuration.scm +++ b/tests/services/configuration.scm @@ -27,6 +27,9 @@ (test-begin "services-configuration") +(define (serialize-number field value) + (format #f "~a=~a" field value)) + ;;; ;;; define-configuration macro. @@ -47,7 +50,6 @@ 80 (port-configuration-cs-port (port-configuration-cs))) -(define serialize-number "") (define-configuration port-configuration-ndv (port (number) "The port number.")) @@ -101,15 +103,31 @@ (define-maybe number) (define-configuration config-with-maybe-number - (port (maybe-number 80) "The port number.")) - -(define (serialize-number field value) - (format #f "~a=~a" field value)) + (port (maybe-number 80) "") + (count maybe-number "")) (test-equal "maybe value serialization" "port=80" (serialize-maybe-number "port" 80)) +(define (config-with-maybe-number->string x) + (eval (gexp->approximate-sexp + (serialize-configuration x config-with-maybe-number-fields)) + (current-module))) + +(test-equal "maybe value serialization of the instance" + "port=42count=43" + (config-with-maybe-number->string + (config-with-maybe-number + (port 42) + (count 43)))) + +(test-equal "maybe value serialization of the instance, unspecified" + "port=42" + (config-with-maybe-number->string + (config-with-maybe-number + (port 42)))) + (define-maybe/no-serialization string) (define-configuration config-with-maybe-string/no-serialization @@ -118,3 +136,15 @@ (test-assert "maybe value without serialization no procedure bound" (not (defined? 'serialize-maybe-string))) + +(test-assert "maybe type, no default" + (unspecified? + (config-with-maybe-string/no-serialization-name + (config-with-maybe-string/no-serialization)))) + +(test-assert "maybe type, with default" + (equal? + "foo" + (config-with-maybe-string/no-serialization-name + (config-with-maybe-string/no-serialization + (name "foo"))))) diff --git a/tests/system.scm b/tests/system.scm index 019c720e65..873fed4aee 100644 --- a/tests/system.scm +++ b/tests/system.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016, 2018 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016, 2018, 2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. @@ -21,6 +21,10 @@ #:use-module (gnu) #:use-module ((gnu services) #:select (service-value)) #:use-module (guix store) + #:use-module (guix monads) + #:use-module ((guix gexp) #:select (lower-object)) + #:use-module ((guix utils) #:select (%current-system)) + #:use-module (guix grafts) #:use-module (srfi srfi-1) #:use-module (srfi srfi-64)) @@ -64,6 +68,8 @@ %base-file-systems)) (users %base-user-accounts))) +(%graft? #f) + (test-begin "system") @@ -140,4 +146,17 @@ (type "ext4") (dependencies (list %luks-device)))))))))) +(test-assert "lower-object, %current-system sensitivity" + ;; Make sure that 'lower-object' returns the same derivation, no matter what + ;; '%current-system' is. See <https://issues.guix.gnu.org/55951>. + (let ((drv1 (with-store store + (parameterize ((%current-system "x86_64-linux")) + (run-with-store store + (lower-object %os "aarch64-linux"))))) + (drv2 (with-store store + (parameterize ((%current-system "aarch64-linux")) + (run-with-store store + (lower-object %os "aarch64-linux")))))) + (eq? drv1 drv2))) + (test-end) diff --git a/tests/ui.scm b/tests/ui.scm index 3dc6952e1f..6a25a204ca 100644 --- a/tests/ui.scm +++ b/tests/ui.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2022 Taiju HIGASHI <higashi@taiju.info> ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,6 +25,7 @@ #:use-module (guix derivations) #:use-module ((gnu packages) #:select (specification->package)) #:use-module (guix tests) + #:use-module (guix utils) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) #:use-module (srfi srfi-19) @@ -292,4 +294,70 @@ Second line" 24)) (>0 (package-relevance libb2 (map rx '("crypto" "library"))))))) +(define (make-empty-file directory file) + ;; Create FILE in DIRECTORY. + (close-port (open-output-file (in-vicinity directory file)))) + +(define (assert-equals-find-available-pager expected) + ;; Use 'with-paginated-output-port' and return true if it invoked EXPECTED. + (define used-command "") + (mock ((ice-9 popen) open-pipe* + (lambda (mode command . args) + (unless (string-null? used-command) + (error "open-pipe* should only be called once")) + (set! used-command command) + (%make-void-port ""))) + (mock ((ice-9 popen) close-pipe (const 'ok)) + (mock ((guix colors) isatty?* (const #t)) + (with-paginated-output-port port 'ok) + (string=? expected used-command))))) + + +(test-assert "find-available-pager, GUIX_PAGER takes precedence" + (call-with-temporary-directory + (lambda (dir) + (with-environment-variables `(("PATH" ,dir) + ("GUIX_PAGER" "guix-pager") + ("PAGER" "pager")) + (make-empty-file dir "less") + (make-empty-file dir "more") + (assert-equals-find-available-pager "guix-pager"))))) + +(test-assert "find-available-pager, PAGER takes precedence" + (call-with-temporary-directory + (lambda (dir) + (with-environment-variables `(("PATH" ,dir) + ("GUIX_PAGER" #false) + ("PAGER" "pager")) + (make-empty-file dir "less") + (make-empty-file dir "more") + (assert-equals-find-available-pager "pager"))))) + +(test-assert "find-available-pager, 'less' takes precedence" + (call-with-temporary-directory + (lambda (dir) + (with-environment-variables `(("PATH" ,dir) + ("GUIX_PAGER" #false) + ("PAGER" #false)) + (make-empty-file dir "less") + (make-empty-file dir "more") + (assert-equals-find-available-pager (in-vicinity dir "less")))))) + +(test-assert "find-available-pager, 'more' takes precedence" + (call-with-temporary-directory + (lambda (dir) + (with-environment-variables `(("PATH" ,dir) + ("GUIX_PAGER" #false) + ("PAGER" #false)) + (make-empty-file dir "more") + (assert-equals-find-available-pager (in-vicinity dir "more")))))) + +(test-assert "find-available-pager, no pager" + (call-with-temporary-directory + (lambda (dir) + (with-environment-variables `(("PATH" ,dir) + ("GUIX_PAGER" #false) + ("PAGER" #false)) + (assert-equals-find-available-pager ""))))) + (test-end "ui") |