Merge branch 'master' into core-updates

This commit is contained in:
Marius Bakke 2020-04-19 16:53:01 +02:00
commit 7abe35febe
No known key found for this signature in database
GPG key ID: A2A06DF2A33A54FA
59 changed files with 1075 additions and 503 deletions

View file

@ -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 \

View file

@ -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"

View file

@ -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

View file

@ -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
View 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"]
}
]

View file

@ -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))

View file

@ -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 ()

View file

@ -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 \

View file

@ -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.

View file

@ -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)))

View file

@ -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

View file

@ -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"

View file

@ -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

View file

@ -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")

View file

@ -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)

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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)))

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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+)))

View file

@ -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)))

View file

@ -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)))

View file

@ -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")

View file

@ -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

View file

@ -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")

View file

@ -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")

View file

@ -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

View file

@ -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)))

View file

@ -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

View file

@ -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)))

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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)))

View 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(

View file

@ -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

View file

@ -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)))

View file

@ -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+)))

View file

@ -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

View file

@ -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)

View file

@ -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"

View file

@ -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.

View file

@ -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)))))

View file

@ -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

View file

@ -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)))))

View file

@ -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)

View file

@ -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)))
(_ (_

View file

@ -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*))

View 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)))))))

View file

@ -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

View file

@ -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

View file

@ -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 ...)

View file

@ -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

View file

@ -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)

View file

@ -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")

View file

@ -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