Merge branch 'master' into core-updates
This commit is contained in:
		
						commit
						7abe35febe
					
				
					 59 changed files with 1075 additions and 503 deletions
				
			
		|  | @ -669,7 +669,7 @@ GUIX_FOR_BINARY_TARBALL = guile3.0-guix | ||||||
| # The self-contained tarball. | # The self-contained tarball. | ||||||
| guix-binary.%.tar.xz: | guix-binary.%.tar.xz: | ||||||
| 	$(AM_V_GEN)GUIX_PACKAGE_PATH=					\ | 	$(AM_V_GEN)GUIX_PACKAGE_PATH=					\ | ||||||
| 	tarball=`$(top_builddir)/pre-inst-env guix pack -K -C xz	\ | 	tarball=`$(top_builddir)/pre-inst-env guix pack -C xz		\ | ||||||
| 	  --fallback							\ | 	  --fallback							\ | ||||||
| 	  -s "$*" --localstatedir --profile-name=current-guix		\ | 	  -s "$*" --localstatedir --profile-name=current-guix		\ | ||||||
| 	  $(GUIX_FOR_BINARY_TARBALL)` ;					\ | 	  $(GUIX_FOR_BINARY_TARBALL)` ;					\ | ||||||
|  | @ -819,6 +819,7 @@ release: dist-with-updated-version | ||||||
| 	for system in $(GUIX_SYSTEM_VM_SYSTEMS) ; do					\ | 	for system in $(GUIX_SYSTEM_VM_SYSTEMS) ; do					\ | ||||||
| 	  image=`$(top_builddir)/pre-inst-env						\ | 	  image=`$(top_builddir)/pre-inst-env						\ | ||||||
| 	    guix system vm-image $(GUIX_SYSTEM_VM_IMAGE_FLAGS)				\ | 	    guix system vm-image $(GUIX_SYSTEM_VM_IMAGE_FLAGS)				\ | ||||||
|  | 	    --save-provenance								\ | ||||||
| 	    --system=$$system --fallback						\ | 	    --system=$$system --fallback						\ | ||||||
| 	    gnu/system/examples/vm-image.tmpl` ;					\ | 	    gnu/system/examples/vm-image.tmpl` ;					\ | ||||||
| 	  if [ ! -f "$$image" ] ; then							\ | 	  if [ ! -f "$$image" ] ; then							\ | ||||||
|  |  | ||||||
|  | @ -1,5 +1,6 @@ | ||||||
| ;;; GNU Guix --- Functional package management for GNU | ;;; GNU Guix --- Functional package management for GNU | ||||||
| ;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org> | ;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org> | ||||||
|  | ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr> | ||||||
| ;;; | ;;; | ||||||
| ;;; This file is part of GNU Guix. | ;;; This file is part of GNU Guix. | ||||||
| ;;; | ;;; | ||||||
|  | @ -147,11 +148,11 @@ | ||||||
|     ("mthl" |     ("mthl" | ||||||
|      "F2A3 8D7E EB2B 6640 5761  070D 0ADE E100 9460 4D37") |      "F2A3 8D7E EB2B 6640 5761  070D 0ADE E100 9460 4D37") | ||||||
|     ("nckx" |     ("nckx" | ||||||
|      ;; primary: "F5BC 5534 C36F 0087 B39D  36EF 1C9D C4FE B9DB 7C4B" |  | ||||||
|      "7E8F AED0 0944 78EF 72E6  4D16 D889 B0F0 18C5 493C") |  | ||||||
|     ("nckx (2nd)" |  | ||||||
|      ;; primary: "F5BC 5534 C36F 0087 B39D  36EF 1C9D C4FE B9DB 7C4B" |      ;; primary: "F5BC 5534 C36F 0087 B39D  36EF 1C9D C4FE B9DB 7C4B" | ||||||
|      "F5DA 2032 4B87 3D0B 7A38  7672 0DB0 FF88 4F55 6D79") |      "F5DA 2032 4B87 3D0B 7A38  7672 0DB0 FF88 4F55 6D79") | ||||||
|  |     ("nckx (revoked; not compromised)" | ||||||
|  |      ;; primary: "F5BC 5534 C36F 0087 B39D  36EF 1C9D C4FE B9DB 7C4B" | ||||||
|  |      "7E8F AED0 0944 78EF 72E6  4D16 D889 B0F0 18C5 493C") | ||||||
|     ("niedzejkob" |     ("niedzejkob" | ||||||
|      "E576 BFB2 CF6E B13D F571  33B9 E315 A758 4613 1564") |      "E576 BFB2 CF6E B13D F571  33B9 E315 A758 4613 1564") | ||||||
|     ("ngz" |     ("ngz" | ||||||
|  |  | ||||||
|  | @ -77,6 +77,7 @@ Copyright @copyright{} 2020 Jakub Kądziołka@* | ||||||
| Copyright @copyright{} 2020 Jack Hill@* | Copyright @copyright{} 2020 Jack Hill@* | ||||||
| Copyright @copyright{} 2020 Naga Malleswari@* | Copyright @copyright{} 2020 Naga Malleswari@* | ||||||
| Copyright @copyright{} 2020 Brice Waegeneire@* | Copyright @copyright{} 2020 Brice Waegeneire@* | ||||||
|  | Copyright @copyright{} 2020 R Veera Kumar@* | ||||||
| 
 | 
 | ||||||
| Permission is granted to copy, distribute and/or modify this document | Permission is granted to copy, distribute and/or modify this document | ||||||
| under the terms of the GNU Free Documentation License, Version 1.3 or | under the terms of the GNU Free Documentation License, Version 1.3 or | ||||||
|  | @ -547,7 +548,14 @@ We recommend the use of this | ||||||
| @uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh, | @uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh, | ||||||
| shell installer script}.  The script automates the download, installation, and | shell installer script}.  The script automates the download, installation, and | ||||||
| initial configuration steps described below.  It should be run as the root | initial configuration steps described below.  It should be run as the root | ||||||
| user. | user.  As root, you can thus run this: | ||||||
|  | 
 | ||||||
|  | @example | ||||||
|  | cd /tmp | ||||||
|  | wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh | ||||||
|  | chmod +x guix-install.sh | ||||||
|  | ./guix-install.sh | ||||||
|  | @end example | ||||||
| @end quotation | @end quotation | ||||||
| 
 | 
 | ||||||
| Installing goes along these lines: | Installing goes along these lines: | ||||||
|  | @ -651,7 +659,7 @@ with these commands: | ||||||
| @example | @example | ||||||
| # cp ~root/.config/guix/current/lib/systemd/system/guix-daemon.service \ | # cp ~root/.config/guix/current/lib/systemd/system/guix-daemon.service \ | ||||||
|      /etc/systemd/system/ |      /etc/systemd/system/ | ||||||
| # systemctl start guix-daemon && systemctl enable guix-daemon | # systemctl enable --now guix-daemon | ||||||
| @end example | @end example | ||||||
| 
 | 
 | ||||||
| If your host distro uses the Upstart init system: | If your host distro uses the Upstart init system: | ||||||
|  | @ -2823,6 +2831,15 @@ in the root of their project source tree that can be used to test | ||||||
| development snapshots and create reproducible development environments | development snapshots and create reproducible development environments | ||||||
| (@pxref{Invoking guix environment}). | (@pxref{Invoking guix environment}). | ||||||
| 
 | 
 | ||||||
|  | The @var{file} may also contain a JSON representation of one or more | ||||||
|  | package definitions.  Running @code{guix package -f} on | ||||||
|  | @file{hello.json} with the following contents would result in installing | ||||||
|  | the package @code{greeter} after building @code{myhello}: | ||||||
|  | 
 | ||||||
|  | @example | ||||||
|  | @verbatiminclude package-hello.json | ||||||
|  | @end example | ||||||
|  | 
 | ||||||
| @item --remove=@var{package} @dots{} | @item --remove=@var{package} @dots{} | ||||||
| @itemx -r @var{package} @dots{} | @itemx -r @var{package} @dots{} | ||||||
| Remove the specified @var{package}s. | Remove the specified @var{package}s. | ||||||
|  | @ -4616,8 +4633,8 @@ served by @code{@value{SUBSTITUTE-SERVER}} to @file{/tmp/emacs}: | ||||||
| 
 | 
 | ||||||
| @example | @example | ||||||
| $ wget -O - \ | $ wget -O - \ | ||||||
|   https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-emacs-24.5 \ |   https://@value{SUBSTITUTE-SERVER}/nar/gzip/@dots{}-emacs-24.5 \ | ||||||
|   | bunzip2 | guix archive -x /tmp/emacs |   | gunzip | guix archive -x /tmp/emacs | ||||||
| @end example | @end example | ||||||
| 
 | 
 | ||||||
| Single-item archives are different from multiple-item archives produced | Single-item archives are different from multiple-item archives produced | ||||||
|  | @ -4627,7 +4644,8 @@ and they do @emph{not} embed a signature.  Thus this operation does | ||||||
| unsafe. | unsafe. | ||||||
| 
 | 
 | ||||||
| The primary purpose of this operation is to facilitate inspection of | The primary purpose of this operation is to facilitate inspection of | ||||||
| archive contents coming from possibly untrusted substitute servers. | archive contents coming from possibly untrusted substitute servers | ||||||
|  | (@pxref{Invoking guix challenge}). | ||||||
| 
 | 
 | ||||||
| @item --list | @item --list | ||||||
| @itemx -t | @itemx -t | ||||||
|  | @ -5807,7 +5825,7 @@ or a list of such values. | ||||||
| @item @code{home-page} | @item @code{home-page} | ||||||
| The URL to the home-page of the package, as a string. | The URL to the home-page of the package, as a string. | ||||||
| 
 | 
 | ||||||
| @item @code{supported-systems} (default: @var{%supported-systems}) | @item @code{supported-systems} (default: @code{%supported-systems}) | ||||||
| The list of systems supported by the package, as strings of the form | The list of systems supported by the package, as strings of the form | ||||||
| @code{architecture-kernel}, for example @code{"x86_64-linux"}. | @code{architecture-kernel}, for example @code{"x86_64-linux"}. | ||||||
| 
 | 
 | ||||||
|  | @ -6171,7 +6189,6 @@ if they are defined by the crate. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @defvr {Scheme Variable} copy-build-system | @defvr {Scheme Variable} copy-build-system | ||||||
| @cindex (copy build system) |  | ||||||
| This variable is exported by @code{(guix build-system copy)}.  It | This variable is exported by @code{(guix build-system copy)}.  It | ||||||
| supports builds of simple packages that don't require much compiling, | supports builds of simple packages that don't require much compiling, | ||||||
| mostly just moving files around. | mostly just moving files around. | ||||||
|  | @ -7371,7 +7388,7 @@ increments the current state value: | ||||||
| @result{} 3 | @result{} 3 | ||||||
| @end lisp | @end lisp | ||||||
| 
 | 
 | ||||||
| When ``run'' through @var{%state-monad}, we obtain that additional state | When ``run'' through @code{%state-monad}, we obtain that additional state | ||||||
| value, which is the number of @code{square} calls. | value, which is the number of @code{square} calls. | ||||||
| @end defvr | @end defvr | ||||||
| 
 | 
 | ||||||
|  | @ -7403,7 +7420,7 @@ The main interface to the store monad, provided by the @code{(guix | ||||||
| store)} module, is as follows. | store)} module, is as follows. | ||||||
| 
 | 
 | ||||||
| @defvr {Scheme Variable} %store-monad | @defvr {Scheme Variable} %store-monad | ||||||
| The store monad---an alias for @var{%state-monad}. | The store monad---an alias for @code{%state-monad}. | ||||||
| 
 | 
 | ||||||
| Values in the store monad encapsulate accesses to the store.  When its | Values in the store monad encapsulate accesses to the store.  When its | ||||||
| effect is needed, a value of the store monad must be ``evaluated'' by | effect is needed, a value of the store monad must be ``evaluated'' by | ||||||
|  | @ -7764,7 +7781,7 @@ information about monads.) | ||||||
|        [#:system (%current-system)] [#:target #f] [#:graft? #t] @ |        [#:system (%current-system)] [#:target #f] [#:graft? #t] @ | ||||||
|        [#:hash #f] [#:hash-algo #f] @ |        [#:hash #f] [#:hash-algo #f] @ | ||||||
|        [#:recursive? #f] [#:env-vars '()] [#:modules '()] @ |        [#:recursive? #f] [#:env-vars '()] [#:modules '()] @ | ||||||
|        [#:module-path @var{%load-path}] @ |        [#:module-path @code{%load-path}] @ | ||||||
|        [#:effective-version "2.2"] @ |        [#:effective-version "2.2"] @ | ||||||
|        [#:references-graphs #f] [#:allowed-references #f] @ |        [#:references-graphs #f] [#:allowed-references #f] @ | ||||||
|        [#:disallowed-references #f] @ |        [#:disallowed-references #f] @ | ||||||
|  | @ -8068,7 +8085,7 @@ item.  This is achieved using the @code{lower-object} monadic procedure. | ||||||
| 
 | 
 | ||||||
| @deffn {Monadic Procedure} lower-object @var{obj} [@var{system}] @ | @deffn {Monadic Procedure} lower-object @var{obj} [@var{system}] @ | ||||||
|            [#:target #f] |            [#:target #f] | ||||||
| Return as a value in @var{%store-monad} the derivation or store item | Return as a value in @code{%store-monad} the derivation or store item | ||||||
| corresponding to @var{obj} for @var{system}, cross-compiling for | corresponding to @var{obj} for @var{system}, cross-compiling for | ||||||
| @var{target} if @var{target} is true.  @var{obj} must be an object that | @var{target} if @var{target} is true.  @var{obj} must be an object that | ||||||
| has an associated gexp compiler, such as a @code{<package>}. | has an associated gexp compiler, such as a @code{<package>}. | ||||||
|  | @ -8550,6 +8567,15 @@ As an example, @var{file} might contain a package definition like this | ||||||
| @include package-hello.scm | @include package-hello.scm | ||||||
| @end lisp | @end lisp | ||||||
| 
 | 
 | ||||||
|  | The @var{file} may also contain a JSON representation of one or more | ||||||
|  | package definitions.  Running @code{guix build -f} on @file{hello.json} | ||||||
|  | with the following contents would result in building the packages | ||||||
|  | @code{myhello} and @code{greeter}: | ||||||
|  | 
 | ||||||
|  | @example | ||||||
|  | @verbatiminclude package-hello.json | ||||||
|  | @end example | ||||||
|  | 
 | ||||||
| @item --manifest=@var{manifest} | @item --manifest=@var{manifest} | ||||||
| @itemx -m @var{manifest} | @itemx -m @var{manifest} | ||||||
| Build all packages listed in the given @var{manifest} | Build all packages listed in the given @var{manifest} | ||||||
|  | @ -10555,8 +10581,8 @@ Alternately, we can do something along these lines (@pxref{Invoking guix | ||||||
| archive}): | archive}): | ||||||
| 
 | 
 | ||||||
| @example | @example | ||||||
| $ wget -q -O - https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-git-2.5.0 \ | $ wget -q -O - https://@value{SUBSTITUTE-SERVER}/nar/lzip/@dots{}-git-2.5.0 \ | ||||||
|    | guix archive -x /tmp/git |    | lzip -d | guix archive -x /tmp/git | ||||||
| $ diff -ur --no-dereference /gnu/store/@dots{}-git.2.5.0 /tmp/git | $ diff -ur --no-dereference /gnu/store/@dots{}-git.2.5.0 /tmp/git | ||||||
| @end example | @end example | ||||||
| 
 | 
 | ||||||
|  | @ -11234,7 +11260,7 @@ By that, we mean all the global system configuration, not per-user | ||||||
| configuration (@pxref{Using the Configuration System}). | configuration (@pxref{Using the Configuration System}). | ||||||
| 
 | 
 | ||||||
| @table @asis | @table @asis | ||||||
| @item @code{kernel} (default: @var{linux-libre}) | @item @code{kernel} (default: @code{linux-libre}) | ||||||
| The package object of the operating system kernel to use@footnote{Currently | The package object of the operating system kernel to use@footnote{Currently | ||||||
| only the Linux-libre kernel is supported.  In the future, it will be | only the Linux-libre kernel is supported.  In the future, it will be | ||||||
| possible to use the GNU@tie{}Hurd.}. | possible to use the GNU@tie{}Hurd.}. | ||||||
|  | @ -11391,11 +11417,11 @@ As a user you should @emph{never} need to touch this field. | ||||||
| Linux @dfn{pluggable authentication module} (PAM) services. | Linux @dfn{pluggable authentication module} (PAM) services. | ||||||
| @c FIXME: Add xref to PAM services section. | @c FIXME: Add xref to PAM services section. | ||||||
| 
 | 
 | ||||||
| @item @code{setuid-programs} (default: @var{%setuid-programs}) | @item @code{setuid-programs} (default: @code{%setuid-programs}) | ||||||
| List of string-valued G-expressions denoting setuid programs. | List of string-valued G-expressions denoting setuid programs. | ||||||
| @xref{Setuid Programs}. | @xref{Setuid Programs}. | ||||||
| 
 | 
 | ||||||
| @item @code{sudoers-file} (default: @var{%sudoers-specification}) | @item @code{sudoers-file} (default: @code{%sudoers-specification}) | ||||||
| @cindex sudoers file | @cindex sudoers file | ||||||
| The contents of the @file{/etc/sudoers} file as a file-like object | The contents of the @file{/etc/sudoers} file as a file-like object | ||||||
| (@pxref{G-Expressions, @code{local-file} and @code{plain-file}}). | (@pxref{G-Expressions, @code{local-file} and @code{plain-file}}). | ||||||
|  | @ -11561,7 +11587,7 @@ variables. | ||||||
| 
 | 
 | ||||||
| @defvr {Scheme Variable} %base-file-systems | @defvr {Scheme Variable} %base-file-systems | ||||||
| These are essential file systems that are required on normal systems, | These are essential file systems that are required on normal systems, | ||||||
| such as @var{%pseudo-terminal-file-system} and @var{%immutable-store} (see | such as @code{%pseudo-terminal-file-system} and @code{%immutable-store} (see | ||||||
| below.)  Operating system declarations should always contain at least | below.)  Operating system declarations should always contain at least | ||||||
| these. | these. | ||||||
| @end defvr | @end defvr | ||||||
|  | @ -12628,7 +12654,7 @@ and caches. | ||||||
| @defvr {Scheme Variable} %nscd-default-configuration | @defvr {Scheme Variable} %nscd-default-configuration | ||||||
| This is the default @code{<nscd-configuration>} value (see below) used | This is the default @code{<nscd-configuration>} value (see below) used | ||||||
| by @code{nscd-service}.  It uses the caches defined by | by @code{nscd-service}.  It uses the caches defined by | ||||||
| @var{%nscd-default-caches}; see below. | @code{%nscd-default-caches}; see below. | ||||||
| @end defvr | @end defvr | ||||||
| 
 | 
 | ||||||
| @deftp {Data Type} nscd-configuration | @deftp {Data Type} nscd-configuration | ||||||
|  | @ -12653,7 +12679,7 @@ Name of the nscd log file.  This is where debugging output goes when | ||||||
| Integer denoting the debugging levels.  Higher numbers mean that more | Integer denoting the debugging levels.  Higher numbers mean that more | ||||||
| debugging output is logged. | debugging output is logged. | ||||||
| 
 | 
 | ||||||
| @item @code{caches} (default: @var{%nscd-default-caches}) | @item @code{caches} (default: @code{%nscd-default-caches}) | ||||||
| List of @code{<nscd-cache>} objects denoting things to be cached; see | List of @code{<nscd-cache>} objects denoting things to be cached; see | ||||||
| below. | below. | ||||||
| 
 | 
 | ||||||
|  | @ -12925,7 +12951,7 @@ well as in the @var{groups} field of the @var{operating-system} record. | ||||||
| @end lisp | @end lisp | ||||||
| 
 | 
 | ||||||
| @defvr {Scheme Variable} urandom-seed-service-type | @defvr {Scheme Variable} urandom-seed-service-type | ||||||
| Save some entropy in @var{%random-seed-file} to seed @file{/dev/urandom} | Save some entropy in @code{%random-seed-file} to seed @file{/dev/urandom} | ||||||
| when rebooting.  It also tries to seed @file{/dev/urandom} from | when rebooting.  It also tries to seed @file{/dev/urandom} from | ||||||
| @file{/dev/hwrng} while booting, if @file{/dev/hwrng} exists and is | @file{/dev/hwrng} while booting, if @file{/dev/hwrng} exists and is | ||||||
| readable. | readable. | ||||||
|  | @ -13304,7 +13330,7 @@ Either @code{#f} or a gexp to execute once the rotation has completed. | ||||||
| @end deftp | @end deftp | ||||||
| 
 | 
 | ||||||
| @defvr {Scheme Variable} %default-rotations | @defvr {Scheme Variable} %default-rotations | ||||||
| Specifies weekly rotation of @var{%rotated-files} and of | Specifies weekly rotation of @code{%rotated-files} and of | ||||||
| @file{/var/log/guix-daemon.log}. | @file{/var/log/guix-daemon.log}. | ||||||
| @end defvr | @end defvr | ||||||
| 
 | 
 | ||||||
|  | @ -13764,7 +13790,7 @@ clock synchronized with that of the given servers. | ||||||
| 
 | 
 | ||||||
| @defvr {Scheme Variable} %openntpd-servers | @defvr {Scheme Variable} %openntpd-servers | ||||||
| This variable is a list of the server addresses defined in | This variable is a list of the server addresses defined in | ||||||
| @var{%ntp-servers}. | @code{%ntp-servers}. | ||||||
| @end defvr | @end defvr | ||||||
| 
 | 
 | ||||||
| @deftp {Data Type} openntpd-configuration | @deftp {Data Type} openntpd-configuration | ||||||
|  | @ -13782,7 +13808,7 @@ See @uref{https://man.openbsd.org/ntpd.conf, upstream documentation} for more | ||||||
| information. | information. | ||||||
| @item @code{server} (default: @code{'()}) | @item @code{server} (default: @code{'()}) | ||||||
| Specify a list of IP addresses or hostnames of NTP servers to synchronize to. | Specify a list of IP addresses or hostnames of NTP servers to synchronize to. | ||||||
| @item @code{servers} (default: @var{%openntp-servers}) | @item @code{servers} (default: @code{%openntp-servers}) | ||||||
| Specify a list of IP addresses or hostnames of NTP pools to synchronize to. | Specify a list of IP addresses or hostnames of NTP pools to synchronize to. | ||||||
| @item @code{constraint-from} (default: @code{'()}) | @item @code{constraint-from} (default: @code{'()}) | ||||||
| @code{ntpd} can be configured to query the ‘Date’ from trusted HTTPS servers via TLS. | @code{ntpd} can be configured to query the ‘Date’ from trusted HTTPS servers via TLS. | ||||||
|  | @ -25634,6 +25660,11 @@ If true, this must be the name of a file to log messages to. | ||||||
| @cindex dictionary | @cindex dictionary | ||||||
| The @code{(gnu services dict)} module provides the following service: | The @code{(gnu services dict)} module provides the following service: | ||||||
| 
 | 
 | ||||||
|  | @defvr {Scheme Variable} dicod-service-type | ||||||
|  | This is the type of the service that runs the @command{dicod} daemon, an | ||||||
|  | implementation of DICT server (@pxref{Dicod,,, dico, GNU Dico Manual}). | ||||||
|  | @end defvr | ||||||
|  | 
 | ||||||
| @deffn {Scheme Procedure} dicod-service [#:config (dicod-configuration)] | @deffn {Scheme Procedure} dicod-service [#:config (dicod-configuration)] | ||||||
| Return a service that runs the @command{dicod} daemon, an implementation | Return a service that runs the @command{dicod} daemon, an implementation | ||||||
| of DICT server (@pxref{Dicod,,, dico, GNU Dico Manual}). | of DICT server (@pxref{Dicod,,, dico, GNU Dico Manual}). | ||||||
|  | @ -27086,8 +27117,8 @@ evaluates to.  As an example, @var{file} might contain a definition like this: | ||||||
| 
 | 
 | ||||||
| The file should evaluate to a list of @var{machine} objects.  This example, | The file should evaluate to a list of @var{machine} objects.  This example, | ||||||
| upon being deployed, will create a new generation on the remote system | upon being deployed, will create a new generation on the remote system | ||||||
| realizing the @code{operating-system} declaration @var{%system}. | realizing the @code{operating-system} declaration @code{%system}. | ||||||
| @var{environment} and @var{configuration} specify how the machine should be | @code{environment} and @code{configuration} specify how the machine should be | ||||||
| provisioned---that is, how the computing resources should be created and | provisioned---that is, how the computing resources should be created and | ||||||
| managed.  The above example does not create any resources, as a | managed.  The above example does not create any resources, as a | ||||||
| @code{'managed-host} is a machine that is already running the Guix system and | @code{'managed-host} is a machine that is already running the Guix system and | ||||||
|  | @ -27229,7 +27260,8 @@ This image boots the Xfce graphical environment and it contains some | ||||||
| commonly-used tools.  You can install more software in the image by running | commonly-used tools.  You can install more software in the image by running | ||||||
| @command{guix package} in a terminal (@pxref{Invoking guix package}).  You can | @command{guix package} in a terminal (@pxref{Invoking guix package}).  You can | ||||||
| also reconfigure the system based on its initial configuration file available | also reconfigure the system based on its initial configuration file available | ||||||
| as @file{/etc/config.scm} (@pxref{Using the Configuration System}). | as @file{/run/current-system/configuration.scm} (@pxref{Using the | ||||||
|  | Configuration System}). | ||||||
| 
 | 
 | ||||||
| Instead of using this pre-built image, one can also build their own virtual | Instead of using this pre-built image, one can also build their own virtual | ||||||
| machine image using @command{guix system vm-image} (@pxref{Invoking guix | machine image using @command{guix system vm-image} (@pxref{Invoking guix | ||||||
|  |  | ||||||
|  | @ -53,7 +53,8 @@ EXTRA_DIST +=					\ | ||||||
|   $(DOT_VECTOR_GRAPHICS)			\
 |   $(DOT_VECTOR_GRAPHICS)			\
 | ||||||
|   %D%/images/coreutils-size-map.eps		\
 |   %D%/images/coreutils-size-map.eps		\
 | ||||||
|   %D%/environment-gdb.scm			\
 |   %D%/environment-gdb.scm			\
 | ||||||
|   %D%/package-hello.scm |   %D%/package-hello.scm				\
 | ||||||
|  |   %D%/package-hello.json | ||||||
| 
 | 
 | ||||||
| OS_CONFIG_EXAMPLES_TEXI =			\
 | OS_CONFIG_EXAMPLES_TEXI =			\
 | ||||||
|   %D%/os-config-bare-bones.texi			\
 |   %D%/os-config-bare-bones.texi			\
 | ||||||
|  |  | ||||||
							
								
								
									
										31
									
								
								doc/package-hello.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								doc/package-hello.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,31 @@ | ||||||
|  | [ | ||||||
|  |   { | ||||||
|  |     "name": "myhello", | ||||||
|  |     "version": "2.10", | ||||||
|  |     "source": "mirror://gnu/hello/hello-2.10.tar.gz", | ||||||
|  |     "build-system": "gnu", | ||||||
|  |     "arguments": { | ||||||
|  |       "tests?": false | ||||||
|  |     } | ||||||
|  |     "home-page": "https://www.gnu.org/software/hello/", | ||||||
|  |     "synopsis": "Hello, GNU world: An example GNU package", | ||||||
|  |     "description": "GNU Hello prints a greeting.", | ||||||
|  |     "license": "GPL-3.0+", | ||||||
|  |     "native-inputs": ["gettext"] | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     "name": "greeter", | ||||||
|  |     "version": "1.0", | ||||||
|  |     "source": "https://example.com/greeter-1.0.tar.gz", | ||||||
|  |     "build-system": "gnu", | ||||||
|  |     "arguments": { | ||||||
|  |       "test-target": "foo", | ||||||
|  |       "parallel-build?": false, | ||||||
|  |     }, | ||||||
|  |     "home-page": "https://example.com/", | ||||||
|  |     "synopsis": "Greeter using GNU Hello", | ||||||
|  |     "description": "This is a wrapper around GNU Hello.", | ||||||
|  |     "license": "GPL-3.0+", | ||||||
|  |     "inputs": ["myhello", "hello"] | ||||||
|  |   } | ||||||
|  | ] | ||||||
|  | @ -301,25 +301,6 @@ selected keymap." | ||||||
|              ((installer-final-page current-installer) |              ((installer-final-page current-installer) | ||||||
|               result prev-steps)))))))) |               result prev-steps)))))))) | ||||||
| 
 | 
 | ||||||
| (define guile-newt |  | ||||||
|   ;; Guile-Newt with 'form-watch-fd'. |  | ||||||
|   ;; TODO: Remove once a new release is out. |  | ||||||
|   (let ((commit "c3cdeb0b53ac71aedabee669f57d44563c662446") |  | ||||||
|         (revision "2")) |  | ||||||
|     (package |  | ||||||
|       (inherit (@ (gnu packages guile-xyz) guile-newt)) |  | ||||||
|       (name "guile-newt") |  | ||||||
|       (version (git-version "0.0.1" revision commit)) |  | ||||||
|       (source  (origin |  | ||||||
|                  (method git-fetch) |  | ||||||
|                  (uri (git-reference |  | ||||||
|                        (url "https://gitlab.com/mothacehe/guile-newt") |  | ||||||
|                        (commit commit))) |  | ||||||
|                  (file-name (git-file-name name version)) |  | ||||||
|                  (sha256 |  | ||||||
|                   (base32 |  | ||||||
|                    "1gksd1lzgjjh1p9vczghg8jw995d22hm34kbsiv8rcryirv2xy09"))))))) |  | ||||||
| 
 |  | ||||||
| (define (installer-program) | (define (installer-program) | ||||||
|   "Return a file-like object that runs the given INSTALLER." |   "Return a file-like object that runs the given INSTALLER." | ||||||
|   (define init-gettext |   (define init-gettext | ||||||
|  | @ -377,6 +358,7 @@ selected keymap." | ||||||
|                          (gnu installer services) |                          (gnu installer services) | ||||||
|                          (gnu installer timezone) |                          (gnu installer timezone) | ||||||
|                          (gnu installer user) |                          (gnu installer user) | ||||||
|  |                          (gnu installer utils) | ||||||
|                          (gnu installer newt) |                          (gnu installer newt) | ||||||
|                          ((gnu installer newt keymap) |                          ((gnu installer newt keymap) | ||||||
|                           #:select (keyboard-layout->configuration)) |                           #:select (keyboard-layout->configuration)) | ||||||
|  |  | ||||||
|  | @ -393,6 +393,7 @@ interactive connmanctl process." | ||||||
|     (dynamic-wind |     (dynamic-wind | ||||||
|       (const #t) |       (const #t) | ||||||
|       (lambda () |       (lambda () | ||||||
|  |         (setvbuf pipe 'line) | ||||||
|         (run-connection-sequence pipe) |         (run-connection-sequence pipe) | ||||||
|         #t) |         #t) | ||||||
|       (lambda () |       (lambda () | ||||||
|  |  | ||||||
|  | @ -1387,6 +1387,7 @@ dist_patch_DATA =						\ | ||||||
|   %D%/packages/patches/python-pep8-stdlib-tokenize-compat.patch \
 |   %D%/packages/patches/python-pep8-stdlib-tokenize-compat.patch \
 | ||||||
|   %D%/packages/patches/python-pyfakefs-remove-bad-test.patch	\
 |   %D%/packages/patches/python-pyfakefs-remove-bad-test.patch	\
 | ||||||
|   %D%/packages/patches/python-flint-includes.patch		\
 |   %D%/packages/patches/python-flint-includes.patch		\
 | ||||||
|  |   %D%/packages/patches/python-jedi-sort-project-test.patch	\
 | ||||||
|   %D%/packages/patches/python-libxml2-utf8.patch		\
 |   %D%/packages/patches/python-libxml2-utf8.patch		\
 | ||||||
|   %D%/packages/patches/python-mox3-python3.6-compat.patch	\
 |   %D%/packages/patches/python-mox3-python3.6-compat.patch	\
 | ||||||
|   %D%/packages/patches/python-testtools.patch			\
 |   %D%/packages/patches/python-testtools.patch			\
 | ||||||
|  |  | ||||||
|  | @ -790,7 +790,7 @@ connection alive.") | ||||||
| (define-public isc-dhcp | (define-public isc-dhcp | ||||||
|   (let* ((bind-major-version "9") |   (let* ((bind-major-version "9") | ||||||
|          (bind-minor-version "11") |          (bind-minor-version "11") | ||||||
|          (bind-patch-version "14") |          (bind-patch-version "18") | ||||||
|          (bind-release-type "")         ; for patch release, use "-P" |          (bind-release-type "")         ; for patch release, use "-P" | ||||||
|          (bind-release-version "")      ; for patch release, e.g. "6" |          (bind-release-version "")      ; for patch release, e.g. "6" | ||||||
|          (bind-version (string-append bind-major-version |          (bind-version (string-append bind-major-version | ||||||
|  | @ -927,7 +927,7 @@ connection alive.") | ||||||
|                                         "/bind-" bind-version ".tar.gz")) |                                         "/bind-" bind-version ".tar.gz")) | ||||||
|                     (sha256 |                     (sha256 | ||||||
|                      (base32 |                      (base32 | ||||||
|                       "1pv3bvm9dzyz2kqjkw15sgh0hd5fzsv274v5z6jp9c4nb5130fyr")))) |                       "0vws0zzb39mkphj4hhjrgfj9dzw951lc4pfa6pqg5ll5ma51mbsr")))) | ||||||
| 
 | 
 | ||||||
|                 ;; When cross-compiling, we need the cross Coreutils and sed. |                 ;; When cross-compiling, we need the cross Coreutils and sed. | ||||||
|                 ;; Otherwise just use those from %FINAL-INPUTS. |                 ;; Otherwise just use those from %FINAL-INPUTS. | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| ;;; GNU Guix --- Functional package management for GNU | ;;; GNU Guix --- Functional package management for GNU | ||||||
| ;;; Copyright © 2014 John Darringon <jmd@gnu.org> | ;;; Copyright © 2014 John Darringon <jmd@gnu.org> | ||||||
| ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | ;;; Copyright © 2016, 2020 Efraim Flashner <efraim@flashner.co.il> | ||||||
| ;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com> | ;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com> | ||||||
| ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> | ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> | ||||||
| ;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net> | ;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net> | ||||||
|  | @ -157,39 +157,34 @@ Python as well as GUI widgets for GTK and Qt.") | ||||||
|     (license license:lgpl2.1+))) |     (license license:lgpl2.1+))) | ||||||
| 
 | 
 | ||||||
| (define-public qrcodegen-cpp | (define-public qrcodegen-cpp | ||||||
|   ;; Currently this project's installation mechanism only exists as a GitHub |   (package | ||||||
|   ;; pull request, so we build from a recent commit that the proposed patch |     (name "qrcodegen-cpp") | ||||||
|   ;; applies to. |     (version "1.6.0") | ||||||
|   (let ((commit "6ea933f1596d818bd21e9a6b8d2e851fb8b4bcf1") |     (source (origin | ||||||
|         (revision "0")) |               (method git-fetch) | ||||||
|     (package |               (uri (git-reference | ||||||
|       (name "qrcodegen-cpp") |                      (url "https://github.com/nayuki/QR-Code-generator.git") | ||||||
|       (version (git-version "1.5.0" revision commit)) |                      (commit (string-append "v" version)))) | ||||||
|       (source (origin |               (file-name (git-file-name name version)) | ||||||
|                 (method git-fetch) |               (patches (search-patches "qrcodegen-cpp-make-install.patch")) | ||||||
|                 (uri (git-reference |               (sha256 | ||||||
|                        (url "https://github.com/nayuki/QR-Code-generator.git") |                (base32 | ||||||
|                        (commit commit))) |                 "0iq9sv9na0vg996aqrxrjn9rrbiyy7sc9vslw945p3ky22pw3lql")))) | ||||||
|                 (file-name (git-file-name name version)) |     (build-system gnu-build-system) | ||||||
|                 (patches (search-patches "qrcodegen-cpp-make-install.patch")) |     (arguments | ||||||
|                 (sha256 |      `(#:tests? #f ; no test suite | ||||||
|                  (base32 |        #:make-flags | ||||||
|                   "19fcwqmfk2n9p2n01dv2j4x2y2mqip0j1wbmfbxjp34rqkjwcwxm")))) |        (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) | ||||||
|       (build-system gnu-build-system) |        #:phases | ||||||
|       (arguments |        (modify-phases %standard-phases | ||||||
|        `(#:tests? #f ; no test suite |          (delete 'configure) ; No ./configure script | ||||||
|          #:make-flags |          ;; Only build the C++ variant. | ||||||
|          (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) |          (add-after 'unpack 'chdir | ||||||
|          #:phases |            (lambda _ | ||||||
|          (modify-phases %standard-phases |              (chdir "cpp") | ||||||
|            (delete 'configure) ; No ./configure script |              #t))))) | ||||||
|            ;; Only build the C++ variant. |     (synopsis "QR Code generator library") | ||||||
|            (add-after 'unpack 'chdir |     (description "qrcodegen-cpp is a QR code generator library in C++.  The | ||||||
|              (lambda _ |  | ||||||
|                (chdir "cpp") |  | ||||||
|                #t))))) |  | ||||||
|       (synopsis "QR Code generator library") |  | ||||||
|       (description "qrcodegen-cpp is a QR code generator library in C++.  The |  | ||||||
| project also offers Java, Javascript, Python, C, and Rust implementations.") | project also offers Java, Javascript, Python, C, and Rust implementations.") | ||||||
|       (home-page "https://www.nayuki.io/page/qr-code-generator-library") |     (home-page "https://www.nayuki.io/page/qr-code-generator-library") | ||||||
|       (license license:expat)))) |     (license license:expat))) | ||||||
|  |  | ||||||
|  | @ -2,6 +2,7 @@ | ||||||
| ;;; Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net> | ;;; Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net> | ||||||
| ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il> | ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il> | ||||||
| ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org> | ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org> | ||||||
|  | ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr> | ||||||
| ;;; | ;;; | ||||||
| ;;; This file is part of GNU Guix. | ;;; This file is part of GNU Guix. | ||||||
| ;;; | ;;; | ||||||
|  | @ -32,23 +33,23 @@ | ||||||
| (define-public augeas | (define-public augeas | ||||||
|   (package |   (package | ||||||
|     (name "augeas") |     (name "augeas") | ||||||
|     (version "1.11.0") |     (version "1.12.0") | ||||||
|     (source (origin |     (source (origin | ||||||
|               (method url-fetch) |               (method url-fetch) | ||||||
|               (uri (string-append "http://download.augeas.net/augeas-" |               (uri (string-append "http://download.augeas.net/augeas-" | ||||||
|                                   version ".tar.gz")) |                                   version ".tar.gz")) | ||||||
|               (sha256 |               (sha256 | ||||||
|                (base32 |                (base32 | ||||||
|                 "1c507qj6dfn2dnsl27w94zs9r45xrgm07y8bqba9ry2s0psfhg1r")))) |                 "11ybhb13wkkilsn7b416a1dn61m1xrq0lbdpkhp5w61jrk4l469j")))) | ||||||
|     (build-system gnu-build-system) |     (build-system gnu-build-system) | ||||||
|     ;; Marked as "required" in augeas.pc |     ;; Marked as "required" in augeas.pc. | ||||||
|     (propagated-inputs |     (propagated-inputs | ||||||
|      `(("libxml2" ,libxml2))) |      `(("libxml2" ,libxml2))) | ||||||
|     (inputs |     (inputs | ||||||
|      `(("readline" ,readline))) |      `(("readline" ,readline))) | ||||||
|     (native-inputs |     (native-inputs | ||||||
|      `(("pkg-config" ,pkg-config))) |      `(("pkg-config" ,pkg-config))) | ||||||
|     (home-page "http://augeas.net/") |     (home-page "https://augeas.net") | ||||||
|     (synopsis "Edit configuration files programmatically") |     (synopsis "Edit configuration files programmatically") | ||||||
|     (description |     (description | ||||||
|      "Augeas is a library and command line tool for programmatically editing |      "Augeas is a library and command line tool for programmatically editing | ||||||
|  |  | ||||||
|  | @ -92,6 +92,7 @@ | ||||||
|        ("par2cmdline" ,par2cmdline) |        ("par2cmdline" ,par2cmdline) | ||||||
|        ("python-pexpect" ,python2-pexpect) |        ("python-pexpect" ,python2-pexpect) | ||||||
|        ("python-fasteners" ,python2-fasteners) |        ("python-fasteners" ,python2-fasteners) | ||||||
|  |        ("tzdata" ,tzdata-for-tests) | ||||||
|        ("mock" ,python2-mock))) |        ("mock" ,python2-mock))) | ||||||
|     (propagated-inputs |     (propagated-inputs | ||||||
|      `(("lockfile" ,python2-lockfile) |      `(("lockfile" ,python2-lockfile) | ||||||
|  | @ -100,8 +101,7 @@ | ||||||
|      `(("librsync" ,librsync-0.9) |      `(("librsync" ,librsync-0.9) | ||||||
|        ("lftp" ,lftp) |        ("lftp" ,lftp) | ||||||
|        ("gnupg" ,gnupg)                 ; gpg executable needed |        ("gnupg" ,gnupg)                 ; gpg executable needed | ||||||
|        ("util-linux" ,util-linux)       ; for setsid |        ("util-linux" ,util-linux)))     ; for setsid | ||||||
|        ("tzdata" ,tzdata))) |  | ||||||
|     (arguments |     (arguments | ||||||
|      `(#:python ,python-2               ; setup assumes Python 2 |      `(#:python ,python-2               ; setup assumes Python 2 | ||||||
|        #:test-target "test" |        #:test-target "test" | ||||||
|  |  | ||||||
|  | @ -2313,6 +2313,8 @@ possible, parallelization is achieved using the BiocParallel framework.") | ||||||
|        ("r-tidyr" ,r-tidyr) |        ("r-tidyr" ,r-tidyr) | ||||||
|        ("r-tidyselect" ,r-tidyselect) |        ("r-tidyselect" ,r-tidyselect) | ||||||
|        ("r-vim" ,r-vim))) |        ("r-vim" ,r-vim))) | ||||||
|  |     (native-inputs | ||||||
|  |      `(("r-nbconvertr" ,r-nbconvertr))) ; for vignettes | ||||||
|     (home-page "https://bioconductor.org/packages/destiny/") |     (home-page "https://bioconductor.org/packages/destiny/") | ||||||
|     (synopsis "Create and plot diffusion maps") |     (synopsis "Create and plot diffusion maps") | ||||||
|     (description "This package provides tools to create and plot diffusion |     (description "This package provides tools to create and plot diffusion | ||||||
|  | @ -3529,6 +3531,8 @@ to multiple hypothesis correction.") | ||||||
|        ("r-qvalue" ,r-qvalue) |        ("r-qvalue" ,r-qvalue) | ||||||
|        ("r-reshape2" ,r-reshape2) |        ("r-reshape2" ,r-reshape2) | ||||||
|        ("r-s4vectors" ,r-s4vectors))) |        ("r-s4vectors" ,r-s4vectors))) | ||||||
|  |     (native-inputs | ||||||
|  |      `(("r-knitr" ,r-knitr))) | ||||||
|     (home-page "https://guangchuangyu.github.io/software/DOSE/") |     (home-page "https://guangchuangyu.github.io/software/DOSE/") | ||||||
|     (synopsis "Disease ontology semantic and enrichment analysis") |     (synopsis "Disease ontology semantic and enrichment analysis") | ||||||
|     (description |     (description | ||||||
|  | @ -3899,6 +3903,8 @@ further downstream analysis on its output.") | ||||||
|      `(("r-biocparallel" ,r-biocparallel) |      `(("r-biocparallel" ,r-biocparallel) | ||||||
|        ("r-ellipse" ,r-ellipse) |        ("r-ellipse" ,r-ellipse) | ||||||
|        ("r-ggplot2" ,r-ggplot2))) |        ("r-ggplot2" ,r-ggplot2))) | ||||||
|  |     (native-inputs | ||||||
|  |      `(("r-knitr" ,r-knitr))) | ||||||
|     (home-page "https://bioconductor.org/packages/bacon/") |     (home-page "https://bioconductor.org/packages/bacon/") | ||||||
|     (synopsis "Controlling bias and inflation in association studies") |     (synopsis "Controlling bias and inflation in association studies") | ||||||
|     (description |     (description | ||||||
|  | @ -6733,6 +6739,8 @@ using whole genome sequencing data.") | ||||||
|      `(("r-data-table" ,r-data-table) |      `(("r-data-table" ,r-data-table) | ||||||
|        ("r-ggplot2" ,r-ggplot2) |        ("r-ggplot2" ,r-ggplot2) | ||||||
|        ("r-metap" ,r-metap))) |        ("r-metap" ,r-metap))) | ||||||
|  |     (native-inputs | ||||||
|  |      `(("r-knitr" ,r-knitr))) | ||||||
|     (home-page "https://cran.r-project.org/web/packages/ActivePathways/") |     (home-page "https://cran.r-project.org/web/packages/ActivePathways/") | ||||||
|     (synopsis "Multivariate pathway enrichment analysis") |     (synopsis "Multivariate pathway enrichment analysis") | ||||||
|     (description |     (description | ||||||
|  | @ -7105,6 +7113,8 @@ structures.") | ||||||
|        ("r-rjson" ,r-rjson) |        ("r-rjson" ,r-rjson) | ||||||
|        ("r-rsqlite" ,r-rsqlite) |        ("r-rsqlite" ,r-rsqlite) | ||||||
|        ("r-xml" ,r-xml))) |        ("r-xml" ,r-xml))) | ||||||
|  |     (native-inputs | ||||||
|  |      `(("r-knitr" ,r-knitr))) | ||||||
|     (home-page "https://github.com/TylerBackman/bioassayR") |     (home-page "https://github.com/TylerBackman/bioassayR") | ||||||
|     (synopsis "Cross-target analysis of small molecule bioactivity") |     (synopsis "Cross-target analysis of small molecule bioactivity") | ||||||
|     (description |     (description | ||||||
|  |  | ||||||
|  | @ -2399,13 +2399,13 @@ files.") | ||||||
| (define-public python-pybigwig | (define-public python-pybigwig | ||||||
|   (package |   (package | ||||||
|     (name "python-pybigwig") |     (name "python-pybigwig") | ||||||
|     (version "0.3.12") |     (version "0.3.17") | ||||||
|     (source (origin |     (source (origin | ||||||
|               (method url-fetch) |               (method url-fetch) | ||||||
|               (uri (pypi-uri "pyBigWig" version)) |               (uri (pypi-uri "pyBigWig" version)) | ||||||
|               (sha256 |               (sha256 | ||||||
|                (base32 |                (base32 | ||||||
|                 "00w4kfnm2c5l7wdwr2nj1z5djv8kzgf7h1zhsgv6njff1rwr26g0")) |                 "157x6v48y299zm382krf1dw08fdxg95im8lnabhp5vc94s04zxj1")) | ||||||
|               (modules '((guix build utils))) |               (modules '((guix build utils))) | ||||||
|               (snippet |               (snippet | ||||||
|                '(begin |                '(begin | ||||||
|  | @ -13642,32 +13642,34 @@ fasta subsequences.") | ||||||
| (define-public python-cooler | (define-public python-cooler | ||||||
|   (package |   (package | ||||||
|     (name "python-cooler") |     (name "python-cooler") | ||||||
|     (version "0.7.11") |     (version "0.8.7") | ||||||
|     (source |     (source | ||||||
|      (origin |      (origin | ||||||
|        (method url-fetch) |        (method url-fetch) | ||||||
|        (uri (pypi-uri "cooler" version)) |        (uri (pypi-uri "cooler" version)) | ||||||
|        (sha256 |        (sha256 | ||||||
|         (base32 |         (base32 | ||||||
|          "08k5nxnxa6qsbk15z5z0q01n28042k87wi4905hh95rzqib15mhx")))) |          "01g6gqix9ba27sappz6nfyiwabzrlf8i5fn8kwcz8ra356cq9crp")))) | ||||||
|     (build-system python-build-system) |     (build-system python-build-system) | ||||||
|     (propagated-inputs |     (propagated-inputs | ||||||
|      `(("python-biopython" ,python-biopython) |      `(("python-asciitree" ,python-asciitree) | ||||||
|  |        ("python-biopython" ,python-biopython) | ||||||
|        ("python-click" ,python-click) |        ("python-click" ,python-click) | ||||||
|        ("python-cytoolz" ,python-cytoolz) |        ("python-cytoolz" ,python-cytoolz) | ||||||
|        ("python-dask" ,python-dask) |        ("python-dask" ,python-dask) | ||||||
|        ("python-h5py" ,python-h5py) |        ("python-h5py" ,python-h5py) | ||||||
|        ("python-multiprocess" ,python-multiprocess) |        ("python-multiprocess" ,python-multiprocess) | ||||||
|  |        ("python-numpy" ,python-numpy) | ||||||
|        ("python-pandas" ,python-pandas) |        ("python-pandas" ,python-pandas) | ||||||
|        ("python-pyfaidx" ,python-pyfaidx) |        ("python-pyfaidx" ,python-pyfaidx) | ||||||
|        ("python-pypairix" ,python-pypairix) |        ("python-pypairix" ,python-pypairix) | ||||||
|        ("python-pysam" ,python-pysam) |        ("python-pysam" ,python-pysam) | ||||||
|        ("python-scipy" ,python-scipy))) |        ("python-pyyaml" ,python-pyyaml) | ||||||
|  |        ("python-scipy" ,python-scipy) | ||||||
|  |        ("python-simplejson" ,python-simplejson))) | ||||||
|     (native-inputs |     (native-inputs | ||||||
|      `(("python-mock" ,python-mock) |      `(("python-mock" ,python-mock) | ||||||
|        ("python-nose" ,python-nose) |        ("python-pytest" ,python-pytest))) | ||||||
|        ("python-numpydoc" ,python-numpydoc) |  | ||||||
|        ("python-sphinx" ,python-sphinx))) |  | ||||||
|     (home-page "https://github.com/mirnylab/cooler") |     (home-page "https://github.com/mirnylab/cooler") | ||||||
|     (synopsis "Sparse binary format for genomic interaction matrices") |     (synopsis "Sparse binary format for genomic interaction matrices") | ||||||
|     (description |     (description | ||||||
|  | @ -13676,6 +13678,46 @@ storage format, called @code{cool}, used to store genomic interaction data, | ||||||
| such as Hi-C contact matrices.") | such as Hi-C contact matrices.") | ||||||
|     (license license:bsd-3))) |     (license license:bsd-3))) | ||||||
| 
 | 
 | ||||||
|  | (define-public python-hicmatrix | ||||||
|  |   (package | ||||||
|  |     (name "python-hicmatrix") | ||||||
|  |     (version "12") | ||||||
|  |     (source | ||||||
|  |      (origin | ||||||
|  |        ;; Version 12 is not available on pypi. | ||||||
|  |        (method git-fetch) | ||||||
|  |        (uri (git-reference | ||||||
|  |              (url "https://github.com/deeptools/HiCMatrix.git") | ||||||
|  |              (commit version))) | ||||||
|  |        (file-name (git-file-name name version)) | ||||||
|  |        (sha256 | ||||||
|  |         (base32 | ||||||
|  |          "1xhdyx16f3brgxgxybixdi64ki8nbbkq5vk4h9ahi11pzpjfn1pj")))) | ||||||
|  |     (build-system python-build-system) | ||||||
|  |     (arguments | ||||||
|  |      `(#:phases | ||||||
|  |        (modify-phases %standard-phases | ||||||
|  |          (add-after 'unpack 'relax-requirements | ||||||
|  |            (lambda _ | ||||||
|  |              (substitute* '("requirements.txt" | ||||||
|  |                             "setup.py") | ||||||
|  |                (("cooler *=+ *0.8.5") | ||||||
|  |                 "cooler==0.8.*")) | ||||||
|  |              #t))))) | ||||||
|  |     (propagated-inputs | ||||||
|  |      `(("python-cooler" ,python-cooler) | ||||||
|  |        ("python-intervaltree" ,python-intervaltree) | ||||||
|  |        ("python-numpy" ,python-numpy) | ||||||
|  |        ("python-pandas" ,python-pandas) | ||||||
|  |        ("python-scipy" ,python-scipy) | ||||||
|  |        ("python-tables" ,python-tables))) | ||||||
|  |     (home-page "https://github.com/deeptools/HiCMatrix/") | ||||||
|  |     (synopsis "HiCMatrix class for HiCExplorer and pyGenomeTracks") | ||||||
|  |     (description | ||||||
|  |      "This helper package implements the @code{HiCMatrix} class for | ||||||
|  | the HiCExplorer and pyGenomeTracks packages.") | ||||||
|  |     (license license:gpl3+))) | ||||||
|  | 
 | ||||||
| (define-public python-hicexplorer | (define-public python-hicexplorer | ||||||
|   (package |   (package | ||||||
|     (name "python-hicexplorer") |     (name "python-hicexplorer") | ||||||
|  | @ -13732,23 +13774,35 @@ genomic scores), long range contacts and the visualization of viewpoints.") | ||||||
| (define-public python-pygenometracks | (define-public python-pygenometracks | ||||||
|   (package |   (package | ||||||
|     (name "python-pygenometracks") |     (name "python-pygenometracks") | ||||||
|     (version "2.0") |     (version "3.3") | ||||||
|     (source |     (source | ||||||
|      (origin |      (origin | ||||||
|        (method url-fetch) |        (method url-fetch) | ||||||
|        (uri (pypi-uri "pyGenomeTracks" version)) |        (uri (pypi-uri "pyGenomeTracks" version)) | ||||||
|        (sha256 |        (sha256 | ||||||
|         (base32 |         (base32 | ||||||
|          "1fws6bqsyy9kj3qiabhkqx4wd4i775gsxnhszqd3zg7w67sc1ic5")))) |          "16laa0wnf4qn9fb9ych4w1vqhqwjss70v0y0f6wp4gwqfrlgac0f")))) | ||||||
|     (build-system python-build-system) |     (build-system python-build-system) | ||||||
|  |     (arguments | ||||||
|  |      `(#:tests? #f ; there are none | ||||||
|  |        #:phases | ||||||
|  |        (modify-phases %standard-phases | ||||||
|  |          (add-after 'unpack 'relax-requirements | ||||||
|  |            (lambda _ | ||||||
|  |              (substitute* "setup.py" | ||||||
|  |                (("matplotlib ==3.1.1") | ||||||
|  |                 "matplotlib >=3.1.1")) | ||||||
|  |              #t))))) | ||||||
|     (propagated-inputs |     (propagated-inputs | ||||||
|      `(("python-configparser" ,python-configparser) |      `(("python-future" ,python-future) | ||||||
|        ("python-future" ,python-future) |        ("python-gffutils" ,python-gffutils) | ||||||
|        ("python-hicexplorer" ,python-hicexplorer) |        ("python-hicmatrix" ,python-hicmatrix) | ||||||
|        ("python-intervaltree" ,python-intervaltree) |        ("python-intervaltree" ,python-intervaltree) | ||||||
|        ("python-matplotlib" ,python-matplotlib) |        ("python-matplotlib" ,python-matplotlib) | ||||||
|        ("python-numpy" ,python-numpy) |        ("python-numpy" ,python-numpy) | ||||||
|        ("python-pybigwig" ,python-pybigwig))) |        ("python-pybigwig" ,python-pybigwig) | ||||||
|  |        ("python-pysam" ,python-pysam) | ||||||
|  |        ("python-tqdm" ,python-tqdm))) | ||||||
|     (native-inputs |     (native-inputs | ||||||
|      `(("python-pytest" ,python-pytest))) |      `(("python-pytest" ,python-pytest))) | ||||||
|     (home-page "https://pygenometracks.readthedocs.io") |     (home-page "https://pygenometracks.readthedocs.io") | ||||||
|  |  | ||||||
|  | @ -186,7 +186,17 @@ data units.") | ||||||
|              (uri (pypi-uri "khal" version)) |              (uri (pypi-uri "khal" version)) | ||||||
|              (sha256 |              (sha256 | ||||||
|               (base32 |               (base32 | ||||||
|                "1r8bkgjwkh7i8ygvsv51h1cnax50sb183vafg66x5snxf3dgjl6l")))) |                "1r8bkgjwkh7i8ygvsv51h1cnax50sb183vafg66x5snxf3dgjl6l")) | ||||||
|  |              (patches | ||||||
|  |                (list | ||||||
|  |                  (origin | ||||||
|  |                    (method url-fetch) | ||||||
|  |                    ;; This patch fixes an issue with python-urwid-2.1.0 | ||||||
|  |                    (uri "https://github.com/pimutils/khal/commit/2c5990c2de2015b251ba23617faa40ee11b8c22a.patch") | ||||||
|  |                    (file-name "khal-compat-urwid-2.1.0.patch") | ||||||
|  |                    (sha256 | ||||||
|  |                     (base32 | ||||||
|  |                      "11nd8hkjz68imwqqn0p54zmb53z2pfxmzchaviy7jc1ky5s9l663"))))))) | ||||||
|     (build-system python-build-system) |     (build-system python-build-system) | ||||||
|     (arguments |     (arguments | ||||||
|      `(#:phases (modify-phases %standard-phases |      `(#:phases (modify-phases %standard-phases | ||||||
|  | @ -219,9 +229,8 @@ data units.") | ||||||
|        ("python-sphinxcontrib-newsfeed" ,python-sphinxcontrib-newsfeed) |        ("python-sphinxcontrib-newsfeed" ,python-sphinxcontrib-newsfeed) | ||||||
|        ("python-sphinx" ,python-sphinx))) |        ("python-sphinx" ,python-sphinx))) | ||||||
|     (inputs |     (inputs | ||||||
|      `(("sqlite" ,sqlite))) |      `(("sqlite" ,sqlite) | ||||||
|     (propagated-inputs |        ("python-configobj" ,python-configobj) | ||||||
|      `(("python-configobj" ,python-configobj) |  | ||||||
|        ("python-dateutil" ,python-dateutil) |        ("python-dateutil" ,python-dateutil) | ||||||
|        ("python-icalendar" ,python-icalendar) |        ("python-icalendar" ,python-icalendar) | ||||||
|        ("python-tzlocal" ,python-tzlocal) |        ("python-tzlocal" ,python-tzlocal) | ||||||
|  |  | ||||||
|  | @ -248,7 +248,7 @@ from forcing GEXP-PROMISE." | ||||||
|                       #:system system |                       #:system system | ||||||
|                       #:guile-for-build guile))) |                       #:guile-for-build guile))) | ||||||
| 
 | 
 | ||||||
| (define %chromium-version "81.0.4044.92") | (define %chromium-version "81.0.4044.113") | ||||||
| (define %ungoogled-revision "b484ad4c0bdb696c86d941798ae6b0e2bd0db35d") | (define %ungoogled-revision "b484ad4c0bdb696c86d941798ae6b0e2bd0db35d") | ||||||
| (define %debian-revision "debian/81.0.4044.92-1") | (define %debian-revision "debian/81.0.4044.92-1") | ||||||
| (define package-revision "0") | (define package-revision "0") | ||||||
|  | @ -264,7 +264,7 @@ from forcing GEXP-PROMISE." | ||||||
|                         %chromium-version ".tar.xz")) |                         %chromium-version ".tar.xz")) | ||||||
|     (sha256 |     (sha256 | ||||||
|      (base32 |      (base32 | ||||||
|       "0i0szd749ihb08rxnsmsbxq75b6x952wpk94jwc0ncv6gb83zkx2")))) |       "0hsxxw7fm1p8g53msqb644v8vr4cpvjmpln444c2268rm43yik17")))) | ||||||
| 
 | 
 | ||||||
| (define %ungoogled-origin | (define %ungoogled-origin | ||||||
|   (origin |   (origin | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ | ||||||
| ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> | ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> | ||||||
| ;;; Copyright © 2016, 2017 Mathieu Lirzin <mthl@gnu.org> | ;;; Copyright © 2016, 2017 Mathieu Lirzin <mthl@gnu.org> | ||||||
| ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> | ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> | ||||||
| ;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net> | ;;; Copyright © 2017, 2019, 2020 Ricardo Wurmus <rekado@elephly.net> | ||||||
| ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org> | ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org> | ||||||
| ;;; | ;;; | ||||||
| ;;; This file is part of GNU Guix. | ;;; This file is part of GNU Guix. | ||||||
|  | @ -47,20 +47,20 @@ | ||||||
|   #:use-module (guix build-system gnu)) |   #:use-module (guix build-system gnu)) | ||||||
| 
 | 
 | ||||||
| (define-public cuirass | (define-public cuirass | ||||||
|   (let ((commit "b9031db946ff89a39e1507b430f64402b0e9572a") |   (let ((commit "27af1d34646f4e3fca09283cb52caa8b89cbb2b1") | ||||||
|         (revision "28")) |         (revision "29")) | ||||||
|     (package |     (package | ||||||
|       (name "cuirass") |       (name "cuirass") | ||||||
|       (version (string-append "0.0.1-" revision "." (string-take commit 7))) |       (version (git-version "0.0.1" revision commit)) | ||||||
|       (source (origin |       (source (origin | ||||||
|                 (method git-fetch) |                 (method git-fetch) | ||||||
|                 (uri (git-reference |                 (uri (git-reference | ||||||
|                       (url "https://git.savannah.gnu.org/git/guix/guix-cuirass.git") |                       (url "https://git.savannah.gnu.org/git/guix/guix-cuirass.git") | ||||||
|                       (commit commit))) |                       (commit commit))) | ||||||
|                 (file-name (string-append name "-" version)) |                 (file-name (git-file-name name version)) | ||||||
|                 (sha256 |                 (sha256 | ||||||
|                  (base32 |                  (base32 | ||||||
|                   "103smfbdpgaw17xw3vc9cb3nfisrx64k71rpzn8g35f3jz7bxdcf")))) |                   "199fzv4d18qslcggl7lj42ib600nckp0c40x7ahnb4rgnjw8ppyi")))) | ||||||
|       (build-system gnu-build-system) |       (build-system gnu-build-system) | ||||||
|       (arguments |       (arguments | ||||||
|        '(#:modules ((guix build utils) |        '(#:modules ((guix build utils) | ||||||
|  |  | ||||||
|  | @ -503,7 +503,7 @@ than gzip and 15 % smaller output than bzip2.") | ||||||
|                                             "/share/zoneinfo")) |                                             "/share/zoneinfo")) | ||||||
|              #t))))) |              #t))))) | ||||||
|     (native-inputs |     (native-inputs | ||||||
|      `(("tzdata" ,tzdata))) |      `(("tzdata" ,tzdata-for-tests))) | ||||||
|     (home-page "https://fragglet.github.com/lhasa/") |     (home-page "https://fragglet.github.com/lhasa/") | ||||||
|     (synopsis "LHA archive decompressor") |     (synopsis "LHA archive decompressor") | ||||||
|     (description "Lhasa is a replacement for the Unix LHA tool, for |     (description "Lhasa is a replacement for the Unix LHA tool, for | ||||||
|  |  | ||||||
|  | @ -12306,6 +12306,8 @@ select colors to use in your R code.") | ||||||
|        ("r-scales" ,r-scales) |        ("r-scales" ,r-scales) | ||||||
|        ("r-shiny" ,r-shiny) |        ("r-shiny" ,r-shiny) | ||||||
|        ("r-shinyjs" ,r-shinyjs))) |        ("r-shinyjs" ,r-shinyjs))) | ||||||
|  |     (native-inputs | ||||||
|  |      `(("r-knitr" ,r-knitr))) | ||||||
|     (home-page "https://github.com/daattali/ggExtra") |     (home-page "https://github.com/daattali/ggExtra") | ||||||
|     (synopsis "Marginal histograms for ggplot2 and other enhancements") |     (synopsis "Marginal histograms for ggplot2 and other enhancements") | ||||||
|     (description |     (description | ||||||
|  | @ -18006,6 +18008,8 @@ allowed.") | ||||||
|        ("r-rsolnp" ,r-rsolnp) |        ("r-rsolnp" ,r-rsolnp) | ||||||
|        ("r-shiny" ,r-shiny) |        ("r-shiny" ,r-shiny) | ||||||
|        ("r-shinydashboard" ,r-shinydashboard))) |        ("r-shinydashboard" ,r-shinydashboard))) | ||||||
|  |     (native-inputs | ||||||
|  |      `(("r-knitr" ,r-knitr))) | ||||||
|     (home-page "https://github.com/Wenchao-Ma/GDINA") |     (home-page "https://github.com/Wenchao-Ma/GDINA") | ||||||
|     (synopsis "Generalized DINA model framework") |     (synopsis "Generalized DINA model framework") | ||||||
|     (description |     (description | ||||||
|  | @ -20620,7 +20624,7 @@ techniques to average Bayesian predictive distributions.") | ||||||
|                                     "/share/zoneinfo")) |                                     "/share/zoneinfo")) | ||||||
|              #t))))) |              #t))))) | ||||||
|     (native-inputs |     (native-inputs | ||||||
|      `(("tzdata" ,tzdata) |      `(("tzdata" ,tzdata-for-tests) | ||||||
|        ("pandoc" ,ghc-pandoc))) |        ("pandoc" ,ghc-pandoc))) | ||||||
|     (propagated-inputs |     (propagated-inputs | ||||||
|      `(("r-bh" ,r-bh) |      `(("r-bh" ,r-bh) | ||||||
|  | @ -21102,3 +21106,28 @@ client).") | ||||||
| designs with and without early outcomes for treatment selection and | designs with and without early outcomes for treatment selection and | ||||||
| subpopulation type designs.") | subpopulation type designs.") | ||||||
|     (license license:gpl3))) |     (license license:gpl3))) | ||||||
|  | 
 | ||||||
|  | (define-public r-nbconvertr | ||||||
|  |   (package | ||||||
|  |     (name "r-nbconvertr") | ||||||
|  |     (version "1.3.2") | ||||||
|  |     (source | ||||||
|  |      (origin | ||||||
|  |        (method url-fetch) | ||||||
|  |        (uri (cran-uri "nbconvertR" version)) | ||||||
|  |        (sha256 | ||||||
|  |         (base32 | ||||||
|  |          "0yhmz177r1miain65vspclahhz8cg7638ldbpsw8ylgf7a60l0sg")))) | ||||||
|  |     (properties `((upstream-name . "nbconvertR"))) | ||||||
|  |     (build-system r-build-system) | ||||||
|  |     (inputs | ||||||
|  |      `(("jupyter" ,python-nbconvert) | ||||||
|  |        ("pandoc" ,ghc-pandoc))) | ||||||
|  |     (home-page "https://cran.r-project.org/web/packages/nbconvertR/") | ||||||
|  |     (synopsis "Vignette engine wrapping Jupyter notebooks") | ||||||
|  |     (description | ||||||
|  |      "This package calls the Jupyter script @code{nbconvert} to create | ||||||
|  | vignettes from notebooks.  Those notebooks (@code{.ipynb} files) are files | ||||||
|  | containing rich text, code, and its output.  Code cells can be edited and | ||||||
|  | evaluated interactively.") | ||||||
|  |     (license license:gpl3))) | ||||||
|  |  | ||||||
|  | @ -508,7 +508,7 @@ replacement for the code@{python-memcached} library.") | ||||||
|        ("python" ,python-2) |        ("python" ,python-2) | ||||||
|        ("python2-pymongo" ,python2-pymongo) |        ("python2-pymongo" ,python2-pymongo) | ||||||
|        ("python2-pyyaml" ,python2-pyyaml) |        ("python2-pyyaml" ,python2-pyyaml) | ||||||
|        ("tzdata" ,tzdata))) |        ("tzdata" ,tzdata-for-tests))) | ||||||
|     (arguments |     (arguments | ||||||
|      `(#:scons ,scons-python2 |      `(#:scons ,scons-python2 | ||||||
|        #:phases |        #:phases | ||||||
|  |  | ||||||
|  | @ -45,6 +45,7 @@ | ||||||
|   #:use-module (gnu packages linux) |   #:use-module (gnu packages linux) | ||||||
|   #:use-module (gnu packages llvm) |   #:use-module (gnu packages llvm) | ||||||
|   #:use-module (gnu packages man) |   #:use-module (gnu packages man) | ||||||
|  |   #:use-module (gnu packages maths) | ||||||
|   #:use-module (gnu packages mono) |   #:use-module (gnu packages mono) | ||||||
|   #:use-module (gnu packages ocaml) |   #:use-module (gnu packages ocaml) | ||||||
|   #:use-module (gnu packages package-management) |   #:use-module (gnu packages package-management) | ||||||
|  | @ -68,7 +69,7 @@ | ||||||
|   #:use-module (ice-9 match)) |   #:use-module (ice-9 match)) | ||||||
| 
 | 
 | ||||||
| (define-public diffoscope | (define-public diffoscope | ||||||
|   (let ((version "139")) |   (let ((version "141")) | ||||||
|     (package |     (package | ||||||
|       (name "diffoscope") |       (name "diffoscope") | ||||||
|       (version version) |       (version version) | ||||||
|  | @ -80,7 +81,7 @@ | ||||||
|                 (file-name (git-file-name name version)) |                 (file-name (git-file-name name version)) | ||||||
|                 (sha256 |                 (sha256 | ||||||
|                  (base32 |                  (base32 | ||||||
|                   "1k4yjyvmn5nfdapkwgkr9gzpn18kr4c58n0f32pfkx4yakfqkk4i")))) |                   "0pls2jryx394ysaz0g8h959lhrsdqak9bkxjd5r6sdckgiikplkj")))) | ||||||
|       (build-system python-build-system) |       (build-system python-build-system) | ||||||
|       (arguments |       (arguments | ||||||
|        `(#:phases (modify-phases %standard-phases |        `(#:phases (modify-phases %standard-phases | ||||||
|  | @ -91,6 +92,12 @@ | ||||||
|                       (lambda _ |                       (lambda _ | ||||||
|                         (substitute* "setup.py" |                         (substitute* "setup.py" | ||||||
|                           (("'python-magic',") "")))) |                           (("'python-magic',") "")))) | ||||||
|  |                     ;; Patch in support for known tools | ||||||
|  |                     (add-after 'unpack 'add-known-tools | ||||||
|  |                       (lambda _ | ||||||
|  |                         (substitute* "diffoscope/external_tools.py" | ||||||
|  |                           (("'debian': 'hdf5-tools'") | ||||||
|  |                            "'debian': 'hdf5-tools', 'guix': 'hdf5'")))) | ||||||
|                     ;; This test is broken because our `file` package has a |                     ;; This test is broken because our `file` package has a | ||||||
|                     ;; bug in berkeley-db file type detection. |                     ;; bug in berkeley-db file type detection. | ||||||
|                     (add-after 'unpack 'remove-berkeley-test |                     (add-after 'unpack 'remove-berkeley-test | ||||||
|  | @ -189,6 +196,7 @@ | ||||||
|                        ("giflib:bin" ,giflib "bin") |                        ("giflib:bin" ,giflib "bin") | ||||||
|                        ("gnumeric" ,gnumeric) |                        ("gnumeric" ,gnumeric) | ||||||
|                        ("gnupg" ,gnupg) |                        ("gnupg" ,gnupg) | ||||||
|  |                        ("hdf5" ,hdf5) | ||||||
|                        ("imagemagick" ,imagemagick) |                        ("imagemagick" ,imagemagick) | ||||||
|                        ("libarchive" ,libarchive) |                        ("libarchive" ,libarchive) | ||||||
|                        ("llvm" ,llvm) |                        ("llvm" ,llvm) | ||||||
|  |  | ||||||
|  | @ -115,7 +115,7 @@ and BOOTP/TFTP for network booting of diskless machines.") | ||||||
| (define-public isc-bind | (define-public isc-bind | ||||||
|   (package |   (package | ||||||
|     (name "bind") |     (name "bind") | ||||||
|     (version "9.16.1") |     (version "9.16.2") | ||||||
|     (source (origin |     (source (origin | ||||||
|               (method url-fetch) |               (method url-fetch) | ||||||
|               (uri (string-append |               (uri (string-append | ||||||
|  | @ -123,7 +123,7 @@ and BOOTP/TFTP for network booting of diskless machines.") | ||||||
|                     "/bind-" version ".tar.xz")) |                     "/bind-" version ".tar.xz")) | ||||||
|               (sha256 |               (sha256 | ||||||
|                (base32 |                (base32 | ||||||
|                 "14ayswxnyaqwb935iqdi1w9ih3zs0a0va59j4cyi5f9mh7kxf4x9")))) |                 "0gwr4p14zy5jqq050n762rfc33km51qwipcwy6bsvk55ziybgrfr")))) | ||||||
|     (build-system gnu-build-system) |     (build-system gnu-build-system) | ||||||
|     (outputs `("out" "utils")) |     (outputs `("out" "utils")) | ||||||
|     (inputs |     (inputs | ||||||
|  |  | ||||||
|  | @ -6,6 +6,7 @@ | ||||||
| ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> | ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> | ||||||
| ;;; Copyright © 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr> | ;;; Copyright © 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr> | ||||||
| ;;; Copyright © 2020 Robert Smith <robertsmith@posteo.net> | ;;; Copyright © 2020 Robert Smith <robertsmith@posteo.net> | ||||||
|  | ;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org> | ||||||
| ;;; | ;;; | ||||||
| ;;; This file is part of GNU Guix. | ;;; This file is part of GNU Guix. | ||||||
| ;;; | ;;; | ||||||
|  | @ -31,6 +32,7 @@ | ||||||
|   #:use-module (gnu packages compression) |   #:use-module (gnu packages compression) | ||||||
|   #:use-module (gnu packages curl) |   #:use-module (gnu packages curl) | ||||||
|   #:use-module (gnu packages databases) |   #:use-module (gnu packages databases) | ||||||
|  |   #:use-module (gnu packages flex) | ||||||
|   #:use-module (gnu packages fonts) |   #:use-module (gnu packages fonts) | ||||||
|   #:use-module (gnu packages freedesktop) |   #:use-module (gnu packages freedesktop) | ||||||
|   #:use-module (gnu packages game-development) |   #:use-module (gnu packages game-development) | ||||||
|  | @ -43,12 +45,14 @@ | ||||||
|   #:use-module (gnu packages kde) |   #:use-module (gnu packages kde) | ||||||
|   #:use-module (gnu packages kde-frameworks) ; extra-cmake-modules |   #:use-module (gnu packages kde-frameworks) ; extra-cmake-modules | ||||||
|   #:use-module (gnu packages mp3) |   #:use-module (gnu packages mp3) | ||||||
|  |   #:use-module (gnu packages ncurses) | ||||||
|   #:use-module (gnu packages perl) |   #:use-module (gnu packages perl) | ||||||
|   #:use-module (gnu packages pkg-config) |   #:use-module (gnu packages pkg-config) | ||||||
|   #:use-module (gnu packages python) |   #:use-module (gnu packages python) | ||||||
|   #:use-module (gnu packages python-web) |   #:use-module (gnu packages python-web) | ||||||
|   #:use-module (gnu packages python-xyz) |   #:use-module (gnu packages python-xyz) | ||||||
|   #:use-module (gnu packages qt) |   #:use-module (gnu packages qt) | ||||||
|  |   #:use-module (gnu packages readline) | ||||||
|   #:use-module (gnu packages sdl) |   #:use-module (gnu packages sdl) | ||||||
|   #:use-module (gnu packages sqlite) |   #:use-module (gnu packages sqlite) | ||||||
|   #:use-module (gnu packages texinfo) |   #:use-module (gnu packages texinfo) | ||||||
|  | @ -935,3 +939,40 @@ TuxMath also includes Factoroids, a game that gives practice in | ||||||
| factoring numbers and simplifying fractions, as well as zapping rocks | factoring numbers and simplifying fractions, as well as zapping rocks | ||||||
| floating through space.") | floating through space.") | ||||||
|     (license license:gpl3+))) |     (license license:gpl3+))) | ||||||
|  | 
 | ||||||
|  | (define-public mdk | ||||||
|  |   (package | ||||||
|  |     (name "mdk") | ||||||
|  |     (version "1.2.10") | ||||||
|  |     (source | ||||||
|  |     (origin | ||||||
|  |       (method url-fetch) | ||||||
|  |       (uri (string-append "mirror://gnu/mdk/v1.2.10/mdk-" | ||||||
|  |                           version ".tar.gz")) | ||||||
|  |       (sha256 | ||||||
|  |         (base32 | ||||||
|  |           "1rwcq2b5vvv7318j92nxc5dayj27dpfhzc4rjiv4ccvsc0x35x5h")))) | ||||||
|  |    (build-system gnu-build-system) | ||||||
|  |     (arguments | ||||||
|  |      `(#:configure-flags (list "--enable-gui=yes" "-with-readline=yes"))) | ||||||
|  |     (native-inputs | ||||||
|  |      `(("flex" ,flex) | ||||||
|  |        ("pkg-config" ,pkg-config) | ||||||
|  |        ("intltool" ,intltool) | ||||||
|  |        ("ncurses" ,ncurses))) | ||||||
|  |    (inputs | ||||||
|  |     `(("readline" ,readline) | ||||||
|  |       ("glib" ,glib) | ||||||
|  |       ("gtk+" ,gtk+) | ||||||
|  |       ("pango" ,pango) | ||||||
|  |       ("libglade" ,libglade))) | ||||||
|  |    (home-page "https://www.gnu.org/software/mdk/") | ||||||
|  |     (synopsis "Virtual development environment for Knuth's MIX") | ||||||
|  |     (description | ||||||
|  |      "GNU MDK is the Mix Development Kit, an emulation of the pedagogical | ||||||
|  | computer MIX and its assembly language MIXAL.  MIX has a virtual CPU with | ||||||
|  | standard features such as registers, memory cells, an overflow toggle, | ||||||
|  | comparison flags, input-output devices, and a set of binary instructions. | ||||||
|  | The package includes a compiler, a virtual machine, a GUI for the virtual | ||||||
|  | machine, and more.") | ||||||
|  |     (license license:gpl3+))) | ||||||
|  |  | ||||||
|  | @ -4975,7 +4975,7 @@ number.") | ||||||
| (define-public emacs-org-superstar | (define-public emacs-org-superstar | ||||||
|   (package |   (package | ||||||
|     (name "emacs-org-superstar") |     (name "emacs-org-superstar") | ||||||
|     (version "1.1.0") |     (version "1.2.1") | ||||||
|     (source |     (source | ||||||
|      (origin |      (origin | ||||||
|        (method git-fetch) |        (method git-fetch) | ||||||
|  | @ -4984,7 +4984,7 @@ number.") | ||||||
|              (commit (string-append "v" version)))) |              (commit (string-append "v" version)))) | ||||||
|        (file-name (git-file-name name version)) |        (file-name (git-file-name name version)) | ||||||
|        (sha256 |        (sha256 | ||||||
|         (base32 "14aafqw8rnbmiy3kcw1a58vjxdyamrbmlldnlw018wgk0qqv0xpx")))) |         (base32 "14w06v76xi4f6hpq6xzicrjjv0b802g5zc9as4mpimfy5gx2xpm0")))) | ||||||
|     (build-system emacs-build-system) |     (build-system emacs-build-system) | ||||||
|     (propagated-inputs |     (propagated-inputs | ||||||
|      `(("emacs-org" ,emacs-org))) |      `(("emacs-org" ,emacs-org))) | ||||||
|  |  | ||||||
|  | @ -249,7 +249,7 @@ from the jfsutils package.  It is meant to be used in initrds.") | ||||||
| (define-public disorderfs | (define-public disorderfs | ||||||
|   (package |   (package | ||||||
|     (name "disorderfs") |     (name "disorderfs") | ||||||
|     (version "0.5.8") |     (version "0.5.9") | ||||||
|     (source |     (source | ||||||
|      (origin |      (origin | ||||||
|        (method git-fetch) |        (method git-fetch) | ||||||
|  | @ -259,7 +259,7 @@ from the jfsutils package.  It is meant to be used in initrds.") | ||||||
|        (file-name (git-file-name name version)) |        (file-name (git-file-name name version)) | ||||||
|        (sha256 |        (sha256 | ||||||
|         (base32 |         (base32 | ||||||
|          "0pk9i0dycjq0wl6dp37r2hbadgpgmzbmjk2xpbjl36x4yrm4jns8")))) |          "0irgr9hkm9icx1s44m9382484yx8hddzjxbsz621ip9c946pif0g")))) | ||||||
|     (build-system gnu-build-system) |     (build-system gnu-build-system) | ||||||
|     (native-inputs |     (native-inputs | ||||||
|      `(("pkg-config" ,pkg-config))) |      `(("pkg-config" ,pkg-config))) | ||||||
|  |  | ||||||
|  | @ -13,7 +13,7 @@ | ||||||
| ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> | ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> | ||||||
| ;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net> | ;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net> | ||||||
| ;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org> | ;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org> | ||||||
| ;;; Copyright © 2019 Martin Becze <mjbecze@riseup.net> | ;;; Copyright © 2019, 2020 Martin Becze <mjbecze@riseup.net> | ||||||
| ;;; Copyright © 2019 Sebastian Schott <sschott@mailbox.org> | ;;; Copyright © 2019 Sebastian Schott <sschott@mailbox.org> | ||||||
| ;;; Copyright © 2020 Kei Kebreau <kkebreau@posteo.net> | ;;; Copyright © 2020 Kei Kebreau <kkebreau@posteo.net> | ||||||
| ;;; Copyright © 2020 Christopher Lemmer Webber <cwebber@dustycloud.org> | ;;; Copyright © 2020 Christopher Lemmer Webber <cwebber@dustycloud.org> | ||||||
|  | @ -41,6 +41,7 @@ | ||||||
|   #:use-module (guix git-download) |   #:use-module (guix git-download) | ||||||
|   #:use-module (guix build-system gnu) |   #:use-module (guix build-system gnu) | ||||||
|   #:use-module (guix build-system cmake) |   #:use-module (guix build-system cmake) | ||||||
|  |   #:use-module (guix build-system copy) | ||||||
|   #:use-module (guix build-system emacs) |   #:use-module (guix build-system emacs) | ||||||
|   #:use-module (guix build-system python) |   #:use-module (guix build-system python) | ||||||
|   #:use-module (guix build-system glib-or-gtk) |   #:use-module (guix build-system glib-or-gtk) | ||||||
|  | @ -241,11 +242,11 @@ and dynamically with report tools based on filtering and graphical charts.") | ||||||
|        ("libedit" ,libedit) |        ("libedit" ,libedit) | ||||||
|        ("mpfr" ,mpfr) |        ("mpfr" ,mpfr) | ||||||
|        ("python" ,python-2) |        ("python" ,python-2) | ||||||
|        ("tzdata" ,tzdata) |  | ||||||
|        ("utfcpp" ,utfcpp))) |        ("utfcpp" ,utfcpp))) | ||||||
|     (native-inputs |     (native-inputs | ||||||
|      `(("groff" ,groff) |      `(("groff" ,groff) | ||||||
|        ("texinfo" ,texinfo))) |        ("texinfo" ,texinfo) | ||||||
|  |        ("tzdata" ,tzdata-for-tests))) | ||||||
|     (home-page "https://ledger-cli.org/") |     (home-page "https://ledger-cli.org/") | ||||||
|     (synopsis "Command-line double-entry accounting program") |     (synopsis "Command-line double-entry accounting program") | ||||||
|     (description |     (description | ||||||
|  | @ -1165,10 +1166,37 @@ information.") | ||||||
|     (home-page "https://grisbi.org") |     (home-page "https://grisbi.org") | ||||||
|     (license license:gpl2+))) |     (license license:gpl2+))) | ||||||
| 
 | 
 | ||||||
|  | (define-public trezord-udev-rules | ||||||
|  |   (let ((commit "bff7fdfe436c727982cc553bdfb29a9021b423b0") | ||||||
|  |         (revision "0")) | ||||||
|  |       (package | ||||||
|  |         (name "trezord-udev-rules") | ||||||
|  |         (version (git-version "0.0.0" revision commit)) | ||||||
|  |         (source | ||||||
|  |          (origin | ||||||
|  |            (method git-fetch) | ||||||
|  |            (uri (git-reference | ||||||
|  |                  (url "https://github.com/trezor/trezor-common.git") | ||||||
|  |                  (commit commit))) | ||||||
|  |            (sha256 | ||||||
|  |             (base32 | ||||||
|  |              "14mrirrn68if7ja6qdk9qlxs1hv0f21vrxy5ncnms0gx9iwakp2l")) | ||||||
|  |            (file-name (git-file-name name version)))) | ||||||
|  |         (build-system copy-build-system) | ||||||
|  |         (arguments | ||||||
|  |          '(#:install-plan | ||||||
|  |            '(("./udev/51-trezor.rules" "lib/udev/rules.d/")))) | ||||||
|  |         (home-page "https://github.com/trezor/trezor-common") | ||||||
|  |         (synopsis "Udev rules for trezord") | ||||||
|  |         (description | ||||||
|  |          "This contains the udev rules for trezord.  This will let a user run | ||||||
|  | trezord as a regular user instead of needing to it run as root.") | ||||||
|  |         (license license:lgpl3+)))) | ||||||
|  | 
 | ||||||
| (define-public trezord | (define-public trezord | ||||||
|   (package |   (package | ||||||
|     (name "trezord") |     (name "trezord") | ||||||
|     (version "2.0.17") |     (version "2.0.29") | ||||||
|     (source |     (source | ||||||
|      (origin |      (origin | ||||||
|        (method git-fetch) |        (method git-fetch) | ||||||
|  | @ -1177,7 +1205,7 @@ information.") | ||||||
|               (commit (string-append "v" version)))) |               (commit (string-append "v" version)))) | ||||||
|        (sha256 |        (sha256 | ||||||
|         (base32 |         (base32 | ||||||
|          "0nqzpq0i3crh0i4r1cppja5sn3rwi1fv9afxzwzv63096x5l30a7")) |          "1ks1fa0027s3xp0z6qp0dxmayvrb4dwwscfhbx7da0khp153f2cp")) | ||||||
|        (file-name (git-file-name name version)))) |        (file-name (git-file-name name version)))) | ||||||
|     (build-system go-build-system) |     (build-system go-build-system) | ||||||
|     (arguments |     (arguments | ||||||
|  | @ -1405,14 +1433,14 @@ a Qt GUI.") | ||||||
| (define-public fulcrum | (define-public fulcrum | ||||||
|   (package |   (package | ||||||
|     (name "fulcrum") |     (name "fulcrum") | ||||||
|     (version "1.0.5b") |     (version "1.1.0") | ||||||
|     (source |     (source | ||||||
|      (origin |      (origin | ||||||
|        (method url-fetch) |        (method url-fetch) | ||||||
|        (uri (string-append "https://gitlab.com/FloweeTheHub/fulcrum/-/archive/v" |        (uri (string-append "https://gitlab.com/FloweeTheHub/fulcrum/-/archive/v" | ||||||
|                            version "/fulcrum-v" version ".tar.gz")) |                            version "/fulcrum-v" version ".tar.gz")) | ||||||
|        (sha256 |        (sha256 | ||||||
|         (base32 "1c1hkik8avill8ha33g76rk4b03j5ac8wiml69q4jav7a63ywgfy")))) |         (base32 "1xywwgsdhkiblv6la0pfhvn2s9q8vnz6pjg35647rlwzi6ybf0ak")))) | ||||||
|     (build-system gnu-build-system) |     (build-system gnu-build-system) | ||||||
|     (arguments |     (arguments | ||||||
|      `(#:phases |      `(#:phases | ||||||
|  | @ -1440,6 +1468,71 @@ walets in a fast and small server.  The full data is stored in a full node, | ||||||
| like Flowee the Hub, which Fulcrum connects to over RPC.") | like Flowee the Hub, which Fulcrum connects to over RPC.") | ||||||
|     (license license:gpl3+))) |     (license license:gpl3+))) | ||||||
| 
 | 
 | ||||||
|  | (define-public flowee | ||||||
|  |   (package | ||||||
|  |     (name "flowee") | ||||||
|  |     (version "2020.03.1") | ||||||
|  |     (source | ||||||
|  |      (origin | ||||||
|  |        (method url-fetch) | ||||||
|  |        (uri (string-append "https://gitlab.com/FloweeTheHub/thehub/-/archive/" | ||||||
|  |                             version "/thehub-" version ".tar.gz")) | ||||||
|  |        (sha256 | ||||||
|  |          (base32 "1ajd5axv9zyhh6njrvamm11zn52j1q4j3mwn2nfv7cjd4lhnhlsr")))) | ||||||
|  |     (build-system cmake-build-system) | ||||||
|  |     (arguments | ||||||
|  |      `(#:configure-flags '("-Dbuild_tests=ON" "-Denable_gui=OFF") | ||||||
|  |        #:phases | ||||||
|  |         (modify-phases %standard-phases | ||||||
|  |           (add-before 'configure 'make-qt-deterministic | ||||||
|  |             (lambda _ | ||||||
|  |               ;; Make Qt deterministic. | ||||||
|  |               (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1") | ||||||
|  |              #t)) | ||||||
|  |           (add-before 'configure 'disable-black-box | ||||||
|  |             ;; the black-box testing runs full hubs and lets them interact. | ||||||
|  |             ;; this is more fragile and a slow machine, or low memory machine, may | ||||||
|  |             ;; make the tests timeout and fail.  We just disable them here. | ||||||
|  |             (lambda _ | ||||||
|  |               (substitute* "testing/CMakeLists.txt" | ||||||
|  |                 (("test_api") "")) | ||||||
|  |               #t)) | ||||||
|  |           (add-after 'configure 'set-build-info | ||||||
|  |             ;; Their genbuild.sh to generate a build.h fails in guix (no .git dir) . | ||||||
|  |             ;; Its purpose is to write the tag name in the build.h file. We do that | ||||||
|  |             ;; here instead. | ||||||
|  |             (lambda _ | ||||||
|  |               (with-output-to-file "include/build.h" | ||||||
|  |                 (lambda _ | ||||||
|  |                   (display | ||||||
|  |                     (string-append "#define BUILD_DESC " "\"", version "\"")))))) | ||||||
|  |           (add-before 'check 'set-home | ||||||
|  |             (lambda _ | ||||||
|  |               (setenv "HOME" (getenv "TMPDIR")) ; tests write to $HOME | ||||||
|  |               #t)) | ||||||
|  |           (replace 'check | ||||||
|  |             (lambda _ | ||||||
|  |               (invoke "make" "check" "-C" "testing")))))) | ||||||
|  |     (inputs | ||||||
|  |      `(("boost" ,boost) | ||||||
|  |        ("gmp" ,gmp) | ||||||
|  |        ("libevent" ,libevent) | ||||||
|  |        ("miniupnpc" ,miniupnpc) | ||||||
|  |        ("openssl" ,openssl) | ||||||
|  |        ("qtbase" ,qtbase))) | ||||||
|  |     (native-inputs | ||||||
|  |      `(("pkg-config" ,pkg-config) | ||||||
|  |        ("qttools" ,qttools) | ||||||
|  |        ("util-linux" ,util-linux)))       ; provides the hexdump command for tests | ||||||
|  |     (home-page "https://flowee.org") | ||||||
|  |     (synopsis "Flowee infrastructure tools and services") | ||||||
|  |     (description | ||||||
|  |      "Flowee packages all tier-1 applications and services from the Flowee group. | ||||||
|  | This includes components like The Hub and Indexer which and various others | ||||||
|  | that allows you to run services and through them access the Bitcoin Cash networks.") | ||||||
|  |     (license license:gpl3+))) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| (define-public beancount | (define-public beancount | ||||||
|   (package |   (package | ||||||
|     (name "beancount") |     (name "beancount") | ||||||
|  |  | ||||||
|  | @ -19,7 +19,7 @@ | ||||||
| ;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org> | ;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org> | ||||||
| ;;; Copyright © 2016, 2017, 2018, 2019 Kei Kebreau <kkebreau@posteo.net> | ;;; Copyright © 2016, 2017, 2018, 2019 Kei Kebreau <kkebreau@posteo.net> | ||||||
| ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> | ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> | ||||||
| ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> | ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> | ||||||
| ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> | ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> | ||||||
| ;;; Copyright © 2016 Steve Webber <webber.sl@gmail.com> | ;;; Copyright © 2016 Steve Webber <webber.sl@gmail.com> | ||||||
| ;;; Copyright © 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@hyperbola.info> | ;;; Copyright © 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@hyperbola.info> | ||||||
|  | @ -1955,7 +1955,7 @@ asynchronously and at a user-defined speed.") | ||||||
| (define-public chess | (define-public chess | ||||||
|   (package |   (package | ||||||
|     (name "chess") |     (name "chess") | ||||||
|     (version "6.2.5") |     (version "6.2.6") | ||||||
|     (source |     (source | ||||||
|      (origin |      (origin | ||||||
|        (method url-fetch) |        (method url-fetch) | ||||||
|  | @ -1963,13 +1963,15 @@ asynchronously and at a user-defined speed.") | ||||||
|                            ".tar.gz")) |                            ".tar.gz")) | ||||||
|        (sha256 |        (sha256 | ||||||
|         (base32 |         (base32 | ||||||
|          "00j8s0npgfdi41a0mr5w9qbdxagdk2v41lcr42rwl1jp6miyk6cs")))) |          "0kxhdv01ia91v2y0cmzbll391ns2vbmn65jjrv37h4s1srszh5yn")))) | ||||||
|     (build-system gnu-build-system) |     (build-system gnu-build-system) | ||||||
|     (home-page "https://www.gnu.org/software/chess/") |     (home-page "https://www.gnu.org/software/chess/") | ||||||
|     (synopsis "Full chess implementation") |     (synopsis "Full chess implementation") | ||||||
|     (description "GNU Chess is a chess engine.  It allows you to compete |     (description "GNU Chess is a chess engine.  It allows you to compete | ||||||
| against the computer in a game of chess, either through the default terminal | against the computer in a game of chess, either through the default terminal | ||||||
| interface or via an external visual interface such as GNU XBoard.") | interface or via an external visual interface such as GNU XBoard.") | ||||||
|  |     (properties '((upstream-name . "gnuchess") | ||||||
|  |                   (ftp-directory . "/chess"))) | ||||||
|     (license license:gpl3+))) |     (license license:gpl3+))) | ||||||
| 
 | 
 | ||||||
| (define freedink-engine | (define freedink-engine | ||||||
|  |  | ||||||
|  | @ -250,6 +250,34 @@ Desktop.  It is designed to be as simple as possible and has some unique | ||||||
| features to enable users to create their discs easily and quickly.") | features to enable users to create their discs easily and quickly.") | ||||||
|     (license license:gpl2+))) |     (license license:gpl2+))) | ||||||
| 
 | 
 | ||||||
|  | (define-public notification-daemon | ||||||
|  |   (package | ||||||
|  |     (name "notification-daemon") | ||||||
|  |     (version "3.20.0") | ||||||
|  |     (source | ||||||
|  |      (origin | ||||||
|  |        (method url-fetch) | ||||||
|  |        (uri | ||||||
|  |         (string-append "mirror://gnome/sources/" name "/" | ||||||
|  |                        (version-major+minor version) "/" | ||||||
|  |                        name "-" version ".tar.xz")) | ||||||
|  |        (sha256 | ||||||
|  |         (base32 | ||||||
|  |          "1rgchqi4j2ll7d6a7lgy7id0w9rrkwkgic1096fbm2zx6n7pc4yx")))) | ||||||
|  |     (build-system glib-or-gtk-build-system) | ||||||
|  |     (native-inputs | ||||||
|  |      `(("intltool" ,intltool) | ||||||
|  |        ("pkg-config" ,pkg-config))) | ||||||
|  |     (inputs | ||||||
|  |      `(("glib" ,glib) | ||||||
|  |        ("gtk+" ,gtk+) | ||||||
|  |        ("x11" ,libx11))) | ||||||
|  |     (synopsis "Notification Daemon for GNOME Desktop") | ||||||
|  |     (description "Notification-Daemon is the server implementation of the | ||||||
|  | freedesktop.org desktop notification specification.") | ||||||
|  |     (home-page "https://wiki.gnome.org/Projects/NotificationDaemon") | ||||||
|  |     (license license:gpl2+))) | ||||||
|  | 
 | ||||||
| (define-public mm-common | (define-public mm-common | ||||||
|   (package |   (package | ||||||
|     (name "mm-common") |     (name "mm-common") | ||||||
|  |  | ||||||
|  | @ -38,7 +38,7 @@ | ||||||
| (define-public gpodder | (define-public gpodder | ||||||
|   (package |   (package | ||||||
|     (name "gpodder") |     (name "gpodder") | ||||||
|     (version "3.10.13") |     (version "3.10.15") | ||||||
|     (source |     (source | ||||||
|      (origin |      (origin | ||||||
|        (method git-fetch) |        (method git-fetch) | ||||||
|  | @ -47,11 +47,13 @@ | ||||||
|              (commit version))) |              (commit version))) | ||||||
|        (sha256 |        (sha256 | ||||||
|         (base32 |         (base32 | ||||||
|          "1h542syaxsx1hslfzlk3fx1nbp190zjw35kigw7a1kx1jwvfwapg")) |          "0ghbanj142n0hgydzfjmnkdgri2kswsjal3mn10c723kih4ir4yr")) | ||||||
|        (file-name (git-file-name name version)))) |        (file-name (git-file-name name version)))) | ||||||
|     (build-system python-build-system) |     (build-system python-build-system) | ||||||
|     (native-inputs |     (native-inputs | ||||||
|      `(("intltool" ,intltool))) |      `(("intltool" ,intltool) | ||||||
|  |        ("python-coverage" ,python-coverage) | ||||||
|  |        ("python-minimock" ,python-minimock))) | ||||||
|     (inputs |     (inputs | ||||||
|      `(("gtk+" ,gtk+) |      `(("gtk+" ,gtk+) | ||||||
|        ("python-pygobject" ,python-pygobject) |        ("python-pygobject" ,python-pygobject) | ||||||
|  | @ -72,6 +74,12 @@ | ||||||
|                (substitute* "src/gpodder/util.py" |                (substitute* "src/gpodder/util.py" | ||||||
|                  (("xdg-open") (string-append xdg-utils "/bin/xdg-open"))) |                  (("xdg-open") (string-append xdg-utils "/bin/xdg-open"))) | ||||||
|                #t))) |                #t))) | ||||||
|  |          (replace 'check | ||||||
|  |            (lambda _ | ||||||
|  |              ; The `unittest' target overrides the PYTHONPATH variable. | ||||||
|  |              (substitute* "makefile" | ||||||
|  |                (("PYTHONPATH=src/") "PYTHONPATH=${PYTHONPATH}:src/")) | ||||||
|  |              (invoke "make" "unittest"))) | ||||||
|          ;; 'msgmerge' introduces non-determinism by resetting the |          ;; 'msgmerge' introduces non-determinism by resetting the | ||||||
|          ;; POT-Creation-Date in .po files. |          ;; POT-Creation-Date in .po files. | ||||||
|          (add-before 'install 'do-not-run-msgmerge |          (add-before 'install 'do-not-run-msgmerge | ||||||
|  | @ -176,7 +184,13 @@ downloading episode status changes.") | ||||||
|        (sha256 |        (sha256 | ||||||
|         (base32 "0k62ppg20i41gcc5x8ddjn7zbpy47hqpxzrq9257g2c71m4qw07b")))) |         (base32 "0k62ppg20i41gcc5x8ddjn7zbpy47hqpxzrq9257g2c71m4qw07b")))) | ||||||
|     (native-inputs |     (native-inputs | ||||||
|      `(("python-nose" ,python-nose))) |      `(("python-coverage" ,python-coverage) | ||||||
|  |        ("python-nose" ,python-nose))) | ||||||
|  |     (arguments | ||||||
|  |      '(#:phases | ||||||
|  |        (modify-phases %standard-phases | ||||||
|  |          (replace 'check | ||||||
|  |            (lambda _ (invoke "nosetests")))))) | ||||||
|     (build-system python-build-system) |     (build-system python-build-system) | ||||||
|     (home-page "http://gpodder.org/podcastparser") |     (home-page "http://gpodder.org/podcastparser") | ||||||
|     (synopsis "Simplified and fast RSS parser Python library") |     (synopsis "Simplified and fast RSS parser Python library") | ||||||
|  |  | ||||||
|  | @ -1056,7 +1056,7 @@ format.") | ||||||
| (define-public guile-newt | (define-public guile-newt | ||||||
|   (package |   (package | ||||||
|     (name "guile-newt") |     (name "guile-newt") | ||||||
|     (version "0.0.1") |     (version "0.0.2") | ||||||
|     (source (origin |     (source (origin | ||||||
|               (method git-fetch) |               (method git-fetch) | ||||||
|               (uri (git-reference |               (uri (git-reference | ||||||
|  | @ -1065,20 +1065,7 @@ format.") | ||||||
|               (file-name (git-file-name name version)) |               (file-name (git-file-name name version)) | ||||||
|               (sha256 |               (sha256 | ||||||
|                (base32 |                (base32 | ||||||
|                 "1w7qy4dw1f4bx622l6hw8mv49sf1ha8kch8j4nganyk8fj0wn695")) |                 "1gksd1lzgjjh1p9vczghg8jw995d22hm34kbsiv8rcryirv2xy09")))) | ||||||
|               (modules '((guix build utils))) |  | ||||||
|               (snippet |  | ||||||
|                '(begin |  | ||||||
|                   ;; Allow builds with Guile 3.0. |  | ||||||
|                   (substitute* "configure.ac" |  | ||||||
|                     (("^GUILE_PKG.*") |  | ||||||
|                      "GUILE_PKG([3.0 2.2 2.0])\n")) |  | ||||||
| 
 |  | ||||||
|                   ;; Remove "guile.m4" since it contains an obsolete version |  | ||||||
|                   ;; of 'GUILE_PKG' that doesn't work with development |  | ||||||
|                   ;; versions such as 2.9. |  | ||||||
|                   (delete-file "m4/guile.m4") |  | ||||||
|                   #t)))) |  | ||||||
|     (build-system gnu-build-system) |     (build-system gnu-build-system) | ||||||
|     (arguments |     (arguments | ||||||
|      '(#:make-flags |      '(#:make-flags | ||||||
|  |  | ||||||
|  | @ -1972,7 +1972,7 @@ This package can be used to create @code{favicon.ico} files for web sites.") | ||||||
| (define-public libavif | (define-public libavif | ||||||
|   (package |   (package | ||||||
|     (name "libavif") |     (name "libavif") | ||||||
|     (version "0.6.3") |     (version "0.7.1") | ||||||
|     (source (origin |     (source (origin | ||||||
|               (method git-fetch) |               (method git-fetch) | ||||||
|               (uri (git-reference |               (uri (git-reference | ||||||
|  | @ -1981,7 +1981,7 @@ This package can be used to create @code{favicon.ico} files for web sites.") | ||||||
|               (file-name (git-file-name name version)) |               (file-name (git-file-name name version)) | ||||||
|               (sha256 |               (sha256 | ||||||
|                (base32 |                (base32 | ||||||
|                 "0fn2mcpvzw6h9sv8h0icbz10i8ihzzf5d5mx3fc4pvhicyz4syq8")))) |                 "1xybjbbprvfsrwgysrn7grg6yp7v6ch5vci7zvdcdzcgyrbph172")))) | ||||||
|     (build-system cmake-build-system) |     (build-system cmake-build-system) | ||||||
|     (arguments |     (arguments | ||||||
|      `(#:configure-flags '("-DAVIF_CODEC_AOM=ON" "-DAVIF_CODEC_DAV1D=ON" |      `(#:configure-flags '("-DAVIF_CODEC_AOM=ON" "-DAVIF_CODEC_DAV1D=ON" | ||||||
|  | @ -1989,18 +1989,15 @@ This package can be used to create @code{favicon.ico} files for web sites.") | ||||||
|                            "-DAVIF_BUILD_TESTS=ON") |                            "-DAVIF_BUILD_TESTS=ON") | ||||||
|        #:phases |        #:phases | ||||||
|        (modify-phases %standard-phases |        (modify-phases %standard-phases | ||||||
|  |          (replace 'check | ||||||
|  |            (lambda _ | ||||||
|  |              (invoke "./aviftest" "../source/tests/data"))) | ||||||
|          (add-after 'install 'install-readme |          (add-after 'install 'install-readme | ||||||
|            (lambda* (#:key outputs #:allow-other-keys) |            (lambda* (#:key outputs #:allow-other-keys) | ||||||
|              (let* ((out (assoc-ref outputs "out")) |              (let* ((out (assoc-ref outputs "out")) | ||||||
|                     (doc (string-append out "/share/doc/libavif-" |                     (doc (string-append out "/share/doc/libavif-" ,version))) | ||||||
|                                         ,version))) |                (install-file "../source/README.md" doc) | ||||||
|                (install-file "../source/README.md" doc))))) |                #t)))))) | ||||||
| ;; The test suite runs tests for all supported codecs and fails because we don't |  | ||||||
| ;; have rav1e yet. |  | ||||||
| ;;         (replace 'check |  | ||||||
| ;;           (lambda _ |  | ||||||
| ;;             (invoke "./aviftest" "../source/tests/data")))) |  | ||||||
|        #:tests? #f)) |  | ||||||
|     (inputs |     (inputs | ||||||
|      `(("libaom" ,libaom) |      `(("libaom" ,libaom) | ||||||
|        ("dav1d" ,dav1d))) |        ("dav1d" ,dav1d))) | ||||||
|  |  | ||||||
|  | @ -3537,7 +3537,7 @@ workspace.") | ||||||
|        ("shared-mime-info" ,shared-mime-info) |        ("shared-mime-info" ,shared-mime-info) | ||||||
|        ("kjobwidgets" ,kjobwidgets) ;; required for running the tests |        ("kjobwidgets" ,kjobwidgets) ;; required for running the tests | ||||||
|        ("strace" ,strace) |        ("strace" ,strace) | ||||||
|        ("tzdata" ,tzdata))) |        ("tzdata" ,tzdata-for-tests))) | ||||||
|     (propagated-inputs |     (propagated-inputs | ||||||
|      ;; These are required to be installed along with this package, see |      ;; These are required to be installed along with this package, see | ||||||
|      ;; lib64/cmake/KF5KDELibs4Support/KF5KDELibs4SupportConfig.cmake |      ;; lib64/cmake/KF5KDELibs4Support/KF5KDELibs4SupportConfig.cmake | ||||||
|  |  | ||||||
|  | @ -369,26 +369,26 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." | ||||||
|     (sha256 hash))) |     (sha256 hash))) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| (define-public linux-libre-5.6-version "5.6.4") | (define-public linux-libre-5.6-version "5.6.5") | ||||||
| (define-public linux-libre-5.6-pristine-source | (define-public linux-libre-5.6-pristine-source | ||||||
|   (let ((version linux-libre-5.6-version) |   (let ((version linux-libre-5.6-version) | ||||||
|         (hash (base32 "14cxbc9xi4s3xwx4yb1yd4z0kidsk3d443skf5sgmdhcalg79wax"))) |         (hash (base32 "1rjjkcmzsj9azggh960qnk2x44ns475b8nbd4nxazrz1rgdx76zp"))) | ||||||
|    (make-linux-libre-source version |    (make-linux-libre-source version | ||||||
|                             (%upstream-linux-source version hash) |                             (%upstream-linux-source version hash) | ||||||
|                             deblob-scripts-5.6))) |                             deblob-scripts-5.6))) | ||||||
| 
 | 
 | ||||||
| (define-public linux-libre-5.4-version "5.4.32") | (define-public linux-libre-5.4-version "5.4.33") | ||||||
| (define-public linux-libre-5.4-pristine-source | (define-public linux-libre-5.4-pristine-source | ||||||
|   (let ((version linux-libre-5.4-version) |   (let ((version linux-libre-5.4-version) | ||||||
|         (hash (base32 "1czjjnln1cqrnjxw0md6mpw9haw9abdyvmxnjds56ym4nzx9jb8r"))) |         (hash (base32 "0q9q48ij6vppfcrdf7fr24pvpwsd13pxjkdni6rnjq9a60hrcmxm"))) | ||||||
|    (make-linux-libre-source version |    (make-linux-libre-source version | ||||||
|                             (%upstream-linux-source version hash) |                             (%upstream-linux-source version hash) | ||||||
|                             deblob-scripts-5.4))) |                             deblob-scripts-5.4))) | ||||||
| 
 | 
 | ||||||
| (define-public linux-libre-4.19-version "4.19.115") | (define-public linux-libre-4.19-version "4.19.116") | ||||||
| (define-public linux-libre-4.19-pristine-source | (define-public linux-libre-4.19-pristine-source | ||||||
|   (let ((version linux-libre-4.19-version) |   (let ((version linux-libre-4.19-version) | ||||||
|         (hash (base32 "1hh170z3mv181l6cc6qqc12wif5jsmxbh2qxbq6b9km5irydkchi"))) |         (hash (base32 "0r3vdc3npl1bn06w9v6wsq7d5mm7bnhm9wsz36pb9ar3xhimvrlf"))) | ||||||
|     (make-linux-libre-source version |     (make-linux-libre-source version | ||||||
|                              (%upstream-linux-source version hash) |                              (%upstream-linux-source version hash) | ||||||
|                              deblob-scripts-4.19))) |                              deblob-scripts-4.19))) | ||||||
|  |  | ||||||
|  | @ -24,7 +24,7 @@ | ||||||
| ;;; Copyright © 2017 Kyle Meyer <kyle@kyleam.com> | ;;; Copyright © 2017 Kyle Meyer <kyle@kyleam.com> | ||||||
| ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> | ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> | ||||||
| ;;; Copyright © 2017, 2018 Rene Saavedra <pacoon@protonmail.com> | ;;; Copyright © 2017, 2018 Rene Saavedra <pacoon@protonmail.com> | ||||||
| ;;; Copyright © 2018, 2019 Pierre Langlois <pierre.langlois@gmx.com> | ;;; Copyright © 2018, 2019, 2020 Pierre Langlois <pierre.langlois@gmx.com> | ||||||
| ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com> | ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com> | ||||||
| ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com> | ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com> | ||||||
| ;;; Copyright © 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net> | ;;; Copyright © 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net> | ||||||
|  | @ -89,6 +89,7 @@ | ||||||
|   #:use-module (gnu packages libevent) |   #:use-module (gnu packages libevent) | ||||||
|   #:use-module (gnu packages libidn) |   #:use-module (gnu packages libidn) | ||||||
|   #:use-module (gnu packages libunistring) |   #:use-module (gnu packages libunistring) | ||||||
|  |   #:use-module (gnu packages libunwind) | ||||||
|   #:use-module (gnu packages linux) |   #:use-module (gnu packages linux) | ||||||
|   #:use-module (gnu packages lsof) |   #:use-module (gnu packages lsof) | ||||||
|   #:use-module (gnu packages lua) |   #:use-module (gnu packages lua) | ||||||
|  | @ -1432,6 +1433,11 @@ facilities for checking incoming mail.") | ||||||
|     (inputs |     (inputs | ||||||
|      `(("bzip2" ,bzip2) |      `(("bzip2" ,bzip2) | ||||||
|        ("libsodium" ,libsodium)         ; extra password algorithms |        ("libsodium" ,libsodium)         ; extra password algorithms | ||||||
|  |        ;; FIXME: The 'test-backtrace' tests fail on arm when using glibc's | ||||||
|  |        ;; backtrace_symbol() function so fallback to using libunwind. | ||||||
|  |        ,@(if (target-arm?) | ||||||
|  |           `(("libunwind" ,libunwind)) | ||||||
|  |           '()) | ||||||
|        ("linux-pam" ,linux-pam) |        ("linux-pam" ,linux-pam) | ||||||
|        ("lz4" ,lz4) |        ("lz4" ,lz4) | ||||||
|        ("openssl" ,openssl) |        ("openssl" ,openssl) | ||||||
|  | @ -1955,26 +1961,26 @@ maintained.") | ||||||
| (define-public khard | (define-public khard | ||||||
|   (package |   (package | ||||||
|     (name "khard") |     (name "khard") | ||||||
|     (version "0.15.1") |     (version "0.16.1") | ||||||
|     (source (origin |     (source (origin | ||||||
|               (method url-fetch) |               (method url-fetch) | ||||||
|               (uri (pypi-uri name version)) |               (uri (pypi-uri name version)) | ||||||
|               (sha256 |               (sha256 | ||||||
|                (base32 |                (base32 | ||||||
|                 "18ba2xgfq8sw0bg6xmlfjpizid1hkzgswcfcc54gl21y2dwfda2w")))) |                 "0fg4qh5gzki5wg958wlpc8a2icnk74gzg33lqxjm755cfnjng7qd")))) | ||||||
|     (build-system python-build-system) |     (build-system python-build-system) | ||||||
|     (arguments |     (arguments | ||||||
|      `(#:phases |      `(#:phases | ||||||
|        (modify-phases %standard-phases |        (modify-phases %standard-phases | ||||||
|          (add-after 'install 'install-doc |          (add-after 'install 'install-completions | ||||||
|            (lambda* (#:key outputs #:allow-other-keys) |            (lambda* (#:key outputs #:allow-other-keys) | ||||||
|              (let* ((out (assoc-ref outputs "out")) |              (let* ((out (assoc-ref outputs "out")) | ||||||
|                     (doc (string-append out "/share/doc/khard"))) |                     (zsh (string-append out "/share/zsh/site-functions"))) | ||||||
|                (copy-recursively "misc/khard" doc) |                (copy-recursively "misc/zsh" zsh) | ||||||
|                #t)))))) |                #t)))))) | ||||||
|     (native-inputs |     (native-inputs | ||||||
|      `(("python-setuptools-scm" ,python-setuptools-scm))) |      `(("python-setuptools-scm" ,python-setuptools-scm))) | ||||||
|     (propagated-inputs |     (inputs | ||||||
|      `(("python-atomicwrites" ,python-atomicwrites) |      `(("python-atomicwrites" ,python-atomicwrites) | ||||||
|        ("python-configobj" ,python-configobj) |        ("python-configobj" ,python-configobj) | ||||||
|        ("python-pyyaml" ,python-pyyaml) |        ("python-pyyaml" ,python-pyyaml) | ||||||
|  |  | ||||||
|  | @ -29,13 +29,13 @@ | ||||||
| (define-public toot | (define-public toot | ||||||
|   (package |   (package | ||||||
|     (name "toot") |     (name "toot") | ||||||
|     (version "0.25.2") |     (version "0.26.0") | ||||||
|     (source |     (source | ||||||
|       (origin |       (origin | ||||||
|         (method url-fetch) |         (method url-fetch) | ||||||
|         (uri (pypi-uri "toot" version)) |         (uri (pypi-uri "toot" version)) | ||||||
|         (sha256 |         (sha256 | ||||||
|          (base32 "16akld7zfr52rqrbgf6hmsca9qsrfdbbbd9bji8d26zggxmqq4vq")))) |          (base32 "0h0lqm1q7i32i9n6yx5q2j563vc92h2sjh1ih4n2rxf98p6c5d1b")))) | ||||||
|     (build-system python-build-system) |     (build-system python-build-system) | ||||||
|     (arguments |     (arguments | ||||||
|      '(#:phases |      '(#:phases | ||||||
|  |  | ||||||
|  | @ -608,14 +608,14 @@ of the same name.") | ||||||
| (define-public wireshark | (define-public wireshark | ||||||
|   (package |   (package | ||||||
|     (name "wireshark") |     (name "wireshark") | ||||||
|     (version "3.2.2") |     (version "3.2.3") | ||||||
|     (source |     (source | ||||||
|      (origin |      (origin | ||||||
|        (method url-fetch) |        (method url-fetch) | ||||||
|        (uri (string-append "https://www.wireshark.org/download/src/wireshark-" |        (uri (string-append "https://www.wireshark.org/download/src/wireshark-" | ||||||
|                            version ".tar.xz")) |                            version ".tar.xz")) | ||||||
|        (sha256 |        (sha256 | ||||||
|         (base32 "0ygdxpz0i4jxp55fg9x4xcan093wycjb66yas073gviz9kpj6naz")))) |         (base32 "1fpsfjrap7j84sy728yhcr2gad9nq3n5gq03mwrmxnc6ijwf81zh")))) | ||||||
|     (build-system cmake-build-system) |     (build-system cmake-build-system) | ||||||
|     (arguments |     (arguments | ||||||
|      `(#:phases |      `(#:phases | ||||||
|  |  | ||||||
|  | @ -1,5 +1,6 @@ | ||||||
| ;;; GNU Guix --- Functional package management for GNU | ;;; GNU Guix --- Functional package management for GNU | ||||||
| ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> | ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> | ||||||
|  | ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org> | ||||||
| ;;; | ;;; | ||||||
| ;;; This file is part of GNU Guix. | ;;; This file is part of GNU Guix. | ||||||
| ;;; | ;;; | ||||||
|  | @ -244,3 +245,26 @@ protocol used in @code{node-lynx}.") | ||||||
|     (description "This package provides the Node.js @code{util.deprecate()} |     (description "This package provides the Node.js @code{util.deprecate()} | ||||||
| function with browser support.") | function with browser support.") | ||||||
|     (license license:expat))) |     (license license:expat))) | ||||||
|  | 
 | ||||||
|  | (define-public node-semver | ||||||
|  |   (package | ||||||
|  |     (name "node-semver") | ||||||
|  |     (version "7.2.1") | ||||||
|  |     (source (origin | ||||||
|  |               (method git-fetch) | ||||||
|  |               (uri (git-reference | ||||||
|  |                     (url "https://github.com/npm/node-semver.git") | ||||||
|  |                     (commit (string-append "v" version)))) | ||||||
|  |               (file-name (git-file-name name version)) | ||||||
|  |               (sha256 | ||||||
|  |                (base32 | ||||||
|  |                 "06biknqb05r9xsmcflm3ygh50pjvdk84x6r79w43kmck4fn3qn5p")))) | ||||||
|  |     (build-system node-build-system) | ||||||
|  |     (arguments | ||||||
|  |      `(#:tests? #f)) ;; FIXME: Tests depend on node-tap | ||||||
|  |     (home-page "https://github.com/npm/node-semver") | ||||||
|  |     (synopsis "Parses semantic versions strings") | ||||||
|  |     (description | ||||||
|  |      "@code{node-semver} is a JavaScript implementation of the | ||||||
|  | @uref{https://semver.org/, SemVer.org} specification.") | ||||||
|  |     (license license:isc))) | ||||||
|  |  | ||||||
							
								
								
									
										18
									
								
								gnu/packages/patches/python-jedi-sort-project-test.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								gnu/packages/patches/python-jedi-sort-project-test.patch
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,18 @@ | ||||||
|  | Sort the result of file system traversal to avoid test failure on different | ||||||
|  | file systems. | ||||||
|  | 
 | ||||||
|  | Taken from upstream: | ||||||
|  | https://github.com/davidhalter/jedi/commit/7ff76bb7d0d94514e17cd1647f4ffaf533dd55f5 | ||||||
|  | 
 | ||||||
|  | diff --git a/test/test_api/test_project.py b/test/test_api/test_project.py
 | ||||||
|  | --- a/test/test_api/test_project.py
 | ||||||
|  | +++ b/test/test_api/test_project.py
 | ||||||
|  | @@ -135,7 +135,7 @@ def test_search(string, full_names, kwargs, skip_pre_python36):
 | ||||||
|  |          defs = project.complete_search(string, **kwargs) | ||||||
|  |      else: | ||||||
|  |          defs = project.search(string, **kwargs) | ||||||
|  | -    assert [('stub:' if d.is_stub() else '') + d.full_name for d in defs] == full_names
 | ||||||
|  | +    assert sorted([('stub:' if d.is_stub() else '') + d.full_name for d in defs]) == full_names
 | ||||||
|  |   | ||||||
|  |   | ||||||
|  |  @pytest.mark.parametrize( | ||||||
|  | @ -822,7 +822,7 @@ using a stylus.") | ||||||
| (define-public xournalpp | (define-public xournalpp | ||||||
|   (package |   (package | ||||||
|     (name "xournalpp") |     (name "xournalpp") | ||||||
|     (version "1.0.17") |     (version "1.0.18") | ||||||
|     (source |     (source | ||||||
|      (origin |      (origin | ||||||
|        (method git-fetch) |        (method git-fetch) | ||||||
|  | @ -831,7 +831,7 @@ using a stylus.") | ||||||
|              (commit version))) |              (commit version))) | ||||||
|        (file-name (git-file-name name version)) |        (file-name (git-file-name name version)) | ||||||
|        (sha256 |        (sha256 | ||||||
|         (base32 "0xw2mcgnm4sa9hrhfgp669lfypw97drxjmz5w8i5whaprpvmkxzw")))) |         (base32 "0a9ygbmd4dwgck3k8wsrm2grynqa0adb12wwspzmzvpisbadffjy")))) | ||||||
|     (build-system cmake-build-system) |     (build-system cmake-build-system) | ||||||
|     (arguments |     (arguments | ||||||
|      `(#:configure-flags (list "-DENABLE_CPPUNIT=ON") ;enable tests |      `(#:configure-flags (list "-DENABLE_CPPUNIT=ON") ;enable tests | ||||||
|  | @ -844,11 +844,6 @@ using a stylus.") | ||||||
|        (modify-phases %standard-phases |        (modify-phases %standard-phases | ||||||
|          (add-after 'unpack 'fix-permissions-on-po-files |          (add-after 'unpack 'fix-permissions-on-po-files | ||||||
|            (lambda _ |            (lambda _ | ||||||
|              ;; Always generate translations.  A recent upstream patch |  | ||||||
|              ;; disabled it. |  | ||||||
|              (substitute* "po/CMakeLists.txt" |  | ||||||
|                (("gettext_create_translations \\(\"\\$\\{potfile\\}\"\\)") |  | ||||||
|                 "gettext_create_translations (\"${potfile}\" ALL)")) |  | ||||||
|              ;; Make sure 'msgmerge' can modify the PO files. |              ;; Make sure 'msgmerge' can modify the PO files. | ||||||
|              (for-each (lambda (po) (chmod po #o666)) |              (for-each (lambda (po) (chmod po #o666)) | ||||||
|                        (find-files "." "\\.po$")) |                        (find-files "." "\\.po$")) | ||||||
|  | @ -857,7 +852,6 @@ using a stylus.") | ||||||
|            (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))))) |            (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))))) | ||||||
|     (native-inputs |     (native-inputs | ||||||
|      `(("cppunit" ,cppunit) |      `(("cppunit" ,cppunit) | ||||||
|        ("gcc" ,gcc-8)                   ;requires gcc 8+ |  | ||||||
|        ("gettext" ,gettext-minimal) |        ("gettext" ,gettext-minimal) | ||||||
|        ("pkg-config" ,pkg-config))) |        ("pkg-config" ,pkg-config))) | ||||||
|     (inputs |     (inputs | ||||||
|  |  | ||||||
|  | @ -1699,14 +1699,14 @@ Python 3.3+.") | ||||||
| (define-public python-pyicu | (define-public python-pyicu | ||||||
|   (package |   (package | ||||||
|     (name "python-pyicu") |     (name "python-pyicu") | ||||||
|     (version "2.3.1") |     (version "2.4.3") | ||||||
|     (source |     (source | ||||||
|      (origin |      (origin | ||||||
|       (method url-fetch) |       (method url-fetch) | ||||||
|       (uri (pypi-uri "PyICU" version)) |       (uri (pypi-uri "PyICU" version)) | ||||||
|       (sha256 |       (sha256 | ||||||
|        (base32 |        (base32 | ||||||
|         "1x4w8m7ifki9z2a187pgjr33z6z0rp2fii9b73djak1vhm9v9cnx")))) |         "075bw66b3w0nw6mc5k32fwmrhyrmq3d7da3q2mw212qfmm0pgjn0")))) | ||||||
|     (build-system python-build-system) |     (build-system python-build-system) | ||||||
|     (inputs |     (inputs | ||||||
|      `(("icu4c" ,icu4c))) |      `(("icu4c" ,icu4c))) | ||||||
|  | @ -1717,24 +1717,10 @@ Python 3.3+.") | ||||||
|     (synopsis "Python extension wrapping the ICU C++ API") |     (synopsis "Python extension wrapping the ICU C++ API") | ||||||
|     (description |     (description | ||||||
|      "PyICU is a python extension wrapping the ICU C++ API.") |      "PyICU is a python extension wrapping the ICU C++ API.") | ||||||
|     (properties `((python2-variant . ,(delay python2-pyicu)))) |  | ||||||
|     (license license:x11))) |     (license license:x11))) | ||||||
| 
 | 
 | ||||||
| (define-public python2-pyicu | (define-public python2-pyicu | ||||||
|   (let ((base (package-with-python2 |   (package-with-python2 python-pyicu)) | ||||||
|                 (strip-python2-variant python-pyicu)))) |  | ||||||
|     (package |  | ||||||
|       (inherit base) |  | ||||||
|       (arguments |  | ||||||
|        `(,@(package-arguments base) |  | ||||||
|          #:phases |  | ||||||
|          (modify-phases %standard-phases |  | ||||||
|            (add-before 'check 'delete-failing-test |  | ||||||
|              (λ _ |  | ||||||
|                ;; XXX: This fails due to Unicode issues unique to Python 2, |  | ||||||
|                ;; it seems: <https://github.com/ovalhub/pyicu/issues/61>. |  | ||||||
|                (delete-file "test/test_Script.py") |  | ||||||
|                #t)))))))) |  | ||||||
| 
 | 
 | ||||||
| (define-public python2-dogtail | (define-public python2-dogtail | ||||||
|   ;; Python 2 only, as it leads to "TabError: inconsistent use of tabs and |   ;; Python 2 only, as it leads to "TabError: inconsistent use of tabs and | ||||||
|  | @ -3877,14 +3863,14 @@ provides additional functionality on the produced Mallard documents.") | ||||||
| (define-public python-cython | (define-public python-cython | ||||||
|   (package |   (package | ||||||
|     (name "python-cython") |     (name "python-cython") | ||||||
|     (version "0.29.15") |     (version "0.29.16") | ||||||
|     (source |     (source | ||||||
|      (origin |      (origin | ||||||
|        (method url-fetch) |        (method url-fetch) | ||||||
|        (uri (pypi-uri "Cython" version)) |        (uri (pypi-uri "Cython" version)) | ||||||
|        (sha256 |        (sha256 | ||||||
|         (base32 |         (base32 | ||||||
|          "0c5cjyxfvba6c0vih1fvhywp8bpz30vwvbjqdm1q1k55xzhmkn30")))) |          "01gs10myw0rw4jsikvqs0859fg7gficxhv508cxvnb4l9wl5a9r3")))) | ||||||
|     (build-system python-build-system) |     (build-system python-build-system) | ||||||
|     ;; we need the full python package and not just the python-wrapper |     ;; we need the full python package and not just the python-wrapper | ||||||
|     ;; because we need libpython3.3m.so |     ;; because we need libpython3.3m.so | ||||||
|  | @ -6499,14 +6485,14 @@ computing.") | ||||||
| (define-public python-urwid | (define-public python-urwid | ||||||
|   (package |   (package | ||||||
|     (name "python-urwid") |     (name "python-urwid") | ||||||
|     (version "2.0.1") |     (version "2.1.0") | ||||||
|     (source |     (source | ||||||
|      (origin |      (origin | ||||||
|        (method url-fetch) |        (method url-fetch) | ||||||
|        (uri (pypi-uri "urwid" version)) |        (uri (pypi-uri "urwid" version)) | ||||||
|        (sha256 |        (sha256 | ||||||
|         (base32 |         (base32 | ||||||
|          "1g6cpicybvbananpjikmjk8npmjk4xvak1wjzji62wc600wkwkb4")))) |          "11ndnhxd41m13darf5s0c6bafdpkzq1l6mfb04wbzdmyc1hg75h8")))) | ||||||
|     (build-system python-build-system) |     (build-system python-build-system) | ||||||
|     (home-page "http://urwid.org") |     (home-page "http://urwid.org") | ||||||
|     (synopsis "Console user interface library for Python") |     (synopsis "Console user interface library for Python") | ||||||
|  | @ -8037,14 +8023,14 @@ printing of sub-tables by specifying a row range.") | ||||||
| (define-public python-tables | (define-public python-tables | ||||||
|   (package |   (package | ||||||
|     (name "python-tables") |     (name "python-tables") | ||||||
|     (version "3.4.4") |     (version "3.6.1") | ||||||
|     (source |     (source | ||||||
|      (origin |      (origin | ||||||
|        (method url-fetch) |        (method url-fetch) | ||||||
|        (uri (pypi-uri "tables" version)) |        (uri (pypi-uri "tables" version)) | ||||||
|        (sha256 |        (sha256 | ||||||
|         (base32 |         (base32 | ||||||
|          "0affz7k8babh8wdmsgrz5jxrd569by2w8ffimcxs9wiaf5rw1idx")) |          "0j8vnxh2m5n0cyk9z3ndcj5n1zj5rdxgc1gb78bqlyn2lyw75aa9")) | ||||||
|        (modules '((guix build utils))) |        (modules '((guix build utils))) | ||||||
|        (snippet |        (snippet | ||||||
|         '(begin |         '(begin | ||||||
|  | @ -8062,9 +8048,11 @@ printing of sub-tables by specifying a row range.") | ||||||
|          (add-after 'unpack 'use-gcc |          (add-after 'unpack 'use-gcc | ||||||
|            (lambda _ |            (lambda _ | ||||||
|              (substitute* "setup.py" |              (substitute* "setup.py" | ||||||
|                (("compiler = new_compiler\\(\\)" line) |                (("^( +)compiler = new_compiler\\(\\)" line indent) | ||||||
|                 (string-append line |                 (string-append line | ||||||
|                                "\ncompiler.set_executables(compiler='gcc'," |                                "\n" | ||||||
|  |                                indent | ||||||
|  |                                "compiler.set_executables(compiler='gcc'," | ||||||
|                                "compiler_so='gcc'," |                                "compiler_so='gcc'," | ||||||
|                                "linker_exe='gcc'," |                                "linker_exe='gcc'," | ||||||
|                                "linker_so='gcc -shared')"))) |                                "linker_so='gcc -shared')"))) | ||||||
|  | @ -9421,13 +9409,13 @@ minimal and fast API targeting the following uses: | ||||||
| (define-public python-icalendar | (define-public python-icalendar | ||||||
|   (package |   (package | ||||||
|     (name "python-icalendar") |     (name "python-icalendar") | ||||||
|     (version "4.0.4") |     (version "4.0.5") | ||||||
|     (source (origin |     (source (origin | ||||||
|              (method url-fetch) |              (method url-fetch) | ||||||
|              (uri (pypi-uri "icalendar" version)) |              (uri (pypi-uri "icalendar" version)) | ||||||
|              (sha256 |              (sha256 | ||||||
|               (base32 |               (base32 | ||||||
|                "16gjvqv0n05jrb9g228pdjgzd3amz2pdhvcgsn1jypszjg5m2w9l")))) |                "14ynjj65kfmlcvpb7k097w789wvxncd3cr3xz5m1jz9yl9v6vv5q")))) | ||||||
|     (build-system python-build-system) |     (build-system python-build-system) | ||||||
|     (propagated-inputs |     (propagated-inputs | ||||||
|      `(("python-dateutil" ,python-dateutil) |      `(("python-dateutil" ,python-dateutil) | ||||||
|  | @ -9516,20 +9504,20 @@ with a new public API, and RPython support.") | ||||||
| (define-public python-hy | (define-public python-hy | ||||||
|   (package |   (package | ||||||
|     (name "python-hy") |     (name "python-hy") | ||||||
|     (version "0.17.0") |     (version "0.18.0") | ||||||
|     (source (origin |     (source (origin | ||||||
|               (method url-fetch) |               (method url-fetch) | ||||||
|               (uri (pypi-uri "hy" version)) |               (uri (pypi-uri "hy" version)) | ||||||
|               (sha256 |               (sha256 | ||||||
|                (base32 |                (base32 | ||||||
|                 "1gdbqsirsdxj320wnp7my5awzs1kfs6m4fqmkzbd1zd47qzj0zfi")))) |                 "04dfwm336gw61fmgwikvh0cnxk682p19b4w555wl5d7mlym4rwj2")))) | ||||||
|     (build-system python-build-system) |     (build-system python-build-system) | ||||||
|     (arguments |     (arguments | ||||||
|      '(#:phases |      '(#:phases | ||||||
|        (modify-phases %standard-phases |        (modify-phases %standard-phases | ||||||
| 	 (add-before 'install 'set-HOME |          (add-before 'install 'set-HOME | ||||||
| 	   (lambda _ |            (lambda _ | ||||||
| 	     (setenv "HOME" "/tmp"))) |              (setenv "HOME" "/tmp") #t)) | ||||||
|          (replace 'check |          (replace 'check | ||||||
|            (lambda _ |            (lambda _ | ||||||
|              ;; Tests require write access to HOME. |              ;; Tests require write access to HOME. | ||||||
|  | @ -9540,10 +9528,8 @@ with a new public API, and RPython support.") | ||||||
|        ("python-nose" ,python-nose))) |        ("python-nose" ,python-nose))) | ||||||
|     (propagated-inputs |     (propagated-inputs | ||||||
|      `(("python-astor" ,python-astor) |      `(("python-astor" ,python-astor) | ||||||
|        ("python-clint" ,python-clint) |        ("python-colorama" ,python-colorama) | ||||||
|        ("python-rply" ,python-rply) |        ("python-rply" ,python-rply) | ||||||
|        ("python-fastentrypoints" |  | ||||||
|         ,python-fastentrypoints) |  | ||||||
|        ("python-funcparserlib" |        ("python-funcparserlib" | ||||||
|         ,python-funcparserlib))) |         ,python-funcparserlib))) | ||||||
|     (home-page "http://hylang.org/") |     (home-page "http://hylang.org/") | ||||||
|  | @ -9554,9 +9540,6 @@ its Lisp code into the Python Abstract Syntax Tree, you have the whole world of | ||||||
| Python at your fingertips, in Lisp form.") | Python at your fingertips, in Lisp form.") | ||||||
|     (license license:expat))) |     (license license:expat))) | ||||||
| 
 | 
 | ||||||
| (define-public python2-hy |  | ||||||
|   (package-with-python2 python-hy)) |  | ||||||
| 
 |  | ||||||
| (define-public python2-functools32 | (define-public python2-functools32 | ||||||
|   (package |   (package | ||||||
|     (name "python2-functools32") |     (name "python2-functools32") | ||||||
|  | @ -10357,13 +10340,13 @@ programmatically interfacing with your system's $EDITOR.") | ||||||
| (define-public python-vobject | (define-public python-vobject | ||||||
|   (package |   (package | ||||||
|     (name "python-vobject") |     (name "python-vobject") | ||||||
|     (version "0.9.5") |     (version "0.9.6.1") | ||||||
|     (source (origin |     (source (origin | ||||||
|               (method url-fetch) |               (method url-fetch) | ||||||
|               (uri (pypi-uri "vobject" version)) |               (uri (pypi-uri "vobject" version)) | ||||||
|               (sha256 |               (sha256 | ||||||
|                (base32 |                (base32 | ||||||
|                 "0hqjgf3ay1m5w1c0k00g5yfpdz1zni5qnr5rh9b8fg9hjvhwlmhg")))) |                 "0081g4gngw28j7vw8101jk600wz4gzfrhf5myrqvn2mrfkn2llcn")))) | ||||||
|     (build-system python-build-system) |     (build-system python-build-system) | ||||||
|     (arguments |     (arguments | ||||||
|      '(;; The test suite relies on some non-portable Windows interfaces. |      '(;; The test suite relies on some non-portable Windows interfaces. | ||||||
|  | @ -10374,7 +10357,7 @@ programmatically interfacing with your system's $EDITOR.") | ||||||
|     (synopsis "Parse and generate vCard and vCalendar files") |     (synopsis "Parse and generate vCard and vCalendar files") | ||||||
|     (description "Vobject is intended to be a full featured Python package for |     (description "Vobject is intended to be a full featured Python package for | ||||||
| parsing and generating vCard and vCalendar files.  Currently, iCalendar files | parsing and generating vCard and vCalendar files.  Currently, iCalendar files | ||||||
| are supported and well tested. vCard 3.0 files are supported, and all data | are supported and well tested.  vCard 3.0 files are supported, and all data | ||||||
| should be imported, but only a few components are understood in a sophisticated | should be imported, but only a few components are understood in a sophisticated | ||||||
| way.") | way.") | ||||||
|     (home-page "https://eventable.github.io/vobject/") |     (home-page "https://eventable.github.io/vobject/") | ||||||
|  | @ -11997,6 +11980,7 @@ characters, mouse support, and auto suggestions.") | ||||||
|      (origin |      (origin | ||||||
|        (method url-fetch) |        (method url-fetch) | ||||||
|        (uri (pypi-uri "jedi" version)) |        (uri (pypi-uri "jedi" version)) | ||||||
|  |        (patches (search-patches "python-jedi-sort-project-test.patch")) | ||||||
|        (sha256 |        (sha256 | ||||||
|         (base32 |         (base32 | ||||||
|          "0c1h9x3a9klvk2g288wl328x8xgzw7136k6vs9hkd56b85vcjh6z")))) |          "0c1h9x3a9klvk2g288wl328x8xgzw7136k6vs9hkd56b85vcjh6z")))) | ||||||
|  | @ -12007,7 +11991,7 @@ characters, mouse support, and auto suggestions.") | ||||||
|          (replace 'check |          (replace 'check | ||||||
|            (lambda _ |            (lambda _ | ||||||
|              (setenv "HOME" "/tmp") |              (setenv "HOME" "/tmp") | ||||||
|              (invoke "python" "-m" "pytest")))))) |              (invoke "python" "-m" "pytest" "-vv")))))) | ||||||
|     (native-inputs |     (native-inputs | ||||||
|      `(("python-pytest" ,python-pytest) |      `(("python-pytest" ,python-pytest) | ||||||
|        ("python-docopt" ,python-docopt))) |        ("python-docopt" ,python-docopt))) | ||||||
|  |  | ||||||
|  | @ -35,6 +35,7 @@ | ||||||
|   #:use-module (gnu packages check) |   #:use-module (gnu packages check) | ||||||
|   #:use-module (gnu packages documentation) |   #:use-module (gnu packages documentation) | ||||||
|   #:use-module (gnu packages engineering) |   #:use-module (gnu packages engineering) | ||||||
|  |   #:use-module (gnu packages fltk) | ||||||
|   #:use-module (gnu packages ghostscript) |   #:use-module (gnu packages ghostscript) | ||||||
|   #:use-module (gnu packages glib) |   #:use-module (gnu packages glib) | ||||||
|   #:use-module (gnu packages gstreamer) |   #:use-module (gnu packages gstreamer) | ||||||
|  | @ -525,3 +526,121 @@ to the fix block above. | ||||||
| using GNU Radio and the Qt GUI toolkit.") | using GNU Radio and the Qt GUI toolkit.") | ||||||
|     (home-page "https://gqrx.dk/") |     (home-page "https://gqrx.dk/") | ||||||
|     (license license:gpl3+))) |     (license license:gpl3+))) | ||||||
|  | 
 | ||||||
|  | (define-public fldigi | ||||||
|  |   (package | ||||||
|  |     (name "fldigi") | ||||||
|  |     (version "4.1.11") | ||||||
|  |     (source | ||||||
|  |      (origin | ||||||
|  |        (method url-fetch) | ||||||
|  |        (uri (string-append "http://www.w1hkj.com/files/fldigi/fldigi-" | ||||||
|  |                            version ".tar.gz")) | ||||||
|  |        (sha256 | ||||||
|  |         (base32 "1y62xn1pim38ibaf2mbl8b7aq20jdaac6lgggb9r402w9bj5b196")))) | ||||||
|  |     (build-system gnu-build-system) | ||||||
|  |     (native-inputs | ||||||
|  |      `(("pkg-config" ,pkg-config))) | ||||||
|  |     (inputs | ||||||
|  |      `(("alsa-lib" ,alsa-lib) | ||||||
|  |        ("fltk" ,fltk) | ||||||
|  |        ("libpng" ,libpng) | ||||||
|  |        ("libsamplerate" ,libsamplerate) | ||||||
|  |        ("libx11" ,libx11) | ||||||
|  |        ("libxext" ,libxext) | ||||||
|  |        ("libxfixes" ,libxfixes) | ||||||
|  |        ("libxft" ,libxft) | ||||||
|  |        ("portaudio" ,portaudio) | ||||||
|  |        ("pulseaudio" ,pulseaudio))) | ||||||
|  |     (synopsis "Software modem for amateur radio use") | ||||||
|  |     (description | ||||||
|  |      "Fldigi is a software modem for amateur radio use.  It is a sound card | ||||||
|  | based program that is used for both transmitting and receiving data by | ||||||
|  | connecting the microphone and headphone connections of a computer to some radio | ||||||
|  | hardware.") | ||||||
|  |     (home-page "http://www.w1hkj.com/") | ||||||
|  |     (license license:gpl3+))) | ||||||
|  | 
 | ||||||
|  | (define-public flrig | ||||||
|  |   (package | ||||||
|  |     (name "flrig") | ||||||
|  |     (version "1.3.50") | ||||||
|  |     (source | ||||||
|  |      (origin | ||||||
|  |        (method url-fetch) | ||||||
|  |        (uri (string-append "http://www.w1hkj.com/files/flrig/flrig-" | ||||||
|  |                            version ".tar.gz")) | ||||||
|  |        (sha256 | ||||||
|  |         (base32 "0fzrknzzi8kmzmrcfpc8rxr7v4a4ny6z6z5q5qwh95sp2kn2qzp9")))) | ||||||
|  |     (build-system gnu-build-system) | ||||||
|  |     (native-inputs | ||||||
|  |      `(("pkg-config" ,pkg-config))) | ||||||
|  |     (inputs | ||||||
|  |      `(("fltk" ,fltk) | ||||||
|  |        ("libx11" ,libx11) | ||||||
|  |        ("libxext" ,libxext) | ||||||
|  |        ("libxfixes" ,libxfixes) | ||||||
|  |        ("libxft" ,libxft))) | ||||||
|  |     (synopsis "Radio transceiver control program") | ||||||
|  |     (description | ||||||
|  |      "Flrig is a transceiver control program for amateur radio use. | ||||||
|  | It provides computer aided control of various radios using a serial | ||||||
|  | or USB connection.") | ||||||
|  |     (home-page "http://www.w1hkj.com/") | ||||||
|  |     (license license:gpl3+))) | ||||||
|  | 
 | ||||||
|  | (define-public flamp | ||||||
|  |   (package | ||||||
|  |     (name "flamp") | ||||||
|  |     (version "2.2.05") | ||||||
|  |     (source | ||||||
|  |      (origin | ||||||
|  |        (method url-fetch) | ||||||
|  |        (uri (string-append "http://www.w1hkj.com/files/flamp/flamp-" | ||||||
|  |                            version ".tar.gz")) | ||||||
|  |        (sha256 | ||||||
|  |         (base32 "19z1kghhdf7bq6hi2j0mzlsn2nhpn3gl1a623x3inmsk80yw3ck4")))) | ||||||
|  |     (build-system gnu-build-system) | ||||||
|  |     (native-inputs | ||||||
|  |      `(("pkg-config" ,pkg-config))) | ||||||
|  |     (inputs | ||||||
|  |      `(("fltk" ,fltk) | ||||||
|  |        ("libx11" ,libx11) | ||||||
|  |        ("libxext" ,libxext) | ||||||
|  |        ("libxfixes" ,libxfixes) | ||||||
|  |        ("libxft" ,libxft))) | ||||||
|  |     (synopsis "Tool for AMP file transfer") | ||||||
|  |     (description | ||||||
|  |      "FLAMP is a program for transfering files by radio waves using AMP | ||||||
|  | (Amateur Multicast Protocol).") | ||||||
|  |     (home-page "http://www.w1hkj.com/") | ||||||
|  |     (license license:gpl3+))) | ||||||
|  | 
 | ||||||
|  | (define-public flwrap | ||||||
|  |   (package | ||||||
|  |     (name "flwrap") | ||||||
|  |     (version "1.3.5") | ||||||
|  |     (source | ||||||
|  |      (origin | ||||||
|  |        (method url-fetch) | ||||||
|  |        (uri (string-append "http://www.w1hkj.com/files/flwrap/flwrap-" | ||||||
|  |                            version ".tar.gz")) | ||||||
|  |        (sha256 | ||||||
|  |         (base32 "0qqivqkkravcg7j45740xfky2q3k7czqpkj6y364qff424q2pppg")))) | ||||||
|  |     (build-system gnu-build-system) | ||||||
|  |     (native-inputs | ||||||
|  |      `(("pkg-config" ,pkg-config))) | ||||||
|  |     (inputs | ||||||
|  |      `(("fltk" ,fltk) | ||||||
|  |        ("libx11" ,libx11) | ||||||
|  |        ("libxext" ,libxext) | ||||||
|  |        ("libxfixes" ,libxfixes) | ||||||
|  |        ("libxft" ,libxft))) | ||||||
|  |     (synopsis "File encapsulation program") | ||||||
|  |     (description | ||||||
|  |      "Flwrap is a software utility for amateur radio use.  Its purpose is to | ||||||
|  | encapsulate both text and binary files in a way that allows them to be | ||||||
|  | transmitted over any of several digital modes and verified at the receipt end | ||||||
|  | for correctness.") | ||||||
|  |     (home-page "http://www.w1hkj.com/") | ||||||
|  |     (license license:gpl3+))) | ||||||
|  |  | ||||||
|  | @ -851,7 +851,7 @@ through its msgpack-rpc API.") | ||||||
| (define-public vim-asyncrun | (define-public vim-asyncrun | ||||||
|   (package |   (package | ||||||
|     (name "vim-asyncrun") |     (name "vim-asyncrun") | ||||||
|     (version "2.7.1") |     (version "2.7.5") | ||||||
|     (source (origin |     (source (origin | ||||||
|               (method git-fetch) |               (method git-fetch) | ||||||
|               (uri (git-reference |               (uri (git-reference | ||||||
|  | @ -860,7 +860,7 @@ through its msgpack-rpc API.") | ||||||
|               (file-name (git-file-name name version)) |               (file-name (git-file-name name version)) | ||||||
|               (sha256 |               (sha256 | ||||||
|                (base32 |                (base32 | ||||||
|                 "0f7slvz28772qsbrb8xfwrkprfm90wc9i36xhn797lacxcxgwqpw")))) |                 "02fiqf4rcrxbcgvj02mpd78wkxsrnbi54aciwh9fv5mnz5ka249m")))) | ||||||
|     (build-system copy-build-system) |     (build-system copy-build-system) | ||||||
|     (arguments |     (arguments | ||||||
|      '(#:install-plan |      '(#:install-plan | ||||||
|  |  | ||||||
|  | @ -711,15 +711,15 @@ and import the new pictures from your camera.") | ||||||
| (define-public xfwm4 | (define-public xfwm4 | ||||||
|   (package |   (package | ||||||
|     (name "xfwm4") |     (name "xfwm4") | ||||||
|     (version "4.14.0") |     (version "4.14.1") | ||||||
|     (source (origin |     (source (origin | ||||||
|               (method url-fetch) |               (method url-fetch) | ||||||
|               (uri (string-append "https://archive.xfce.org/src/xfce/" |               (uri (string-append "https://archive.xfce.org/src/xfce/" | ||||||
|                                   name "/" (version-major+minor version) "/" |                                   "xfwm4/" (version-major+minor version) "/" | ||||||
|                                   name "-" version ".tar.bz2")) |                                   "xfwm4-" version ".tar.bz2")) | ||||||
|               (sha256 |               (sha256 | ||||||
|                (base32 |                (base32 | ||||||
|                 "05dn4a1i0nm6wm3nyj7qli5bvfalxghcl7x543qr5l33vkw2n65l")))) |                 "0a0la57jh618qfl7czsn7mspcraqczkm1m616j7jwxkhh2hq21qh")))) | ||||||
|     (build-system gnu-build-system) |     (build-system gnu-build-system) | ||||||
|     (native-inputs |     (native-inputs | ||||||
|      `(("pkg-config" ,pkg-config) |      `(("pkg-config" ,pkg-config) | ||||||
|  | @ -741,15 +741,15 @@ on the screen.") | ||||||
| (define-public xfdesktop | (define-public xfdesktop | ||||||
|   (package |   (package | ||||||
|     (name "xfdesktop") |     (name "xfdesktop") | ||||||
|     (version "4.14.1") |     (version "4.14.2") | ||||||
|     (source (origin |     (source (origin | ||||||
|               (method url-fetch) |               (method url-fetch) | ||||||
|               (uri (string-append "https://archive.xfce.org/src/xfce/" |               (uri (string-append "https://archive.xfce.org/src/xfce/" | ||||||
|                                   name "/" (version-major+minor version) "/" |                                   "xfdesktop/" (version-major+minor version) "/" | ||||||
|                                   name "-" version ".tar.bz2")) |                                   "xfdesktop-" version ".tar.bz2")) | ||||||
|               (sha256 |               (sha256 | ||||||
|                (base32 |                (base32 | ||||||
|                 "10pqxgpj7b57wpcsh2k98sj4aavcgxbs1lc8qsq4mibf4hba01gp")) |                 "0x1yx9sd5aanrlr1qnbwd2nsmcg09g4132k0kyb7z47a3x3381d3")) | ||||||
|               (modules '((guix build utils))) |               (modules '((guix build utils))) | ||||||
|               (snippet |               (snippet | ||||||
|                #~(begin |                #~(begin | ||||||
|  | @ -781,6 +781,7 @@ on the screen.") | ||||||
|      `(("pkg-config" ,pkg-config) |      `(("pkg-config" ,pkg-config) | ||||||
|        ("intltool" ,intltool) |        ("intltool" ,intltool) | ||||||
| 
 | 
 | ||||||
|  |        ;; For our own ‘prepare-background-image’ phase. | ||||||
|        ("inkscape" ,inkscape) |        ("inkscape" ,inkscape) | ||||||
|        ("imagemagick" ,imagemagick))) |        ("imagemagick" ,imagemagick))) | ||||||
|     (inputs |     (inputs | ||||||
|  | @ -949,15 +950,15 @@ the desktop wallpaper.") | ||||||
| (define-public xfce4-taskmanager | (define-public xfce4-taskmanager | ||||||
|   (package |   (package | ||||||
|     (name "xfce4-taskmanager") |     (name "xfce4-taskmanager") | ||||||
|     (version "1.2.2") |     (version "1.2.3") | ||||||
|     (source (origin |     (source (origin | ||||||
|               (method url-fetch) |               (method url-fetch) | ||||||
|               (uri (string-append "https://archive.xfce.org/src/apps/" |               (uri (string-append "https://archive.xfce.org/src/apps/" | ||||||
|                                   name "/" (version-major+minor version) "/" |                                   "xfce4-taskmanager/" (version-major+minor version) "/" | ||||||
|                                   name "-" version ".tar.bz2")) |                                   "xfce4-taskmanager-" version ".tar.bz2")) | ||||||
|               (sha256 |               (sha256 | ||||||
|                (base32 |                (base32 | ||||||
|                 "04qflazmdrj4ys4r54yg4s5pqcjgk02idrjsls395zd4374636p4")))) |                 "1i63bnvpjpblnd0d3l1v065x9q1cz74cvlab5hzd0q8zgkd49z6w")))) | ||||||
|     (build-system gnu-build-system) |     (build-system gnu-build-system) | ||||||
|     (native-inputs |     (native-inputs | ||||||
|      `(("intltool" ,intltool) |      `(("intltool" ,intltool) | ||||||
|  |  | ||||||
|  | @ -14,7 +14,7 @@ | ||||||
| ;;; Copyright © 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com> | ;;; Copyright © 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com> | ||||||
| ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com> | ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com> | ||||||
| ;;; Copyright © 2017, 2020 Arun Isaac <arunisaac@systemreboot.net> | ;;; Copyright © 2017, 2020 Arun Isaac <arunisaac@systemreboot.net> | ||||||
| ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> | ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> | ||||||
| ;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net> | ;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net> | ||||||
| ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> | ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> | ||||||
| ;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net> | ;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net> | ||||||
|  | @ -6004,7 +6004,7 @@ to answer a question.  Xmessage can also exit after a specified time.") | ||||||
| (define-public xterm | (define-public xterm | ||||||
|   (package |   (package | ||||||
|     (name "xterm") |     (name "xterm") | ||||||
|     (version "351") |     (version "353") | ||||||
|     (source (origin |     (source (origin | ||||||
|               (method url-fetch) |               (method url-fetch) | ||||||
|               (uri (list |               (uri (list | ||||||
|  | @ -6014,7 +6014,7 @@ to answer a question.  Xmessage can also exit after a specified time.") | ||||||
|                                    "xterm-" version ".tgz"))) |                                    "xterm-" version ".tgz"))) | ||||||
|               (sha256 |               (sha256 | ||||||
|                (base32 |                (base32 | ||||||
|                 "05kf586my4irrzz2bxgmwjdvynyrg9ybhvfqmx29g70w4888l2kn")))) |                 "0s5pkfn4r8iy09s1q1y78zhnr9f3sm6wgbqir7azaqggkppd68g5")))) | ||||||
|     (build-system gnu-build-system) |     (build-system gnu-build-system) | ||||||
|     (arguments |     (arguments | ||||||
|      '(#:configure-flags '("--enable-wide-chars" "--enable-load-vt-fonts" |      '(#:configure-flags '("--enable-wide-chars" "--enable-load-vt-fonts" | ||||||
|  |  | ||||||
|  | @ -61,11 +61,11 @@ | ||||||
|   #:use-module (srfi srfi-26) |   #:use-module (srfi srfi-26) | ||||||
|   #:use-module (ice-9 match) |   #:use-module (ice-9 match) | ||||||
|   #:use-module (ice-9 format) |   #:use-module (ice-9 format) | ||||||
|  |   #:re-export (user-processes-service-type)       ;backwards compatibility | ||||||
|   #:export (fstab-service-type |   #:export (fstab-service-type | ||||||
|             root-file-system-service |             root-file-system-service | ||||||
|             file-system-service-type |             file-system-service-type | ||||||
|             swap-service |             swap-service | ||||||
|             user-processes-service-type |  | ||||||
|             host-name-service |             host-name-service | ||||||
|             console-keymap-service |             console-keymap-service | ||||||
|             %default-console-font |             %default-console-font | ||||||
|  | @ -185,128 +185,6 @@ | ||||||
| ;;; Code: | ;;; Code: | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| ;;; |  | ||||||
| ;;; User processes. |  | ||||||
| ;;; |  | ||||||
| 
 |  | ||||||
| (define %do-not-kill-file |  | ||||||
|   ;; Name of the file listing PIDs of processes that must survive when halting |  | ||||||
|   ;; the system.  Typical example is user-space file systems. |  | ||||||
|   "/etc/shepherd/do-not-kill") |  | ||||||
| 
 |  | ||||||
| (define (user-processes-shepherd-service requirements) |  | ||||||
|   "Return the 'user-processes' Shepherd service with dependencies on |  | ||||||
| REQUIREMENTS (a list of service names). |  | ||||||
| 
 |  | ||||||
| This is a synchronization point used to make sure user processes and daemons |  | ||||||
| get started only after crucial initial services have been started---file |  | ||||||
| system mounts, etc.  This is similar to the 'sysvinit' target in systemd." |  | ||||||
|   (define grace-delay |  | ||||||
|     ;; Delay after sending SIGTERM and before sending SIGKILL. |  | ||||||
|     4) |  | ||||||
| 
 |  | ||||||
|   (list (shepherd-service |  | ||||||
|          (documentation "When stopped, terminate all user processes.") |  | ||||||
|          (provision '(user-processes)) |  | ||||||
|          (requirement requirements) |  | ||||||
|          (start #~(const #t)) |  | ||||||
|          (stop #~(lambda _ |  | ||||||
|                    (define (kill-except omit signal) |  | ||||||
|                      ;; Kill all the processes with SIGNAL except those listed |  | ||||||
|                      ;; in OMIT and the current process. |  | ||||||
|                      (let ((omit (cons (getpid) omit))) |  | ||||||
|                        (for-each (lambda (pid) |  | ||||||
|                                    (unless (memv pid omit) |  | ||||||
|                                      (false-if-exception |  | ||||||
|                                       (kill pid signal)))) |  | ||||||
|                                  (processes)))) |  | ||||||
| 
 |  | ||||||
|                    (define omitted-pids |  | ||||||
|                      ;; List of PIDs that must not be killed. |  | ||||||
|                      (if (file-exists? #$%do-not-kill-file) |  | ||||||
|                          (map string->number |  | ||||||
|                               (call-with-input-file #$%do-not-kill-file |  | ||||||
|                                 (compose string-tokenize |  | ||||||
|                                          (@ (ice-9 rdelim) read-string)))) |  | ||||||
|                          '())) |  | ||||||
| 
 |  | ||||||
|                    (define (now) |  | ||||||
|                      (car (gettimeofday))) |  | ||||||
| 
 |  | ||||||
|                    (define (sleep* n) |  | ||||||
|                      ;; Really sleep N seconds. |  | ||||||
|                      ;; Work around <http://bugs.gnu.org/19581>. |  | ||||||
|                      (define start (now)) |  | ||||||
|                      (let loop ((elapsed 0)) |  | ||||||
|                        (when (> n elapsed) |  | ||||||
|                          (sleep (- n elapsed)) |  | ||||||
|                          (loop (- (now) start))))) |  | ||||||
| 
 |  | ||||||
|                    (define lset= (@ (srfi srfi-1) lset=)) |  | ||||||
| 
 |  | ||||||
|                    (display "sending all processes the TERM signal\n") |  | ||||||
| 
 |  | ||||||
|                    (if (null? omitted-pids) |  | ||||||
|                        (begin |  | ||||||
|                          ;; Easy: terminate all of them. |  | ||||||
|                          (kill -1 SIGTERM) |  | ||||||
|                          (sleep* #$grace-delay) |  | ||||||
|                          (kill -1 SIGKILL)) |  | ||||||
|                        (begin |  | ||||||
|                          ;; Kill them all except OMITTED-PIDS.  XXX: We would |  | ||||||
|                          ;; like to (kill -1 SIGSTOP) to get a fixed list of |  | ||||||
|                          ;; processes, like 'killall5' does, but that seems |  | ||||||
|                          ;; unreliable. |  | ||||||
|                          (kill-except omitted-pids SIGTERM) |  | ||||||
|                          (sleep* #$grace-delay) |  | ||||||
|                          (kill-except omitted-pids SIGKILL) |  | ||||||
|                          (delete-file #$%do-not-kill-file))) |  | ||||||
| 
 |  | ||||||
|                    (let wait () |  | ||||||
|                      ;; Reap children, if any, so that we don't end up with |  | ||||||
|                      ;; zombies and enter an infinite loop. |  | ||||||
|                      (let reap-children () |  | ||||||
|                        (define result |  | ||||||
|                          (false-if-exception |  | ||||||
|                           (waitpid WAIT_ANY (if (null? omitted-pids) |  | ||||||
|                                                 0 |  | ||||||
|                                                 WNOHANG)))) |  | ||||||
| 
 |  | ||||||
|                        (when (and (pair? result) |  | ||||||
|                                   (not (zero? (car result)))) |  | ||||||
|                          (reap-children))) |  | ||||||
| 
 |  | ||||||
|                      (let ((pids (processes))) |  | ||||||
|                        (unless (lset= = pids (cons 1 omitted-pids)) |  | ||||||
|                          (format #t "waiting for process termination\ |  | ||||||
|  (processes left: ~s)~%" |  | ||||||
|                                  pids) |  | ||||||
|                          (sleep* 2) |  | ||||||
|                          (wait)))) |  | ||||||
| 
 |  | ||||||
|                    (display "all processes have been terminated\n") |  | ||||||
|                    #f)) |  | ||||||
|          (respawn? #f)))) |  | ||||||
| 
 |  | ||||||
| (define user-processes-service-type |  | ||||||
|   (service-type |  | ||||||
|    (name 'user-processes) |  | ||||||
|    (extensions (list (service-extension shepherd-root-service-type |  | ||||||
|                                         user-processes-shepherd-service))) |  | ||||||
|    (compose concatenate) |  | ||||||
|    (extend append) |  | ||||||
| 
 |  | ||||||
|    ;; The value is the list of Shepherd services 'user-processes' depends on. |  | ||||||
|    ;; Extensions can add new services to this list. |  | ||||||
|    (default-value '()) |  | ||||||
| 
 |  | ||||||
|    (description "The @code{user-processes} service is responsible for |  | ||||||
| terminating all the processes so that the root file system can be re-mounted |  | ||||||
| read-only, just before rebooting/halting.  Processes still running after a few |  | ||||||
| seconds after @code{SIGTERM} has been sent are terminated with |  | ||||||
| @code{SIGKILL}."))) |  | ||||||
| 
 |  | ||||||
|  |  | ||||||
| ;;; | ;;; | ||||||
| ;;; File systems. | ;;; File systems. | ||||||
|  |  | ||||||
|  | @ -170,7 +170,7 @@ Relogin="              (if (sddm-configuration-relogin? config) | ||||||
|   (list (shepherd-service |   (list (shepherd-service | ||||||
|          (documentation "SDDM display manager.") |          (documentation "SDDM display manager.") | ||||||
|          (requirement '(user-processes)) |          (requirement '(user-processes)) | ||||||
|          (provision '(display-manager)) |          (provision '(xorg-server display-manager)) | ||||||
|          (start #~(make-forkexec-constructor #$sddm-command)) |          (start #~(make-forkexec-constructor #$sddm-command)) | ||||||
|          (stop #~(make-kill-destructor))))) |          (stop #~(make-kill-destructor))))) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -63,7 +63,9 @@ | ||||||
| 
 | 
 | ||||||
|             shepherd-service-lookup-procedure |             shepherd-service-lookup-procedure | ||||||
|             shepherd-service-back-edges |             shepherd-service-back-edges | ||||||
|             shepherd-service-upgrade)) |             shepherd-service-upgrade | ||||||
|  | 
 | ||||||
|  |             user-processes-service-type)) | ||||||
| 
 | 
 | ||||||
| ;;; Commentary: | ;;; Commentary: | ||||||
| ;;; | ;;; | ||||||
|  | @ -415,4 +417,126 @@ need to be restarted to complete their upgrade." | ||||||
| 
 | 
 | ||||||
|   (values to-unload to-restart)) |   (values to-unload to-restart)) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | ;;; | ||||||
|  | ;;; User processes. | ||||||
|  | ;;; | ||||||
|  | 
 | ||||||
|  | (define %do-not-kill-file | ||||||
|  |   ;; Name of the file listing PIDs of processes that must survive when halting | ||||||
|  |   ;; the system.  Typical example is user-space file systems. | ||||||
|  |   "/etc/shepherd/do-not-kill") | ||||||
|  | 
 | ||||||
|  | (define (user-processes-shepherd-service requirements) | ||||||
|  |   "Return the 'user-processes' Shepherd service with dependencies on | ||||||
|  | REQUIREMENTS (a list of service names). | ||||||
|  | 
 | ||||||
|  | This is a synchronization point used to make sure user processes and daemons | ||||||
|  | get started only after crucial initial services have been started---file | ||||||
|  | system mounts, etc.  This is similar to the 'sysvinit' target in systemd." | ||||||
|  |   (define grace-delay | ||||||
|  |     ;; Delay after sending SIGTERM and before sending SIGKILL. | ||||||
|  |     4) | ||||||
|  | 
 | ||||||
|  |   (list (shepherd-service | ||||||
|  |          (documentation "When stopped, terminate all user processes.") | ||||||
|  |          (provision '(user-processes)) | ||||||
|  |          (requirement requirements) | ||||||
|  |          (start #~(const #t)) | ||||||
|  |          (stop #~(lambda _ | ||||||
|  |                    (define (kill-except omit signal) | ||||||
|  |                      ;; Kill all the processes with SIGNAL except those listed | ||||||
|  |                      ;; in OMIT and the current process. | ||||||
|  |                      (let ((omit (cons (getpid) omit))) | ||||||
|  |                        (for-each (lambda (pid) | ||||||
|  |                                    (unless (memv pid omit) | ||||||
|  |                                      (false-if-exception | ||||||
|  |                                       (kill pid signal)))) | ||||||
|  |                                  (processes)))) | ||||||
|  | 
 | ||||||
|  |                    (define omitted-pids | ||||||
|  |                      ;; List of PIDs that must not be killed. | ||||||
|  |                      (if (file-exists? #$%do-not-kill-file) | ||||||
|  |                          (map string->number | ||||||
|  |                               (call-with-input-file #$%do-not-kill-file | ||||||
|  |                                 (compose string-tokenize | ||||||
|  |                                          (@ (ice-9 rdelim) read-string)))) | ||||||
|  |                          '())) | ||||||
|  | 
 | ||||||
|  |                    (define (now) | ||||||
|  |                      (car (gettimeofday))) | ||||||
|  | 
 | ||||||
|  |                    (define (sleep* n) | ||||||
|  |                      ;; Really sleep N seconds. | ||||||
|  |                      ;; Work around <http://bugs.gnu.org/19581>. | ||||||
|  |                      (define start (now)) | ||||||
|  |                      (let loop ((elapsed 0)) | ||||||
|  |                        (when (> n elapsed) | ||||||
|  |                          (sleep (- n elapsed)) | ||||||
|  |                          (loop (- (now) start))))) | ||||||
|  | 
 | ||||||
|  |                    (define lset= (@ (srfi srfi-1) lset=)) | ||||||
|  | 
 | ||||||
|  |                    (display "sending all processes the TERM signal\n") | ||||||
|  | 
 | ||||||
|  |                    (if (null? omitted-pids) | ||||||
|  |                        (begin | ||||||
|  |                          ;; Easy: terminate all of them. | ||||||
|  |                          (kill -1 SIGTERM) | ||||||
|  |                          (sleep* #$grace-delay) | ||||||
|  |                          (kill -1 SIGKILL)) | ||||||
|  |                        (begin | ||||||
|  |                          ;; Kill them all except OMITTED-PIDS.  XXX: We would | ||||||
|  |                          ;; like to (kill -1 SIGSTOP) to get a fixed list of | ||||||
|  |                          ;; processes, like 'killall5' does, but that seems | ||||||
|  |                          ;; unreliable. | ||||||
|  |                          (kill-except omitted-pids SIGTERM) | ||||||
|  |                          (sleep* #$grace-delay) | ||||||
|  |                          (kill-except omitted-pids SIGKILL) | ||||||
|  |                          (delete-file #$%do-not-kill-file))) | ||||||
|  | 
 | ||||||
|  |                    (let wait () | ||||||
|  |                      ;; Reap children, if any, so that we don't end up with | ||||||
|  |                      ;; zombies and enter an infinite loop. | ||||||
|  |                      (let reap-children () | ||||||
|  |                        (define result | ||||||
|  |                          (false-if-exception | ||||||
|  |                           (waitpid WAIT_ANY (if (null? omitted-pids) | ||||||
|  |                                                 0 | ||||||
|  |                                                 WNOHANG)))) | ||||||
|  | 
 | ||||||
|  |                        (when (and (pair? result) | ||||||
|  |                                   (not (zero? (car result)))) | ||||||
|  |                          (reap-children))) | ||||||
|  | 
 | ||||||
|  |                      (let ((pids (processes))) | ||||||
|  |                        (unless (lset= = pids (cons 1 omitted-pids)) | ||||||
|  |                          (format #t "waiting for process termination\ | ||||||
|  |  (processes left: ~s)~%" | ||||||
|  |                                  pids) | ||||||
|  |                          (sleep* 2) | ||||||
|  |                          (wait)))) | ||||||
|  | 
 | ||||||
|  |                    (display "all processes have been terminated\n") | ||||||
|  |                    #f)) | ||||||
|  |          (respawn? #f)))) | ||||||
|  | 
 | ||||||
|  | (define user-processes-service-type | ||||||
|  |   (service-type | ||||||
|  |    (name 'user-processes) | ||||||
|  |    (extensions (list (service-extension shepherd-root-service-type | ||||||
|  |                                         user-processes-shepherd-service))) | ||||||
|  |    (compose concatenate) | ||||||
|  |    (extend append) | ||||||
|  | 
 | ||||||
|  |    ;; The value is the list of Shepherd services 'user-processes' depends on. | ||||||
|  |    ;; Extensions can add new services to this list. | ||||||
|  |    (default-value '()) | ||||||
|  | 
 | ||||||
|  |    (description "The @code{user-processes} service is responsible for | ||||||
|  | terminating all the processes so that the root file system can be re-mounted | ||||||
|  | read-only, just before rebooting/halting.  Processes still running after a few | ||||||
|  | seconds after @code{SIGTERM} has been sent are terminated with | ||||||
|  | @code{SIGKILL}."))) | ||||||
|  | 
 | ||||||
| ;;; shepherd.scm ends here | ;;; shepherd.scm ends here | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| ;;; GNU Guix --- Functional package management for GNU | ;;; GNU Guix --- Functional package management for GNU | ||||||
| ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> | ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> | ||||||
| ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> | ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> | ||||||
| ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> | ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> | ||||||
| ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> | ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> | ||||||
|  | @ -314,9 +314,7 @@ accounts among ACCOUNTS+GROUPS." | ||||||
|   ;; |   ;; | ||||||
|   ;; XXX: We arrange for this service to stop right after it's done its job so |   ;; XXX: We arrange for this service to stop right after it's done its job so | ||||||
|   ;; that 'guix system reconfigure' knows that it can reload it fearlessly |   ;; that 'guix system reconfigure' knows that it can reload it fearlessly | ||||||
|   ;; (and thus create new home directories).  The cost of this hack is that |   ;; (and thus create new home directories). | ||||||
|   ;; there's a small window during which first-time logins could happen before |  | ||||||
|   ;; the home directory has been created. |  | ||||||
|   (list (shepherd-service |   (list (shepherd-service | ||||||
|          (requirement '(file-systems)) |          (requirement '(file-systems)) | ||||||
|          (provision '(user-homes)) |          (provision '(user-homes)) | ||||||
|  | @ -374,6 +372,11 @@ the /etc/skel directory for those." | ||||||
|                                           account-activation) |                                           account-activation) | ||||||
|                        (service-extension shepherd-root-service-type |                        (service-extension shepherd-root-service-type | ||||||
|                                           account-shepherd-service) |                                           account-shepherd-service) | ||||||
|  |                        ;; Have 'user-processes' depend on 'user-homes' so that | ||||||
|  |                        ;; daemons start after their home directory has been | ||||||
|  |                        ;; created. | ||||||
|  |                        (service-extension user-processes-service-type | ||||||
|  |                                           (const '(user-homes))) | ||||||
|                        (service-extension etc-service-type |                        (service-extension etc-service-type | ||||||
|                                           etc-files))))) |                                           etc-files))))) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -22,7 +22,6 @@ | ||||||
| 
 | 
 | ||||||
| (define-module (guix build syscalls) | (define-module (guix build syscalls) | ||||||
|   #:use-module (system foreign) |   #:use-module (system foreign) | ||||||
|   #:use-module (system base target)             ;for cross-compilation support |  | ||||||
|   #:use-module (rnrs bytevectors) |   #:use-module (rnrs bytevectors) | ||||||
|   #:autoload   (ice-9 binary-ports) (get-bytevector-n) |   #:autoload   (ice-9 binary-ports) (get-bytevector-n) | ||||||
|   #:use-module (srfi srfi-1) |   #:use-module (srfi srfi-1) | ||||||
|  | @ -892,36 +891,6 @@ system to PUT-OLD." | ||||||
|   (namelen uint8) |   (namelen uint8) | ||||||
|   (name    uint8)) |   (name    uint8)) | ||||||
| 
 | 
 | ||||||
| (define-syntax define-generic-identifier |  | ||||||
|   (syntax-rules (gnu/linux gnu/hurd =>) |  | ||||||
|     "Define a generic identifier that adjust to the current GNU variant." |  | ||||||
|     ((_ id (gnu/linux => linux) (gnu/hurd => hurd)) |  | ||||||
|      (define-syntax id |  | ||||||
|        (lambda (s) |  | ||||||
|          (syntax-case s () |  | ||||||
|            ((_ args (... ...)) |  | ||||||
|             (if (string-contains (or (target-type) %host-type) |  | ||||||
|                                  "linux") |  | ||||||
|                 #'(linux args (... ...)) |  | ||||||
|                 #'(hurd args (... ...)))) |  | ||||||
|            (_ |  | ||||||
|             (if (string-contains (or (target-type) %host-type) |  | ||||||
|                                  "linux") |  | ||||||
|                 #'linux |  | ||||||
|                 #'hurd)))))))) |  | ||||||
| 
 |  | ||||||
| (define-generic-identifier read-dirent-header |  | ||||||
|   (gnu/linux => read-dirent-header/linux) |  | ||||||
|   (gnu/hurd  => read-dirent-header/hurd)) |  | ||||||
| 
 |  | ||||||
| (define-generic-identifier %struct-dirent-header |  | ||||||
|   (gnu/linux => %struct-dirent-header/linux) |  | ||||||
|   (gnu/hurd  => %struct-dirent-header/hurd)) |  | ||||||
| 
 |  | ||||||
| (define-generic-identifier sizeof-dirent-header |  | ||||||
|   (gnu/linux => sizeof-dirent-header/linux) |  | ||||||
|   (gnu/hurd  => sizeof-dirent-header/hurd)) |  | ||||||
| 
 |  | ||||||
| ;; Constants for the 'type' field, from <dirent.h>. | ;; Constants for the 'type' field, from <dirent.h>. | ||||||
| (define DT_UNKNOWN 0) | (define DT_UNKNOWN 0) | ||||||
| (define DT_FIFO 1) | (define DT_FIFO 1) | ||||||
|  | @ -960,19 +929,30 @@ system to PUT-OLD." | ||||||
|                  "closedir: ~A" (list (strerror err)) |                  "closedir: ~A" (list (strerror err)) | ||||||
|                  (list err))))))) |                  (list err))))))) | ||||||
| 
 | 
 | ||||||
| (define readdir* | (define (readdir-procedure name-field-offset sizeof-dirent-header | ||||||
|  |                            read-dirent-header) | ||||||
|   (let ((proc (syscall->procedure '* "readdir64" '(*)))) |   (let ((proc (syscall->procedure '* "readdir64" '(*)))) | ||||||
|     (lambda* (directory #:optional (pointer->string pointer->string/utf-8)) |     (lambda* (directory #:optional (pointer->string pointer->string/utf-8)) | ||||||
|       (let ((ptr (proc directory))) |       (let ((ptr (proc directory))) | ||||||
|         (and (not (null-pointer? ptr)) |         (and (not (null-pointer? ptr)) | ||||||
|              (cons (pointer->string |              (cons (pointer->string | ||||||
|                     (make-pointer (+ (pointer-address ptr) |                     (make-pointer (+ (pointer-address ptr) name-field-offset)) | ||||||
|                                      (c-struct-field-offset |  | ||||||
|                                       %struct-dirent-header name))) |  | ||||||
|                     -1) |                     -1) | ||||||
|                    (read-dirent-header |                    (read-dirent-header | ||||||
|                     (pointer->bytevector ptr sizeof-dirent-header)))))))) |                     (pointer->bytevector ptr sizeof-dirent-header)))))))) | ||||||
| 
 | 
 | ||||||
|  | (define readdir* | ||||||
|  |   ;; Decide at run time which one must be used. | ||||||
|  |   (if (string-suffix? "linux-gnu" %host-type) | ||||||
|  |       (readdir-procedure (c-struct-field-offset %struct-dirent-header/linux | ||||||
|  |                                                 name) | ||||||
|  |                          sizeof-dirent-header/linux | ||||||
|  |                          read-dirent-header/linux) | ||||||
|  |       (readdir-procedure (c-struct-field-offset %struct-dirent-header/hurd | ||||||
|  |                                                 name) | ||||||
|  |                          sizeof-dirent-header/hurd | ||||||
|  |                          read-dirent-header/hurd))) | ||||||
|  | 
 | ||||||
| (define* (scandir* name #:optional | (define* (scandir* name #:optional | ||||||
|                    (select? (const #t)) |                    (select? (const #t)) | ||||||
|                    (entry<? (lambda (entry1 entry2) |                    (entry<? (lambda (entry1 entry2) | ||||||
|  |  | ||||||
|  | @ -1,6 +1,7 @@ | ||||||
| ;;; GNU Guix --- Functional package management for GNU | ;;; GNU Guix --- Functional package management for GNU | ||||||
| ;;; Copyright © 2010, 2011, 2013, 2014, 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org> | ;;; Copyright © 2010, 2011, 2013, 2014, 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org> | ||||||
| ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> | ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> | ||||||
|  | ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr> | ||||||
| ;;; | ;;; | ||||||
| ;;; This file is part of GNU Guix. | ;;; This file is part of GNU Guix. | ||||||
| ;;; | ;;; | ||||||
|  | @ -71,6 +72,8 @@ | ||||||
|    "^\\[GNUPG:\\] VALIDSIG ([[:xdigit:]]+) ([[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}) ([[:digit:]]+) .*$")) |    "^\\[GNUPG:\\] VALIDSIG ([[:xdigit:]]+) ([[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}) ([[:digit:]]+) .*$")) | ||||||
| (define expkeysig-rx                    ; good signature, but expired key | (define expkeysig-rx                    ; good signature, but expired key | ||||||
|   (make-regexp "^\\[GNUPG:\\] EXPKEYSIG ([[:xdigit:]]+) (.*)$")) |   (make-regexp "^\\[GNUPG:\\] EXPKEYSIG ([[:xdigit:]]+) (.*)$")) | ||||||
|  | (define revkeysig-rx                    ; good signature, but revoked key | ||||||
|  |   (make-regexp "^\\[GNUPG:\\] REVKEYSIG ([[:xdigit:]]+) (.*)$")) | ||||||
| (define errsig-rx | (define errsig-rx | ||||||
|   ;; Note: The fingeprint part (the last element of the line) appeared in |   ;; Note: The fingeprint part (the last element of the line) appeared in | ||||||
|   ;; GnuPG 2.2.7 according to 'doc/DETAILS', and it may be missing. |   ;; GnuPG 2.2.7 according to 'doc/DETAILS', and it may be missing. | ||||||
|  | @ -114,6 +117,11 @@ revoked.  Return a status s-exp if GnuPG failed." | ||||||
|            (lambda (match) |            (lambda (match) | ||||||
|              `(expired-key-signature ,(match:substring match 1) ; fingerprint |              `(expired-key-signature ,(match:substring match 1) ; fingerprint | ||||||
|                                      ,(match:substring match 2)))) ; user name |                                      ,(match:substring match 2)))) ; user name | ||||||
|  |           ((regexp-exec revkeysig-rx line) | ||||||
|  |            => | ||||||
|  |            (lambda (match) | ||||||
|  |              `(revoked-key-signature ,(match:substring match 1) ; fingerprint | ||||||
|  |                                      ,(match:substring match 2)))) ; user name | ||||||
|           ((regexp-exec errsig-rx line) |           ((regexp-exec errsig-rx line) | ||||||
|            => |            => | ||||||
|            (lambda (match) |            (lambda (match) | ||||||
|  | @ -157,7 +165,8 @@ a fingerprint/user pair; return #f otherwise." | ||||||
|   (match (assq 'valid-signature status) |   (match (assq 'valid-signature status) | ||||||
|     (('valid-signature fingerprint date timestamp) |     (('valid-signature fingerprint date timestamp) | ||||||
|      (match (or (assq 'good-signature status) |      (match (or (assq 'good-signature status) | ||||||
|                 (assq 'expired-key-signature status)) |                 (assq 'expired-key-signature status) | ||||||
|  |                 (assq 'revoked-key-signature status)) | ||||||
|        ((_ key-id user) (cons fingerprint user)) |        ((_ key-id user) (cons fingerprint user)) | ||||||
|        (_ #f))) |        (_ #f))) | ||||||
|     (_ |     (_ | ||||||
|  |  | ||||||
|  | @ -2,6 +2,7 @@ | ||||||
| ;;; Copyright © 2014 David Thompson <davet@gnu.org> | ;;; Copyright © 2014 David Thompson <davet@gnu.org> | ||||||
| ;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org> | ;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org> | ||||||
| ;;; Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org> | ;;; Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org> | ||||||
|  | ;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net> | ||||||
| ;;; | ;;; | ||||||
| ;;; This file is part of GNU Guix. | ;;; This file is part of GNU Guix. | ||||||
| ;;; | ;;; | ||||||
|  | @ -22,8 +23,16 @@ | ||||||
|   #:use-module (json) |   #:use-module (json) | ||||||
|   #:use-module (guix http-client) |   #:use-module (guix http-client) | ||||||
|   #:use-module (guix import utils) |   #:use-module (guix import utils) | ||||||
|  |   #:use-module (guix import print) | ||||||
|  |   #:use-module (ice-9 match) | ||||||
|  |   #:use-module (ice-9 rdelim) | ||||||
|  |   #:use-module (srfi srfi-1) | ||||||
|  |   #:use-module (srfi srfi-2) | ||||||
|  |   #:use-module (srfi srfi-26) | ||||||
|   #:use-module (srfi srfi-34) |   #:use-module (srfi srfi-34) | ||||||
|   #:export (json-fetch)) |   #:export (json-fetch | ||||||
|  |             json->code | ||||||
|  |             json->scheme-file)) | ||||||
| 
 | 
 | ||||||
| (define* (json-fetch url | (define* (json-fetch url | ||||||
|                      ;; Note: many websites returns 403 if we omit a |                      ;; Note: many websites returns 403 if we omit a | ||||||
|  | @ -42,3 +51,53 @@ the query." | ||||||
|            (result (json->scm port))) |            (result (json->scm port))) | ||||||
|       (close-port port) |       (close-port port) | ||||||
|       result))) |       result))) | ||||||
|  | 
 | ||||||
|  | (define (json->code file-name) | ||||||
|  |   "Read FILE-NAME containing one ore more JSON package definitions and return | ||||||
|  | a list of S-expressions, or return #F when the JSON is invalid." | ||||||
|  |   (catch 'json-invalid | ||||||
|  |     (lambda () | ||||||
|  |       (let ((json (json-string->scm | ||||||
|  |                    (with-input-from-file file-name read-string)))) | ||||||
|  |         (match json | ||||||
|  |           (#(packages ...) | ||||||
|  |            ;; To allow definitions to refer to one another, collect references | ||||||
|  |            ;; to local definitions and tell alist->package to ignore them. | ||||||
|  |            (second | ||||||
|  |             (memq #:result | ||||||
|  |                   (fold | ||||||
|  |                    (lambda (pkg names+result) | ||||||
|  |                      (match names+result | ||||||
|  |                        ((#:names names #:result result) | ||||||
|  |                         (list #:names | ||||||
|  |                               (cons (assoc-ref pkg "name") names) | ||||||
|  |                               #:result | ||||||
|  |                               (append result | ||||||
|  |                                       (list | ||||||
|  |                                        (package->code (alist->package pkg names)) | ||||||
|  |                                        (string->symbol (assoc-ref pkg "name")))))))) | ||||||
|  |                         (list #:names '() | ||||||
|  |                               #:result '()) | ||||||
|  |                         packages)))) | ||||||
|  |           (package | ||||||
|  |             (list (package->code (alist->package json)) | ||||||
|  |                   (string->symbol (assoc-ref json "name"))))))) | ||||||
|  |     (const #f))) | ||||||
|  | 
 | ||||||
|  | (define (json->scheme-file file) | ||||||
|  |   "Convert the FILE containing a JSON package definition to a Scheme | ||||||
|  | representation and return the new file name (or #F on error)." | ||||||
|  |   (and-let* ((sexprs (json->code file)) | ||||||
|  |              (file* (let* ((tempdir (or (getenv "TMPDIR") "/tmp")) | ||||||
|  |                            (template (string-append tempdir "/guix-XXXXXX")) | ||||||
|  |                            (port     (mkstemp! template))) | ||||||
|  |                       (close-port port) | ||||||
|  |                       template))) | ||||||
|  |     (call-with-output-file file* | ||||||
|  |       (lambda (port) | ||||||
|  |         (write '(use-modules (gnu) | ||||||
|  |                              (guix) | ||||||
|  |                              ((guix licenses) #:prefix license:)) | ||||||
|  |                port) | ||||||
|  |         (for-each (cut write <> port) sexprs))) | ||||||
|  |     file*)) | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| ;;; GNU Guix --- Functional package management for GNU | ;;; GNU Guix --- Functional package management for GNU | ||||||
| ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> | ;;; Copyright © 2017, 2020 Ricardo Wurmus <rekado@elephly.net> | ||||||
| ;;; | ;;; | ||||||
| ;;; This file is part of GNU Guix. | ;;; This file is part of GNU Guix. | ||||||
| ;;; | ;;; | ||||||
|  | @ -57,7 +57,7 @@ when evaluated." | ||||||
|   ;; Print either license variable name or the code for a license object |   ;; Print either license variable name or the code for a license object | ||||||
|   (define (license->code lic) |   (define (license->code lic) | ||||||
|     (let ((var (variable-name lic '(guix licenses)))) |     (let ((var (variable-name lic '(guix licenses)))) | ||||||
|       (or var |       (or (symbol-append 'license: var) | ||||||
|           `(license |           `(license | ||||||
|             (name ,(license-name lic)) |             (name ,(license-name lic)) | ||||||
|             (uri ,(license-uri lic)) |             (uri ,(license-uri lic)) | ||||||
|  | @ -79,7 +79,9 @@ when evaluated." | ||||||
|           (patches   (origin-patches source))) |           (patches   (origin-patches source))) | ||||||
|       `(origin |       `(origin | ||||||
|          (method ,(procedure-name method)) |          (method ,(procedure-name method)) | ||||||
|          (uri (string-append ,@(factorize-uri uri version))) |          (uri (string-append ,@(match (factorize-uri uri version) | ||||||
|  |                                  ((? string? uri) (list uri)) | ||||||
|  |                                  (factorized factorized)))) | ||||||
|          (sha256 |          (sha256 | ||||||
|           (base32 |           (base32 | ||||||
|            ,(format #f "~a" (bytevector->nix-base32-string sha256)))) |            ,(format #f "~a" (bytevector->nix-base32-string sha256)))) | ||||||
|  | @ -92,6 +94,8 @@ when evaluated." | ||||||
|   (define (package-lists->code lsts) |   (define (package-lists->code lsts) | ||||||
|     (list 'quasiquote |     (list 'quasiquote | ||||||
|           (map (match-lambda |           (map (match-lambda | ||||||
|  |                  ((? symbol? s) | ||||||
|  |                   (list (symbol->string s) (list 'unquote s))) | ||||||
|                  ((label pkg . out) |                  ((label pkg . out) | ||||||
|                   (let ((mod (package-module-name pkg))) |                   (let ((mod (package-module-name pkg))) | ||||||
|                     (cons* label |                     (cons* label | ||||||
|  | @ -121,45 +125,47 @@ when evaluated." | ||||||
|         (home-page           (package-home-page package)) |         (home-page           (package-home-page package)) | ||||||
|         (supported-systems   (package-supported-systems package)) |         (supported-systems   (package-supported-systems package)) | ||||||
|         (properties          (package-properties package))) |         (properties          (package-properties package))) | ||||||
|     `(package |     `(define-public ,(string->symbol name) | ||||||
|        (name ,name) |        (package | ||||||
|        (version ,version) |          (name ,name) | ||||||
|        (source ,(source->code source version)) |          (version ,version) | ||||||
|        ,@(match properties |          (source ,(source->code source version)) | ||||||
|            (() '()) |          ,@(match properties | ||||||
|            (_  `((properties ,properties)))) |              (() '()) | ||||||
|        ,@(if replacement |              (_  `((properties ,properties)))) | ||||||
|              `((replacement ,replacement)) |          ,@(if replacement | ||||||
|              '()) |                `((replacement ,replacement)) | ||||||
|        (build-system ,(symbol-append (build-system-name build-system) |                '()) | ||||||
|                                      '-build-system)) |          (build-system (@ (guix build-system ,(build-system-name build-system)) | ||||||
|        ,@(match arguments |                           ,(symbol-append (build-system-name build-system) | ||||||
|            (() '()) |                                           '-build-system))) | ||||||
|            (args `((arguments ,(list 'quasiquote args))))) |          ,@(match arguments | ||||||
|        ,@(match outputs |              (() '()) | ||||||
|            (("out") '()) |              (args `((arguments ,(list 'quasiquote args))))) | ||||||
|            (outs `((outputs (list ,@outs))))) |          ,@(match outputs | ||||||
|        ,@(match native-inputs |              (("out") '()) | ||||||
|            (() '()) |              (outs `((outputs (list ,@outs))))) | ||||||
|            (pkgs `((native-inputs ,(package-lists->code pkgs))))) |          ,@(match native-inputs | ||||||
|        ,@(match inputs |              (() '()) | ||||||
|            (() '()) |              (pkgs `((native-inputs ,(package-lists->code pkgs))))) | ||||||
|            (pkgs `((inputs ,(package-lists->code pkgs))))) |          ,@(match inputs | ||||||
|        ,@(match propagated-inputs |              (() '()) | ||||||
|            (() '()) |              (pkgs `((inputs ,(package-lists->code pkgs))))) | ||||||
|            (pkgs `((propagated-inputs ,(package-lists->code pkgs))))) |          ,@(match propagated-inputs | ||||||
|        ,@(if (lset= string=? supported-systems %supported-systems) |              (() '()) | ||||||
|              '() |              (pkgs `((propagated-inputs ,(package-lists->code pkgs))))) | ||||||
|              `((supported-systems (list ,@supported-systems)))) |          ,@(if (lset= string=? supported-systems %supported-systems) | ||||||
|        ,@(match (map search-path-specification->code native-search-paths) |                '() | ||||||
|            (() '()) |                `((supported-systems (list ,@supported-systems)))) | ||||||
|            (paths `((native-search-paths (list ,@paths))))) |          ,@(match (map search-path-specification->code native-search-paths) | ||||||
|        ,@(match (map search-path-specification->code search-paths) |              (() '()) | ||||||
|            (() '()) |              (paths `((native-search-paths (list ,@paths))))) | ||||||
|            (paths `((search-paths (list ,@paths))))) |          ,@(match (map search-path-specification->code search-paths) | ||||||
|        (home-page ,home-page) |              (() '()) | ||||||
|        (synopsis ,synopsis) |              (paths `((search-paths (list ,@paths))))) | ||||||
|        (description ,description) |          (home-page ,home-page) | ||||||
|        (license ,(if (list? license) |          (synopsis ,synopsis) | ||||||
|                      `(list ,@(map license->code license)) |          (description ,description) | ||||||
|                      (license->code license)))))) |          (license ,(if (list? license) | ||||||
|  |                        `(list ,@(map license->code license)) | ||||||
|  |                        (license->code license))))))) | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ | ||||||
| ;;; Copyright © 2012, 2013, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> | ;;; Copyright © 2012, 2013, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> | ||||||
| ;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org> | ;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org> | ||||||
| ;;; Copyright © 2016 David Craven <david@craven.ch> | ;;; Copyright © 2016 David Craven <david@craven.ch> | ||||||
| ;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net> | ;;; Copyright © 2017, 2019, 2020 Ricardo Wurmus <rekado@elephly.net> | ||||||
| ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> | ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> | ||||||
| ;;; Copyright © 2019 Robert Vollmert <rob@vllmrt.net> | ;;; Copyright © 2019 Robert Vollmert <rob@vllmrt.net> | ||||||
| ;;; | ;;; | ||||||
|  | @ -310,7 +310,23 @@ the expected fields of an <origin> object." | ||||||
|               (uri (assoc-ref orig "uri")) |               (uri (assoc-ref orig "uri")) | ||||||
|               (sha256 sha)))))) |               (sha256 sha)))))) | ||||||
| 
 | 
 | ||||||
| (define (alist->package meta) | (define* (alist->package meta #:optional (known-inputs '())) | ||||||
|  |   "Return a package value generated from the alist META.  If the list of | ||||||
|  | strings KNOWN-INPUTS is provided, do not treat the mentioned inputs as | ||||||
|  | specifications to look up and replace them with plain symbols instead." | ||||||
|  |   (define (process-inputs which) | ||||||
|  |     (let-values (((regular known) | ||||||
|  |                   (lset-diff+intersection | ||||||
|  |                    string=? | ||||||
|  |                    (vector->list (or (assoc-ref meta which) #())) | ||||||
|  |                    known-inputs))) | ||||||
|  |       (append (specs->package-lists regular) | ||||||
|  |               (map string->symbol known)))) | ||||||
|  |   (define (process-arguments arguments) | ||||||
|  |     (append-map (match-lambda | ||||||
|  |                   ((key . value) | ||||||
|  |                    (list (symbol->keyword (string->symbol key)) value))) | ||||||
|  |                 arguments)) | ||||||
|   (package |   (package | ||||||
|     (name (assoc-ref meta "name")) |     (name (assoc-ref meta "name")) | ||||||
|     (version (assoc-ref meta "version")) |     (version (assoc-ref meta "version")) | ||||||
|  | @ -318,15 +334,13 @@ the expected fields of an <origin> object." | ||||||
|     (build-system |     (build-system | ||||||
|       (lookup-build-system-by-name |       (lookup-build-system-by-name | ||||||
|        (string->symbol (assoc-ref meta "build-system")))) |        (string->symbol (assoc-ref meta "build-system")))) | ||||||
|     (native-inputs |     (arguments | ||||||
|      (specs->package-lists |      (or (and=> (assoc-ref meta "arguments") | ||||||
|       (vector->list (or (assoc-ref meta "native-inputs") '#())))) |                 process-arguments) | ||||||
|     (inputs |          '())) | ||||||
|      (specs->package-lists |     (native-inputs (process-inputs "native-inputs")) | ||||||
|       (vector->list (or (assoc-ref meta "inputs") '#())))) |     (inputs (process-inputs "inputs")) | ||||||
|     (propagated-inputs |     (propagated-inputs (process-inputs "propagated-inputs")) | ||||||
|      (specs->package-lists |  | ||||||
|       (vector->list (or (assoc-ref meta "propagated-inputs") '#())))) |  | ||||||
|     (home-page |     (home-page | ||||||
|      (assoc-ref meta "home-page")) |      (assoc-ref meta "home-page")) | ||||||
|     (synopsis |     (synopsis | ||||||
|  |  | ||||||
|  | @ -2,6 +2,7 @@ | ||||||
| ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> | ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> | ||||||
| ;;; Copyright © 2013 Mark H Weaver <mhw@netris.org> | ;;; Copyright © 2013 Mark H Weaver <mhw@netris.org> | ||||||
| ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> | ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> | ||||||
|  | ;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net> | ||||||
| ;;; | ;;; | ||||||
| ;;; This file is part of GNU Guix. | ;;; This file is part of GNU Guix. | ||||||
| ;;; | ;;; | ||||||
|  | @ -21,6 +22,7 @@ | ||||||
| (define-module (guix scripts build) | (define-module (guix scripts build) | ||||||
|   #:use-module (guix ui) |   #:use-module (guix ui) | ||||||
|   #:use-module (guix scripts) |   #:use-module (guix scripts) | ||||||
|  |   #:use-module (guix import json) | ||||||
|   #:use-module (guix store) |   #:use-module (guix store) | ||||||
|   #:use-module (guix derivations) |   #:use-module (guix derivations) | ||||||
|   #:use-module (guix packages) |   #:use-module (guix packages) | ||||||
|  | @ -834,7 +836,10 @@ build---packages, gexps, derivations, and so on." | ||||||
|                        (else |                        (else | ||||||
|                         (list (specification->package spec))))) |                         (list (specification->package spec))))) | ||||||
|                 (('file . file) |                 (('file . file) | ||||||
|                  (ensure-list (load* file (make-user-module '())))) |                  (let ((file (or (and (string-suffix? ".json" file) | ||||||
|  |                                       (json->scheme-file file)) | ||||||
|  |                                  file))) | ||||||
|  |                    (ensure-list (load* file (make-user-module '()))))) | ||||||
|                 (('manifest . manifest) |                 (('manifest . manifest) | ||||||
|                  (map manifest-entry-item |                  (map manifest-entry-item | ||||||
|                       (manifest-entries |                       (manifest-entries | ||||||
|  |  | ||||||
|  | @ -23,7 +23,7 @@ | ||||||
|   #:use-module (guix utils) |   #:use-module (guix utils) | ||||||
|   #:use-module (guix scripts) |   #:use-module (guix scripts) | ||||||
|   #:use-module (guix import utils) |   #:use-module (guix import utils) | ||||||
|   #:use-module (guix import print) |   #:use-module (guix import json) | ||||||
|   #:use-module (guix scripts import) |   #:use-module (guix scripts import) | ||||||
|   #:use-module (guix packages) |   #:use-module (guix packages) | ||||||
|   #:use-module (srfi srfi-1) |   #:use-module (srfi srfi-1) | ||||||
|  | @ -88,14 +88,8 @@ Import and convert the JSON package definition in PACKAGE-FILE.\n")) | ||||||
|                            (reverse opts)))) |                            (reverse opts)))) | ||||||
|     (match args |     (match args | ||||||
|       ((file-name) |       ((file-name) | ||||||
|        (catch 'json-invalid |        (or (json->code file-name) | ||||||
|          (lambda () |            (leave (G_ "invalid JSON in file '~a'~%") file-name))) | ||||||
|            (let ((json (json-string->scm |  | ||||||
|                         (with-input-from-file file-name read-string)))) |  | ||||||
|              ;; TODO: also print define-module boilerplate |  | ||||||
|              (package->code (alist->package json)))) |  | ||||||
|          (lambda _ |  | ||||||
|            (leave (G_ "invalid JSON in file '~a'~%") file-name)))) |  | ||||||
|       (() |       (() | ||||||
|        (leave (G_ "too few arguments~%"))) |        (leave (G_ "too few arguments~%"))) | ||||||
|       ((many ...) |       ((many ...) | ||||||
|  |  | ||||||
|  | @ -7,6 +7,7 @@ | ||||||
| ;;; Copyright © 2016 Benz Schenk <benz.schenk@uzh.ch> | ;;; Copyright © 2016 Benz Schenk <benz.schenk@uzh.ch> | ||||||
| ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> | ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> | ||||||
| ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr> | ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr> | ||||||
|  | ;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net> | ||||||
| ;;; | ;;; | ||||||
| ;;; This file is part of GNU Guix. | ;;; This file is part of GNU Guix. | ||||||
| ;;; | ;;; | ||||||
|  | @ -33,6 +34,7 @@ | ||||||
|   #:use-module (guix packages) |   #:use-module (guix packages) | ||||||
|   #:use-module (guix profiles) |   #:use-module (guix profiles) | ||||||
|   #:use-module (guix search-paths) |   #:use-module (guix search-paths) | ||||||
|  |   #:use-module (guix import json) | ||||||
|   #:use-module (guix monads) |   #:use-module (guix monads) | ||||||
|   #:use-module (guix utils) |   #:use-module (guix utils) | ||||||
|   #:use-module (guix config) |   #:use-module (guix config) | ||||||
|  | @ -416,7 +418,10 @@ Install, remove, or upgrade packages in a single transaction.\n")) | ||||||
|          (option '(#\f "install-from-file") #t #f |          (option '(#\f "install-from-file") #t #f | ||||||
|                  (lambda (opt name arg result arg-handler) |                  (lambda (opt name arg result arg-handler) | ||||||
|                    (values (alist-cons 'install |                    (values (alist-cons 'install | ||||||
|                                        (load* arg (make-user-module '())) |                                        (let ((file (or (and (string-suffix? ".json" arg) | ||||||
|  |                                                             (json->scheme-file arg)) | ||||||
|  |                                                        arg))) | ||||||
|  |                                          (load* file (make-user-module '()))) | ||||||
|                                        result) |                                        result) | ||||||
|                            #f))) |                            #f))) | ||||||
|          (option '(#\r "remove") #f #t |          (option '(#\r "remove") #f #t | ||||||
|  |  | ||||||
|  | @ -472,8 +472,8 @@ addition to build events." | ||||||
|            (let ((count (match (assq-ref properties 'graft) |            (let ((count (match (assq-ref properties 'graft) | ||||||
|                           (#f  0) |                           (#f  0) | ||||||
|                           (lst (or (assq-ref lst 'count) 0))))) |                           (lst (or (assq-ref lst 'count) 0))))) | ||||||
|              (format port (info (N_ "applying ~a graft for ~a..." |              (format port (info (N_ "applying ~a graft for ~a ..." | ||||||
|                                     "applying ~a grafts for ~a..." |                                     "applying ~a grafts for ~a ..." | ||||||
|                                     count)) |                                     count)) | ||||||
|                      count drv))) |                      count drv))) | ||||||
|          ('profile |          ('profile | ||||||
|  | @ -525,7 +525,7 @@ addition to build events." | ||||||
|        (newline port))) |        (newline port))) | ||||||
|     (('download-started item uri _ ...) |     (('download-started item uri _ ...) | ||||||
|      (erase-current-line*) |      (erase-current-line*) | ||||||
|      (format port (info (G_ "downloading from ~a...")) uri) |      (format port (info (G_ "downloading from ~a ...")) uri) | ||||||
|      (newline port)) |      (newline port)) | ||||||
|     (('download-progress item uri |     (('download-progress item uri | ||||||
|                          (= string->number size) |                          (= string->number size) | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| ;;; GNU Guix --- Functional package management for GNU | ;;; GNU Guix --- Functional package management for GNU | ||||||
| ;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org> | ;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org> | ||||||
| ;;; | ;;; | ||||||
| ;;; This file is part of GNU Guix. | ;;; This file is part of GNU Guix. | ||||||
| ;;; | ;;; | ||||||
|  | @ -30,6 +30,24 @@ | ||||||
| (define git-command | (define git-command | ||||||
|   (make-parameter "git")) |   (make-parameter "git")) | ||||||
| 
 | 
 | ||||||
|  | (define (call-with-environment-variables variables thunk) | ||||||
|  |   "Call THUNK with the environment VARIABLES set." | ||||||
|  |   (let ((environment (environ))) | ||||||
|  |     (dynamic-wind | ||||||
|  |       (lambda () | ||||||
|  |         (for-each (match-lambda | ||||||
|  |                     ((variable value) | ||||||
|  |                      (setenv variable value))) | ||||||
|  |                   variables)) | ||||||
|  |       thunk | ||||||
|  |       (lambda () | ||||||
|  |         (environ environment))))) | ||||||
|  | 
 | ||||||
|  | (define-syntax-rule (with-environment-variables variables exp ...) | ||||||
|  |   "Evaluate EXP with the given environment VARIABLES set." | ||||||
|  |   (call-with-environment-variables variables | ||||||
|  |                                    (lambda () exp ...))) | ||||||
|  | 
 | ||||||
| (define (populate-git-repository directory directives) | (define (populate-git-repository directory directives) | ||||||
|   "Initialize a new Git checkout and repository in DIRECTORY and apply |   "Initialize a new Git checkout and repository in DIRECTORY and apply | ||||||
| DIRECTIVES.  Each element of DIRECTIVES is an sexp like: | DIRECTIVES.  Each element of DIRECTIVES is an sexp like: | ||||||
|  | @ -41,8 +59,21 @@ Return DIRECTORY on success." | ||||||
|   ;; Note: As of version 0.2.0, Guile-Git lacks the necessary bindings to do |   ;; Note: As of version 0.2.0, Guile-Git lacks the necessary bindings to do | ||||||
|   ;; all this, so resort to the "git" command. |   ;; all this, so resort to the "git" command. | ||||||
|   (define (git command . args) |   (define (git command . args) | ||||||
|     (apply invoke (git-command) "-C" directory |     ;; Make sure Git doesn't rely on the user's config. | ||||||
|            command args)) |     (call-with-temporary-directory | ||||||
|  |      (lambda (home) | ||||||
|  |        (call-with-output-file (string-append home "/.gitconfig") | ||||||
|  |          (lambda (port) | ||||||
|  |            (display "[user] | ||||||
|  |   email = charlie@example.org\n  name = Charlie Guix\n" | ||||||
|  |                     port))) | ||||||
|  | 
 | ||||||
|  |        (with-environment-variables | ||||||
|  |         `(("GIT_CONFIG_NOSYSTEM" "1") | ||||||
|  |           ("GIT_ATTR_NOSYSTEM" "1") | ||||||
|  |           ("HOME" ,home)) | ||||||
|  |         (apply invoke (git-command) "-C" directory | ||||||
|  |                command args))))) | ||||||
| 
 | 
 | ||||||
|   (mkdir-p directory) |   (mkdir-p directory) | ||||||
|   (git "init") |   (git "init") | ||||||
|  |  | ||||||
							
								
								
									
										14
									
								
								guix/ui.scm
									
										
									
									
									
								
							
							
						
						
									
										14
									
								
								guix/ui.scm
									
										
									
									
									
								
							|  | @ -234,8 +234,8 @@ information, or #f if it could not be found." | ||||||
| 
 | 
 | ||||||
|                ;; Give 'load' an absolute file name so that it doesn't try to |                ;; Give 'load' an absolute file name so that it doesn't try to | ||||||
|                ;; search for FILE in %LOAD-PATH.  Note: use 'load', not |                ;; search for FILE in %LOAD-PATH.  Note: use 'load', not | ||||||
|                ;; 'primitive-load', so that FILE is compiled, which then allows us |                ;; 'primitive-load', so that FILE is compiled, which then allows | ||||||
|                ;; to provide better error reporting with source line numbers. |                ;; us to provide better error reporting with source line numbers. | ||||||
|                (load (canonicalize-path file))) |                (load (canonicalize-path file))) | ||||||
|              (const #f)))))) |              (const #f)))))) | ||||||
|     (lambda _ |     (lambda _ | ||||||
|  | @ -796,7 +796,7 @@ directories:~{ ~a~}~%") | ||||||
|                (apply format #f format-string format-args)))))) |                (apply format #f format-string format-args)))))) | ||||||
| 
 | 
 | ||||||
| (define-syntax-rule (leave-on-EPIPE exp ...) | (define-syntax-rule (leave-on-EPIPE exp ...) | ||||||
|   "Run EXP... in a context when EPIPE errors are caught and lead to 'exit' |   "Run EXP... in a context where EPIPE errors are caught and lead to 'exit' | ||||||
| with successful exit code.  This is useful when writing to the standard output | with successful exit code.  This is useful when writing to the standard output | ||||||
| may lead to EPIPE, because the standard output is piped through 'head' or | may lead to EPIPE, because the standard output is piped through 'head' or | ||||||
| similar." | similar." | ||||||
|  | @ -925,7 +925,7 @@ download." | ||||||
|          drv)) |          drv)) | ||||||
| 
 | 
 | ||||||
|   (define substitutable-info |   (define substitutable-info | ||||||
|     ;; Call 'substitutation-oracle' upfront so we don't end up launching the |     ;; Call 'substitution-oracle' upfront so we don't end up launching the | ||||||
|     ;; substituter many times.  This makes a big difference, especially when |     ;; substituter many times.  This makes a big difference, especially when | ||||||
|     ;; DRV is a long list as is the case with 'guix environment'. |     ;; DRV is a long list as is the case with 'guix environment'. | ||||||
|     (if use-substitutes? |     (if use-substitutes? | ||||||
|  | @ -1251,7 +1251,7 @@ separator between subsequent columns." | ||||||
| 
 | 
 | ||||||
| (define* (indented-string str indent | (define* (indented-string str indent | ||||||
|                           #:key (initial-indent? #t)) |                           #:key (initial-indent? #t)) | ||||||
|   "Return STR with each newline preceded by IDENT spaces.  When |   "Return STR with each newline preceded by INDENT spaces.  When | ||||||
| INITIAL-INDENT? is true, the first line is also indented." | INITIAL-INDENT? is true, the first line is also indented." | ||||||
|   (define indent-string |   (define indent-string | ||||||
|     (make-list indent #\space)) |     (make-list indent #\space)) | ||||||
|  | @ -1534,7 +1534,7 @@ score, the more relevant OBJ is to REGEXPS." | ||||||
|     (,(lambda (package) |     (,(lambda (package) | ||||||
|         (filter (lambda (output) |         (filter (lambda (output) | ||||||
|                   (not (member output |                   (not (member output | ||||||
|                                ;; Some common outpus shared by many packages. |                                ;; Some common outputs shared by many packages. | ||||||
|                                '("out" "doc" "debug" "lib" "include" "bin")))) |                                '("out" "doc" "debug" "lib" "include" "bin")))) | ||||||
|                 (package-outputs package))) |                 (package-outputs package))) | ||||||
|      . 1) |      . 1) | ||||||
|  | @ -1942,7 +1942,7 @@ found." | ||||||
| (define (run-guix . args) | (define (run-guix . args) | ||||||
|   "Run the 'guix' command defined by command line ARGS. |   "Run the 'guix' command defined by command line ARGS. | ||||||
| Unlike 'guix-main', this procedure assumes that locale, i18n support, | Unlike 'guix-main', this procedure assumes that locale, i18n support, | ||||||
| and signal handling has already been set up." | and signal handling have already been set up." | ||||||
|   (define option? (cut string-prefix? "-" <>)) |   (define option? (cut string-prefix? "-" <>)) | ||||||
| 
 | 
 | ||||||
|   ;; The default %LOAD-EXTENSIONS includes the empty string, which doubles the |   ;; The default %LOAD-EXTENSIONS includes the empty string, which doubles the | ||||||
|  |  | ||||||
		Reference in a new issue