aboutsummaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorMarius Bakke <marius@gnu.org>2021-08-12 00:30:27 +0200
committerMarius Bakke <marius@gnu.org>2021-08-12 00:30:27 +0200
commitc4133c43c7cfe2476ebfae87f9e4d10d96de9bc7 (patch)
tree47bd773d2f434384b54e56916c1a287dd8e51511 /gnu
parentffa01e68859bb7a6daa9fcffdc8d77ca35db4bc0 (diff)
parent4eb0a5146ae5a195a29c79f586fcc1e58f7fa69b (diff)
downloadguix-c4133c43c7cfe2476ebfae87f9e4d10d96de9bc7.tar
guix-c4133c43c7cfe2476ebfae87f9e4d10d96de9bc7.tar.gz
Merge branch 'master' into core-updates-frozen
Conflicts: gnu/packages/algebra.scm gnu/packages/games.scm gnu/packages/golang.scm gnu/packages/kerberos.scm gnu/packages/mail.scm gnu/packages/python.scm gnu/packages/ruby.scm gnu/packages/scheme.scm gnu/packages/tex.scm gnu/packages/tls.scm gnu/packages/version-control.scm
Diffstat (limited to 'gnu')
-rw-r--r--gnu/build/jami-service.scm587
-rw-r--r--gnu/build/shepherd.scm14
-rw-r--r--gnu/local.mk22
-rw-r--r--gnu/packages/admin.scm46
-rw-r--r--gnu/packages/algebra.scm33
-rw-r--r--gnu/packages/backup.scm34
-rw-r--r--gnu/packages/bioconductor.scm57
-rw-r--r--gnu/packages/bioinformatics.scm80
-rw-r--r--gnu/packages/bootloaders.scm54
-rw-r--r--gnu/packages/browser-extensions.scm8
-rw-r--r--gnu/packages/chromium.scm53
-rw-r--r--gnu/packages/compression.scm13
-rw-r--r--gnu/packages/cran.scm302
-rw-r--r--gnu/packages/crates-io.scm221
-rw-r--r--gnu/packages/crypto.scm2
-rw-r--r--gnu/packages/databases.scm13
-rw-r--r--gnu/packages/digest.scm21
-rw-r--r--gnu/packages/dns.scm4
-rw-r--r--gnu/packages/education.scm24
-rw-r--r--gnu/packages/emacs-xyz.scm237
-rw-r--r--gnu/packages/engineering.scm9
-rw-r--r--gnu/packages/file-systems.scm25
-rw-r--r--gnu/packages/finance.scm6
-rw-r--r--gnu/packages/game-development.scm59
-rw-r--r--gnu/packages/games.scm127
-rw-r--r--gnu/packages/gcc.scm4
-rw-r--r--gnu/packages/gnome.scm5
-rw-r--r--gnu/packages/gnuzilla.scm14
-rw-r--r--gnu/packages/golang.scm1160
-rw-r--r--gnu/packages/gps.scm9
-rw-r--r--gnu/packages/graphics.scm4
-rw-r--r--gnu/packages/guile-xyz.scm4
-rw-r--r--gnu/packages/haskell-apps.scm4
-rw-r--r--gnu/packages/ibus.scm161
-rw-r--r--gnu/packages/julia-xyz.scm4
-rw-r--r--gnu/packages/julia.scm31
-rw-r--r--gnu/packages/less.scm6
-rw-r--r--gnu/packages/libusb.scm6
-rw-r--r--gnu/packages/linux.scm37
-rw-r--r--gnu/packages/lisp.scm9
-rw-r--r--gnu/packages/llvm.scm39
-rw-r--r--gnu/packages/machine-learning.scm438
-rw-r--r--gnu/packages/mail.scm72
-rw-r--r--gnu/packages/maths.scm284
-rw-r--r--gnu/packages/mp3.scm6
-rw-r--r--gnu/packages/mpd.scm4
-rw-r--r--gnu/packages/music.scm12
-rw-r--r--gnu/packages/networking.scm23
-rw-r--r--gnu/packages/ocaml.scm219
-rw-r--r--gnu/packages/patches/instead-use-games-path.patch32
-rw-r--r--gnu/packages/patches/llvm-roc-3.0.0-add_libraries.patch22
-rw-r--r--gnu/packages/patches/llvm-roc-4.0.0-remove-isystem-usr-include.patch29
-rw-r--r--gnu/packages/patches/llvm-roc-4.2.0-add_Object.patch13
-rw-r--r--gnu/packages/patches/onnx-optimizer-system-library.patch53
-rw-r--r--gnu/packages/patches/pypy3-7.3.1-fix-tests.patch278
-rw-r--r--gnu/packages/patches/python-pytorch-runpath.patch25
-rw-r--r--gnu/packages/patches/python-pytorch-system-libraries.patch131
-rw-r--r--gnu/packages/patches/rapidjson-gcc-compat.patch48
-rw-r--r--gnu/packages/patches/restic-0.9.6-fix-tests-for-go1.15.patch51
-rw-r--r--gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch52
-rw-r--r--gnu/packages/patches/rocm-opencl-runtime-3.10.0-includes.patch14
-rw-r--r--gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch28
-rw-r--r--gnu/packages/patches/rocm-opencl-runtime-4.3-nocltrace.patch25
-rw-r--r--gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch63
-rw-r--r--gnu/packages/patches/samba-fix-fcntl-hint-detection.patch55
-rw-r--r--gnu/packages/patches/u-boot-riscv64-fix-extlinux.patch4
-rw-r--r--gnu/packages/patches/u-boot-sifive-prevent-reloc-initrd-fdt.patch16
-rw-r--r--gnu/packages/photo.scm28
-rw-r--r--gnu/packages/prolog.scm13
-rw-r--r--gnu/packages/python-check.scm4
-rw-r--r--gnu/packages/python-crypto.scm9
-rw-r--r--gnu/packages/python-web.scm56
-rw-r--r--gnu/packages/python-xyz.scm111
-rw-r--r--gnu/packages/python.scm90
-rw-r--r--gnu/packages/radio.scm4
-rw-r--r--gnu/packages/rocm.scm365
-rw-r--r--gnu/packages/ruby.scm24
-rw-r--r--gnu/packages/samba.scm22
-rw-r--r--gnu/packages/scanner.scm64
-rw-r--r--gnu/packages/scheme.scm17
-rw-r--r--gnu/packages/serialization.scm22
-rw-r--r--gnu/packages/shells.scm636
-rw-r--r--gnu/packages/spice.scm4
-rw-r--r--gnu/packages/statistics.scm33
-rw-r--r--gnu/packages/suckless.scm73
-rw-r--r--gnu/packages/syndication.scm5
-rw-r--r--gnu/packages/task-runners.scm64
-rw-r--r--gnu/packages/tls.scm44
-rw-r--r--gnu/packages/uucp.scm118
-rw-r--r--gnu/packages/version-control.scm6
-rw-r--r--gnu/packages/video.scm8
-rw-r--r--gnu/packages/web-browsers.scm8
-rw-r--r--gnu/packages/web.scm9
-rw-r--r--gnu/packages/xdisorg.scm51
-rw-r--r--gnu/packages/xfce.scm4
-rw-r--r--gnu/services/base.scm42
-rw-r--r--gnu/services/configuration.scm83
-rw-r--r--gnu/services/telephony.scm684
-rw-r--r--gnu/tests/data/jami-dummy-account.dat392
-rw-r--r--gnu/tests/telephony.scm366
100 files changed, 6934 insertions, 2070 deletions
diff --git a/gnu/build/jami-service.scm b/gnu/build/jami-service.scm
new file mode 100644
index 0000000000..d44e87387d
--- /dev/null
+++ b/gnu/build/jami-service.scm
@@ -0,0 +1,587 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;;
+;;; This module contains helpers used as part of the jami-service-type
+;;; definition.
+;;;
+;;; Code:
+
+(define-module (gnu build jami-service)
+ #:use-module (ice-9 format)
+ #:use-module (ice-9 match)
+ #:use-module (ice-9 peg)
+ #:use-module (ice-9 rdelim)
+ #:use-module (ice-9 regex)
+ #:use-module (rnrs io ports)
+ #:autoload (shepherd service) (fork+exec-command)
+ #:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-26)
+ #:export (account-fingerprint?
+ account-details->recutil
+ get-accounts
+ get-usernames
+ set-account-details
+ add-account
+ account->username
+ username->account
+ username->contacts
+ enable-account
+ disable-account
+
+ add-contact
+ remove-contact
+
+ set-all-moderators
+ set-moderator
+ username->all-moderators?
+ username->moderators
+
+ dbus-available-services
+ dbus-service-available?
+
+ %send-dbus-binary
+ %send-dbus-bus
+ %send-dbus-user
+ %send-dbus-group
+ %send-dbus-debug
+ send-dbus
+
+ with-retries))
+
+;;;
+;;; Utilities.
+;;;
+
+(define-syntax-rule (with-retries n delay body ...)
+ "Retry the code in BODY up to N times until it doesn't raise an exception
+nor return #f, else raise an error. A delay of DELAY seconds is inserted
+before each retry."
+ (let loop ((attempts 0))
+ (catch #t
+ (lambda ()
+ (let ((result (begin body ...)))
+ (if (not result)
+ (error "failed attempt" attempts)
+ result)))
+ (lambda args
+ (if (< attempts n)
+ (begin
+ (sleep delay) ;else wait and retry
+ (loop (+ 1 attempts)))
+ (error "maximum number of retry attempts reached"
+ body ... args))))))
+
+(define (alist->list alist)
+ "Flatten ALIST into a list."
+ (append-map (match-lambda
+ (() '())
+ ((key . value)
+ (list key value)))
+ alist))
+
+(define account-fingerprint-rx (make-regexp "[0-9A-f]{40}"))
+
+(define (account-fingerprint? val)
+ "A Jami account fingerprint is 40 characters long and only contains
+hexadecimal characters."
+ (and (string? val)
+ (regexp-exec account-fingerprint-rx val)))
+
+
+;;;
+;;; D-Bus reply parser.
+;;;
+
+(define (parse-dbus-reply reply)
+ "Return the parse tree of REPLY, a string returned by the 'dbus-send'
+command."
+ ;; Refer to 'man 1 dbus-send' for the grammar reference. Note that the
+ ;; format of the replies doesn't match the format of the input, which is the
+ ;; one documented, but it gives an idea. For an even better reference, see
+ ;; the `print_iter' procedure of the 'dbus-print-message.c' file from the
+ ;; 'dbus' package sources.
+ (define-peg-string-patterns
+ "contents <- header (item / container (item / container*)?)
+ item <-- WS type WS value NL
+ container <- array / dict / variant
+ array <-- array-start (item / container)* array-end
+ dict <-- array-start dict-entry* array-end
+ dict-entry <-- dict-entry-start item item dict-entry-end
+ variant <-- variant-start item
+ type <-- 'string' / 'int16' / 'uint16' / 'int32' / 'uint32' / 'int64' /
+ 'uint64' / 'double' / 'byte' / 'boolean' / 'objpath'
+ value <-- (!NL .)* NL
+ header < (!NL .)* NL
+ variant-start < WS 'variant'
+ array-start < WS 'array [' NL
+ array-end < WS ']' NL
+ dict-entry-start < WS 'dict entry(' NL
+ dict-entry-end < WS ')' NL
+ DQ < '\"'
+ WS < ' '*
+ NL < '\n'*")
+
+ (peg:tree (match-pattern contents reply)))
+
+(define (strip-quotes text)
+ "Strip the leading and trailing double quotes (\") characters from TEXT."
+ (let* ((text* (if (string-prefix? "\"" text)
+ (string-drop text 1)
+ text))
+ (text** (if (string-suffix? "\"" text*)
+ (string-drop-right text* 1)
+ text*)))
+ text**))
+
+(define (deserialize-item item)
+ "Return the value described by the ITEM parse tree as a Guile object."
+ ;; Strings are printed wrapped in double quotes (see the print_iter
+ ;; procedure in dbus-print-message.c).
+ (match item
+ (('item ('type "string") ('value value))
+ (strip-quotes value))
+ (('item ('type "boolean") ('value value))
+ (if (string=? "true" value)
+ #t
+ #f))
+ (('item _ ('value value))
+ value)))
+
+(define (serialize-boolean bool)
+ "Return the serialized format expected by dbus-send for BOOL."
+ (format #f "boolean:~:[false~;true~]" bool))
+
+(define (dict->alist dict-parse-tree)
+ "Translate a dict parse tree to an alist."
+ (define (tuples->alist tuples)
+ (map (lambda (x) (apply cons x)) tuples))
+
+ (match dict-parse-tree
+ ('dict
+ '())
+ (('dict ('dict-entry keys values) ...)
+ (let ((keys* (map deserialize-item keys))
+ (values* (map deserialize-item values)))
+ (tuples->alist (zip keys* values*))))))
+
+(define (array->list array-parse-tree)
+ "Translate an array parse tree to a list."
+ (match array-parse-tree
+ ('array
+ '())
+ (('array items ...)
+ (map deserialize-item items))))
+
+
+;;;
+;;; Low-level, D-Bus-related procedures.
+;;;
+
+;;; The following parameters are used in the jami-service-type service
+;;; definition to conveniently customize the behavior of the send-dbus helper,
+;;; even when called indirectly.
+(define %send-dbus-binary (make-parameter "dbus-send"))
+(define %send-dbus-bus (make-parameter #f))
+(define %send-dbus-user (make-parameter #f))
+(define %send-dbus-group (make-parameter #f))
+(define %send-dbus-debug (make-parameter #f))
+
+(define* (send-dbus #:key service path interface method
+ bus
+ dbus-send
+ user group
+ timeout
+ arguments)
+ "Return the response of DBUS-SEND, else raise an error. Unless explicitly
+provided, DBUS-SEND takes the value of the %SEND-DBUS-BINARY parameter. BUS
+can be used to specify the bus address, such as 'unix:path=/var/run/jami/bus'.
+Alternatively, the %SEND-DBUS-BUS parameter can be used. ARGUMENTS can be
+used to pass input values to a D-Bus method call. TIMEOUT is the amount of
+time to wait for a reply in milliseconds before giving up with an error. USER
+and GROUP allow choosing under which user/group the DBUS-SEND command is
+executed. Alternatively, the %SEND-DBUS-USER and %SEND-DBUS-GROUP parameters
+can be used instead."
+ (let* ((command `(,(if dbus-send
+ dbus-send
+ (%send-dbus-binary))
+ ,@(if (or bus (%send-dbus-bus))
+ (list (string-append "--bus="
+ (or bus (%send-dbus-bus))))
+ '())
+ "--print-reply"
+ ,@(if timeout
+ (list (format #f "--reply-timeout=~d" timeout))
+ '())
+ ,(string-append "--dest=" service) ;e.g., cx.ring.Ring
+ ,path ;e.g., /cx/ring/Ring/ConfigurationManager
+ ,(string-append interface "." method)
+ ,@(or arguments '())))
+ (temp-port (mkstemp! (string-copy "/tmp/dbus-send-output-XXXXXXX")))
+ (temp-file (port-filename temp-port)))
+ (dynamic-wind
+ (lambda ()
+ (let* ((uid (or (and=> (or user (%send-dbus-user))
+ (compose passwd:uid getpwnam)) -1))
+ (gid (or (and=> (or group (%send-dbus-group))
+ (compose group:gid getgrnam)) -1)))
+ (chown temp-port uid gid)))
+ (lambda ()
+ (let ((pid (fork+exec-command command
+ #:user (or user (%send-dbus-user))
+ #:group (or group (%send-dbus-group))
+ #:log-file temp-file)))
+ (match (waitpid pid)
+ ((_ . status)
+ (let ((exit-status (status:exit-val status))
+ (output (call-with-port temp-port get-string-all)))
+ (if (= 0 exit-status)
+ output
+ (error "the send-dbus command exited with: "
+ command exit-status output)))))))
+ (lambda ()
+ (false-if-exception (delete-file temp-file))))))
+
+(define (parse-account-ids reply)
+ "Return the Jami account IDs from REPLY, which is assumed to be the output
+of the Jami D-Bus `getAccountList' method."
+ (array->list (parse-dbus-reply reply)))
+
+(define (parse-account-details reply)
+ "Parse REPLY, which is assumed to be the output of the Jami D-Bus
+`getAccountDetails' method, and return its content as an alist."
+ (dict->alist (parse-dbus-reply reply)))
+
+(define (parse-contacts reply)
+ "Parse REPLY, which is assumed to be the output of the Jamid D-Bus
+`getContacts' method, and return its content as an alist."
+ (match (parse-dbus-reply reply)
+ ('array
+ '())
+ (('array dicts ...)
+ (map dict->alist dicts))))
+
+
+;;;
+;;; Higher-level, D-Bus-related procedures.
+;;;
+
+(define (validate-fingerprint fingerprint)
+ "Validate that fingerprint is 40 characters long."
+ (unless (account-fingerprint? fingerprint)
+ (error "Account fingerprint is not valid:" fingerprint)))
+
+(define (dbus-available-services)
+ "Return the list of available (acquired) D-Bus services."
+ (let ((reply (parse-dbus-reply
+ (send-dbus #:service "org.freedesktop.DBus"
+ #:path "/org/freedesktop/DBus"
+ #:interface "org.freedesktop.DBus"
+ #:method "ListNames"))))
+ ;; Remove entries such as ":1.7".
+ (remove (cut string-prefix? ":" <>)
+ (array->list reply))))
+
+(define (dbus-service-available? service)
+ "Predicate to check for the D-Bus SERVICE availability."
+ (member service (dbus-available-services)))
+
+(define* (send-dbus/configuration-manager #:key method arguments timeout)
+ "Query the Jami D-Bus ConfigurationManager service."
+ (send-dbus #:service "cx.ring.Ring"
+ #:path "/cx/ring/Ring/ConfigurationManager"
+ #:interface "cx.ring.Ring.ConfigurationManager"
+ #:method method
+ #:arguments arguments
+ #:timeout timeout))
+
+;;; The following methods are for internal use; they make use of the account
+;;; ID, an implementation detail of Jami the user should not need to be
+;;; concerned with.
+(define (get-account-ids)
+ "Return the available Jami account identifiers (IDs). Account IDs are an
+implementation detail used to identify the accounts in Jami."
+ (parse-account-ids
+ (send-dbus/configuration-manager #:method "getAccountList")))
+
+(define (id->account-details id)
+ "Retrieve the account data associated with the given account ID."
+ (parse-account-details
+ (send-dbus/configuration-manager
+ #:method "getAccountDetails"
+ #:arguments (list (string-append "string:" id)))))
+
+(define (id->volatile-account-details id)
+ "Retrieve the account data associated with the given account ID."
+ (parse-account-details
+ (send-dbus/configuration-manager
+ #:method "getVolatileAccountDetails"
+ #:arguments (list (string-append "string:" id)))))
+
+(define (id->account id)
+ "Retrieve the complete account data associated with the given account ID."
+ (append (id->volatile-account-details id)
+ (id->account-details id)))
+
+(define %username-to-id-cache #f)
+
+(define (invalidate-username-to-id-cache!)
+ (set! %username-to-id-cache #f))
+
+(define (username->id username)
+ "Return the first account ID corresponding to USERNAME."
+ (unless (assoc-ref %username-to-id-cache username)
+ (set! %username-to-id-cache
+ (append-map
+ (lambda (id)
+ (let* ((account (id->account id))
+ (username (assoc-ref account "Account.username"))
+ (registered-name (assoc-ref account
+ "Account.registeredName")))
+ `(,@(if username
+ (list (cons username id))
+ '())
+ ,@(if registered-name
+ (list (cons registered-name id))
+ '()))))
+ (get-account-ids))))
+ (or (assoc-ref %username-to-id-cache username)
+ (let ((message (format #f "Could not retrieve a local account ID\
+ for ~:[username~;fingerprint~]" (account-fingerprint? username))))
+ (error message username))))
+
+(define (account->username account)
+ "Return USERNAME, the registered username associated with ACCOUNT, else its
+public key fingerprint."
+ (or (assoc-ref account "Account.registeredName")
+ (assoc-ref account "Account.username")))
+
+(define (id->username id)
+ "Return USERNAME, the registered username associated with ID, else its
+public key fingerprint, else #f."
+ (account->username (id->account id)))
+
+(define (get-accounts)
+ "Return the list of all accounts, as a list of alists."
+ (map id->account (get-account-ids)))
+
+(define (get-usernames)
+ "Return the list of the usernames associated with the present accounts."
+ (map account->username (get-accounts)))
+
+(define (username->account username)
+ "Return the first account associated with USERNAME, else #f.
+USERNAME can be either the account 40 characters public key fingerprint or a
+registered username."
+ (find (lambda (account)
+ (member username
+ (list (assoc-ref account "Account.username")
+ (assoc-ref account "Account.registeredName"))))
+ (get-accounts)))
+
+(define (add-account archive)
+ "Import the Jami account ARCHIVE and return its account ID. The archive
+should *not* be encrypted with a password. Return the username associated
+with the account."
+ (invalidate-username-to-id-cache!)
+ (let ((reply (send-dbus/configuration-manager
+ #:method "addAccount"
+ #:arguments (list (string-append
+ "dict:string:string:Account.archivePath,"
+ archive
+ ",Account.type,RING")))))
+ ;; The account information takes some time to be populated.
+ (let ((id (deserialize-item (parse-dbus-reply reply))))
+ (with-retries 20 1
+ (let ((username (id->username id)))
+ (if (string-null? username)
+ #f
+ username))))))
+
+(define (remove-account username)
+ "Delete the Jami account associated with USERNAME, the account 40 characters
+fingerprint or a registered username."
+ (let ((id (username->id username)))
+ (send-dbus/configuration-manager
+ #:method "removeAccount"
+ #:arguments (list (string-append "string:" id))))
+ (invalidate-username-to-id-cache!))
+
+(define* (username->contacts username)
+ "Return the contacts associated with the account of USERNAME as two values;
+the first one being the regular contacts and the second one the banned
+contacts. USERNAME can be either the account 40 characters public key
+fingerprint or a registered username. The contacts returned are represented
+using their 40 characters fingerprint."
+ (let* ((id (username->id username))
+ (reply (send-dbus/configuration-manager
+ #:method "getContacts"
+ #:arguments (list (string-append "string:" id))))
+ (all-contacts (parse-contacts reply))
+ (banned? (lambda (contact)
+ (and=> (assoc-ref contact "banned")
+ (cut string=? "true" <>))))
+ (banned (filter banned? all-contacts))
+ (not-banned (filter (negate banned?) all-contacts))
+ (fingerprint (cut assoc-ref <> "id")))
+ (values (map fingerprint not-banned)
+ (map fingerprint banned))))
+
+(define* (remove-contact contact username #:key ban?)
+ "Remove CONTACT, the 40 characters public key fingerprint of a contact, from
+the account associated with USERNAME (either a fingerprint or a registered
+username). When BAN? is true, also mark the contact as banned."
+ (validate-fingerprint contact)
+ (let ((id (username->id username)))
+ (send-dbus/configuration-manager
+ #:method "removeContact"
+ #:arguments (list (string-append "string:" id)
+ (string-append "string:" contact)
+ (serialize-boolean ban?)))))
+
+(define (add-contact contact username)
+ "Add CONTACT, the 40 characters public key fingerprint of a contact, to the
+account of USERNAME (either a fingerprint or a registered username)."
+ (validate-fingerprint contact)
+ (let ((id (username->id username)))
+ (send-dbus/configuration-manager
+ #:method "addContact"
+ #:arguments (list (string-append "string:" id)
+ (string-append "string:" contact)))))
+
+(define* (set-account-details details username #:key timeout)
+ "Set DETAILS, an alist containing the key value pairs to set for the account
+of USERNAME, a registered username or account fingerprint. The value of the
+parameters not provided are unchanged. TIMEOUT is a value in milliseconds to
+pass to the `send-dbus/configuration-manager' procedure."
+ (let* ((id (username->id username))
+ (current-details (id->account-details id))
+ (updated-details (map (match-lambda
+ ((key . value)
+ (or (and=> (assoc-ref details key)
+ (cut cons key <>))
+ (cons key value))))
+ current-details))
+ ;; dbus-send does not permit sending null strings (it throws a
+ ;; "malformed dictionary" error). Luckily they seem to have the
+ ;; semantic of "default account value" in Jami; so simply drop them.
+ (updated-details* (remove (match-lambda
+ ((_ . value)
+ (string-null? value)))
+ updated-details)))
+ (send-dbus/configuration-manager
+ #:timeout timeout
+ #:method "setAccountDetails"
+ #:arguments
+ (list (string-append "string:" id)
+ (string-append "dict:string:string:"
+ (string-join (alist->list updated-details*)
+ ","))))))
+
+(define (set-all-moderators enabled? username)
+ "Set the 'AllModerators' property to enabled? for the account of USERNAME, a
+registered username or account fingerprint."
+ (let ((id (username->id username)))
+ (send-dbus/configuration-manager
+ #:method "setAllModerators"
+ #:arguments
+ (list (string-append "string:" id)
+ (serialize-boolean enabled?)))))
+
+(define (username->all-moderators? username)
+ "Return the 'AllModerators' property for the account of USERNAME, a
+registered username or account fingerprint."
+ (let* ((id (username->id username))
+ (reply (send-dbus/configuration-manager
+ #:method "isAllModerators"
+ #:arguments
+ (list (string-append "string:" id)))))
+ (deserialize-item (parse-dbus-reply reply))))
+
+(define (username->moderators username)
+ "Return the moderators for the account of USERNAME, a registered username or
+account fingerprint."
+ (let* ((id (username->id username))
+ (reply (send-dbus/configuration-manager
+ #:method "getDefaultModerators"
+ #:arguments
+ (list (string-append "string:" id)))))
+ (array->list (parse-dbus-reply reply))))
+
+(define (set-moderator contact enabled? username)
+ "Set the moderator flag to ENABLED? for CONTACT, the 40 characters public
+key fingerprint of a contact for the account of USERNAME, a registered
+username or account fingerprint."
+ (validate-fingerprint contact)
+ (let* ((id (username->id username)))
+ (send-dbus/configuration-manager #:method "setDefaultModerator"
+ #:arguments
+ (list (string-append "string:" id)
+ (string-append "string:" contact)
+ (serialize-boolean enabled?)))))
+
+(define (disable-account username)
+ "Disable the account known by USERNAME, a registered username or account
+fingerprint."
+ (set-account-details '(("Account.enable" . "false")) username
+ ;; Waiting for the reply on this command takes a very
+ ;; long time that trips the default D-Bus timeout value
+ ;; (25 s), for some reason.
+ #:timeout 60000))
+
+(define (enable-account username)
+ "Enable the account known by USERNAME, a registered username or account
+fingerprint."
+ (set-account-details '(("Account.enable" . "true")) username))
+
+
+;;;
+;;; Presentation procedures.
+;;;
+
+(define (.->_ text)
+ "Map each period character to underscore characters."
+ (string-map (match-lambda
+ (#\. #\_)
+ (c c))
+ text))
+
+(define (account-details->recutil account-details)
+ "Serialize the account-details alist into a recutil string. Period
+characters in the keys are normalized to underscore to meet Recutils' format
+requirements."
+ (define (pair->recutil-property pair)
+ (match pair
+ ((key . value)
+ (string-append (.->_ key) ": " value))))
+
+ (define sorted-account-details
+ ;; Have the account username, display name and alias appear first, for
+ ;; convenience.
+ (let ((first-items '("Account.username"
+ "Account.displayName"
+ "Account.alias")))
+ (append (map (cut assoc <> account-details) first-items)
+ (fold alist-delete account-details first-items))))
+
+ (string-join (map pair->recutil-property sorted-account-details) "\n"))
+
+;; Local Variables:
+;; eval: (put 'with-retries 'scheme-indent-function 2)
+;; End:
diff --git a/gnu/build/shepherd.scm b/gnu/build/shepherd.scm
index d7b858dea4..778e3fc627 100644
--- a/gnu/build/shepherd.scm
+++ b/gnu/build/shepherd.scm
@@ -24,6 +24,12 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (ice-9 match)
+ ;; XXX: Lazy-bind the Shepherd to avoid a compile-time dependency.
+ #:autoload (shepherd service) (fork+exec-command
+ read-pid-file
+ exec-command
+ %precious-signals)
+ #:autoload (shepherd system) (unblock-signals)
#:export (make-forkexec-constructor/container
fork+exec-command/container))
@@ -92,14 +98,6 @@
(file-exists? (file-system-mapping-source mapping)))
mappings)))))
-;; XXX: Lazy-bind the Shepherd to avoid a compile-time dependency.
-(module-autoload! (current-module)
- '(shepherd service)
- '(fork+exec-command read-pid-file exec-command
- %precious-signals))
-(module-autoload! (current-module)
- '(shepherd system) '(unblock-signals))
-
(define* (read-pid-file/container pid pid-file #:key (max-delay 5))
"Read PID-FILE in the container namespaces of PID, which exists in a
separate mount and PID name space. Return the \"outer\" PID. "
diff --git a/gnu/local.mk b/gnu/local.mk
index 35769c6e15..ddfeb6d6ea 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -44,6 +44,7 @@
# Copyright © 2021 Philip McGrath <philip@philipmcgrath.com>
# Copyright © 2021 Arun Isaac <arunisaac@systemreboot.net>
# Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
+# Copyright © 2021 Dmitry Polyakov <polyakov@liltechdude.xyz>
#
# This file is part of GNU Guix.
#
@@ -687,6 +688,7 @@ GNU_SYSTEM_MODULES = \
%D%/build/chromium-extension.scm \
%D%/build/cross-toolchain.scm \
%D%/build/image.scm \
+ %D%/build/jami-service.scm \
%D%/build/file-systems.scm \
%D%/build/hurd-boot.scm \
%D%/build/install.scm \
@@ -724,6 +726,7 @@ GNU_SYSTEM_MODULES = \
%D%/tests/security-token.scm \
%D%/tests/singularity.scm \
%D%/tests/ssh.scm \
+ %D%/tests/telephony.scm \
%D%/tests/version-control.scm \
%D%/tests/virtualization.scm \
%D%/tests/web.scm
@@ -789,7 +792,8 @@ dist_installer_DATA = \
MODULES_NOT_COMPILED += \
%D%/build/locale.scm \
%D%/build/shepherd.scm \
- %D%/build/svg.scm
+ %D%/build/svg.scm \
+ %D%/tests/data/jami-dummy-account.dat
patchdir = $(guilemoduledir)/%D%/packages/patches
dist_patch_DATA = \
@@ -1233,6 +1237,7 @@ dist_patch_DATA = \
%D%/packages/patches/imagemagick-ReadDCMPixels-fix.patch \
%D%/packages/patches/imagemagick-WriteTHUMBNAILImage-fix.patch \
%D%/packages/patches/inkscape-poppler-0.76.patch \
+ %D%/packages/patches/instead-use-games-path.patch \
%D%/packages/patches/inkscape-1.1-fix-build-witch-gcc7.5.patch \
%D%/packages/patches/intel-xed-fix-nondeterminism.patch \
%D%/packages/patches/intltool-perl-compatibility.patch \
@@ -1386,6 +1391,9 @@ dist_patch_DATA = \
%D%/packages/patches/llvm-9-fix-bitcast-miscompilation.patch \
%D%/packages/patches/llvm-9-fix-lpad-miscompilation.patch \
%D%/packages/patches/llvm-9-fix-scev-miscompilation.patch \
+ %D%/packages/patches/llvm-roc-3.0.0-add_libraries.patch \
+ %D%/packages/patches/llvm-roc-4.0.0-remove-isystem-usr-include.patch \
+ %D%/packages/patches/llvm-roc-4.2.0-add_Object.patch \
%D%/packages/patches/lm-sensors-hwmon-attrs.patch \
%D%/packages/patches/lrcalc-includes.patch \
%D%/packages/patches/lsh-fix-x11-forwarding.patch \
@@ -1490,6 +1498,7 @@ dist_patch_DATA = \
%D%/packages/patches/ocaml-4.09-multiple-definitions.patch \
%D%/packages/patches/omake-fix-non-determinism.patch \
%D%/packages/patches/oneko-remove-nonfree-characters.patch \
+ %D%/packages/patches/onnx-optimizer-system-library.patch \
%D%/packages/patches/onnx-use-system-googletest.patch \
%D%/packages/patches/onnx-shared-libraries.patch \
%D%/packages/patches/onnx-skip-model-downloads.patch \
@@ -1522,7 +1531,6 @@ dist_patch_DATA = \
%D%/packages/patches/plasma-framework-fix-KF5PlasmaMacros.cmake.patch \
%D%/packages/patches/ppsspp-disable-upgrade-and-gold.patch \
%D%/packages/patches/pthreadpool-system-libraries.patch \
- %D%/packages/patches/samba-fix-fcntl-hint-detection.patch \
%D%/packages/patches/sdcc-disable-non-free-code.patch \
%D%/packages/patches/sdl-pango-api_additions.patch \
%D%/packages/patches/sdl-pango-blit_overflow.patch \
@@ -1621,13 +1629,14 @@ dist_patch_DATA = \
%D%/packages/patches/python-pydot-regression-test.patch \
%D%/packages/patches/python2-pygobject-2-deprecation.patch \
%D%/packages/patches/python-pygpgme-fix-pinentry-tests.patch \
+ %D%/packages/patches/python-pytorch-runpath.patch \
+ %D%/packages/patches/python-pytorch-system-libraries.patch \
%D%/packages/patches/python-robotframework-source-date-epoch.patch \
%D%/packages/patches/python-seaborn-kde-test.patch \
%D%/packages/patches/python2-subprocess32-disable-input-test.patch \
%D%/packages/patches/python-unittest2-python3-compat.patch \
%D%/packages/patches/python-unittest2-remove-argparse.patch \
%D%/packages/patches/python-waitress-fix-tests.patch \
- %D%/packages/patches/pypy3-7.3.1-fix-tests.patch \
%D%/packages/patches/qemu-build-info-manual.patch \
%D%/packages/patches/qemu-CVE-2021-20203.patch \
%D%/packages/patches/qemu-meson-compat.patch \
@@ -1664,10 +1673,16 @@ dist_patch_DATA = \
%D%/packages/patches/rtags-separate-rct.patch \
%D%/packages/patches/racket-minimal-sh-via-rktio.patch \
%D%/packages/patches/remake-impure-dirs.patch \
+ %D%/packages/patches/restic-0.9.6-fix-tests-for-go1.15.patch \
%D%/packages/patches/retroarch-LIBRETRO_DIRECTORY.patch \
%D%/packages/patches/rnp-add-version.cmake.patch \
%D%/packages/patches/rnp-disable-ruby-rnp-tests.patch \
%D%/packages/patches/rnp-unbundle-googletest.patch \
+ %D%/packages/patches/rocm-comgr-3.1.0-dependencies.patch \
+ %D%/packages/patches/rocm-opencl-runtime-3.10.0-includes.patch \
+ %D%/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch \
+ %D%/packages/patches/rocm-opencl-runtime-4.3-nocltrace.patch \
+ %D%/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch \
%D%/packages/patches/ruby-sanitize-system-libxml.patch \
%D%/packages/patches/rust-coresimd-doctest.patch \
%D%/packages/patches/rust-ndarray-remove-blas-src-dep.patch \
@@ -1749,6 +1764,7 @@ dist_patch_DATA = \
%D%/packages/patches/tuxpaint-stamps-path.patch \
%D%/packages/patches/twinkle-bcg729.patch \
%D%/packages/patches/u-boot-rockchip-inno-usb.patch \
+ %D%/packages/patches/u-boot-sifive-prevent-reloc-initrd-fdt.patch \
%D%/packages/patches/u-boot-riscv64-fix-extlinux.patch \
%D%/packages/patches/ucx-tcp-iface-ioctl.patch \
%D%/packages/patches/udiskie-no-appindicator.patch \
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 3e10c51dbb..082f3d3130 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -3440,52 +3440,6 @@ Intel DRM Driver.")
(supported-systems '("i686-linux" "x86_64-linux"))
(license license:expat)))
-(define-public fabric
- (package
- (name "fabric")
- (version "1.14.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Fabric" version))
- (sha256
- (base32
- "1a3ndlpdw6bhn8fcw1jgznl117a8pnr84az9rb5fwnrypf1ph2b6"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2 ; Python 2 only
- #:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke
- "nosetests" "-v" "tests/"
- ;; This test hangs indefinitely when run on a single core VM
- ;; (see GNU bug #26647 and Debian bug #850230).
- "--exclude=test_nested_execution_with_explicit_ports"
- ;; This test randomly fails in certain environments causing too
- ;; much noise to be useful (see Debian bug #854686).
- "--exclude=test_should_use_sentinel_for_tasks_that_errored"))))))
- (native-inputs
- `(("python2-fudge" ,python2-fudge) ; Requires < 1.0
- ("python2-jinja2" ,python2-jinja2) ; Requires < 3.0
- ("python2-nose" ,python2-nose) ; Requires < 2.0
- ("python2-pynacl" ,python2-pynacl)
- ("python2-bcrypt" ,python2-bcrypt)))
- (propagated-inputs
- `(("python2-paramiko" ,python2-paramiko)))
- (home-page "https://www.fabfile.org/")
- (synopsis "Simple Pythonic remote execution and deployment tool")
- (description
- "Fabric is designed to upload files and run shell commands on a number of
-servers in parallel or serially. These commands are grouped in tasks (which
-are regular Python functions) and specified in a @dfn{fabfile}.
-
-It is similar to Capistrano, except it's implemented in Python and doesn't
-expect you to be deploying Rails applications. Fabric is a simple, Pythonic
-tool for remote execution and deployment.")
- (license license:bsd-2)))
-
(define-public neofetch
(package
(name "neofetch")
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 97592fda7e..2d37e5298e 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -3,7 +3,7 @@
;;; Copyright © 2013, 2015, 2017, 2018, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2014, 2018 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016, 2018, 2019, 2021 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
@@ -343,7 +343,7 @@ precision.")
(define-public giac
(package
(name "giac")
- (version "1.7.0-23")
+ (version "1.7.0-25")
(source
(origin
(method url-fetch)
@@ -355,7 +355,7 @@ precision.")
"~parisse/debian/dists/stable/main/source/"
"giac_" version ".tar.gz"))
(sha256
- (base32 "06dv46y4lh8f9pzj7vcimdl2rp1kk5d16q94zq0iajzzcwppqdz1"))))
+ (base32 "0d11shsifnd5p23iym5h0kqa7bp7p0p25rwvya7hdji2kwvgr3cl"))))
(build-system gnu-build-system)
(arguments
`(#:modules ((ice-9 ftw)
@@ -1071,6 +1071,33 @@ features, and more.")
"# Do not build the tests for unsupported features.\n"))
#t)))))))
+(define-public eigen-for-tensorflow-lite
+ ;; This commit was taken from
+ ;; tensorflow/lite/tools/cmake/modules/eigen.cmake
+ (let ((commit "d10b27fe37736d2944630ecd7557cefa95cf87c9")
+ (revision "1"))
+ (package (inherit eigen)
+ (name "eigen-for-tensorflow-lite")
+ (version (git-version "3.3.7" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.com/libeigen/eigen")
+ (commit commit)))
+ (sha256
+ (base32
+ "0v8a20cwvwmp3hw4275b37frw33v92z0mr8f4dn6y8k0rz92hrrf"))
+ (file-name (git-file-name name version))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Ther are test failures in the "unsupported" directory, but
+ ;; maintainers say it's unsupported anyway, so just skip
+ ;; them.
+ '(begin
+ (substitute* "unsupported/CMakeLists.txt"
+ (("add_subdirectory\\(test.*")
+ "# Do not build the tests for unsupported features.\n")))))))))
+
(define-public xtensor
(package
(name "xtensor")
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 5253e3d03d..e07fab350a 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -20,6 +20,7 @@
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2021 Timothy Sample <samplet@ngyro.com>
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -104,6 +105,7 @@
("par2cmdline" ,par2cmdline)
("python-fasteners" ,python-fasteners)
("python-future" ,python-future) ; for tests
+ ("python-paramiko" ,python-paramiko)
("python-pexpect" ,python-pexpect)
("python-pytest" ,python-pytest)
("python-pytest-runner" ,python-pytest-runner)
@@ -657,12 +659,7 @@ detection, and lossless compression.")
;; Remove bundled shared libraries.
(with-directory-excursion "src/borg/algorithms"
(for-each delete-file-recursively
- (list "blake2" "lz4" "msgpack" "zstd")))
- ;; Purge some msgpack references from setup.py or the resulting
- ;; sources will be unbuildable.
- (substitute* "setup.py"
- ((".*Extension\\('borg\\.algorithms\\.msgpack\\..*") "")
- (("msgpack_packer_source, msgpack_unpacker_source") ""))
+ (list "blake2" "lz4" "zstd")))
#t))))
(build-system python-build-system)
(arguments
@@ -686,12 +683,6 @@ detection, and lossless compression.")
;; HOME=/homeless-shelter.
(setenv "HOME" "/tmp")
#t)))
- (add-after 'unpack 'use-system-msgpack
- (lambda _
- (substitute* "src/borg/helpers.py"
- (("prefer_system_msgpack = False")
- "prefer_system_msgpack = True"))
- #t))
;; The tests need to be run after Borg is installed.
(delete 'check)
(add-after 'install 'check
@@ -755,10 +746,6 @@ detection, and lossless compression.")
("lz4" ,lz4)
("openssl" ,openssl)
("python-llfuse" ,python-llfuse)
- ;; The Python msgpack library changed its name so Borg requires this
- ;; transitional package for now:
- ;; <https://bugs.gnu.org/30662>
- ("python-msgpack" ,python-msgpack-transitional)
("zstd" ,zstd "lib")))
(synopsis "Deduplicated, encrypted, authenticated and compressed backups")
(description "Borg is a deduplicating backup program. Optionally, it
@@ -927,7 +914,9 @@ is like a time machine for your data. ")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1zmh42aah32ah8w5n6ilz9bci0y2xrf8p7qshy3yf1lzm5gnbj0w"))))
+ "1zmh42aah32ah8w5n6ilz9bci0y2xrf8p7qshy3yf1lzm5gnbj0w"))
+ (patches
+ (search-patches "restic-0.9.6-fix-tests-for-go1.15.patch"))))
(build-system go-build-system)
(arguments
`(#:import-path "github.com/restic/restic"
@@ -944,11 +933,12 @@ is like a time machine for your data. ")
(invoke "go" "run" "build.go"))))
(replace 'check
- (lambda _
- (with-directory-excursion "src/github.com/restic/restic"
- ;; Disable FUSE tests.
- (setenv "RESTIC_TEST_FUSE" "0")
- (invoke "go" "run" "build.go" "--test"))))
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (with-directory-excursion "src/github.com/restic/restic"
+ ;; Disable FUSE tests.
+ (setenv "RESTIC_TEST_FUSE" "0")
+ (invoke "go" "run" "build.go" "--test")))))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index b3bd174764..a85cf904f7 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -7128,14 +7128,14 @@ information about samples and features can be added to the plot.")
(define-public r-gosemsim
(package
(name "r-gosemsim")
- (version "2.18.0")
+ (version "2.18.1")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "GOSemSim" version))
(sha256
(base32
- "1fzmaxjzyvq6xj5ny1sjijdwi4krzjgyaz52fczpwrxijq5pnyn1"))))
+ "00dbgkiv9x7g2i0anzcxpycwqqqry0y7jl3ad93lhvi31qnqq1sm"))))
(properties `((upstream-name . "GOSemSim")))
(build-system r-build-system)
(propagated-inputs
@@ -9932,14 +9932,14 @@ self-organizing map clustering and minimal spanning trees.")
(define-public r-mixomics
(package
(name "r-mixomics")
- (version "6.16.2")
+ (version "6.16.3")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "mixOmics" version))
(sha256
(base32
- "0kbljjwm5caf2znqnkhrbmcfsv1mhppp9h491210q477y8bjlkja"))))
+ "1x6dbw4q6p9vngm256fr96r9fjxk5nik5ivkhbl5a9zqyq8wagpa"))))
(properties `((upstream-name . "mixOmics")))
(build-system r-build-system)
(propagated-inputs
@@ -10319,14 +10319,14 @@ regulatory networks from expression data.")
(define-public r-roc
(package
(name "r-roc")
- (version "1.68.0")
+ (version "1.68.1")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "ROC" version))
(sha256
(base32
- "0ff5rcpyybgjzsfbhaslim0m02n3bksv1r9v7bq0gg0iyzll0rjc"))))
+ "1rmsrvn6hrg9ay7xfb05mfkxknnig78p3kbk9ghsd11lhx2fjm3s"))))
(properties `((upstream-name . "ROC")))
(build-system r-build-system)
(propagated-inputs
@@ -13386,14 +13386,14 @@ functionalities including parsing, graph operation, visualization and etc.")
(define-public r-ldblock
(package
(name "r-ldblock")
- (version "1.22.0")
+ (version "1.22.1")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "ldblock" version))
(sha256
(base32
- "075jncvfbn3lydg0jvfhnv5025mnw79saa0k557vpcwdvs9y4p0c"))))
+ "16vp5psmigxdkkd6fbivb6s8mvd7rsnm771wsbjvayl2y7ig7kq4"))))
(build-system r-build-system)
(propagated-inputs
`(("r-biocgenerics" ,r-biocgenerics)
@@ -13661,3 +13661,44 @@ starting site, start codon, stop codon and transcription ending site.")
"This package provides flexible, quantitative, and integrative genomic
visualizations for publication-quality multi-panel figures.")
(license license:gpl2+)))
+
+(define-public r-tximeta
+ (package
+ (name "r-tximeta")
+ (version "1.10.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (bioconductor-uri "tximeta" version))
+ (sha256
+ (base32
+ "0ipgpcl93cac4qff6lp9x2l3gav5kb1x1d56g32h09hlm797rvvh"))))
+ (properties `((upstream-name . "tximeta")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-annotationdbi" ,r-annotationdbi)
+ ("r-annotationhub" ,r-annotationhub)
+ ("r-biocfilecache" ,r-biocfilecache)
+ ("r-biostrings" ,r-biostrings)
+ ("r-ensembldb" ,r-ensembldb)
+ ("r-genomeinfodb" ,r-genomeinfodb)
+ ("r-genomicfeatures" ,r-genomicfeatures)
+ ("r-genomicranges" ,r-genomicranges)
+ ("r-iranges" ,r-iranges)
+ ("r-jsonlite" ,r-jsonlite)
+ ("r-matrix" ,r-matrix)
+ ("r-s4vectors" ,r-s4vectors)
+ ("r-summarizedexperiment" ,r-summarizedexperiment)
+ ("r-tibble" ,r-tibble)
+ ("r-tximport" ,r-tximport)))
+ (native-inputs
+ `(("r-knitr" ,r-knitr)))
+ (home-page "https://github.com/mikelove/tximeta")
+ (synopsis "Transcript quantification import with automatic metadata")
+ (description
+ "This package implements transcript quantification import from Salmon and
+alevin with automatic attachment of transcript ranges and release information,
+and other associated metadata. De novo transcriptomes can be linked to the
+appropriate sources with linkedTxomes and shared for computational
+reproducibility.")
+ (license license:gpl2)))
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 0b87d37bcf..cbc018a360 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -10380,7 +10380,7 @@ once. This package provides tools to perform Drop-seq analyses.")
(define-public pigx-rnaseq
(package
(name "pigx-rnaseq")
- (version "0.0.17")
+ (version "0.0.18")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/BIMSBbioinfo/pigx_rnaseq/"
@@ -10388,7 +10388,7 @@ once. This package provides tools to perform Drop-seq analyses.")
"/pigx_rnaseq-" version ".tar.gz"))
(sha256
(base32
- "0k9zj50bij3sjwq08v8l8waddcx8k66m3vdq8mx5vc23p19qz42s"))))
+ "1622l6grmsk0wm859rvllngx29q3v16jjvzcdq2bmrlamccrj82y"))))
(build-system gnu-build-system)
(arguments
`(#:parallel-tests? #f ; not supported
@@ -10671,7 +10671,7 @@ based methods.")
(define-public pigx-sars-cov2-ww
(package
(name "pigx-sars-cov2-ww")
- (version "0.0.2")
+ (version "0.0.3")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/BIMSBbioinfo/pigx_sarscov2_ww/"
@@ -10679,7 +10679,7 @@ based methods.")
"/pigx_sars-cov2-ww-" version ".tar.gz"))
(sha256
(base32
- "0yrbza7lbzijjc8ifk06b646n959a4k7id94x3ndz795892f64l0"))))
+ "1hhdbwsnl0d37lrmisw5hr630xr8s41qvxflm05anh11rj8n22yw"))))
(build-system gnu-build-system)
(inputs
`(("bash-minimal" ,bash-minimal)
@@ -14735,3 +14735,75 @@ ploidy and allele-specific copy number profiles.")
copy number estimation, as described by
@url{doi:10.1016/j.cell.2012.04.023,Nik-Zainal et al.}")
(license license:gpl3)))
+
+(define-public r-spectre
+ (let ((commit "f6648ab3eb9499300d86502b5d60ec370ae9b61a")
+ (revision "1"))
+ (package
+ (name "r-spectre")
+ (version (git-version "0.5.5" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ImmuneDynamics/Spectre")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0g38grrhbqqa4bmcilvdyawbkcnax6k4vffx2giywp18mbirmj0x"))))
+ (properties `((upstream-name . "Spectre")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-biobase" ,r-biobase)
+ ("r-biocmanager" ,r-biocmanager)
+ ("r-caret" ,r-caret)
+ ("r-class" ,r-class)
+ ("r-colorramps" ,r-colorramps)
+ ("r-data-table" ,r-data-table)
+ ("r-devtools" ,r-devtools)
+ ("r-dplyr" ,r-dplyr)
+ ("r-exactextractr" ,r-exactextractr)
+ ("r-factoextra" ,r-factoextra)
+ ("r-flowcore" ,r-flowcore)
+ ("r-flowsom" ,r-flowsom)
+ ("r-flowviz" ,r-flowviz)
+ ("r-fnn" ,r-fnn)
+ ("r-ggplot2" ,r-ggplot2)
+ ("r-ggpointdensity" ,r-ggpointdensity)
+ ("r-ggpubr" ,r-ggpubr)
+ ("r-ggraph" ,r-ggraph)
+ ("r-ggthemes" ,r-ggthemes)
+ ("r-gridextra" ,r-gridextra)
+ ("r-gridextra" ,r-gridextra)
+ ("r-gtools" ,r-gtools)
+ ("r-hdf5array" ,r-hdf5array)
+ ("r-irlba" ,r-irlba)
+ ("r-pheatmap" ,r-pheatmap)
+ ("r-plyr" ,r-plyr)
+ ("r-qs" ,r-qs)
+ ("r-raster" ,r-raster)
+ ("r-rcolorbrewer" ,r-rcolorbrewer)
+ ("r-rgeos" ,r-rgeos)
+ ("r-rhdf5" ,r-rhdf5)
+ ("r-rstudioapi" ,r-rstudioapi)
+ ("r-rsvd" ,r-rsvd)
+ ("r-rtsne" ,r-rtsne)
+ ("r-s2" ,r-s2)
+ ("r-scales" ,r-scales)
+ ("r-sf" ,r-sf)
+ ("r-sp" ,r-sp)
+ ("r-stars" ,r-stars)
+ ("r-stringr" ,r-stringr)
+ ("r-tidygraph" ,r-tidygraph)
+ ("r-tidyr" ,r-tidyr)
+ ("r-tidyr" ,r-tidyr)
+ ("r-tiff" ,r-tiff)
+ ("r-umap" ,r-umap)))
+ (home-page "https://github.com/ImmuneDynamics/Spectre")
+ (synopsis "High-dimensional cytometry and imaging analysis")
+ (description
+ "This package provides a computational toolkit in R for the
+integration, exploration, and analysis of high-dimensional single-cell
+cytometry and imaging data.")
+ (license license:expat))))
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index d8d1691801..e75c37b0f8 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -56,6 +56,7 @@
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
+ #:use-module (gnu packages python-crypto)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages tls)
#:use-module (gnu packages sdl)
@@ -492,20 +493,26 @@ tree binary files. These are board description files used by Linux and BSD.")
;; and https://patchwork.ozlabs.org/project/uboot/patch/20210406151059.1187379-1-icenowy@aosc.io
(search-patch "u-boot-rockchip-inno-usb.patch"))
+(define %u-boot-sifive-prevent-relocating-initrd-fdt
+ ;; Fix boot in 2021.07 on Hifive unmatched, see
+ ;; https://bugs.launchpad.net/ubuntu/+source/u-boot/+bug/1937246
+ (search-patch "u-boot-sifive-prevent-reloc-initrd-fdt.patch"))
+
(define u-boot
(package
(name "u-boot")
- (version "2021.04")
+ (version "2021.07")
(source (origin
(patches
- (list %u-boot-rockchip-inno-usb-patch))
+ (list %u-boot-rockchip-inno-usb-patch
+ %u-boot-sifive-prevent-relocating-initrd-fdt))
(method url-fetch)
(uri (string-append
"https://ftp.denx.de/pub/u-boot/"
"u-boot-" version ".tar.bz2"))
(sha256
(base32
- "06p1vymf0dl6jc2xy5w7p42mpgppa46lmpm2ishmgsycnldqnhqd"))))
+ "0zm7igkdnz0w4ir8rfl2dislfrl0ip104grs5hvd30a5wkm7wari"))))
(native-inputs
`(("bc" ,bc)
("bison" ,bison)
@@ -515,6 +522,7 @@ tree binary files. These are board description files used by Linux and BSD.")
("perl" ,perl)
("python" ,python)
("python-coverage" ,python-coverage)
+ ("python-pycryptodomex" ,python-pycryptodomex)
("python-pytest" ,python-pytest)
("swig" ,swig)))
(build-system gnu-build-system)
@@ -524,21 +532,6 @@ tree binary files. These are board description files used by Linux and BSD.")
also initializes the boards (RAM etc).")
(license license:gpl2+)))
-(define-public u-boot-2021.07
- (package
- (inherit u-boot)
- (version "2021.07-rc4")
- (source (origin
- (patches
- (list %u-boot-rockchip-inno-usb-patch))
- (method url-fetch)
- (uri (string-append
- "https://ftp.denx.de/pub/u-boot/"
- "u-boot-" version ".tar.bz2"))
- (sha256
- (base32
- "0bnsywgy2b0jxim5h9dc807lqk5kq8hvgf4lcsmffnc0hf4isv8p"))))))
-
(define-public u-boot-tools
(package
(inherit u-boot)
@@ -567,9 +560,13 @@ also initializes the boards (RAM etc).")
;; This test would require git.
(("\\./tools/patman/patman") (which "true"))
;; FIXME: test fails, needs further investiation
- (("run_test \"binman\"") ": run_test \"binman\"")
+ (("run_test \"binman\"") "# run_test \"binman\"")
+ ;; FIXME: test_spl fails, needs further investiation
+ (("test_ofplatdata or test_handoff or test_spl")
+ "test_ofplatdata or test_handoff")
;; FIXME: code coverage not working
- (("run_test \"binman code coverage\"") ": run_test \"binman code coverage\"")
+ (("run_test \"binman code coverage\"")
+ "# run_test \"binman code coverage\"")
;; This test would require internet access.
(("\\./tools/buildman/buildman") (which "true")))
(substitute* "test/py/tests/test_sandbox_exit.py"
@@ -715,9 +712,6 @@ board-independent tools.")))
uboot-files)
#t)))))))))
-(define-public u-boot-vexpress
- (make-u-boot-package "vexpress_ca9x4" "arm-linux-gnueabihf"))
-
(define-public u-boot-malta
(make-u-boot-package "malta" "mips64el-linux-gnuabi64"))
@@ -873,15 +867,11 @@ to Novena upstream, does not load u-boot.img from the first partition.")
(patches
(search-patches "u-boot-riscv64-fix-extlinux.patch")))))))
-(define-public u-boot-sifive-fu540
- (make-u-boot-package "sifive_fu540" "riscv64-linux-gnu"))
+(define-public u-boot-sifive-unleashed
+ (make-u-boot-package "sifive_unleashed" "riscv64-linux-gnu"))
(define-public u-boot-sifive-unmatched
- (let ((base (make-u-boot-package "sifive_unmatched" "riscv64-linux-gnu")))
- (package
- (inherit base)
- (version (package-version u-boot-2021.07))
- (source (package-source u-boot-2021.07)))))
+ (make-u-boot-package "sifive_unmatched" "riscv64-linux-gnu"))
(define-public u-boot-rock64-rk3328
(let ((base (make-u-boot-package "rock64-rk3328" "aarch64-linux-gnu")))
@@ -939,9 +929,7 @@ to Novena upstream, does not load u-boot.img from the first partition.")
(define-public u-boot-pinebook-pro-rk3399
(let ((base (make-u-boot-package "pinebook-pro-rk3399" "aarch64-linux-gnu")))
(package
- (inherit base)
- (version (package-version u-boot-2021.07))
- (source (package-source u-boot-2021.07))
+ (inherit base)
(arguments
(substitute-keyword-arguments (package-arguments base)
((#:phases phases)
diff --git a/gnu/packages/browser-extensions.scm b/gnu/packages/browser-extensions.scm
index a6120baf96..9cd0cf9b9e 100644
--- a/gnu/packages/browser-extensions.scm
+++ b/gnu/packages/browser-extensions.scm
@@ -49,7 +49,7 @@ supported content to the Kodi media center.")
(make-chromium-extension play-to-kodi))
(define uassets
- (let ((commit "20d21ad7e92539660c7cde4c5884b3e234854264"))
+ (let ((commit "54e217d9051831d0d8856286a877962e0f592d45"))
(origin
(method git-fetch)
(uri (git-reference
@@ -58,12 +58,12 @@ supported content to the Kodi media center.")
(file-name (git-file-name "uAssets" (string-take commit 9)))
(sha256
(base32
- "1xcl4qnvjb4pv3fajpmycg1i0xqsah2qakhq2figvyrq991pldy1")))))
+ "1xhxadm6qyph6kkq3gxg1rar1psb586mniwp7bkyj5zpzzj31wmj")))))
(define ublock-origin
(package
(name "ublock-origin")
- (version "1.36.0")
+ (version "1.37.2")
(home-page "https://github.com/gorhill/uBlock")
(source (origin
(method git-fetch)
@@ -71,7 +71,7 @@ supported content to the Kodi media center.")
(file-name (git-file-name name version))
(sha256
(base32
- "1r3aic18zkz8s3v1a2kffidp4swzbxnq0h8444bif9myjffnpxpj"))))
+ "1c1dh9kkimvahs9yw1hv67290h8xvmbl10film7g1wamdxydj97y"))))
(build-system gnu-build-system)
(outputs '("xpi" "firefox" "chromium"))
(arguments
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index beae624cfc..f8d3c5acb3 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -58,8 +58,6 @@
#:use-module (gnu packages protobuf)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python)
- #:use-module (gnu packages python-web)
- #:use-module (gnu packages python-xyz)
#:use-module (gnu packages regex)
#:use-module (gnu packages serialization)
#:use-module (gnu packages speech)
@@ -111,7 +109,10 @@
"third_party/catapult" ;BSD-3
"third_party/catapult/common/py_vulcanize/third_party/rcssmin" ;ASL2.0
"third_party/catapult/common/py_vulcanize/third_party/rjsmin" ;ASL2.0
+ "third_party/catapult/third_party/beautifulsoup4" ;Expat
+ "third_party/catapult/third_party/html5lib-python" ;Expat
"third_party/catapult/third_party/polymer" ;BSD-3
+ "third_party/catapult/third_party/six" ;Expat
;; XXX: This is a minified version of <https://d3js.org/>.
"third_party/catapult/tracing/third_party/d3" ;BSD-3
"third_party/catapult/tracing/third_party/gl-matrix" ;Expat
@@ -138,7 +139,7 @@
"third_party/devtools-frontend/src/front_end/third_party/axe-core" ;MPL2.0
"third_party/devtools-frontend/src/front_end/third_party/chromium" ;BSD-3
"third_party/devtools-frontend/src/front_end/third_party/codemirror" ;Expat
- "third_party/devtools-frontend/src/front_end/third_party/fabricjs" ;Expat
+ "third_party/devtools-frontend/src/front_end/third_party/diff" ;ASL2.0
"third_party/devtools-frontend/src/front_end/third_party/i18n" ;ASL2.0
"third_party/devtools-frontend/src/front_end/third_party/intl-messageformat" ;BSD-3
"third_party/devtools-frontend/src/front_end/third_party/lighthouse" ;ASL2.0
@@ -299,6 +300,7 @@
"third_party/zlib/google" ;BSD-3
"third_party/zxcvbn-cpp" ;Expat
+ "tools/grit/third_party/six" ;Expat
"url/third_party/mozilla" ;BSD-3, MPL1.1/GPL2+/LGPL2.1+
"v8/src/third_party/siphash" ;Public domain
"v8/src/third_party/utf8-decoder" ;Expat
@@ -322,11 +324,11 @@
(string-append "ungoogled-chromium-" category "-" name))))
(sha256 (base32 hash))))
-(define %chromium-version "91.0.4472.164")
+(define %chromium-version "92.0.4515.131")
(define %debian-revision "debian/90.0.4430.85-1")
;; Note: use 'git describe --long' even for exact tags to placate the
;; custom version format for ungoogled-chromium.
-(define %ungoogled-revision "91.0.4472.114-1-0-ga9eb6fd")
+(define %ungoogled-revision "92.0.4515.131-1-0-g4a9534c")
(define %debian-patches
(list (debian-patch "fixes/nomerge.patch"
@@ -346,7 +348,7 @@
(file-name (git-file-name "ungoogled-chromium" %ungoogled-revision))
(sha256
(base32
- "1xb5g3hybaiwn3y1zw1fxd3g0zwmvplrs06sdqnxzsr1qm8b874h"))))
+ "1nbgknj5ba116y47sxbp7pbma1bp0lmkyi3vk915x837ysaf6mrd"))))
(define %guix-patches
(list (local-file
@@ -401,11 +403,6 @@
(format #t "Replacing GN files...~%")
(force-output)
- ;; XXX: Chromium no longer relies on overriding ICU's UCHAR_TYPE,
- ;; but the unbundling code was not updated. Remove for M92.
- (substitute* "build/linux/unbundle/icu.gn"
- (("\"UCHAR_TYPE=uint16_t\",")
- ""))
(substitute* "tools/generate_shim_headers/generate_shim_headers.py"
;; The "is_official_build" configure option enables certain
;; release optimizations like those used in the commercial
@@ -417,8 +414,7 @@
"--system-libraries" "ffmpeg" "flac" "fontconfig"
"freetype" "harfbuzz-ng" "icu" "libdrm" "libevent"
"libjpeg" "libpng" "libwebp" "libxml" "libxslt"
- "openh264" "opus" "snappy" "zlib")
- #t))))
+ "openh264" "opus" "snappy" "zlib")))))
(define opus+custom
(package/inherit opus
@@ -488,7 +484,7 @@
%chromium-version ".tar.xz"))
(sha256
(base32
- "1g96hk72ds2b0aymgw7yjr0akgx7mkp17i99nk511ncnmni6zrc4"))
+ "0fnfyh61w6dmavvfbf2x1zzrby0xpx4jd4ifjsgyc39rsl789b5n"))
(modules '((guix build utils)))
(snippet (force ungoogled-chromium-snippet))))
(build-system gnu-build-system)
@@ -654,9 +650,7 @@
(("third_party/vulkan_headers/include/") ""))
(substitute* "third_party/skia/include/gpu/vk/GrVkVulkan.h"
- (("include/third_party/vulkan/") ""))
-
- #t))
+ (("include/third_party/vulkan/") ""))))
(add-after 'patch-stuff 'add-absolute-references
(lambda* (#:key inputs #:allow-other-keys)
(let ((cups (assoc-ref inputs "cups"))
@@ -684,8 +678,7 @@
(("libEGL\\.so\\.1")
(string-append mesa "/lib/libEGL.so.1"))
(("libGLESv2\\.so\\.2")
- (string-append mesa "/lib/libGLESv2.so.2")))
- #t)))
+ (string-append mesa "/lib/libGLESv2.so.2"))))))
(add-before 'configure 'prepare-build-environment
(lambda* (#:key inputs #:allow-other-keys)
@@ -722,9 +715,7 @@
;; XXX: How portable is this.
(mkdir-p "third_party/node/linux/node-linux-x64")
(symlink (string-append (assoc-ref inputs "node") "/bin")
- "third_party/node/linux/node-linux-x64/bin")
-
- #t))
+ "third_party/node/linux/node-linux-x64/bin")))
(replace 'configure
(lambda* (#:key configure-flags #:allow-other-keys)
(let ((args (string-join configure-flags " ")))
@@ -752,8 +743,7 @@
(setrlimit 'nofile 2048 #f))
(format #t
"increased maximum number of open files from ~d to ~d~%"
- soft (if hard (min hard 2048) 2048)))))
- #t))
+ soft (if hard (min hard 2048) 2048)))))))
(replace 'build
(lambda* (#:key (parallel-build? #t) #:allow-other-keys)
(invoke "ninja" "-C" "out/Release"
@@ -830,8 +820,7 @@
(mkdir-p icons)
(copy-file (string-append "product_logo_" size ".png")
(string-append icons "/chromium.png"))))
- '("24" "48" "64" "128" "256")))
- #t))))))
+ '("24" "48" "64" "128" "256")))))))))
(native-inputs
`(("bison" ,bison)
("clang" ,clang-11)
@@ -842,13 +831,14 @@
("node" ,node)
("pkg-config" ,pkg-config)
("which" ,which)
-
;; This file contains defaults for new user profiles.
("master-preferences" ,(local-file "aux-files/chromium/master-preferences.json"))
- ("python-beautifulsoup4" ,python2-beautifulsoup4)
- ("python-html5lib" ,python2-html5lib)
- ("python" ,python-2)
+ ;; Try unbundling these when upstream has completed its Python 3 transition.
+ ;; ("python-beautifulsoup4" ,python-beautifulsoup4)
+ ;; ("python-html5lib" ,python-html5lib)
+ ("python2" ,python-2)
+ ("python" ,python-wrapper)
("wayland-scanner" ,wayland)))
(inputs
`(("alsa-lib" ,alsa-lib)
@@ -888,6 +878,9 @@
("libxscrnsaver" ,libxscrnsaver)
("libxslt" ,libxslt)
("libxtst" ,libxtst)
+ ;; Newer kernel headers are required for userfaultfd support; remove
+ ;; after 'core-updates' merge.
+ ("linux-libre-headers" ,linux-libre-headers-5.10)
("mesa" ,mesa)
("minizip" ,minizip)
("mit-krb5" ,mit-krb5)
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 975d2da16b..93d517abd5 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -2291,12 +2291,21 @@ reading from and writing to ZIP archives. ")
(base32
"0nlzwnv6wh2yjyyv27f81jnvmk7psgpbnw7dsdp7frfkya569hgv"))))
(build-system meson-build-system)
+ (arguments
+ `(#:phases (modify-phases %standard-phases
+ (add-after 'unpack 'patch-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "src/zck_gen_zdict.c"
+ (("/usr/bin/zstd")
+ (string-append (assoc-ref inputs "zstd")
+ "/bin/zstd"))))))))
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
- `(("curl" ,curl)))
+ `(("curl" ,curl)
+ ("zstd" ,zstd)))
(propagated-inputs
- `(("zstd" ,zstd "lib"))) ;in Requires.private of zck.pc
+ `(("zstd:lib" ,zstd "lib"))) ;in Requires.private of zck.pc
(home-page "https://github.com/zchunk/zchunk")
(synopsis "Compressed file format for efficient deltas")
(description "The zchunk compressed file format allows splitting a file
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 7231f9a94f..872d8d6f1a 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -591,14 +591,14 @@ variables.")
(define-public r-ggpp
(package
(name "r-ggpp")
- (version "0.4.1")
+ (version "0.4.2")
(source
(origin
(method url-fetch)
(uri (cran-uri "ggpp" version))
(sha256
(base32
- "17j8b46vn0kdpm7x6xyfqzz3la8mwzhjql6dbgyvqnrylbx4svyl"))))
+ "0m2wq9kqlxqxlzyx9fd0c4iw6qb7kpjrq7fqqa2kvwyj79vx6ahj"))))
(properties `((upstream-name . "ggpp")))
(build-system r-build-system)
(propagated-inputs
@@ -638,21 +638,19 @@ variables.")
(define-public r-ggpmisc
(package
(name "r-ggpmisc")
- (version "0.4.0")
+ (version "0.4.2")
(source (origin
(method url-fetch)
(uri (cran-uri "ggpmisc" version))
(sha256
(base32
- "1vfzhpd4bqskq1sxh60dkab02m51g0dhj9i8mfqqbakhmkqggxa3"))))
+ "0ma0xcwjgj0sp9483s2y62ylv992dqjxqfgb3zl8f1pksypqdbac"))))
(build-system r-build-system)
(propagated-inputs
`(("r-dplyr" ,r-dplyr)
("r-generics" ,r-generics)
- ("r-glue" ,r-glue)
("r-ggplot2" ,r-ggplot2)
("r-ggpp" ,r-ggpp)
- ("r-gridextra" ,r-gridextra)
("r-lubridate" ,r-lubridate)
("r-mass" ,r-mass)
("r-plyr" ,r-plyr)
@@ -661,10 +659,7 @@ variables.")
("r-rlang" ,r-rlang)
("r-scales" ,r-scales)
("r-splus2r" ,r-splus2r)
- ("r-stringr" ,r-stringr)
- ("r-tibble" ,r-tibble)
- ("r-xts" ,r-xts)
- ("r-zoo" ,r-zoo)))
+ ("r-tibble" ,r-tibble)))
(native-inputs
`(("r-knitr" ,r-knitr)))
(home-page "https://www.r4photobiology.info/")
@@ -2774,20 +2769,18 @@ including functions for geolocation and routing.")
(define-public r-haven
(package
(name "r-haven")
- (version "2.4.1")
+ (version "2.4.3")
(source
(origin
(method url-fetch)
(uri (cran-uri "haven" version))
(sha256
(base32
- "1san6dc7kg2wy6f1jr5p1br28zdrand8wwgg7p6xxnx45h773320"))
+ "0pr9jcdk1r9pi9iz0xm1g5yy5qyjk5r7hh9467abx4kpwx3hzdwm"))
(modules '((guix build utils)))
(snippet
- '(begin
- ;; unvendor readstat
- (delete-file-recursively "src/readstat")
- #t))))
+ ;; unvendor readstat
+ '(delete-file-recursively "src/readstat"))))
(build-system r-build-system)
(arguments
'(#:phases
@@ -2796,8 +2789,7 @@ including functions for geolocation and routing.")
(lambda _
;; Not required, since we’re not building readstat.
(substitute* "src/Makevars"
- (("-lz") "-lreadstat"))
- #t)))))
+ (("-lz") "-lreadstat")))))))
(inputs
`(("readstat" ,readstat)))
(native-inputs
@@ -2812,10 +2804,10 @@ including functions for geolocation and routing.")
("r-tidyselect" ,r-tidyselect)
("r-vctrs" ,r-vctrs)))
(home-page "https://haven.tidyverse.org")
- (synopsis "Import and Export 'SPSS', 'Stata' and 'SAS' Files")
+ (synopsis "Import and export SPSS, Stata and SAS files")
(description
- "This package lets you mport foreign statistical formats into R via the
-embedded @url{https://github.com/WizardMac/ReadStat,ReadStat} C library.")
+ "This package lets you import foreign statistical formats into R via the
+@url{https://github.com/WizardMac/ReadStat,ReadStat} C library.")
(license license:expat)))
(define-public r-amap
@@ -8427,14 +8419,14 @@ hierarchical models using Markov Chain Monte Carlo (MCMC) simulation.")
(define-public r-rbibutils
(package
(name "r-rbibutils")
- (version "2.2.1")
+ (version "2.2.2")
(source
(origin
(method url-fetch)
(uri (cran-uri "rbibutils" version))
(sha256
(base32
- "16z79rvxkgdg0xq21f5aykikg6vjaiw1p9j9q42k2bz8qdswfd3b"))))
+ "0ks43z6vvdz0d0jv5d2qrm12yb4cwvi7p3kjk6byi4farhh368di"))))
(properties `((upstream-name . "rbibutils")))
(build-system r-build-system)
(home-page "https://geobosh.github.io/rbibutils/")
@@ -10296,24 +10288,24 @@ analysis.")
(define-public r-tab
(package
(name "r-tab")
- (version "4.1.1")
+ (version "5.1.1")
(source
(origin
(method url-fetch)
(uri (cran-uri "tab" version))
(sha256
(base32
- "0ds8n6gncidb66in7hlqkcmil5yfsf7ihqvmls789hrm2iz9xlfm"))))
+ "1kg8c1safi9klkx2mdkmsf5dn9piy4jljwd4ma7g4jz2rwl4jzhv"))))
(properties `((upstream-name . "tab")))
(build-system r-build-system)
(propagated-inputs
`(("r-dplyr" ,r-dplyr)
- ("r-gee" ,r-gee)
+ ("r-kableextra" ,r-kableextra)
("r-knitr" ,r-knitr)
("r-mass" ,r-mass)
- ("r-survey" ,r-survey)
- ("r-survival" ,r-survival)
- ("r-xtable" ,r-xtable)))
+ ("r-survey" ,r-survey)))
+ (native-inputs
+ `(("r-knitr" ,r-knitr)))
(home-page "https://cran.r-project.org/web/packages/tab/")
(synopsis "Create summary tables for statistical reports")
(description
@@ -11723,14 +11715,14 @@ address a bug.")
(define-public r-rcppannoy
(package
(name "r-rcppannoy")
- (version "0.0.18")
+ (version "0.0.19")
(source
(origin
(method url-fetch)
(uri (cran-uri "RcppAnnoy" version))
(sha256
(base32
- "0n68cf77gz34iq6w6ad87pbqwqam45nxp1gjzns4g6qhf7qdvrz4"))))
+ "12k8ny981dmky5js8yl6bih5r5mq3w43f2f9admhkwqn0n80kcl9"))))
(properties `((upstream-name . "RcppAnnoy")))
(build-system r-build-system)
(propagated-inputs
@@ -16990,14 +16982,14 @@ package.")
(define-public r-ggplotify
(package
(name "r-ggplotify")
- (version "0.0.7")
+ (version "0.0.8")
(source
(origin
(method url-fetch)
(uri (cran-uri "ggplotify" version))
(sha256
(base32
- "1vx2fg91ivssrxr4kzs9737hr8bsfs0q5pvd7lck7ffjpkjbclhh"))))
+ "08c9vxm8pg6l5g3r7wsfgzsq00xdrc6v4xnn7pd3qcyw7cc8s969"))))
(build-system r-build-system)
(propagated-inputs
`(("r-ggplot2" ,r-ggplot2)
@@ -21003,14 +20995,14 @@ provided as well.")
(define-public r-tuner
(package
(name "r-tuner")
- (version "1.3.3")
+ (version "1.3.3.1")
(source
(origin
(method url-fetch)
(uri (cran-uri "tuneR" version))
(sha256
(base32
- "0av978m4h2iqazyfq6n2cgkh4wpllihh7s29lah2nb8ngc0w5hxx"))))
+ "12nixpqrc5gp7p2clr7ia6jwb0jq2i3brlxiwlp00ixmnm5g1jyd"))))
(properties `((upstream-name . "tuneR")))
(build-system r-build-system)
(propagated-inputs `(("r-signal" ,r-signal)))
@@ -25815,14 +25807,14 @@ simple interface for all functions.")
(define-public r-iml
(package
(name "r-iml")
- (version "0.10.0")
+ (version "0.10.1")
(source
(origin
(method url-fetch)
(uri (cran-uri "iml" version))
(sha256
(base32
- "0xm3q42qahq798ilgg050df0mahhbdfd3fx3i7cpx606h38si0x7"))))
+ "1wz6xqhvqkzj723nw7qrlwb1171wvvpxhv3pa8cq7vcbkiflq37r"))))
(properties `((upstream-name . "iml")))
(build-system r-build-system)
(propagated-inputs
@@ -25832,7 +25824,7 @@ simple interface for all functions.")
("r-future" ,r-future)
("r-future-apply" ,r-future-apply)
("r-ggplot2" ,r-ggplot2)
- ("r-gridextra" ,r-gridextra)
+ ("r-keras" ,r-keras)
("r-metrics" ,r-metrics)
("r-prediction" ,r-prediction)
("r-r6" ,r-r6)))
@@ -27716,16 +27708,18 @@ data (variant call format, e.g. VCF or BCF) or meta-analysis results in R.")
(define-public r-maldiquant
(package
(name "r-maldiquant")
- (version "1.19.3")
+ (version "1.20")
(source
(origin
(method url-fetch)
(uri (cran-uri "MALDIquant" version))
(sha256
(base32
- "0b7kdz3x4sdq413h1q09l1qhcvdnnwv6fqsqwllks1cd3xy34c57"))))
+ "1h9i158czlzwbn5zakkqd2ggc9g90r73vdspmp6kgfcmy9frvwzz"))))
(properties `((upstream-name . "MALDIquant")))
(build-system r-build-system)
+ (native-inputs
+ `(("r-knitr" ,r-knitr)))
(home-page "https://cran.r-project.org/web/packages/MALDIquant")
(synopsis "Quantitative analysis of mass spectrometry data")
(description
@@ -29957,3 +29951,231 @@ applications. The OpenCPU server runs either as a single-user development
server within the interactive R session, or as a multi-user stack based on
Apache2.")
(license license:asl2.0)))
+
+(define-public r-exactextractr
+ (package
+ (name "r-exactextractr")
+ (version "0.6.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "exactextractr" version))
+ (sha256
+ (base32
+ "1xnccadbj03h7m81ix5qn0hx918xc9hbxnzgv5lr3hf8b26i9wni"))))
+ (properties `((upstream-name . "exactextractr")))
+ (build-system r-build-system)
+ (inputs `(("geos" ,geos)))
+ (propagated-inputs
+ `(("r-raster" ,r-raster)
+ ("r-rcpp" ,r-rcpp)
+ ("r-sf" ,r-sf)))
+ (native-inputs
+ `(("r-knitr" ,r-knitr)))
+ (home-page "https://isciences.gitlab.io/exactextractr/")
+ (synopsis "Fast extraction from raster datasets using polygons")
+ (description
+ "This package provides a replacement for the @code{extract} function from
+the @code{raster} package that is suitable for extracting raster values using
+@code{sf} polygons.")
+ (license license:asl2.0)))
+
+(define-public r-stringfish
+ (package
+ (name "r-stringfish")
+ (version "0.15.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "stringfish" version))
+ (sha256
+ (base32
+ "0m8485p1gb5z2n2g5nyr38zixw4iv8xxm7bxspxlxvx6alhn03pn"))))
+ (properties `((upstream-name . "stringfish")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-rcpp" ,r-rcpp)
+ ("r-rcppparallel" ,r-rcppparallel)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("r-knitr" ,r-knitr)))
+ (home-page "https://github.com/traversc/stringfish")
+ (synopsis "Alternative string implementation")
+ (description
+ "This package provides an extendable, performant and multithreaded
+@code{alt-string} implementation backed by C++ vectors and strings.")
+ (license license:gpl3)))
+
+(define-public r-rapiserialize
+ (package
+ (name "r-rapiserialize")
+ (version "0.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "RApiSerialize" version))
+ (sha256
+ (base32
+ "0gm2j8kh40imhncwwx1sx9kmraaxcxycvgwls53lcyy2ap344k9j"))))
+ (properties `((upstream-name . "RApiSerialize")))
+ (build-system r-build-system)
+ (home-page
+ "https://cran.r-project.org/package=RApiSerialize")
+ (synopsis "R API serialization")
+ (description
+ "This package provides other packages with access to the internal R
+serialization code. Access to this code is provided at the C function level
+by using the registration of native function mechanism. Client packages
+simply include a single header file RApiSerializeAPI.h provided by this
+package.")
+ (license license:gpl2+)))
+
+(define-public r-qs
+ (package
+ (name "r-qs")
+ (version "0.25.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "qs" version))
+ (sha256
+ (base32
+ "0qzrhc5jsygj813k956b00h4b6haynz44rk6a4v34fv4ywq9ba7w"))))
+ (properties `((upstream-name . "qs")))
+ (build-system r-build-system)
+ (inputs `(("zlib" ,zlib)))
+ (propagated-inputs
+ `(("r-rapiserialize" ,r-rapiserialize)
+ ("r-rcpp" ,r-rcpp)
+ ("r-stringfish" ,r-stringfish)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("r-knitr" ,r-knitr)))
+ (home-page "https://github.com/traversc/qs")
+ (synopsis "Quick serialization of R objects")
+ (description
+ "This package provides functions for quickly writing and reading any R
+object to and from disk.")
+ (license license:gpl3)))
+
+(define-public r-rgeos
+ (package
+ (name "r-rgeos")
+ (version "0.5-5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "rgeos" version))
+ (sha256
+ (base32
+ "086l0qk3p4jq23bs91c4a65x4qz99z0hy0vsnvfqfvppdzz0vajb"))))
+ (properties `((upstream-name . "rgeos")))
+ (build-system r-build-system)
+ (inputs
+ `(("geos" ,geos)))
+ (propagated-inputs
+ `(("r-sp" ,r-sp)))
+ (home-page "https://cran.r-project.org/package=rgeos")
+ (synopsis "Interface to Geometry Engine (GEOS)")
+ (description
+ "This package provides an R interface to Geometry Engine (GEOS) using the
+C API for topology operations on geometries.")
+ (license license:gpl2+)))
+
+(define-public r-tfruns
+ (package
+ (name "r-tfruns")
+ (version "1.5.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "tfruns" version))
+ (sha256
+ (base32
+ "04lfckg1if3kfwcl4s4fcc9aw04crwk4m1qr55ag22j2x2jlb2l9"))))
+ (properties `((upstream-name . "tfruns")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-base64enc" ,r-base64enc)
+ ("r-config" ,r-config)
+ ("r-jsonlite" ,r-jsonlite)
+ ("r-magrittr" ,r-magrittr)
+ ("r-reticulate" ,r-reticulate)
+ ("r-rlang" ,r-rlang)
+ ("r-rstudioapi" ,r-rstudioapi)
+ ("r-tidyselect" ,r-tidyselect)
+ ("r-whisker" ,r-whisker)
+ ("r-yaml" ,r-yaml)))
+ (native-inputs `(("r-knitr" ,r-knitr)))
+ (home-page "https://github.com/rstudio/tfruns")
+ (synopsis "Training run tools for TensorFlow")
+ (description
+ "Create and manage unique directories for each TensorFlow training run.
+This package provides a unique, time stamped directory for each run along with
+functions to retrieve the directory of the latest run or latest several
+runs.")
+ (license license:asl2.0)))
+
+(define-public r-tensorflow
+ (package
+ (name "r-tensorflow")
+ (version "2.5.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "tensorflow" version))
+ (sha256
+ (base32
+ "00g9w4xmdyjl4578kmhng58k7afjkj2vwgcq2ik8rqwljkcz5pph"))))
+ (properties `((upstream-name . "tensorflow")))
+ (build-system r-build-system)
+ (inputs `(("tensorflow" ,tensorflow)))
+ (propagated-inputs
+ `(("r-config" ,r-config)
+ ("r-jsonlite" ,r-jsonlite)
+ ("r-processx" ,r-processx)
+ ("r-reticulate" ,r-reticulate)
+ ("r-rstudioapi" ,r-rstudioapi)
+ ("r-tfruns" ,r-tfruns)
+ ("r-yaml" ,r-yaml)))
+ (home-page "https://github.com/rstudio/tensorflow")
+ (synopsis "R interface to TensorFlow")
+ (description
+ "R interface to TensorFlow a library for numerical computation using data
+flow graphs. Nodes in the graph represent mathematical operations, while the
+graph edges represent the multidimensional data arrays (tensors) communicated
+between them.")
+ (license license:asl2.0)))
+
+(define-public r-keras
+ (package
+ (name "r-keras")
+ (version "2.4.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "keras" version))
+ (sha256
+ (base32
+ "00bw5f5d81md8db1k6bf2a91by4k25xvlwxiwv188y4vw3bfc7md"))))
+ (properties `((upstream-name . "keras")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-generics" ,r-generics)
+ ("r-magrittr" ,r-magrittr)
+ ("r-r6" ,r-r6)
+ ("r-reticulate" ,r-reticulate)
+ ("r-rlang" ,r-rlang)
+ ("r-tensorflow" ,r-tensorflow)
+ ("r-tfruns" ,r-tfruns)
+ ("r-zeallot" ,r-zeallot)))
+ (native-inputs `(("r-knitr" ,r-knitr)))
+ (home-page "https://keras.rstudio.com")
+ (synopsis "R Interface to 'Keras'")
+ (description
+ "This package provides an interface to Keras, a high-level neural
+networks API. Keras was developed with a focus on enabling fast
+experimentation, supports both convolution based networks and recurrent
+networks (as well as combinations of the two), and runs seamlessly on both CPU
+and GPU devices.")
+ (license license:expat)))
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 00209d4e29..275963c311 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -5716,6 +5716,37 @@ programs.")
("rust-parking" ,rust-parking-1)
("rust-waker-fn" ,rust-waker-fn-1))))))
+(define-public rust-boomphf-0.5
+ (package
+ (name "rust-boomphf")
+ (version "0.5.9")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "boomphf" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "0braniw72g9yq5006sfgc1g8d4317bb524c694jw6nggizrvg3sf"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs
+ (("rust-crossbeam-utils" ,rust-crossbeam-utils-0.8)
+ ("rust-log" ,rust-log-0.4)
+ ("rust-rayon" ,rust-rayon-1)
+ ("rust-serde" ,rust-serde-1)
+ ("rust-wyhash" ,rust-wyhash-0.5))
+ #:cargo-development-inputs
+ (("rust-bencher" ,rust-bencher-0.1)
+ ("rust-quickcheck" ,rust-quickcheck-1))))
+ (home-page "https://github.com/10XGenomics/rust-boomphf")
+ (synopsis "Scalable and Efficient Minimal Perfect Hash Functions")
+ (description "This package provides a Rust implementation of
+@url{https://arxiv.org/abs/1702.03154, fast and scalable minimal perfect hashing
+for massive key sets}. It generates an @acronym{MPHF, minimal perfect hash
+functions} for a collection of hashable objects.")
+ (license license:expat)))
+
(define-public rust-boxfnonce-0.1
(package
(name "rust-boxfnonce")
@@ -7746,6 +7777,30 @@ clauses.")
(description "Date and time library for Rust.")
(license (list license:expat license:asl2.0))))
+(define-public rust-chrono-humanize-0.2
+ (package
+ (name "rust-chrono-humanize")
+ (version "0.2.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "chrono-humanize" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1jvm6fcs3zvz4kcqkp9q5hjy0i2zc17194nb63ckyn0xa0cw3p9f"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:skip-build? #t
+ #:cargo-inputs
+ (("rust-chrono" ,rust-chrono-0.4))))
+ (home-page "https://gitlab.com/imp/chrono-humanize-rs")
+ (synopsis "Human-friendly time expressions")
+ (description
+ "Chrono-Humanize provides human-friendly time expressions, similar to
+Python arrow.humanize.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-chrono-tz-0.5
(package
(name "rust-chrono-tz")
@@ -18586,10 +18641,10 @@ getters and setters on fields.")
`(#:cargo-inputs
(("rust-cc" ,rust-cc-1))))))
-(define-public rust-gfa-0.6
+(define-public rust-gfa-0.10
(package
(name "rust-gfa")
- (version "0.6.2")
+ (version "0.10.0")
(source
(origin
(method url-fetch)
@@ -18598,16 +18653,20 @@ getters and setters on fields.")
(string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0ghmy4r0324s6vvmj9nmh326346nkwm7nybnpcpswnjvf02b85gw"))))
+ "1hadm6vfjwyqw41bqci18wb4wv80rydmrag7a5c02pdp1gid14fw"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
- (("rust-bstr" ,rust-bstr-0.2)
+ (("rust-anyhow" ,rust-anyhow-1)
+ ("rust-bstr" ,rust-bstr-0.2)
("rust-bytemuck" ,rust-bytemuck-1)
+ ("rust-fnv" ,rust-fnv-1)
("rust-lazy-static" ,rust-lazy-static-1)
+ ("rust-memmap" ,rust-memmap-0.7)
("rust-nom" ,rust-nom-5)
("rust-regex" ,rust-regex-1)
- ("rust-serde" ,rust-serde-1))
+ ("rust-serde" ,rust-serde-1)
+ ("rust-serde-json" ,rust-serde-json-1))
#:cargo-development-inputs
(("rust-criterion" ,rust-criterion-0.3))))
(home-page "https://github.com/chfi/rs-gfa")
@@ -18617,6 +18676,31 @@ getters and setters on fields.")
@acronym{GFA, Graphical Fragment Assembly} format.")
(license license:expat)))
+(define-public rust-gfa-0.6
+ (package
+ (inherit rust-gfa-0.10)
+ (name "rust-gfa")
+ (version "0.6.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "gfa" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0ghmy4r0324s6vvmj9nmh326346nkwm7nybnpcpswnjvf02b85gw"))))
+ (arguments
+ `(#:cargo-inputs
+ (("rust-bstr" ,rust-bstr-0.2)
+ ("rust-bytemuck" ,rust-bytemuck-1)
+ ("rust-lazy-static" ,rust-lazy-static-1)
+ ("rust-nom" ,rust-nom-5)
+ ("rust-regex" ,rust-regex-1)
+ ("rust-serde" ,rust-serde-1))
+ #:cargo-development-inputs
+ (("rust-criterion" ,rust-criterion-0.3))))))
+
(define-public rust-ghash-0.3
(package
(name "rust-ghash")
@@ -25788,7 +25872,7 @@ parallelize and optimize.")
(define-public rust-md-5-0.9
(package
(name "rust-md-5")
- (version "0.9.0")
+ (version "0.9.1")
(source
(origin
(method url-fetch)
@@ -25797,14 +25881,14 @@ parallelize and optimize.")
(string-append name "-" version ".tar.gz"))
(sha256
(base32
- "14x7yxfi4pk4qy3zmn9dj69yc18fg3cyind346kribjd93077qij"))))
+ "059ajjacz1q3cms7vl6cvhdqs4qdw2nnwj9dq99ryzv0p6djfnkv"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
- (("rust-block-buffer" ,rust-block-buffer-0.8)
+ (("rust-block-buffer" ,rust-block-buffer-0.9)
("rust-digest" ,rust-digest-0.9)
("rust-md5-asm" ,rust-md5-asm-0.4)
- ("rust-opaque-debug" ,rust-opaque-debug-0.2))
+ ("rust-opaque-debug" ,rust-opaque-debug-0.3))
#:cargo-development-inputs
(("rust-digest" ,rust-digest-0.9)
("rust-hex-literal" ,rust-hex-literal-0.2))))
@@ -34835,6 +34919,27 @@ they were parsed from")
implementation.")
(license (list license:expat license:asl2.0))))
+(define-public rust-quick-csv-0.1
+ (package
+ (name "rust-quick-csv")
+ (version "0.1.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "quick-csv" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "131k8zzlplk2h62wz813jbvm0sk7v3mixwhhq34y9lmp3mqbgx7d"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs
+ (("rust-rustc-serialize" ,rust-rustc-serialize-0.3))))
+ (home-page "https://github.com/tafia/quick-csv")
+ (synopsis "Quick csv reader and decoder")
+ (description "This package provides a quick csv reader and decoder in Rust.")
+ (license license:expat)))
+
(define-public rust-quick-error-1
(package
(name "rust-quick-error")
@@ -45510,6 +45615,30 @@ cryptographic implementations.")
(base32
"1vm80mxbwfj334izwm8x8l65v1xl9hr0kwrg36r1rq565fkaarrd"))))))
+(define-public rust-succinct-0.5
+ (package
+ (name "rust-succinct")
+ (version "0.5.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "succinct" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "0654c9gq50x7djyf25zbzz3d2pc4x3z21wmjj3qbr6d9h4hbd63p"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs
+ (("rust-byteorder" ,rust-byteorder-1)
+ ("rust-num-traits" ,rust-num-traits-0.2))
+ #:cargo-development-inputs
+ (("rust-quickcheck" ,rust-quickcheck-0.9))))
+ (home-page "https://github.com/tov/succinct-rs")
+ (synopsis "Succinct data structures for Rust")
+ (description "This package provides succinct data structures for Rust.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-surf-2
(package
(name "rust-surf")
@@ -55620,6 +55749,29 @@ serialization.")
"Contains function definitions for the Windows API library ws2_32.")
(license license:expat)))
+(define-public rust-wyhash-0.5
+ (package
+ (name "rust-wyhash")
+ (version "0.5.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "wyhash" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "15f26hvx6nyp4d6iswha7rm3psidxa2k2iab1f1aqgsyq9iy3xms"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs
+ (("rust-rand-core" ,rust-rand-core-0.6))))
+ (home-page "https://github.com/eldruin/wyhash-rs")
+ (synopsis "Rust implementation of the WyHash algorithm")
+ (description
+ "This package provides a Rust implementation of the WyHash fast portable
+non-cryptographic hashing algorithm and random number generator.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-wyz-0.2
(package
(name "rust-wyz")
@@ -56476,7 +56628,7 @@ configuration file and/or environment variables.")
(define-public rust-svd-parser-0.9
(package
(name "rust-svd-parser")
- (version "0.9.0")
+ (version "0.10.2")
(source
(origin
(method url-fetch)
@@ -56485,18 +56637,20 @@ configuration file and/or environment variables.")
(string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1qhvdz3k76i3sfypcy8c84hhb8sqixrckba21kalzcpgy6an45ml"))))
+ "1fbr4m9cla6xvmrib7pad9hv29sn2d5hjbc77pz12lwzmm2pczk9"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
(("rust-anyhow" ,rust-anyhow-1)
- ("rust-either" ,rust-either-1)
+ ("rust-once-cell" ,rust-once-cell-1)
+ ("rust-rayon" ,rust-rayon-1)
+ ("rust-regex" ,rust-regex-1)
("rust-serde" ,rust-serde-1)
("rust-thiserror" ,rust-thiserror-1)
("rust-xmltree" ,rust-xmltree-0.8))
#:cargo-development-inputs
(("rust-serde-json" ,rust-serde-json-1))))
- (home-page #f)
+ (home-page "https://github.com/rust-embedded/svd")
(synopsis "A CMSIS-SVD file parser")
(description
"This package provides a CMSIS-SVD file parser")
@@ -56756,10 +56910,39 @@ variant of this library is available separately as @code{im}.")
(define-public rust-skim-0.7
(deprecated-package "rust-skim-0.7" skim-0.7))
+(define-public rust-clap-conf-0.1
+ (package
+ (name "rust-clap-conf")
+ (version "0.1.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "clap_conf" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1n29wr6ns660hi63mc30zvs7dhidaycw35am9spzknsal3nrs0sn"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs
+ (("rust-anyhow" ,rust-anyhow-1)
+ ("rust-clap" ,rust-clap-2)
+ ("rust-serde" ,rust-serde-1)
+ ("rust-thiserror" ,rust-thiserror-1)
+ ("rust-toml" ,rust-toml-0.5))))
+ (home-page
+ "https://github.com/storyfeet/clap_conf")
+ (synopsis
+ "A library to unify commandline arguments with config files and environment variables. And make it easier for users to tell your program how to behave across the three main input sources")
+ (description
+ "This package provides a library to unify commandline arguments with config files and environment variables. And make it easier for users to tell your program how to behave across the three main input sources")
+ (license license:expat)))
+
(define-public svd2rust
(package
(name "svd2rust")
- (version "0.17.0")
+ (version "0.19.0")
(source
(origin
(method url-fetch)
@@ -56768,20 +56951,22 @@ variant of this library is available separately as @code{im}.")
(string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0850pn92a5pmrlavdsm4s9wgrgx9gz0vylf9i594nj8sixmddjd9"))))
+ "0q8slfgjfhpljzlk2myb0i538mfq99q1ljn398jm17r1q2pjjxhv"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
- (("rust-cast" ,rust-cast-0.2)
+ (("rust-anyhow" ,rust-anyhow-1)
+ ("rust-cast" ,rust-cast-0.2)
("rust-clap" ,rust-clap-2)
+ ("rust-clap-conf" ,rust-clap-conf-0.1)
("rust-env-logger" ,rust-env-logger-0.7)
- ("rust-error-chain" ,rust-error-chain-0.12)
("rust-inflections" ,rust-inflections-1)
("rust-log" ,rust-log-0.4)
("rust-proc-macro2" ,rust-proc-macro2-0.4)
("rust-quote" ,rust-quote-1)
("rust-svd-parser" ,rust-svd-parser-0.9)
- ("rust-syn" ,rust-syn-1))))
+ ("rust-syn" ,rust-syn-1)
+ ("rust-thiserror" ,rust-thiserror-1))))
(home-page #f)
(synopsis
"Generate Rust register maps (`struct`s) from SVD files")
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 189ca27209..917e88b44c 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -1119,7 +1119,7 @@ trivial to build for local use. Portability is emphasized over performance.")
("automake" ,automake)
("libtool" ,libtool)))
;; WARNING: This package might need additional configure flags to run properly.
- ;; See https://git.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/libsecp256k1.
+ ;; See https://github.com/archlinux/svntogit-community/blob/packages/libsecp256k1/trunk/PKGBUILD.
(synopsis "C library for EC operations on curve secp256k1")
(description
"Optimized C library for EC operations on curve secp256k1.
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 2abacec8e7..36b8b823c0 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -1381,6 +1381,15 @@ including field and record folding.")))
(delete 'configure)
;; The default target is only needed for tests and built on demand.
(delete 'build)
+ (add-before 'check 'mount-tmp
+ ;; Use the provided workspace directory for test files.
+ ;; Otherwise, /tmp is used which is a mount namespace on /gnu/store.
+ ;; This speeds up the build when the host /tmp is a proper tmpfs or
+ ;; other fast filesystem, as opposed to /gnu which may be a HDD.
+ (lambda _
+ (let ((test-dir (string-append (getcwd) "/../test")))
+ (mkdir test-dir)
+ (setenv "TEST_TMPDIR" (canonicalize-path test-dir)))))
(add-before 'check 'disable-optimizations
(lambda _
;; Prevent the build from passing '-march=native' to the compiler.
@@ -1612,14 +1621,14 @@ changes.")
(define-public tdb
(package
(name "tdb")
- (version "1.4.3")
+ (version "1.4.5")
(source (origin
(method url-fetch)
(uri (string-append "https://www.samba.org/ftp/tdb/tdb-"
version ".tar.gz"))
(sha256
(base32
- "06waz0k50c7v3chd08mzp2rv7w4k4q9isbxx3vhlfpx1vy9q61f8"))))
+ "0h8fkblws3d4vf37yhbrbw2nfxg5vk2v3i5mk04hhcbh9y4fvz5w"))))
(build-system gnu-build-system)
(arguments
'(#:phases
diff --git a/gnu/packages/digest.scm b/gnu/packages/digest.scm
index 986e335861..0af6720c03 100644
--- a/gnu/packages/digest.scm
+++ b/gnu/packages/digest.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2021 Ryan Prior <rprior@protonmail.com>
+;;; Copyright © 2021 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -20,8 +21,10 @@
(define-module (gnu packages digest)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
+ #:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system python)
#:use-module (guix build-system trivial)
#:use-module (guix utils)
#:use-module (ice-9 match))
@@ -96,3 +99,21 @@ The code is highly portable, and hashes of the same length are identical on all
platforms (both big and little endian).")
(license (list license:bsd-2 ; xxhash library (xxhash.[ch])
license:gpl2+)))) ; xxhsum.c
+
+(define-public python-xxhash
+ (package
+ (name "python-xxhash")
+ (version "2.0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "xxhash" version))
+ (sha256
+ (base32
+ "0jbvz19acznq00544gcsjg05fkvrmwbnwdfgrvwss3i1ys6avgmp"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/ifduyue/python-xxhash")
+ (synopsis "Python binding for xxHash")
+ (description "This package provides Python bindings for the xxHash hash
+algorithm.")
+ (license license:bsd-3)))
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index dc6b101e3c..69218c08af 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -947,14 +947,14 @@ synthesis, and on-the-fly re-configuration.")
(define-public knot-resolver
(package
(name "knot-resolver")
- (version "5.3.2")
+ (version "5.4.0")
(source (origin
(method url-fetch)
(uri (string-append "https://secure.nic.cz/files/knot-resolver/"
"knot-resolver-" version ".tar.xz"))
(sha256
(base32
- "0dhlq25lig8wmn72ambfmb1njwwp980d98i9q7a24d79bxyl8vwb"))))
+ "0pl1l167fqb1lgmrmkx8i140l41wgnfwr6h3awxv4cw4p5qzcjjk"))))
(build-system meson-build-system)
(outputs '("out" "doc"))
(arguments
diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index 536962dabc..0addbc35fa 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -140,7 +140,7 @@ of categories with some of the activities available in that category.
(define-public gcompris-qt
(package
(name "gcompris-qt")
- (version "1.0")
+ (version "1.1")
(source
(origin
(method url-fetch)
@@ -148,8 +148,8 @@ of categories with some of the activities available in that category.
"https://gcompris.net/download/qt/src/gcompris-qt-"
version ".tar.xz"))
(sha256
- (base32 "08dw1q0h4qz2q0ksa5pbmb9v60hr1zv9skx6z8dlq9b1i7harnds"))))
- (build-system cmake-build-system)
+ (base32 "1bpjwrv83rhikbycpyfpf6dbqr0xfq6amgdpqfgfph6nzr3zka7h"))))
+ (build-system qt-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
@@ -160,23 +160,7 @@ of categories with some of the activities available in that category.
(setenv "DISPLAY" ":1")
;; The test suite wants to write to /homeless-shelter
(setenv "HOME" (getcwd))
- #t))
- (add-after 'install 'wrap-executable
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (wrap-program (string-append out "/bin/gcompris-qt")
- `("QT_PLUGIN_PATH" ":" prefix
- ,(map (lambda (label)
- (string-append (assoc-ref inputs label)
- "/lib/qt5/plugins"))
- '("qtbase" "qtdeclarative" "qtmultimedia" "qtsvg")))
- `("QML2_IMPORT_PATH" ":" prefix
- ,(map (lambda (label)
- (string-append (assoc-ref inputs label)
- "/lib/qt5/qml"))
- '("qtdeclarative" "qtgraphicaleffects"
- "qtmultimedia" "qtquickcontrols"))))
- #t))))
+ #t)))
#:configure-flags (list "-DQML_BOX2D_MODULE=disabled"
"-DBUILD_TESTING=TRUE")))
(native-inputs
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index a008b9ded6..6bfd3c0ada 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -138,6 +138,7 @@
#:use-module (gnu packages aspell)
#:use-module (gnu packages audio)
#:use-module (gnu packages bash)
+ #:use-module (gnu packages chez)
#:use-module (gnu packages cmake)
#:use-module (gnu packages code)
#:use-module (gnu packages cpp)
@@ -209,6 +210,7 @@
#:use-module (gnu packages sphinx)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages shells)
+ #:use-module (gnu packages shellutils)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages gnupg)
@@ -408,6 +410,49 @@ a generic Scheme interaction mode for the GNU Emacs editor.")
a generic Scheme interaction mode for the GNU Emacs editor.")
(license license:bsd-3)))
+(define-public emacs-geiser-chez
+ (package
+ (name "emacs-geiser-chez")
+ (version "0.16")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.com/emacs-geiser/chez")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0cc1z5z5cpvxa5f3n8kvms0wxlybzcg4l1bh3rwv1l1sb0lk1xzx"))))
+ (build-system emacs-build-system)
+ (arguments
+ '(#:include (cons "^src/" %default-include)
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'make-autoloads 'patch-autoloads
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* (string-append
+ (elpa-directory (assoc-ref outputs "out"))
+ "/geiser-chez-autoloads.el")
+ ;; Activating implementations fails when Geiser is not yet
+ ;; loaded, so let's defer that until it is.
+ ;; See <https://gitlab.com/emacs-geiser/chez/-/issues/7>.
+ (("\\(geiser-activate-implementation .*\\)" all)
+ (string-append
+ "(eval-after-load 'geiser-impl '" all ")"))
+ (("\\(geiser-implementation-extension .*\\)" all)
+ (string-append
+ "(eval-after-load 'geiser-impl '" all ")"))))))))
+ (inputs
+ `(("chez-scheme" ,chez-scheme)))
+ (propagated-inputs
+ `(("emacs-geiser" ,emacs-geiser)))
+ (home-page "https://nongnu.org/geiser/")
+ (synopsis "Support for Chez Scheme in Geiser")
+ (description
+ "This package adds support for using Chez Scheme in Emacs with Geiser.")
+ (license license:bsd-3)))
+
(define-public emacs-vc-hgcmd
(package
(name "emacs-vc-hgcmd")
@@ -585,13 +630,13 @@ when typing parentheses directly or commenting out code line by line.")
(define-public emacs-project
(package
(name "emacs-project")
- (version "0.6.0")
+ (version "0.6.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://elpa.gnu.org/packages/project-" version ".tar"))
(sha256
- (base32 "0m0r1xgz1ffx6mi2gjz1dkgrn89sh4y5ysi0gj6p1w05bf8p0lc0"))))
+ (base32 "174fli3swbn67qcs9isv70vwrf6r41mak6dbs98gia89rlb71c8v"))))
(build-system emacs-build-system)
(propagated-inputs `(("emacs-xref" ,emacs-xref)))
(home-page "http://elpa.gnu.org/packages/project.html")
@@ -733,7 +778,7 @@ libgit2 bindings for Emacs, intended to boost the performance of Magit.")
(define-public emacs-magit
(package
(name "emacs-magit")
- (version "3.2.0")
+ (version "3.2.1")
(source
(origin
(method git-fetch)
@@ -742,7 +787,7 @@ libgit2 bindings for Emacs, intended to boost the performance of Magit.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1ig4yzvd9hzvajjc46wk2g4xyg1ign92wgasa4wgn4hh878i3r1y"))))
+ (base32 "179mgh8l5p7fhfmbg5rz810mhbzsxqsxd66jdb2a68vsazs1jw2m"))))
(build-system emacs-build-system)
(arguments
`(#:emacs ,emacs-no-x ;module support is required
@@ -2045,14 +2090,14 @@ incrementally confined in Isearch manner.")
(define emacs-emms-print-metadata
(package
(name "emacs-emms-print-metadata")
- (version "7.5")
+ (version "7.6")
(source
(origin
(method url-fetch)
(uri (string-append "https://elpa.gnu.org/packages/"
"emms-" version ".tar"))
(sha256
- (base32 "0d7nsx2idzbp6d5im5rrsnwppbr2cimvxgx31bhwsm2aq3ya5v2j"))))
+ (base32 "03cp6mr0kxy41dg4ri5ymbzpkw7bd8zg7hx0a2rb4axiss5qmx7i"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags '("emms-print-metadata")
@@ -2808,7 +2853,7 @@ of bibliographic references.")
(define-public emacs-corfu
(package
(name "emacs-corfu")
- (version "0.10")
+ (version "0.11")
(source
(origin
(method git-fetch)
@@ -2817,7 +2862,7 @@ of bibliographic references.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "1z61qrwjg1d28vhh39yrbrxsjbmnqws74bs3dwbw7d854d5wsy9q"))))
+ (base32 "0x4aa5fk1ywlfs8gvwj3v2bycyl4nx7mzz1ci37x69bdjl9wal80"))))
(build-system emacs-build-system)
(home-page "https://github.com/minad/corfu")
(synopsis "Completion overlay region function")
@@ -2841,6 +2886,18 @@ overlay below or above the point. Corfu can be considered the minimalistic
(sha256
(base32 "0xkqn4604k2imas6azy1www56br8ls4iv9a44pxcd8h94j1fp44d"))))
(build-system emacs-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-in-direnv
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let* ((direnv-path (assoc-ref inputs "direnv"))
+ (direnv-bin (string-append
+ "\"" direnv-path "/bin/direnv\"")))
+ (substitute* "direnv.el"
+ (("\"direnv\"") direnv-bin))))))))
+ (inputs
+ `(("direnv" ,direnv)))
(propagated-inputs
`(("dash" ,emacs-dash)
("with-editor" ,emacs-with-editor)))
@@ -3687,7 +3744,7 @@ a command.")
(define-public emacs-olivetti
(package
(name "emacs-olivetti")
- (version "1.11.4")
+ (version "2.0.0")
(source
(origin
(method git-fetch)
@@ -3696,7 +3753,7 @@ a command.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1pw1zc0pdwwi9dv8fypfxgn6xbfvm88qzhss880lspialff1wcxn"))))
+ (base32 "0c0nkxik74p6s1pbf1l8pix5yy4xgnakqkwrrmf2ic1x1m4xv3hj"))))
(build-system emacs-build-system)
(home-page "https://github.com/rnkn/olivetti")
(synopsis "Emacs minor mode for a nice writing environment")
@@ -3949,7 +4006,7 @@ files and directories.")
(define-public emacs-fountain-mode
(package
(name "emacs-fountain-mode")
- (version "3.5.0")
+ (version "3.5.1")
(source
(origin
(method git-fetch)
@@ -3958,7 +4015,7 @@ files and directories.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "0xlg5b0sa4qbv68sza23fr5khv36860jbhzfbcqcw1d420xllryx"))))
+ (base32 "0y7dd6qq4b95scj7fay4zzhkf0g0x89npylc4v1hz59b1yyylfqy"))))
(build-system emacs-build-system)
(home-page "https://github.com/rnkn/fountain-mode")
(synopsis "Major mode for screenwriting in Fountain markup")
@@ -4511,15 +4568,16 @@ appropriate console.")
(define-public emacs-znc
(package
(name "emacs-znc")
- (version "0.0.2")
+ (version "0.4")
(source
(origin
- (method url-fetch)
- (uri (string-append "https://marmalade-repo.org/packages/znc-"
- version ".el"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/sshirokov/ZNC.el")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
- (base32
- "1d8lqvybgyazin5z0g1c4l3rg1vzrrvf0saqs53jr1zcdg0lianh"))))
+ (base32 "1ran86ycnays9s23wk3iczqqgnpbyx0lijiarx65am3jc1yzg5ia"))))
(build-system emacs-build-system)
(home-page "https://github.com/sshirokov/ZNC.el")
(synopsis "Make ERC and ZNC get along better")
@@ -8143,7 +8201,7 @@ style, or as multiple word prefixes.")
(define-public emacs-consult
(package
(name "emacs-consult")
- (version "0.9")
+ (version "0.10")
(source
(origin
(method git-fetch)
@@ -8151,7 +8209,7 @@ style, or as multiple word prefixes.")
(url "https://github.com/minad/consult")
(commit version)))
(sha256
- (base32 "0iy6lrqbpi4lv7141rdawpn278rxinfxspwb81n04azyxrk28vlw"))
+ (base32 "131342149xvmrcr3iwmx05id7358158i6m9an8izdpggsnwhs3i4"))
(file-name (git-file-name name version))))
(build-system emacs-build-system)
(propagated-inputs
@@ -8191,7 +8249,7 @@ and present results either as single emails or full trees.")
(define-public emacs-marginalia
(package
(name "emacs-marginalia")
- (version "0.7")
+ (version "0.8")
(source
(origin
(method git-fetch)
@@ -8200,7 +8258,7 @@ and present results either as single emails or full trees.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "0yn6dybvsdhr37hnadmbfqi7pf7scxr9z6a6ghsqbrghycddd0mc"))))
+ (base32 "1d6xbidxcxd5gxs5cjxbx1i1wdcmgdnn3hh7fxz0sgf1gaxyp5kv"))))
(build-system emacs-build-system)
(home-page "https://github.com/minad/marginalia")
(synopsis "Marginalia in the minibuffer completions")
@@ -10087,7 +10145,7 @@ with Elfeed.")
(define-public emacs-elfeed-score
(package
(name "emacs-elfeed-score")
- (version "0.7.9")
+ (version "0.7.10")
(source
(origin
(method git-fetch)
@@ -10096,8 +10154,7 @@ with Elfeed.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32
- "17hf6b5db4d0cm1996z4sl00y4c8gl3rga97xxp2bmwbhdr7kaxw"))))
+ (base32 "15gjsp4whrdw9yx3mw1517wfynv9yya5yhalqqdb738q5c32p9lm"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-elfeed" ,emacs-elfeed)))
@@ -10467,6 +10524,29 @@ names, e.g., @samp{#0000ff} is displayed in white with a blue background.")
keybindings in Emacs, and does not come with any predefined bindings.")
(license license:expat))))
+(define-public emacs-valign
+ (package
+ (name "emacs-valign")
+ (version "3.1.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/casouri/valign")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "11ks6z532i7vxi6f9g32zhimvikhsqywa2bd5fnnj2ahfx3msa95"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/casouri/valign")
+ (synopsis "Pixel-perfect visual alignment for Org and Markdown tables")
+ (description
+ "Valign provides visual alignment for Org mode, Markdown and Table.el
+tables on GUI Emacs. It can properly align tables containing variable-pitch
+font, CJK characters and images. Meanwhile, the text-based alignment
+generated by Org mode (or Markdown mode) is left untouched.")
+ (license license:gpl3+)))
+
(define-public emacs-visual-fill-column
(package
(name "emacs-visual-fill-column")
@@ -11309,7 +11389,7 @@ using package inferred style.")
(define-public emacs-lua-mode
(package
(name "emacs-lua-mode")
- (version "20201010")
+ (version "20210802")
(home-page "https://github.com/immerrr/lua-mode/")
(source
(origin
@@ -11319,7 +11399,7 @@ using package inferred style.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "0zf43f7fkrgki6pbc09zak975p4jx1yf3ipfs38hypfl9s5d6xrf"))))
+ (base32 "0r3svhggdml2n256k3b0zmbjnw51p46gan6dg07bhavpfrqs5196"))))
(build-system emacs-build-system)
(arguments
`(#:tests? #t
@@ -13559,13 +13639,13 @@ containing words from the Rime project.")
(define-public emacs-pyim
(package
(name "emacs-pyim")
- (version "3.9.3")
+ (version "3.9.4")
(source
(origin
(method url-fetch)
(uri (string-append "https://elpa.gnu.org/packages/pyim-" version ".tar"))
(sha256
- (base32 "0rjaimvbh0fadbqiq4ggyxr0y4pfzld76wb64v7l5874qczn8dfr"))))
+ (base32 "0ggnl2jidcklyhqd5av5kk1f855gsq29wq2nhvp1yjzn35hz6xij"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-async" ,emacs-async)
@@ -20887,28 +20967,26 @@ server with @code{M-x pinentry-start}.")
(license license:gpl3+))))
(define-public emacs-so-long
- (let ((commit "cfae473b1bf65f78ddb015159e667ec0103d881c")
- (revision "2"))
- (package
- (name "emacs-so-long")
- (version (git-version "1.0" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://git.savannah.gnu.org/git/so-long.git")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0g943n5cl9lz5s7hszg6yvp10xd1xvd8mfgxyg0yckmp8fqkswin"))))
- (build-system emacs-build-system)
- (home-page "https://www.emacswiki.org/emacs/SoLong")
- (synopsis "Improve performance in files with long lines")
- (description "This package improves the performance of Emacs when
+ (package
+ (name "emacs-so-long")
+ (version "1.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.savannah.gnu.org/git/so-long")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1d886fgsbly7wpm6ppll45yq3y87a27wy5c6m0gqxq5jb4q0q7d2"))))
+ (build-system emacs-build-system)
+ (home-page "https://www.emacswiki.org/emacs/SoLong")
+ (synopsis "Improve performance in files with long lines")
+ (description "This package improves the performance of Emacs when
viewing files with long lines. It is included as standard with Emacs 27 or
later.")
- (license license:gpl3+))))
+ (license license:gpl3+)))
(define-public emacs-github-review
(let ((commit "a13a3b4f1b6114a32af843971a145ab880f51232")
@@ -25407,40 +25485,37 @@ it forcibly
(license license:gpl3+))))
(define-public emacs-elpher
- ;; No tagged release upstream, but the commit below corresponds to the 2.10.3
- ;; release.
- (let ((commit "b0272de36cea3e1cd41cd15a012c8141b4b04575"))
- (package
- (name "emacs-elpher")
- (version "2.10.3")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "git://thelambdalab.xyz/elpher.git")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1m6lq47i4j6k76f81vcch6akab9mqph7kna3fn356295fvgm7j7q"))))
- (build-system emacs-build-system)
- (native-inputs
- `(("texinfo" ,texinfo)))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'install 'build-doc
- (lambda _
- (invoke "makeinfo" "elpher.texi"))))))
- (home-page "gopher://thelambdalab.xyz/1/projects/elpher/")
- (synopsis "Gopher and gemini client for Emacs")
- (description "Elpher is a full-featured gopher and gemini client for
+ (package
+ (name "emacs-elpher")
+ (version "3.2.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "git://thelambdalab.xyz/elpher.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0fzqm5gpadqzsl71r1bq72ki8dw8125v4nmhdd3b4rz9jy1rqm2g"))))
+ (build-system emacs-build-system)
+ (native-inputs
+ `(("texinfo" ,texinfo)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'install 'build-doc
+ (lambda _
+ (invoke "makeinfo" "elpher.texi"))))))
+ (home-page "gopher://thelambdalab.xyz/1/projects/elpher/")
+ (synopsis "Gopher and gemini client for Emacs")
+ (description "Elpher is a full-featured gopher and gemini client for
Emacs. Its features include intuitive keyboard and mouse-driven browsing,
out-of-the-box compatibility with evil-mode, clickable links in plain text,
caching of visited sites, pleasant and configurable visualization of Gopher
directories, direct visualisation of image files, jumping directly to links by
name (with autocompletion), a simple bookmark management system and
connections using TLS encryption.")
- (license license:gpl3+))))
+ (license license:gpl3+)))
(define-public emacs-zerodark-theme
(package
@@ -25675,14 +25750,14 @@ federated microblogging social network.")
(define-public emacs-ebdb
(package
(name "emacs-ebdb")
- (version "0.7")
+ (version "0.7.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://elpa.gnu.org/packages/"
"ebdb-" version ".tar"))
(sha256
- (base32 "0q4ywgh87d6hjac3031s21w91gld2hh7s8nbva94dnzwn6y9d0v1"))))
+ (base32 "1z5lh1mib60mvs5kbdsrw2h4whz4n5ad4qkpphs2xjvaz92jgq6s"))))
(build-system emacs-build-system)
(home-page "https://github.com/girzel/ebdb")
(synopsis "EIEIO port of BBDB, Emacs's contact-management package")
@@ -28912,7 +28987,7 @@ and preferred services can easily be configured.")
(define-public emacs-vertico
(package
(name "emacs-vertico")
- (version "0.13")
+ (version "0.14")
(source
(origin
(method git-fetch)
@@ -28921,7 +28996,7 @@ and preferred services can easily be configured.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "09zrrjbfbvj5lfrgjq21nsavdm69iwdsa0a80618v7xlkfk56wf1"))))
+ (base32 "0rddk76ih44b574lsr6d6r9wa2l7c9zlb9kcyw5xvly17ciiq16h"))))
(build-system emacs-build-system)
(native-inputs
`(("texinfo" ,texinfo)))
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 74e95cfc9e..57f4687005 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -1947,11 +1947,12 @@ parallel computing platforms. It also supports serial execution.")
(patches
(list (origin
;; Fix build with GCC 7. Patch taken from Arch Linux:
- ;; https://git.archlinux.org/svntogit/community.git/tree/trunk?h=packages/freehdl
+ ;; https://github.com/archlinux/svntogit-community/tree/packages/freehdl/trunk
(method url-fetch)
- (uri "https://git.archlinux.org/svntogit/community.git\
-/plain/trunk/build-fix.patch?h=packages/freehdl\
-&id=3bb90d64dfe6883e26083cd1fa96226d0d59175a")
+ (uri (string-append "https://raw.githubusercontent.com"
+ "/archlinux/svntogit-community"
+ "/3bb90d64dfe6883e26083cd1fa96226d0d59175a"
+ "/trunk/build-fix.patch"))
(file-name "freehdl-c++-namespace.patch")
(sha256
(base32
diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index 94f3c7e6d7..db6661555c 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -1169,16 +1169,16 @@ with the included @command{xfstests-check} helper.")
(define-public zfs
(package
(name "zfs")
- (version "2.0.5")
+ (version "2.1.0")
(outputs '("out" "module" "src"))
(source
(origin
(method url-fetch)
- (uri (string-append "https://github.com/zfsonlinux/zfs/releases"
+ (uri (string-append "https://github.com/openzfs/zfs/releases"
"/download/zfs-" version
"/zfs-" version ".tar.gz"))
(sha256
- (base32 "1jbfm18hh9x4a9s5d7si8lapmq2aniphyriif9flrgsff26lj5rs"))))
+ (base32 "0kzkggwznp4m3503f2m4lcinbl99jg50j4asrwfpfk1862vdrgb0"))))
(build-system linux-module-build-system)
(arguments
`(;; The ZFS kernel module should not be downloaded since the license
@@ -1209,6 +1209,25 @@ with the included @command{xfstests-check} helper.")
(util-linux (assoc-ref inputs "util-linux"))
(nfs-utils (assoc-ref inputs "nfs-utils"))
(kmod (assoc-ref inputs "kmod-runtime")))
+ ;; New feature "compatibility=" in 2.1.0.
+ ;; This feature looks up in two locations:
+ ;; /etc/zfs/compatibility.d/
+ ;; /usr/share/zfs/compatibility.d/
+ ;; The first is intended for system-specific compatibility
+ ;; sets, while the second is what is installed with the
+ ;; OpenZFS package, so use the absolute path for the first
+ ;; (which requires patching in the file) and the store path
+ ;; for the second (which it gets by default).
+ (substitute* "include/sys/fs/zfs.h"
+ (("#define\tZPOOL_SYSCONF_COMPAT_D.*$")
+ ; Use absolute path.
+ "#define\tZPOOL_SYSCONF_COMPAT_D\t\"/etc/zfs/compatibility.d\"\n"))
+ ;; Also update the manual, which uses absolute paths, so that
+ ;; /usr/share/zfs/compatibility.d/ is referred via the store.
+ (substitute* '("man/man7/zpoolprops.7"
+ "man/man7/zpool-features.7")
+ (("/usr/share/zfs/compatibility.d")
+ (string-append out "/share/zfs/compatibility.d")))
(substitute* "etc/Makefile.in"
;; This just contains an example configuration file for
;; configuring ZFS on traditional init systems, skip it
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index e6c2a42e71..c5e9039735 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -501,7 +501,7 @@ do so.")
(define-public electrum
(package
(name "electrum")
- (version "4.0.9")
+ (version "4.1.5")
(source
(origin
(method url-fetch)
@@ -509,7 +509,7 @@ do so.")
version "/Electrum-"
version ".tar.gz"))
(sha256
- (base32 "1fvjiagi78f32nxgr2rx8jas8hxfvpp1c8fpfcalvykmlhdc2gva"))
+ (base32 "188r4zji985z8pm9b942xhmvv174yndk6jxagxl7ljk03wl2wiwi"))
(modules '((guix build utils)))
(snippet
'(begin
@@ -523,7 +523,7 @@ do so.")
("python-protobuf" ,python-protobuf)
("python-aiohttp" ,python-aiohttp)
("python-aiohttp-socks" ,python-aiohttp-socks)
- ("python-aiorpcx" ,python-aiorpcx)
+ ("python-aiorpcx" ,python-aiorpcx-0.18)
("python-certifi" ,python-certifi)
("python-bitstring" ,python-bitstring)
("python-attrs" ,python-attrs)
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index e7be20d580..d8fad98e0c 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -21,6 +21,7 @@
;;; Copyright © 2020 Timotej Lazar <timotej.lazar@araneo.si>
;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro>
+;;; Copyright © 2021 Dmitry Polyakov <polyakov@liltechdude.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1108,7 +1109,7 @@ to create fully featured games and multimedia programs in the python language.")
(define-public python-pygame-sdl2
(let ((real-version "2.1.0")
- (renpy-version "7.4.6"))
+ (renpy-version "7.4.8"))
(package
(inherit python-pygame)
(name "python-pygame-sdl2")
@@ -1118,7 +1119,7 @@ to create fully featured games and multimedia programs in the python language.")
(method url-fetch)
(uri (string-append "https://www.renpy.org/dl/" renpy-version
"/pygame_sdl2-" version ".tar.gz"))
- (sha256 (base32 "1cay8mb5ww72mkhjp8y467i5alnjinwai2z0xypp78kjapbma9nb"))
+ (sha256 (base32 "1yyqcg7khac17jif86vi2d4j9l8x2vfg4h5pasrwwsy0g8386zsm"))
(modules '((guix build utils)))
(snippet
'(begin
@@ -1164,13 +1165,13 @@ developed mainly for Ren'py.")
(define-public python2-renpy
(package
(name "python2-renpy")
- (version "7.4.6")
+ (version "7.4.8")
(source
(origin
(method url-fetch)
(uri (string-append "https://www.renpy.org/dl/" version
"/renpy-" version "-source.tar.bz2"))
- (sha256 (base32 "1nnidghwi725n6kizd18fk3fdyh1fx4d48jngg8cnwgnz7i66bd6"))
+ (sha256 (base32 "1ml3gs87xxk1iflrg5ivffr4q8fi7d65l1cx462bvvpm1rs2sa8d"))
(modules '((guix build utils)))
(patches
(search-patches
@@ -2111,6 +2112,56 @@ upon which people base their games, ports to new platforms, and other
projects.")
(license license:gpl2))))
+(define-public instead
+ (package
+ (name "instead")
+ (version "3.3.5")
+ (build-system cmake-build-system)
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/instead-hub/instead")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "02j8cw623j51qmr4991i5hsbrzmnp0qfzds8m6nwwr15sjv3hv1g"))
+ (patches
+ (search-patches
+ "instead-use-games-path.patch"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (delete-file-recursively "src/zlib")))))
+ (arguments
+ '(#:configure-flags
+ (list (string-append
+ "-DLUA_INCLUDE_DIR="
+ (assoc-ref %build-inputs "luajit") "/include/luajit-2.1/")
+ "-DWITH_LUAJIT=1"
+ "-DWITH_GTK3=1")
+ #:tests? #f))
+ (inputs
+ `(("gtk+",gtk+)
+ ("lua" ,lua)
+ ("luajit" ,luajit)
+ ("pkg-config" ,pkg-config)
+ ("sdl2-images" ,sdl2-image)
+ ("sdl2-ttf" ,sdl2-ttf)
+ ("sdl2-mixer" ,sdl2-mixer)
+ ("zlib" ,zlib)))
+ (home-page "https://instead3.syscall.ru/")
+ (synopsis "Text adventure interpreter")
+ (description "The STEAD (Simple TExt ADventures) interpreter provides
+functionality to play games that mix elements of visual novels, interactive
+fiction and classic point-and-click adventures.")
+ (native-search-paths
+ (list (search-path-specification
+ (variable "INSTEAD_GAMES_PATH")
+ (separator #f) ;single entry
+ (files '("share/instead/games")))))
+ (license license:expat)))
+
(define-public openvr
(package
(name "openvr")
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 349969654d..27f542c16c 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -63,6 +63,7 @@
;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
;;; Copyright © 2021 Solene Rapenne <solene@perso.pw>
;;; Copyright © 2021 Noisytoot <noisytoot@disroot.org>
+;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -552,6 +553,47 @@ Playing bastet can be a painful experience, especially if you usually make
canyons and wait for the long I-shaped block to clear four rows at a time.")
(license license:gpl3+)))
+(define-public tetrinet
+ (package
+ (name "tetrinet")
+ (version "0.11")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://tetrinet.or.cz/download/tetrinet-" version
+ ".tar.bz2"))
+ (sha256
+ (base32
+ "0b4pddqz6is1771qmvcj8qqlr4in2djdbkk13agvp9yhfah2v8x7"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("ncurses" ,ncurses)))
+ (arguments
+ `(#:tests? #f ;no tests
+ #:make-flags '("CC=gcc")
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure) ;no configure script
+ (add-after 'unpack 'fix-install-dir
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (mkdir-p (string-append out "/bin"))
+ (substitute* "Makefile"
+ (("/usr/games") (string-append out "/bin"))))))
+ (add-after 'install 'install-documentation
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (doc (string-append out "/share/doc/" ,name "-" ,version)))
+ (for-each (lambda (file)
+ (install-file file doc))
+ (list "README" "tetrinet.txt"))))))))
+ (home-page "http://tetrinet.or.cz")
+ (synopsis "Terminal-based multiplayer Tetris clone")
+ (description "Tetrinet is a multiplayer Tetris-like game with powerups and
+attacks you can use on opponents.")
+ (license license:public-domain)))
+
(define-public vitetris
(package
(name "vitetris")
@@ -6530,14 +6572,14 @@ fish. The whole game is accompanied by quiet, comforting music.")
(define-public crawl
(package
(name "crawl")
- (version "0.26.1")
+ (version "0.27.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/crawl/crawl/releases/download/"
version "/stone_soup-" version "-nodeps.tar.xz"))
(sha256
- (base32 "1d8p2np2q5951wqphq2f4dyvv976m2lh82b0qp7w9pp1h8zzi1ff"))
+ (base32 "0hzkzpqmydxm1zjkdm7k4w3hldsqin3pwkj7jmfj4jijkr0zg9nq"))
(patches (search-patches "crawl-upgrade-saves.patch"))))
(build-system gnu-build-system)
(inputs
@@ -6917,7 +6959,7 @@ Crowther & Woods, its original authors, in 1995. It has been known as
(define-public tome4
(package
(name "tome4")
- (version "1.7.3")
+ (version "1.7.4")
(synopsis "Single-player, RPG roguelike game set in the world of Eyal")
(source
(origin
@@ -6925,7 +6967,7 @@ Crowther & Woods, its original authors, in 1995. It has been known as
(uri (string-append "https://te4.org/dl/t-engine/t-engine4-src-"
version ".tar.bz2"))
(sha256
- (base32 "1rik17r01glq3944sdb06xjf0xppgqkjk564wrh22slm4mi3fifz"))
+ (base32 "197jmd99l3w3sig32pvdlq9fcgdjjx7g9csy08kz174cyhrlyly3"))
(modules '((guix build utils)))
(snippet
'(begin
@@ -6934,8 +6976,7 @@ Crowther & Woods, its original authors, in 1995. It has been known as
(string-append
line " || defined(__GNUC__)")))
(substitute* '("src/tgl.h")
- (("#include <GL/glext.h>") ""))
- #t))))
+ (("#include <GL/glext.h>") ""))))))
(build-system gnu-build-system)
(native-inputs
`(("unzip" ,unzip)))
@@ -6958,8 +6999,7 @@ Crowther & Woods, its original authors, in 1995. It has been known as
(delete 'bootstrap)
(replace 'configure
(lambda _
- (invoke "premake4" "gmake")
- #t))
+ (invoke "premake4" "gmake")))
(add-after 'set-paths 'set-sdl-paths
(lambda* (#:key inputs #:allow-other-keys)
(setenv "CPATH"
@@ -7024,8 +7064,7 @@ Crowther & Woods, its original authors, in 1995. It has been known as
#:comment ,synopsis
#:exec ,name
#:icon icon
- #:categories '("Game" "RolePlaying")))
- #t)))))
+ #:categories '("Game" "RolePlaying"))))))))
(home-page "https://te4.org")
(description "Tales of Maj’Eyal (ToME) RPG, featuring tactical turn-based
combat and advanced character building. Play as one of many unique races and
@@ -7152,15 +7191,26 @@ some graphical niceities, and numerous bug-fixes and other improvements.")
`(#:tests? #f
#:make-flags
(list "CC=gcc"
- ;; link openAL instead of using dlopen at runtime
- "DLOPEN_OPENAL=\"no\""
- ;; an optional directory where it will look for quake2 data files
- ;; in addition to the current working directory
+ ;; An optional directory where it will look for quake2 data files
+ ;; in addition to the current working directory.
"WITH_SYSTEMWIDE=yes"
"WITH_SYSTEMDIR=\"/opt/quake2\"")
#:phases
(modify-phases %standard-phases
(delete 'configure)
+ (add-before 'build 'patch-libraries
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; The game writes paths to openal.so and curl.so to ~/.yq2/...
+ ;; Workaround: hard-code the compiled paths where it loads them;
+ ;; this prevents loading old or garbage collected libraries.
+ (substitute* "src/client/sound/qal.c"
+ (("al_driver->string")
+ (string-append "\"" (assoc-ref inputs "openal")
+ "/lib/libopenal.so\"")))
+ (substitute* "src/client/curl/qcurl.c"
+ (("cl_libcurl->string")
+ (string-append "\"" (assoc-ref inputs "curl")
+ "/lib/libcurl.so\"")))))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
@@ -8332,38 +8382,33 @@ your score gets higher, you level up and the blocks fall faster.")
(define-public endless-sky
(package
(name "endless-sky")
- (version "0.9.12")
+ (version "0.9.14")
(source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/endless-sky/endless-sky")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "18nkl4s3r5sy3sd9lhbdg9160c7fggklklprx0d5azifc8g6k0wj"))))
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/endless-sky/endless-sky")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "12iganf8dxiyrjznnabsarxjsr0h717j3k4mz15p0k67wxyahhmf"))))
(build-system scons-build-system)
(arguments
`(#:scons ,scons-python2
#:scons-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
- #:tests? #f ; no tests
#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'patch-resource-locations
+ (add-after 'unpack 'fix-paths
(lambda* (#:key outputs #:allow-other-keys)
+ ;; Look for resources in the store directory.
(substitute* "source/Files.cpp"
- (("/usr/local/")
- (string-append (assoc-ref outputs "out") "/")))
- #t))
- (add-after 'unpack 'patch-scons
- (lambda _
+ (("/usr/local") (assoc-ref outputs "out")))
+ ;; Install game binary into %out/bin.
(substitute* "SConstruct"
- ;; Keep environmental variables
- (("Environment\\(\\)")
- "Environment(ENV = os.environ)")
- ;; Install into %out/bin
- (("games\"") "bin\""))
- #t)))))
+ (("games\"") "bin\""))))
+ (add-before 'build 'use-gcc-ar
+ ;; Use gcc-ar to support LTO.
+ (lambda _ (setenv "AR" "gcc-ar"))))))
(inputs
`(("glew" ,glew)
("libjpeg" ,libjpeg-turbo)
@@ -8995,7 +9040,7 @@ fight each other on an arena-like map.")
(define-public flare-engine
(package
(name "flare-engine")
- (version "1.11")
+ (version "1.12")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -9004,7 +9049,7 @@ fight each other on an arena-like map.")
(file-name (git-file-name name version))
(sha256
(base32
- "1mqr1s72p5bdh4kq2a8hg72dk8lwnddicjnd2cdp1sbfa9lmjym8"))))
+ "0h4xxj6r194pw68m3ngrnzkh6xgiblyrsc54z8abwba8m0mqbvmk"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ;no test
@@ -9023,7 +9068,7 @@ action RPGs.")
(define-public flare-game
(package
(name "flare-game")
- (version "1.11")
+ (version "1.12")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -9032,7 +9077,7 @@ action RPGs.")
(file-name (git-file-name name version))
(sha256
(base32
- "0bd5g7sd89a9176ilr408hdqzdfv4j7wj0idd685c1n6s01c3h6p"))))
+ "0h9i128kq6disppbrplkf13zdmsg4cq23nim53mgwpawc4mqz7ga"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ;no test
@@ -11996,7 +12041,7 @@ etc. You can also play games on FICS or against an engine.")
,(match (%current-system)
("x86_64-linux" "x86-64")
("i686-linux" "x86-32")
- ("aarch64-linux" "general-64")
+ ("aarch64-linux" "armv8")
("armhf-linux" "armv7")
("mips64el-linux" "general-64")
(_ "general-32"))))
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 79994cc191..4a5f8f0886 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -600,14 +600,14 @@ It also includes runtime support libraries for these languages.")))
(define-public gcc-11
(package
(inherit gcc-8)
- (version "11.1.0")
+ (version "11.2.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gcc/gcc-"
version "/gcc-" version ".tar.xz"))
(sha256
(base32
- "1pwxrjhsymv90xzh0x42cxfnmhjinf2lnrrf3hj5jq1rm2w6yjjc"))
+ "12zs6vd2rapp42x154m479hg3h3lsafn3xhg06hp5hsldd9xr3nh"))
(patches (search-patches "gcc-9-strmov-store-file-names.patch"
"gcc-5.0-libvtv-runpath.patch"))
(modules '((guix build utils)))
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 171a353a9d..3f49a33685 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -11950,7 +11950,7 @@ integrated profiler via Sysprof, debugging support, and more.")
(define-public komikku
(package
(name "komikku")
- (version "0.29.2")
+ (version "0.30.0")
(source
(origin
(method git-fetch)
@@ -11960,7 +11960,7 @@ integrated profiler via Sysprof, debugging support, and more.")
(file-name (git-file-name name version))
(sha256
(base32
- "0g1whk0y3k1cy6ix20gz226ww1vzpb9hinn5d24z6j38mdgqqa5l"))))
+ "1l6iqxa497fisn64mn2qgia4y6zryfa5pbnd8609flfi9qmgrzn7"))))
(build-system meson-build-system)
(arguments
`(#:glib-or-gtk? #t
@@ -11998,6 +11998,7 @@ integrated profiler via Sysprof, debugging support, and more.")
("python-keyring" ,python-keyring)
("python-lxml" ,python-lxml)
("python-magic" ,python-magic)
+ ("python-natsort" ,python-natsort)
("python-pillow" ,python-pillow)
("python-pure-protobuf" ,python-pure-protobuf)
("python-pycairo" ,python-pycairo)
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 0872ca1295..a4d193ce11 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -691,8 +691,8 @@ from forcing GEXP-PROMISE."
#:system system
#:guile-for-build guile)))
-(define %icecat-version "78.12.0-guix0-preview1")
-(define %icecat-build-id "20210713000000") ;must be of the form YYYYMMDDhhmmss
+(define %icecat-version "78.13.0-guix0-preview1")
+(define %icecat-build-id "20210810000000") ;must be of the form YYYYMMDDhhmmss
;; 'icecat-source' is a "computed" origin that generates an IceCat tarball
;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat'
@@ -714,7 +714,7 @@ from forcing GEXP-PROMISE."
"firefox-" upstream-firefox-version ".source.tar.xz"))
(sha256
(base32
- "043lplq5i4ax6nh4am3b2bm8dbn4rzzcji1zp0yy1pad4nwahmcb"))))
+ "0v2g5clp9qlsbqfjb6yz614nq8x8c4k1p6m4axyv6g27qbiaky8r"))))
(upstream-icecat-base-version "78.7.0") ; maybe older than base-version
;;(gnuzilla-commit (string-append "v" upstream-icecat-base-version))
@@ -1304,11 +1304,11 @@ standards of the IceCat project.")
(cpe-version . ,(first (string-split version #\-)))))))
;; Update this together with icecat!
-(define %icedove-build-id "20210713000000") ;must be of the form YYYYMMDDhhmmss
+(define %icedove-build-id "20210810000000") ;must be of the form YYYYMMDDhhmmss
(define-public icedove
(package
(name "icedove")
- (version "78.12.0")
+ (version "78.13.0")
(source icecat-source)
(properties
`((cpe-name . "thunderbird_esr")))
@@ -1592,7 +1592,7 @@ standards of the IceCat project.")
;; in the Thunderbird release tarball. We don't use the release
;; tarball because it duplicates the Icecat sources and only adds the
;; "comm" directory, which is provided by this repository.
- ,(let ((changeset "6796ff47626a009d169a1e9fd1f307a6c14b7ed5"))
+ ,(let ((changeset "adcfedf831da719455116546865f9a5faea848a6"))
(origin
(method hg-fetch)
(uri (hg-reference
@@ -1601,7 +1601,7 @@ standards of the IceCat project.")
(file-name (string-append "thunderbird-" version "-checkout"))
(sha256
(base32
- "1nnz90h5w9skpdwm8ilndcwfx9d7k9cn6gzh32y4jil95da13813")))))
+ "1dahf3y8bm3kh7amf341wnmh82a2r0ksqihc6dwiakh6x86a94cm")))))
("autoconf" ,autoconf-2.13)
("cargo" ,rust "cargo")
("clang" ,clang)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index ec58c4d984..c4122f961e 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -75,6 +75,540 @@
#:use-module (ice-9 match)
#:use-module (srfi srfi-1))
+;; According to https://golang.org/doc/install/gccgo, gccgo-4.8.2 includes a
+;; complete go-1.1.2 implementation, gccgo-4.9 includes a complete go-1.2
+;; implementation, and gccgo-5 a complete implementation of go-1.4. Ultimately
+;; we hope to build go-1.5+ with a bootstrap process using gccgo-5. As of
+;; go-1.5, go cannot be bootstrapped without go-1.4, so we need to use go-1.4 or
+;; gccgo-5. Mips is not officially supported, but it should work if it is
+;; bootstrapped.
+
+(define-public go-1.4
+ (package
+ (name "go")
+ ;; The C-language bootstrap of Go:
+ ;; https://golang.org/doc/install/source#go14
+ (version "1.4-bootstrap-20171003")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://storage.googleapis.com/golang/"
+ name version ".tar.gz"))
+ (sha256
+ (base32
+ "0liybk5z00hizsb5ypkbhqcawnwwa6mkwgvjjg4y3jm3ndg5pzzl"))))
+ (build-system gnu-build-system)
+ (outputs '("out"
+ "doc"
+ "tests"))
+ (arguments
+ `(#:modules ((ice-9 match)
+ (guix build gnu-build-system)
+ (guix build utils)
+ (srfi srfi-1))
+ #:tests? #f ; Tests are run by the all.bash script.
+ ,@(if (string-prefix? "aarch64-linux" (or (%current-system)
+ (%current-target-system)))
+ '(#:system "armhf-linux")
+ '())
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (add-after 'patch-generated-file-shebangs 'chdir
+ (lambda _
+ (chdir "src")
+ #t))
+ (add-before 'build 'prebuild
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((gcclib (string-append (assoc-ref inputs "gcc:lib") "/lib"))
+ (ld (string-append (assoc-ref inputs "libc") "/lib"))
+ (loader (car (find-files ld "^ld-linux.+")))
+ (net-base (assoc-ref inputs "net-base"))
+ (tzdata-path
+ (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo"))
+ (output (assoc-ref outputs "out")))
+
+ ;; Removing net/ tests, which fail when attempting to access
+ ;; network resources not present in the build container.
+ (for-each delete-file
+ '("net/multicast_test.go" "net/parse_test.go"
+ "net/port_test.go"))
+
+ ;; Add libgcc to the RUNPATH.
+ (substitute* "cmd/go/build.go"
+ (("cgoldflags := \\[\\]string\\{\\}")
+ (string-append "cgoldflags := []string{"
+ "\"-rpath=" gcclib "\"}"))
+ (("ldflags := buildLdflags")
+ (string-append
+ "ldflags := buildLdflags\n"
+ "ldflags = append(ldflags, \"-r\")\n"
+ "ldflags = append(ldflags, \"" gcclib "\")\n")))
+
+ (substitute* "os/os_test.go"
+ (("/usr/bin") (getcwd))
+ (("/bin/pwd") (which "pwd")))
+
+ ;; Disable failing tests: these tests attempt to access
+ ;; commands or network resources which are neither available or
+ ;; necessary for the build to succeed.
+ (for-each
+ (match-lambda
+ ((file regex)
+ (substitute* file
+ ((regex all before test_name)
+ (string-append before "Disabled" test_name)))))
+ '(("net/net_test.go" "(.+)(TestShutdownUnix.+)")
+ ("net/dial_test.go" "(.+)(TestDialTimeout.+)")
+ ("os/os_test.go" "(.+)(TestHostname.+)")
+ ("time/format_test.go" "(.+)(TestParseInSydney.+)")
+
+ ;; XXX: This test fails with tzdata 2020b and newer. Later
+ ;; Go releases work fine, so just disable this for the
+ ;; bootstrap Go.
+ ("time/example_test.go" "(.+)(ExampleParseInLocation.+)")
+
+ ("os/exec/exec_test.go" "(.+)(TestEcho.+)")
+ ("os/exec/exec_test.go" "(.+)(TestCommandRelativeName.+)")
+ ("os/exec/exec_test.go" "(.+)(TestCatStdin.+)")
+ ("os/exec/exec_test.go" "(.+)(TestCatGoodAndBadFile.+)")
+ ("os/exec/exec_test.go" "(.+)(TestExitStatus.+)")
+ ("os/exec/exec_test.go" "(.+)(TestPipes.+)")
+ ("os/exec/exec_test.go" "(.+)(TestStdinClose.+)")
+ ("syscall/syscall_unix_test.go" "(.+)(TestPassFD\\(.+)")
+ ("os/exec/exec_test.go" "(.+)(TestExtraFiles.+)")))
+
+ (substitute* "net/lookup_unix.go"
+ (("/etc/protocols") (string-append net-base "/etc/protocols")))
+ (substitute* "time/zoneinfo_unix.go"
+ (("/usr/share/zoneinfo/") tzdata-path))
+ (substitute* (find-files "cmd" "asm.c")
+ (("/lib/ld-linux.*\\.so\\.[0-9]") loader))
+ #t)))
+
+ (replace 'build
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; FIXME: Some of the .a files are not bit-reproducible.
+ (let* ((output (assoc-ref outputs "out")))
+ (setenv "CC" (which "gcc"))
+ (setenv "GOOS" "linux")
+ (setenv "GOROOT" (dirname (getcwd)))
+ (setenv "GOROOT_FINAL" output)
+ (setenv "GO14TESTS" "1")
+ (invoke "sh" "all.bash"))))
+
+ (replace 'install
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (let* ((output (assoc-ref outputs "out"))
+ (doc_out (assoc-ref outputs "doc"))
+ (bash (string-append (assoc-ref inputs "bash") "bin/bash"))
+ (docs (string-append doc_out "/share/doc/" ,name "-" ,version))
+ (tests (string-append
+ (assoc-ref outputs "tests") "/share/" ,name "-" ,version)))
+ (mkdir-p tests)
+ (copy-recursively "../test" (string-append tests "/test"))
+ (delete-file-recursively "../test")
+ (mkdir-p docs)
+ (copy-recursively "../api" (string-append docs "/api"))
+ (delete-file-recursively "../api")
+ (copy-recursively "../doc" (string-append docs "/doc"))
+ (delete-file-recursively "../doc")
+
+ (for-each (lambda (file)
+ (let ((file (string-append "../" file)))
+ (install-file file docs)
+ (delete-file file)))
+ '("README" "CONTRIBUTORS" "AUTHORS" "PATENTS"
+ "LICENSE" "VERSION" "robots.txt"))
+ (copy-recursively "../" output)
+ #t))))))
+ (inputs
+ `(("tzdata" ,tzdata)
+ ("pcre" ,pcre)
+ ("gcc:lib" ,(canonical-package gcc) "lib")))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("which" ,which)
+ ("net-base" ,net-base)
+ ("perl" ,perl)))
+
+ (home-page "https://golang.org/")
+ (synopsis "Compiler and libraries for Go, a statically-typed language")
+ (description "Go, also commonly referred to as golang, is an imperative
+programming language designed primarily for systems programming. Go is a
+compiled, statically typed language in the tradition of C and C++, but adds
+garbage collection, various safety features, and concurrent programming features
+in the style of communicating sequential processes (@dfn{CSP}).")
+ (supported-systems '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux"))
+ (license license:bsd-3)))
+
+(define-public go-1.14
+ (package
+ (inherit go-1.4)
+ (name "go")
+ (version "1.14.15")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/golang/go")
+ (commit (string-append "go" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1crh90qkvhlx23hwsi4wxy3l3h8973lr18135y6h1nnzzwr3n3ps"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments go-1.4)
+ ((#:system system)
+ (if (string-prefix? "aarch64-linux" (or (%current-system)
+ (%current-target-system)))
+ "aarch64-linux"
+ system))
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (replace 'prebuild
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((gcclib (string-append (assoc-ref inputs "gcc:lib") "/lib"))
+ (ld (string-append (assoc-ref inputs "libc") "/lib"))
+ (loader (car (find-files ld "^ld-linux.+")))
+ (net-base (assoc-ref inputs "net-base"))
+ (tzdata-path
+ (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo"))
+ (output (assoc-ref outputs "out")))
+
+ ;; Having the patch in the 'patches' field of <origin> breaks
+ ;; the 'TestServeContent' test due to the fact that
+ ;; timestamps are reset. Thus, apply it from here.
+ (invoke "patch" "-p2" "--force" "-i"
+ (assoc-ref inputs "go-skip-gc-test.patch"))
+
+ ;; A side effect of these test scripts is testing
+ ;; cgo. Attempts at using cgo flags and directives with these
+ ;; scripts as specified here (https://golang.org/cmd/cgo/)
+ ;; have not worked. The tests continue to state that they can
+ ;; not find object files/headers despite being present.
+ (for-each
+ delete-file
+ '("cmd/go/testdata/script/mod_case_cgo.txt"
+ "cmd/go/testdata/script/list_find.txt"
+ "cmd/go/testdata/script/list_compiled_imports.txt"
+ "cmd/go/testdata/script/cgo_syso_issue29253.txt"
+ "cmd/go/testdata/script/cover_cgo.txt"
+ "cmd/go/testdata/script/cover_cgo_xtest.txt"
+ "cmd/go/testdata/script/cover_cgo_extra_test.txt"
+ "cmd/go/testdata/script/cover_cgo_extra_file.txt"
+ "cmd/go/testdata/script/cgo_path_space.txt"
+ "cmd/go/testdata/script/ldflag.txt"
+ "cmd/go/testdata/script/cgo_path.txt"))
+
+ (for-each make-file-writable (find-files "."))
+
+ (substitute* "os/os_test.go"
+ (("/usr/bin") (getcwd))
+ (("/bin/pwd") (which "pwd"))
+ (("/bin/sh") (which "sh")))
+
+ ;; Add libgcc to runpath
+ (substitute* "cmd/link/internal/ld/lib.go"
+ (("!rpath.set") "true"))
+ (substitute* "cmd/go/internal/work/gccgo.go"
+ (("cgoldflags := \\[\\]string\\{\\}")
+ (string-append "cgoldflags := []string{"
+ "\"-rpath=" gcclib "\""
+ "}"))
+ (("\"-lgcc_s\", ")
+ (string-append
+ "\"-Wl,-rpath=" gcclib "\", \"-lgcc_s\", ")))
+ (substitute* "cmd/go/internal/work/gc.go"
+ (("ldflags = setextld\\(ldflags, compiler\\)")
+ (string-append
+ "ldflags = setextld(ldflags, compiler)\n"
+ "ldflags = append(ldflags, \"-r\")\n"
+ "ldflags = append(ldflags, \"" gcclib "\")\n")))
+
+ ;; Disable failing tests: these tests attempt to access
+ ;; commands or network resources which are neither available
+ ;; nor necessary for the build to succeed.
+ (for-each
+ (match-lambda
+ ((file regex)
+ (substitute* file
+ ((regex all before test_name)
+ (string-append before "Disabled" test_name)))))
+ '(("net/net_test.go" "(.+)(TestShutdownUnix.+)")
+ ("net/dial_test.go" "(.+)(TestDialTimeout.+)")
+ ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPort.+)")
+ ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPortWithCancel.+)")
+ ;; 127.0.0.1 doesn't exist
+ ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPTR.+)")
+ ;; 127.0.0.1 doesn't exist
+ ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPTRWithCancel.+)")
+ ;; /etc/services doesn't exist
+ ("net/parse_test.go" "(.+)(TestReadLine.+)")
+ ("os/os_test.go" "(.+)(TestHostname.+)")
+ ;; The user's directory doesn't exist
+ ("os/os_test.go" "(.+)(TestUserHomeDir.+)")
+ ("time/format_test.go" "(.+)(TestParseInSydney.+)")
+ ("time/format_test.go" "(.+)(TestParseInLocation.+)")
+ ("os/exec/exec_test.go" "(.+)(TestEcho.+)")
+ ("os/exec/exec_test.go" "(.+)(TestCommandRelativeName.+)")
+ ("os/exec/exec_test.go" "(.+)(TestCatStdin.+)")
+ ("os/exec/exec_test.go" "(.+)(TestCatGoodAndBadFile.+)")
+ ("os/exec/exec_test.go" "(.+)(TestExitStatus.+)")
+ ("os/exec/exec_test.go" "(.+)(TestPipes.+)")
+ ("os/exec/exec_test.go" "(.+)(TestStdinClose.+)")
+ ("os/exec/exec_test.go" "(.+)(TestIgnorePipeErrorOnSuccess.+)")
+ ("syscall/syscall_unix_test.go" "(.+)(TestPassFD\\(.+)")
+ ("os/exec/exec_test.go" "(.+)(TestExtraFiles/areturn.+)")
+ ("cmd/go/go_test.go" "(.+)(TestCoverageWithCgo.+)")
+ ("cmd/go/go_test.go" "(.+)(TestTwoPkgConfigs.+)")
+ ("os/exec/exec_test.go" "(.+)(TestOutputStderrCapture.+)")
+ ("os/exec/exec_test.go" "(.+)(TestExtraFiles.+)")
+ ("os/exec/exec_test.go" "(.+)(TestExtraFilesRace.+)")
+ ("net/lookup_test.go" "(.+)(TestLookupPort.+)")
+ ("syscall/exec_linux_test.go"
+ "(.+)(TestCloneNEWUSERAndRemapNoRootDisableSetgroups.+)")))
+
+ ;; These tests fail on aarch64-linux
+ (substitute* "cmd/dist/test.go"
+ (("t.registerHostTest\\(\"testsanitizers/msan.*") ""))
+
+ ;; fix shebang for testar script
+ ;; note the target script is generated at build time.
+ (substitute* "../misc/cgo/testcarchive/carchive_test.go"
+ (("#!/usr/bin/env") (string-append "#!" (which "env"))))
+
+ (substitute* "net/lookup_unix.go"
+ (("/etc/protocols") (string-append net-base "/etc/protocols")))
+ (substitute* "net/port_unix.go"
+ (("/etc/services") (string-append net-base "/etc/services")))
+ (substitute* "time/zoneinfo_unix.go"
+ (("/usr/share/zoneinfo/") tzdata-path))
+ (substitute* (find-files "cmd" "\\.go")
+ (("/lib(64)?/ld-linux.*\\.so\\.[0-9]") loader))
+ #t)))
+ (add-before 'build 'set-bootstrap-variables
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ ;; Tell the build system where to find the bootstrap Go.
+ (let ((go (assoc-ref inputs "go")))
+ (setenv "GOROOT_BOOTSTRAP" go)
+ (setenv "GOGC" "400")
+ #t)))
+ (replace 'build
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; FIXME: Some of the .a files are not bit-reproducible.
+ (let* ((output (assoc-ref outputs "out")))
+ (setenv "CC" (which "gcc"))
+ (setenv "GOOS" "linux")
+ (setenv "GOROOT" (dirname (getcwd)))
+ (setenv "GOROOT_FINAL" output)
+ (setenv "CGO_ENABLED" "1")
+ (invoke "sh" "all.bash"))))
+ (replace 'install
+ ;; TODO: Most of this could be factorized with Go 1.4.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((output (assoc-ref outputs "out"))
+ (doc_out (assoc-ref outputs "doc"))
+ (docs (string-append doc_out "/share/doc/" ,name "-" ,version))
+ (src (string-append
+ (assoc-ref outputs "tests") "/share/" ,name "-" ,version)))
+ ;; Prevent installation of the build cache, which contains
+ ;; store references to most of the tools used to build Go and
+ ;; would unnecessarily increase the size of Go's closure if it
+ ;; was installed.
+ (delete-file-recursively "../pkg/obj")
+
+ (mkdir-p src)
+ (copy-recursively "../test" (string-append src "/test"))
+ (delete-file-recursively "../test")
+ (mkdir-p docs)
+ (copy-recursively "../api" (string-append docs "/api"))
+ (delete-file-recursively "../api")
+ (copy-recursively "../doc" (string-append docs "/doc"))
+ (delete-file-recursively "../doc")
+
+ (for-each
+ (lambda (file)
+ (let* ((filein (string-append "../" file))
+ (fileout (string-append docs "/" file)))
+ (copy-file filein fileout)
+ (delete-file filein)))
+ ;; Note the slightly different file names compared to 1.4.
+ '("README.md" "CONTRIBUTORS" "AUTHORS" "PATENTS"
+ "LICENSE" "VERSION" "CONTRIBUTING.md" "robots.txt"))
+
+ (copy-recursively "../" output)
+ #t)))))))
+ (native-inputs
+ `(("go" ,go-1.4)
+ ("go-skip-gc-test.patch" ,(search-patch "go-skip-gc-test.patch"))
+ ,@(match (%current-system)
+ ((or "armhf-linux" "aarch64-linux")
+ `(("gold" ,binutils-gold)))
+ (_ `()))
+ ,@(package-native-inputs go-1.4)))
+ (supported-systems %supported-systems)))
+
+(define-public go-1.16
+ (package
+ (inherit go-1.14)
+ (name "go")
+ (version "1.16.7")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/golang/go")
+ (commit (string-append "go" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1id6nsavf7gm78bmzsvym135pi2xa0v75ny51xrw93j70clz9w0h"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments go-1.14)
+ ((#:tests? _) #t)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-after 'unpack 'remove-unused-sourcecode-generators
+ (lambda _
+ ;; Prevent perl from inclusion in closure through unused files
+ (for-each delete-file (find-files "src" "\\.pl$"))))
+ (replace 'prebuild
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((gcclib (string-append (assoc-ref inputs "gcc:lib") "/lib"))
+ (net-base (assoc-ref inputs "net-base"))
+ (tzdata-path
+ (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo")))
+
+ ;; Having the patch in the 'patches' field of <origin> breaks
+ ;; the 'TestServeContent' test due to the fact that
+ ;; timestamps are reset. Thus, apply it from here.
+ (invoke "patch" "-p2" "--force" "-i"
+ (assoc-ref inputs "go-skip-gc-test.patch"))
+ (invoke "patch" "-p2" "--force" "-i"
+ (assoc-ref inputs "go-fix-script-tests.patch"))
+
+ (for-each make-file-writable (find-files "."))
+
+ (substitute* "os/os_test.go"
+ (("/usr/bin") (getcwd))
+ (("/bin/sh") (which "sh")))
+
+ (substitute* "cmd/go/testdata/script/cgo_path_space.txt"
+ (("/bin/sh") (which "sh")))
+
+ ;; Add libgcc to runpath
+ (substitute* "cmd/link/internal/ld/lib.go"
+ (("!rpath.set") "true"))
+ (substitute* "cmd/go/internal/work/gccgo.go"
+ (("cgoldflags := \\[\\]string\\{\\}")
+ (string-append "cgoldflags := []string{"
+ "\"-Wl,-rpath=" gcclib "\""
+ "}"))
+ (("\"-lgcc_s\", ")
+ (string-append
+ "\"-Wl,-rpath=" gcclib "\", \"-lgcc_s\", ")))
+ (substitute* "cmd/go/internal/work/gc.go"
+ (("ldflags = setextld\\(ldflags, compiler\\)")
+ (string-append
+ "ldflags = setextld(ldflags, compiler)\n"
+ "ldflags = append(ldflags, \"-r\")\n"
+ "ldflags = append(ldflags, \"" gcclib "\")\n")))
+
+ ;; Disable failing tests: these tests attempt to access
+ ;; commands or network resources which are neither available
+ ;; nor necessary for the build to succeed.
+ (for-each
+ (match-lambda
+ ((file regex)
+ (substitute* file
+ ((regex all before test_name)
+ (string-append before "Disabled" test_name)))))
+ '(("net/net_test.go" "(.+)(TestShutdownUnix.+)")
+ ("net/dial_test.go" "(.+)(TestDialTimeout.+)")
+ ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPort.+)")
+ ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPortWithCancel.+)")
+ ;; 127.0.0.1 doesn't exist
+ ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPTR.+)")
+ ;; 127.0.0.1 doesn't exist
+ ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPTRWithCancel.+)")
+ ;; /etc/services doesn't exist
+ ("net/parse_test.go" "(.+)(TestReadLine.+)")
+ ("os/os_test.go" "(.+)(TestHostname.+)")
+ ;; The user's directory doesn't exist
+ ("os/os_test.go" "(.+)(TestUserHomeDir.+)")
+ ("time/format_test.go" "(.+)(TestParseInSydney.+)")
+ ("time/format_test.go" "(.+)(TestParseInLocation.+)")
+ ("os/exec/exec_test.go" "(.+)(TestEcho.+)")
+ ("os/exec/exec_test.go" "(.+)(TestCommandRelativeName.+)")
+ ("os/exec/exec_test.go" "(.+)(TestCatStdin.+)")
+ ("os/exec/exec_test.go" "(.+)(TestCatGoodAndBadFile.+)")
+ ("os/exec/exec_test.go" "(.+)(TestExitStatus.+)")
+ ("os/exec/exec_test.go" "(.+)(TestPipes.+)")
+ ("os/exec/exec_test.go" "(.+)(TestStdinClose.+)")
+ ("os/exec/exec_test.go" "(.+)(TestIgnorePipeErrorOnSuccess.+)")
+ ("syscall/syscall_unix_test.go" "(.+)(TestPassFD\\(.+)")
+ ("os/exec/exec_test.go" "(.+)(TestExtraFiles/areturn.+)")
+ ("cmd/go/go_test.go" "(.+)(TestCoverageWithCgo.+)")
+ ("cmd/go/go_test.go" "(.+)(TestTwoPkgConfigs.+)")
+ ("os/exec/exec_test.go" "(.+)(TestOutputStderrCapture.+)")
+ ("os/exec/exec_test.go" "(.+)(TestExtraFiles.+)")
+ ("os/exec/exec_test.go" "(.+)(TestExtraFilesRace.+)")
+ ("net/lookup_test.go" "(.+)(TestLookupPort.+)")
+ ("syscall/exec_linux_test.go"
+ "(.+)(TestCloneNEWUSERAndRemapNoRootDisableSetgroups.+)")))
+
+ ;; These tests fail on aarch64-linux
+ (substitute* "cmd/dist/test.go"
+ (("t.registerHostTest\\(\"testsanitizers/msan.*") ""))
+
+ ;; fix shebang for testar script
+ ;; note the target script is generated at build time.
+ (substitute* "../misc/cgo/testcarchive/carchive_test.go"
+ (("#!/usr/bin/env") (string-append "#!" (which "env"))))
+
+ (substitute* "net/lookup_unix.go"
+ (("/etc/protocols") (string-append net-base "/etc/protocols")))
+ (substitute* "net/port_unix.go"
+ (("/etc/services") (string-append net-base "/etc/services")))
+ (substitute* "time/zoneinfo_unix.go"
+ (("/usr/share/zoneinfo/") tzdata-path)))))
+ (replace 'build
+ (lambda* (#:key inputs outputs (parallel-build? #t)
+ #:allow-other-keys)
+ ;; FIXME: Some of the .a files are not bit-reproducible.
+ ;; (Is this still true?)
+ (let* ((njobs (if parallel-build? (parallel-job-count) 1))
+ (output (assoc-ref outputs "out"))
+ (loader (string-append (assoc-ref inputs "libc")
+ ,(glibc-dynamic-linker))))
+ (setenv "CC" (which "gcc"))
+ (setenv "GO_LDSO" loader)
+ (setenv "GOOS" "linux")
+ (setenv "GOROOT" (dirname (getcwd)))
+ (setenv "GOROOT_FINAL" output)
+ (setenv "GOCACHE" "/tmp/go-cache")
+ (setenv "GOMAXPROCS" (number->string njobs))
+ (invoke "sh" "make.bash" "--no-banner"))))
+ (replace 'check
+ (lambda* (#:key target (tests? (not target)) (parallel-tests? #t)
+ #:allow-other-keys)
+ (let* ((njobs (if parallel-tests? (parallel-job-count) 1)))
+ (when tests?
+ (setenv "GOMAXPROCS" (number->string njobs))
+ (invoke "sh" "run.bash" "--no-rebuild")))))
+ (add-before 'install 'unpatch-perl-shebangs
+ (lambda _
+ ;; Rewrite references to perl input in test scripts
+ (substitute* "net/http/cgi/testdata/test.cgi"
+ (("^#!.*") "#!/usr/bin/env perl\n"))))))))
+ (native-inputs
+ `(("go-fix-script-tests.patch" ,(search-patch "go-fix-script-tests.patch"))
+ ,@(if (not (member (%current-system) (package-supported-systems go-1.4)))
+ (alist-replace "go" (list gccgo-10) (package-native-inputs go-1.14))
+ (package-native-inputs go-1.14))))))
+
+(define-public go go-1.14)
+
(define-public go-0xacab-org-leap-shapeshifter
(let ((commit "0aa6226582efb8e563540ec1d3c5cfcd19200474")
(revision "12"))
@@ -1016,542 +1550,6 @@ for speed on short messages.")
your Go binary to be later served from an http.FileSystem.")
(license license:asl2.0)))
-;; According to https://golang.org/doc/install/gccgo, gccgo-4.8.2 includes a
-;; complete go-1.1.2 implementation, gccgo-4.9 includes a complete go-1.2
-;; implementation, and gccgo-5 a complete implementation of go-1.4. Ultimately
-;; we hope to build go-1.5+ with a bootstrap process using gccgo-5. As of
-;; go-1.5, go cannot be bootstrapped without go-1.4, so we need to use go-1.4 or
-;; gccgo-5. Mips is not officially supported, but it should work if it is
-;; bootstrapped.
-
-(define-public go-1.4
- (package
- (name "go")
- ;; The C-language bootstrap of Go:
- ;; https://golang.org/doc/install/source#go14
- (version "1.4-bootstrap-20171003")
- (source (origin
- (method url-fetch)
- (uri (string-append "https://storage.googleapis.com/golang/"
- name version ".tar.gz"))
- (sha256
- (base32
- "0liybk5z00hizsb5ypkbhqcawnwwa6mkwgvjjg4y3jm3ndg5pzzl"))))
- (build-system gnu-build-system)
- (outputs '("out"
- "doc"
- "tests"))
- (arguments
- `(#:modules ((ice-9 match)
- (guix build gnu-build-system)
- (guix build utils)
- (srfi srfi-1))
- #:tests? #f ; Tests are run by the all.bash script.
- ,@(if (string-prefix? "aarch64-linux" (or (%current-system)
- (%current-target-system)))
- '(#:system "armhf-linux")
- '())
- #:phases
- (modify-phases %standard-phases
- (delete 'configure)
- (add-after 'patch-generated-file-shebangs 'chdir
- (lambda _
- (chdir "src")
- #t))
- (add-before 'build 'prebuild
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((gcclib (string-append (assoc-ref inputs "gcc:lib") "/lib"))
- (ld (dirname (search-input-file inputs "/lib/libc.so")))
- (loader (car (find-files ld "^ld-linux.+")))
- (net-base (assoc-ref inputs "net-base"))
- (tzdata-path
- (search-input-directory inputs "share/zoneinfo"))
- (output (assoc-ref outputs "out")))
-
- ;; Removing net/ tests, which fail when attempting to access
- ;; network resources not present in the build container.
- (for-each delete-file
- '("net/multicast_test.go" "net/parse_test.go"
- "net/port_test.go"))
-
- ;; Add libgcc to the RUNPATH.
- (substitute* "cmd/go/build.go"
- (("cgoldflags := \\[\\]string\\{\\}")
- (string-append "cgoldflags := []string{"
- "\"-rpath=" gcclib "\"}"))
- (("ldflags := buildLdflags")
- (string-append
- "ldflags := buildLdflags\n"
- "ldflags = append(ldflags, \"-r\")\n"
- "ldflags = append(ldflags, \"" gcclib "\")\n")))
-
- (substitute* "os/os_test.go"
- (("/usr/bin") (getcwd))
- (("/bin/pwd") (which "pwd")))
-
- ;; Disable failing tests: these tests attempt to access
- ;; commands or network resources which are neither available or
- ;; necessary for the build to succeed.
- (for-each
- (match-lambda
- ((file regex)
- (substitute* file
- ((regex all before test_name)
- (string-append before "Disabled" test_name)))))
- '(("net/net_test.go" "(.+)(TestShutdownUnix.+)")
- ("net/dial_test.go" "(.+)(TestDialTimeout.+)")
- ("os/os_test.go" "(.+)(TestHostname.+)")
- ("time/format_test.go" "(.+)(TestParseInSydney.+)")
-
- ;; XXX: This test fails with tzdata 2020b and newer. Later
- ;; Go releases work fine, so just disable this for the
- ;; bootstrap Go.
- ("time/example_test.go" "(.+)(ExampleParseInLocation.+)")
-
- ("os/exec/exec_test.go" "(.+)(TestEcho.+)")
- ("os/exec/exec_test.go" "(.+)(TestCommandRelativeName.+)")
- ("os/exec/exec_test.go" "(.+)(TestCatStdin.+)")
- ("os/exec/exec_test.go" "(.+)(TestCatGoodAndBadFile.+)")
- ("os/exec/exec_test.go" "(.+)(TestExitStatus.+)")
- ("os/exec/exec_test.go" "(.+)(TestPipes.+)")
- ("os/exec/exec_test.go" "(.+)(TestStdinClose.+)")
- ("syscall/syscall_unix_test.go" "(.+)(TestPassFD\\(.+)")
- ("os/exec/exec_test.go" "(.+)(TestExtraFiles.+)")))
-
- (substitute* "net/lookup_unix.go"
- (("/etc/protocols") (string-append net-base "/etc/protocols")))
- (substitute* "time/zoneinfo_unix.go"
- (("/usr/share/zoneinfo/") tzdata-path))
- (substitute* (find-files "cmd" "asm.c")
- (("/lib/ld-linux.*\\.so\\.[0-9]") loader))
- #t)))
-
- (replace 'build
- (lambda* (#:key inputs outputs #:allow-other-keys)
- ;; FIXME: Some of the .a files are not bit-reproducible.
- (let* ((output (assoc-ref outputs "out")))
- (setenv "CC" (which "gcc"))
- (setenv "GOOS" "linux")
- (setenv "GOROOT" (dirname (getcwd)))
- (setenv "GOROOT_FINAL" output)
- (setenv "GO14TESTS" "1")
- (invoke "sh" "all.bash"))))
-
- (replace 'install
- (lambda* (#:key outputs inputs #:allow-other-keys)
- (let* ((output (assoc-ref outputs "out"))
- (doc_out (assoc-ref outputs "doc"))
- (bash (search-input-file inputs "bin/bash"))
- (docs (string-append doc_out "/share/doc/" ,name "-" ,version))
- (tests (string-append
- (assoc-ref outputs "tests") "/share/" ,name "-" ,version)))
- (mkdir-p tests)
- (copy-recursively "../test" (string-append tests "/test"))
- (delete-file-recursively "../test")
- (mkdir-p docs)
- (copy-recursively "../api" (string-append docs "/api"))
- (delete-file-recursively "../api")
- (copy-recursively "../doc" (string-append docs "/doc"))
- (delete-file-recursively "../doc")
-
- (for-each (lambda (file)
- (let ((file (string-append "../" file)))
- (install-file file docs)
- (delete-file file)))
- '("README" "CONTRIBUTORS" "AUTHORS" "PATENTS"
- "LICENSE" "VERSION" "robots.txt"))
- (copy-recursively "../" output)
- #t))))))
- (inputs
- `(("tzdata" ,tzdata)
- ("pcre" ,pcre)
- ("gcc:lib" ,(canonical-package gcc) "lib")))
- (native-inputs
- `(("pkg-config" ,pkg-config)
- ("which" ,which)
- ("net-base" ,net-base)
- ("perl" ,perl)))
-
- (home-page "https://golang.org/")
- (synopsis "Compiler and libraries for Go, a statically-typed language")
- (description "Go, also commonly referred to as golang, is an imperative
-programming language designed primarily for systems programming. Go is a
-compiled, statically typed language in the tradition of C and C++, but adds
-garbage collection, various safety features, and concurrent programming features
-in the style of communicating sequential processes (@dfn{CSP}).")
- (supported-systems '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux"))
- (license license:bsd-3)))
-
-(define-public go-1.14
- (package
- (inherit go-1.4)
- (name "go")
- (version "1.14.15")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/golang/go")
- (commit (string-append "go" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1crh90qkvhlx23hwsi4wxy3l3h8973lr18135y6h1nnzzwr3n3ps"))))
- (arguments
- (substitute-keyword-arguments (package-arguments go-1.4)
- ((#:system system)
- (if (string-prefix? "aarch64-linux" (or (%current-system)
- (%current-target-system)))
- "aarch64-linux"
- system))
- ((#:phases phases)
- `(modify-phases ,phases
- (replace 'prebuild
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((gcclib (string-append (assoc-ref inputs "gcc:lib") "/lib"))
- (ld (dirname (search-input-file inputs "/lib/libc.so")))
- (loader (car (find-files ld "^ld-linux.+")))
- (net-base (assoc-ref inputs "net-base"))
- (tzdata-path
- (search-input-directory inputs "share/zoneinfo"))
- (output (assoc-ref outputs "out")))
-
- ;; Having the patch in the 'patches' field of <origin> breaks
- ;; the 'TestServeContent' test due to the fact that
- ;; timestamps are reset. Thus, apply it from here.
- (invoke "patch" "-p2" "--force" "-i"
- (assoc-ref inputs "go-skip-gc-test.patch"))
-
- ;; A side effect of these test scripts is testing
- ;; cgo. Attempts at using cgo flags and directives with these
- ;; scripts as specified here (https://golang.org/cmd/cgo/)
- ;; have not worked. The tests continue to state that they can
- ;; not find object files/headers despite being present.
- (for-each
- delete-file
- '("cmd/go/testdata/script/mod_case_cgo.txt"
- "cmd/go/testdata/script/list_find.txt"
- "cmd/go/testdata/script/list_compiled_imports.txt"
- "cmd/go/testdata/script/cgo_syso_issue29253.txt"
- "cmd/go/testdata/script/cover_cgo.txt"
- "cmd/go/testdata/script/cover_cgo_xtest.txt"
- "cmd/go/testdata/script/cover_cgo_extra_test.txt"
- "cmd/go/testdata/script/cover_cgo_extra_file.txt"
- "cmd/go/testdata/script/cgo_path_space.txt"
- "cmd/go/testdata/script/ldflag.txt"
- "cmd/go/testdata/script/cgo_path.txt"))
-
- (for-each make-file-writable (find-files "."))
-
- (substitute* "os/os_test.go"
- (("/usr/bin") (getcwd))
- (("/bin/pwd") (which "pwd"))
- (("/bin/sh") (which "sh")))
-
- ;; Backport fix for go-1.14 with GCC 9+
- ;; https://github.com/golang/go/issues/39157
- (substitute* "cmd/go/note_test.go"
- (("cannot find 'ld'") "cannot find [‘']ld[’']"))
-
- ;; Add libgcc to runpath
- (substitute* "cmd/link/internal/ld/lib.go"
- (("!rpath.set") "true"))
- (substitute* "cmd/go/internal/work/gccgo.go"
- (("cgoldflags := \\[\\]string\\{\\}")
- (string-append "cgoldflags := []string{"
- "\"-rpath=" gcclib "\""
- "}"))
- (("\"-lgcc_s\", ")
- (string-append
- "\"-Wl,-rpath=" gcclib "\", \"-lgcc_s\", ")))
- (substitute* "cmd/go/internal/work/gc.go"
- (("ldflags = setextld\\(ldflags, compiler\\)")
- (string-append
- "ldflags = setextld(ldflags, compiler)\n"
- "ldflags = append(ldflags, \"-r\")\n"
- "ldflags = append(ldflags, \"" gcclib "\")\n")))
-
- ;; Disable failing tests: these tests attempt to access
- ;; commands or network resources which are neither available
- ;; nor necessary for the build to succeed.
- (for-each
- (match-lambda
- ((file regex)
- (substitute* file
- ((regex all before test_name)
- (string-append before "Disabled" test_name)))))
- '(("net/net_test.go" "(.+)(TestShutdownUnix.+)")
- ("net/dial_test.go" "(.+)(TestDialTimeout.+)")
- ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPort.+)")
- ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPortWithCancel.+)")
- ;; 127.0.0.1 doesn't exist
- ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPTR.+)")
- ;; 127.0.0.1 doesn't exist
- ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPTRWithCancel.+)")
- ;; /etc/services doesn't exist
- ("net/parse_test.go" "(.+)(TestReadLine.+)")
- ("os/os_test.go" "(.+)(TestHostname.+)")
- ;; The user's directory doesn't exist
- ("os/os_test.go" "(.+)(TestUserHomeDir.+)")
- ("time/format_test.go" "(.+)(TestParseInSydney.+)")
- ("time/format_test.go" "(.+)(TestParseInLocation.+)")
- ("os/exec/exec_test.go" "(.+)(TestEcho.+)")
- ("os/exec/exec_test.go" "(.+)(TestCommandRelativeName.+)")
- ("os/exec/exec_test.go" "(.+)(TestCatStdin.+)")
- ("os/exec/exec_test.go" "(.+)(TestCatGoodAndBadFile.+)")
- ("os/exec/exec_test.go" "(.+)(TestExitStatus.+)")
- ("os/exec/exec_test.go" "(.+)(TestPipes.+)")
- ("os/exec/exec_test.go" "(.+)(TestStdinClose.+)")
- ("os/exec/exec_test.go" "(.+)(TestIgnorePipeErrorOnSuccess.+)")
- ("syscall/syscall_unix_test.go" "(.+)(TestPassFD\\(.+)")
- ("os/exec/exec_test.go" "(.+)(TestExtraFiles/areturn.+)")
- ("cmd/go/go_test.go" "(.+)(TestCoverageWithCgo.+)")
- ("cmd/go/go_test.go" "(.+)(TestTwoPkgConfigs.+)")
- ("os/exec/exec_test.go" "(.+)(TestOutputStderrCapture.+)")
- ("os/exec/exec_test.go" "(.+)(TestExtraFiles.+)")
- ("os/exec/exec_test.go" "(.+)(TestExtraFilesRace.+)")
- ("net/lookup_test.go" "(.+)(TestLookupPort.+)")
- ("syscall/exec_linux_test.go"
- "(.+)(TestCloneNEWUSERAndRemapNoRootDisableSetgroups.+)")))
-
- ;; These tests fail on aarch64-linux
- (substitute* "cmd/dist/test.go"
- (("t.registerHostTest\\(\"testsanitizers/msan.*") ""))
-
- ;; fix shebang for testar script
- ;; note the target script is generated at build time.
- (substitute* "../misc/cgo/testcarchive/carchive_test.go"
- (("#!/usr/bin/env") (string-append "#!" (which "env"))))
-
- (substitute* "net/lookup_unix.go"
- (("/etc/protocols") (string-append net-base "/etc/protocols")))
- (substitute* "net/port_unix.go"
- (("/etc/services") (string-append net-base "/etc/services")))
- (substitute* "time/zoneinfo_unix.go"
- (("/usr/share/zoneinfo/") tzdata-path))
- (substitute* (find-files "cmd" "\\.go")
- (("/lib(64)?/ld-linux.*\\.so\\.[0-9]") loader))
- #t)))
- (add-before 'build 'set-bootstrap-variables
- (lambda* (#:key outputs inputs #:allow-other-keys)
- ;; Tell the build system where to find the bootstrap Go.
- (let ((go (assoc-ref inputs "go")))
- (setenv "GOROOT_BOOTSTRAP" go)
- (setenv "GOGC" "400")
- #t)))
- (replace 'build
- (lambda* (#:key inputs outputs #:allow-other-keys)
- ;; FIXME: Some of the .a files are not bit-reproducible.
- (let* ((output (assoc-ref outputs "out")))
- (setenv "CC" (which "gcc"))
- (setenv "GOOS" "linux")
- (setenv "GOROOT" (dirname (getcwd)))
- (setenv "GOROOT_FINAL" output)
- (setenv "CGO_ENABLED" "1")
- (invoke "sh" "all.bash"))))
- (replace 'install
- ;; TODO: Most of this could be factorized with Go 1.4.
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((output (assoc-ref outputs "out"))
- (doc_out (assoc-ref outputs "doc"))
- (docs (string-append doc_out "/share/doc/" ,name "-" ,version))
- (src (string-append
- (assoc-ref outputs "tests") "/share/" ,name "-" ,version)))
- ;; Prevent installation of the build cache, which contains
- ;; store references to most of the tools used to build Go and
- ;; would unnecessarily increase the size of Go's closure if it
- ;; was installed.
- (delete-file-recursively "../pkg/obj")
-
- (mkdir-p src)
- (copy-recursively "../test" (string-append src "/test"))
- (delete-file-recursively "../test")
- (mkdir-p docs)
- (copy-recursively "../api" (string-append docs "/api"))
- (delete-file-recursively "../api")
- (copy-recursively "../doc" (string-append docs "/doc"))
- (delete-file-recursively "../doc")
-
- (for-each
- (lambda (file)
- (let* ((filein (string-append "../" file))
- (fileout (string-append docs "/" file)))
- (copy-file filein fileout)
- (delete-file filein)))
- ;; Note the slightly different file names compared to 1.4.
- '("README.md" "CONTRIBUTORS" "AUTHORS" "PATENTS"
- "LICENSE" "VERSION" "CONTRIBUTING.md" "robots.txt"))
-
- (copy-recursively "../" output)
- #t)))))))
- (native-inputs
- `(("go" ,go-1.4)
- ("go-skip-gc-test.patch" ,(search-patch "go-skip-gc-test.patch"))
- ,@(match (%current-system)
- ((or "armhf-linux" "aarch64-linux")
- `(("gold" ,binutils-gold)))
- (_ `()))
- ,@(package-native-inputs go-1.4)))
- (supported-systems %supported-systems)))
-
-(define-public go-1.16
- (package
- (inherit go-1.14)
- (name "go")
- (version "1.16.5")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/golang/go")
- (commit (string-append "go" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "19a93p217h5xi2sgh34qzv24pkd4df0sw4fc5z6k47lspjp3vx2l"))))
- (arguments
- (substitute-keyword-arguments (package-arguments go-1.14)
- ((#:tests? _) #t)
- ((#:phases phases)
- `(modify-phases ,phases
- (add-after 'unpack 'remove-unused-sourcecode-generators
- (lambda _
- ;; Prevent perl from inclusion in closure through unused files
- (for-each delete-file (find-files "src" "\\.pl$"))))
- (replace 'prebuild
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((gcclib (string-append (assoc-ref inputs "gcc:lib") "/lib"))
- (net-base (assoc-ref inputs "net-base"))
- (tzdata-path
- (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo")))
-
- ;; Having the patch in the 'patches' field of <origin> breaks
- ;; the 'TestServeContent' test due to the fact that
- ;; timestamps are reset. Thus, apply it from here.
- (invoke "patch" "-p2" "--force" "-i"
- (assoc-ref inputs "go-skip-gc-test.patch"))
- (invoke "patch" "-p2" "--force" "-i"
- (assoc-ref inputs "go-fix-script-tests.patch"))
-
- (for-each make-file-writable (find-files "."))
-
- (substitute* "os/os_test.go"
- (("/usr/bin") (getcwd))
- (("/bin/sh") (which "sh")))
-
- (substitute* "cmd/go/testdata/script/cgo_path_space.txt"
- (("/bin/sh") (which "sh")))
-
- ;; Add libgcc to runpath
- (substitute* "cmd/link/internal/ld/lib.go"
- (("!rpath.set") "true"))
- (substitute* "cmd/go/internal/work/gccgo.go"
- (("cgoldflags := \\[\\]string\\{\\}")
- (string-append "cgoldflags := []string{"
- "\"-Wl,-rpath=" gcclib "\""
- "}"))
- (("\"-lgcc_s\", ")
- (string-append
- "\"-Wl,-rpath=" gcclib "\", \"-lgcc_s\", ")))
- (substitute* "cmd/go/internal/work/gc.go"
- (("ldflags = setextld\\(ldflags, compiler\\)")
- (string-append
- "ldflags = setextld(ldflags, compiler)\n"
- "ldflags = append(ldflags, \"-r\")\n"
- "ldflags = append(ldflags, \"" gcclib "\")\n")))
-
- ;; Disable failing tests: these tests attempt to access
- ;; commands or network resources which are neither available
- ;; nor necessary for the build to succeed.
- (for-each
- (match-lambda
- ((file regex)
- (substitute* file
- ((regex all before test_name)
- (string-append before "Disabled" test_name)))))
- '(("net/net_test.go" "(.+)(TestShutdownUnix.+)")
- ("net/dial_test.go" "(.+)(TestDialTimeout.+)")
- ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPort.+)")
- ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPortWithCancel.+)")
- ;; 127.0.0.1 doesn't exist
- ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPTR.+)")
- ;; 127.0.0.1 doesn't exist
- ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPTRWithCancel.+)")
- ;; /etc/services doesn't exist
- ("net/parse_test.go" "(.+)(TestReadLine.+)")
- ("os/os_test.go" "(.+)(TestHostname.+)")
- ;; The user's directory doesn't exist
- ("os/os_test.go" "(.+)(TestUserHomeDir.+)")
- ("time/format_test.go" "(.+)(TestParseInSydney.+)")
- ("time/format_test.go" "(.+)(TestParseInLocation.+)")
- ("os/exec/exec_test.go" "(.+)(TestEcho.+)")
- ("os/exec/exec_test.go" "(.+)(TestCommandRelativeName.+)")
- ("os/exec/exec_test.go" "(.+)(TestCatStdin.+)")
- ("os/exec/exec_test.go" "(.+)(TestCatGoodAndBadFile.+)")
- ("os/exec/exec_test.go" "(.+)(TestExitStatus.+)")
- ("os/exec/exec_test.go" "(.+)(TestPipes.+)")
- ("os/exec/exec_test.go" "(.+)(TestStdinClose.+)")
- ("os/exec/exec_test.go" "(.+)(TestIgnorePipeErrorOnSuccess.+)")
- ("syscall/syscall_unix_test.go" "(.+)(TestPassFD\\(.+)")
- ("os/exec/exec_test.go" "(.+)(TestExtraFiles/areturn.+)")
- ("cmd/go/go_test.go" "(.+)(TestCoverageWithCgo.+)")
- ("cmd/go/go_test.go" "(.+)(TestTwoPkgConfigs.+)")
- ("os/exec/exec_test.go" "(.+)(TestOutputStderrCapture.+)")
- ("os/exec/exec_test.go" "(.+)(TestExtraFiles.+)")
- ("os/exec/exec_test.go" "(.+)(TestExtraFilesRace.+)")
- ("net/lookup_test.go" "(.+)(TestLookupPort.+)")
- ("syscall/exec_linux_test.go"
- "(.+)(TestCloneNEWUSERAndRemapNoRootDisableSetgroups.+)")))
-
- ;; These tests fail on aarch64-linux
- (substitute* "cmd/dist/test.go"
- (("t.registerHostTest\\(\"testsanitizers/msan.*") ""))
-
- ;; fix shebang for testar script
- ;; note the target script is generated at build time.
- (substitute* "../misc/cgo/testcarchive/carchive_test.go"
- (("#!/usr/bin/env") (string-append "#!" (which "env"))))
-
- (substitute* "net/lookup_unix.go"
- (("/etc/protocols") (string-append net-base "/etc/protocols")))
- (substitute* "net/port_unix.go"
- (("/etc/services") (string-append net-base "/etc/services")))
- (substitute* "time/zoneinfo_unix.go"
- (("/usr/share/zoneinfo/") tzdata-path)))))
- (replace 'build
- (lambda* (#:key inputs outputs #:allow-other-keys)
- ;; FIXME: Some of the .a files are not bit-reproducible.
- ;; (Is this still true?)
- (let* ((output (assoc-ref outputs "out"))
- (loader (string-append (assoc-ref inputs "libc")
- ,(glibc-dynamic-linker))))
- (setenv "CC" (which "gcc"))
- (setenv "GO_LDSO" loader)
- (setenv "GOOS" "linux")
- (setenv "GOROOT" (dirname (getcwd)))
- (setenv "GOROOT_FINAL" output)
- (setenv "GOCACHE" "/tmp/go-cache")
- (invoke "sh" "make.bash" "--no-banner"))))
- (replace 'check
- (lambda* (#:key target (tests? (not target)) (parallel-tests? #t)
- #:allow-other-keys)
- (let* ((njobs (if parallel-tests? (parallel-job-count) 1)))
- (when tests?
- (setenv "GOMAXPROCS" (number->string njobs))
- (invoke "sh" "run.bash" "--no-rebuild")))))
- (add-before 'install 'unpatch-perl-shebangs
- (lambda _
- ;; Rewrite references to perl input in test scripts
- (substitute* "net/http/cgi/testdata/test.cgi"
- (("^#!.*") "#!/usr/bin/env perl\n"))))))))
- (native-inputs
- `(("go-fix-script-tests.patch" ,(search-patch "go-fix-script-tests.patch"))
- ,@(if (not (member (%current-system) (package-supported-systems go-1.4)))
- (alist-replace "go" (list gccgo-10) (package-native-inputs go-1.14))
- (package-native-inputs go-1.14))))))
-
-(define-public go go-1.14)
-
(define-public go-github-com-alsm-ioprogress
(let ((commit "063c3725f436e7fba0c8f588547bee21ffec7ac5")
(revision "0"))
@@ -3198,7 +3196,7 @@ application's http.Handlers.")
(define-public go-github-com-magiconair-properties
(package
(name "go-github-com-magiconair-properties")
- (version "1.8.4")
+ (version "1.8.5")
(source
(origin
(method git-fetch)
@@ -3208,7 +3206,7 @@ application's http.Handlers.")
(file-name (git-file-name name version))
(sha256
(base32
- "0q7d55z0v8y55dyy8nhgdnswf5zkgj3i87irbk294nvzhx01bnxd"))))
+ "0v4agnkhc30fblbmhs0gq2bikhdnnmqmpp4phrnza68m04j5hxbn"))))
(build-system go-build-system)
(arguments
`(#:import-path "github.com/magiconair/properties"))
@@ -3220,7 +3218,7 @@ application's http.Handlers.")
(define-public go-github-com-pelletier-go-toml
(package
(name "go-github-com-pelletier-go-toml")
- (version "1.8.0")
+ (version "1.9.3")
(source
(origin
(method git-fetch)
@@ -3230,7 +3228,7 @@ application's http.Handlers.")
(file-name (git-file-name name version))
(sha256
(base32
- "0fxmjm85c9h43lvqz71wr93fcc63bhj82nwby80222xx8ja63g7y"))))
+ "0cqwnvlgs1wgdgjxlwv8j52f7d6syniadr51sjh2fya99m5wzvsn"))))
(build-system go-build-system)
(arguments
`(#:import-path "github.com/pelletier/go-toml"))
@@ -3509,30 +3507,28 @@ which satisfies the cron expression.")
license:asl2.0)))))
(define-public go-gopkg-in-check-v1
- (let ((commit "788fd78401277ebd861206a03c884797c6ec5541")
- (revision "1"))
- (package
- (name "go-gopkg-in-check-v1")
- (version (git-version "1.0.0" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/go-check/check")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0v3bim0j375z81zrpr5qv42knqs0y2qv2vkjiqi5axvb78slki1a"))))
- (build-system go-build-system)
- (arguments
- '(#:import-path "gopkg.in/check.v1"))
- (propagated-inputs
- `(("go-github-com-kr-pretty" ,go-github-com-kr-pretty)))
- (home-page "https://gopkg.in/check.v1")
- (synopsis "Test framework for the Go language")
- (description "This package provides a test library for the Go language.")
- (license license:asl2.0))))
+ (package
+ (name "go-gopkg-in-check-v1")
+ (version "1.0.0-20201130134442-10cb98267c6c")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/go-check/check")
+ (commit (go-version->git-ref version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1jwxndf8rsyx0fgrp47d99rp55yzssmryb92jfj3yf7zd8rjjljn"))))
+ (build-system go-build-system)
+ (arguments
+ '(#:import-path "gopkg.in/check.v1"))
+ (propagated-inputs
+ `(("go-github-com-kr-pretty" ,go-github-com-kr-pretty)))
+ (home-page "https://gopkg.in/check.v1")
+ (synopsis "Test framework for the Go language")
+ (description "This package provides a test library for the Go language.")
+ (license license:bsd-2)))
(define-public go-gopkg-in-ini-v1
(package
@@ -6339,7 +6335,7 @@ suffix comparison, rather than the string-based or tree-based approaches.")
(define-public go-github-com-masterminds-goutils
(package
(name "go-github-com-masterminds-goutils")
- (version "1.1.0")
+ (version "1.1.1")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -6348,7 +6344,7 @@ suffix comparison, rather than the string-based or tree-based approaches.")
(file-name (git-file-name name version))
(sha256
(base32
- "180px47gj936qyk5bkv5mbbgiil9abdjq6kwkf7sq70vyi9mcfiq"))))
+ "09m4mbcdlv9ng3xcrmjlxi0niavby52y9nl2jhjnbx1xxpjw0jrh"))))
(build-system go-build-system)
(arguments
`(#:import-path "github.com/Masterminds/goutils"))
@@ -6487,7 +6483,15 @@ template functions.")
"0bk5bixl6rqa8znxghyp6zndbccx9kdyrymjahgyp6qsrp7rk144"))))
(build-system go-build-system)
(arguments
- `(#:import-path "github.com/bmatcuk/doublestar"))
+ `(#:import-path "github.com/bmatcuk/doublestar"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'remove-incompatible-test
+ ;; This test fails with Go 1.16.
+ (lambda _
+ (substitute* "src/github.com/bmatcuk/doublestar/doublestar_test.go"
+ (("\\{\"a\\[\", \"a\", false, nil, false\\},.*")
+ "")))))))
(home-page "https://github.com/bmatcuk/doublestar/")
(synopsis "Path pattern matching and globbing supporting doublestar")
(description "@code{doublestar} is a Go implementation of path pattern
@@ -6497,7 +6501,7 @@ matching and globbing with support for \"doublestar\" patterns.")
(define-public go-github-com-dlclark-regexp2
(package
(name "go-github-com-dlclark-regexp2")
- (version "1.2.0")
+ (version "1.4.0")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -6506,7 +6510,7 @@ matching and globbing with support for \"doublestar\" patterns.")
(file-name (git-file-name name version))
(sha256
(base32
- "011l1prsywvhhi0yc7qmpsca1cwavmawyyld5kjzi0ff9ghvj4ng"))))
+ "1irfv89b7lfkn7k3zgx610ssil6k61qs1wjj31kvqpxb3pdx4kry"))))
(build-system go-build-system)
(arguments
`(#:import-path "github.com/dlclark/regexp2"))
@@ -6572,7 +6576,7 @@ can be used almost directly in Go source code.")
(define-public go-github-com-sergi-go-diff
(package
(name "go-github-com-sergi-go-diff")
- (version "1.1.0")
+ (version "1.2.0")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -6581,7 +6585,7 @@ can be used almost directly in Go source code.")
(file-name (git-file-name name version))
(sha256
(base32
- "0ir8ali2vx0j7pipmlfd6k8c973akyy2nmbjrf008fm800zcp7z2"))))
+ "0cbj8nshllq102iiav0k1s01b8gwbkzj674g71n938qqna32y2pa"))))
(build-system go-build-system)
(arguments
`(#:import-path "github.com/sergi/go-diff/diffmatchpatch"
@@ -6688,7 +6692,7 @@ the parse trees produced by the html package.")
(define-public go-github-com-puerkitobio-goquery
(package
(name "go-github-com-puerkitobio-goquery")
- (version "1.5.1")
+ (version "1.7.0")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -6697,7 +6701,7 @@ the parse trees produced by the html package.")
(file-name (git-file-name name version))
(sha256
(base32
- "08nf88cg663slzqr51k2jxlm1krnh86nrzwbk6v41ccq5jkfm7fx"))))
+ "0gh1d99l5xc9hvwa4j40pfq3y9vfyq52mnrz6bf1kw2r2zr2gbcc"))))
(build-system go-build-system)
(arguments
`(#:import-path "github.com/PuerkitoBio/goquery"))
@@ -7471,7 +7475,7 @@ deleting secrets from the system keyring.")
(define-public go-etcd-io-bbolt
(package
(name "go-etcd-io-bbolt")
- (version "1.3.5")
+ (version "1.3.6")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -7480,10 +7484,12 @@ deleting secrets from the system keyring.")
(file-name (git-file-name name version))
(sha256
(base32
- "1h64gipvcg7060byv5wjlf524kqwj12p3v08kfh4ygv46vpm8p2r"))))
+ "0pj5245d417za41j6p09fmkbv05797vykr1bi9a6rnwddh1dbs8d"))))
(build-system go-build-system)
(arguments
`(#:import-path "go.etcd.io/bbolt"))
+ (propagated-inputs
+ `(("go-golang-org-x-sys" ,go-golang-org-x-sys)))
(home-page "https://pkg.go.dev/go.etcd.io/bbolt/")
(synopsis "Low-level key/value store in Go")
(description "This package implements a low-level key/value store in Go.")
@@ -8064,7 +8070,7 @@ programs that use traditional command lines.")
(define-public go-go-uber-org-atomic
(package
(name "go-go-uber-org-atomic")
- (version "1.7.0")
+ (version "1.8.0")
(source
(origin
(method git-fetch)
@@ -8073,7 +8079,7 @@ programs that use traditional command lines.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "0yxvb5sixh76cl9j8dpa97gznj0p8pmg2cdw0ypfwhd3ipx9wph1"))))
+ (base32 "0grswsk7nkf7zmmychf6aj6032shyag1kgs6zf7qwxyn55dym1v8"))))
(build-system go-build-system)
(arguments
'(#:import-path "go.uber.org/atomic"))
diff --git a/gnu/packages/gps.scm b/gnu/packages/gps.scm
index 49bc5e8254..19f8a73eef 100644
--- a/gnu/packages/gps.scm
+++ b/gnu/packages/gps.scm
@@ -222,14 +222,14 @@ such as elevation, speed, heart rate, power, temperature, and gear shifts.")
(define-public gpsd
(package
(name "gpsd")
- (version "3.21")
+ (version "3.23")
(source
(origin
(method url-fetch)
(uri (string-append "https://download-mirror.savannah.gnu.org"
- "/releases/gpsd/gpsd-" version ".tar.gz"))
+ "/releases/gpsd/gpsd-" version ".tar.xz"))
(sha256
- (base32 "14gyqrbrq6jz4y6x59rdpv9d4c3pbn0vh1blq3iwrc6kz0x4ql35"))))
+ (base32 "1px9im0qfn8k7mnvjcw5myakzd7mad2drwyzji400hpwyswjjr73"))))
(build-system scons-build-system)
(native-inputs
`(("bc" ,bc)
@@ -259,7 +259,8 @@ such as elevation, speed, heart rate, power, temperature, and gear shifts.")
(modify-phases %standard-phases
(add-after 'unpack 'fix-build
(lambda* (#:key outputs #:allow-other-keys)
- (substitute* "SConstruct"
+ (setenv "TAR" "noop")
+ (substitute* "SConscript"
(("envs = \\{\\}")
"envs = os.environ"))
#t))
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index c0886f5024..adffd466a6 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -797,7 +797,7 @@ many more.")
(define-public ilmbase
(package
(name "ilmbase")
- (version "2.5.5")
+ (version "2.5.7")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -806,7 +806,7 @@ many more.")
(file-name (git-file-name "ilmbase" version))
(sha256
(base32
- "0mjzb3fd8b9pcqmrgy5cdsmvqd70hmlvjnfypi66v59h3fhrmgd8"))
+ "1vja0rbilcd1wn184w8nbcmck00n7bfwlddwiaxw8dhj64nx4468"))
(patches (search-patches "ilmbase-fix-tests.patch"))))
(build-system cmake-build-system)
(arguments
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index a6d1e7a70f..feefa3a5f6 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -2683,14 +2683,14 @@ is no support for parsing block and inline level HTML.")
(define-public mcron
(package
(name "mcron")
- (version "1.2.0")
+ (version "1.2.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/mcron/mcron-"
version ".tar.gz"))
(sha256
(base32
- "1midrn15d5kqy4zd2029bj1db6gnfhxg8mcgfy4bkp5p9nl4v4rd"))))
+ "0bkn235g2ia4f7ispr9d55c7bc18282r3qd8ldhh5q2kiin75zi0"))))
(build-system gnu-build-system)
(arguments
'(#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm
index 4cb0f669be..351fea3afc 100644
--- a/gnu/packages/haskell-apps.scm
+++ b/gnu/packages/haskell-apps.scm
@@ -344,14 +344,14 @@ to @code{cabal repl}).")
(define-public git-annex
(package
(name "git-annex")
- (version "8.20210714")
+ (version "8.20210803")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/"
"git-annex/git-annex-" version ".tar.gz"))
(sha256
- (base32 "0pkzqa8qmckv4fcc9pndlplz4w0ndlqkp18hx6pyycckycljdyzy"))))
+ (base32 "0777q454bgkzr930wacn48xm6ygi4i6rxsizvxjm3a0dlffnv3b2"))))
(build-system haskell-build-system)
(arguments
`(#:configure-flags
diff --git a/gnu/packages/ibus.scm b/gnu/packages/ibus.scm
index 12e9f3a79f..4cec104bab 100644
--- a/gnu/packages/ibus.scm
+++ b/gnu/packages/ibus.scm
@@ -4,7 +4,7 @@
;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018, 2019, 2020 Peng Mei Yu <i@pengmeiyu.com>
+;;; Copyright © 2018, 2019, 2020, 2021 Peng Mei Yu <pengmeiyu@riseup.net>
;;; Copyright © 2020 kanichos <kanichos@yandex.ru>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;;
@@ -356,7 +356,7 @@ Japanese language input in most graphical applications.")
(define-public librime
(package
(name "librime")
- (version "1.6.1")
+ (version "1.7.3")
(source
(origin
(method git-fetch)
@@ -366,7 +366,7 @@ Japanese language input in most graphical applications.")
(file-name (git-file-name name version))
(sha256
(base32
- "1avmy2yyag22cl2j8085n5czsk93sxv440pdb3a2diwcxwwmzm9v"))
+ "0pqk0i3zcii3fx5laj9qzbgd58jvq6wn31j76w4zix2i4b1lqcqv"))
(modules '((guix build utils)))
(snippet
'(begin
@@ -409,38 +409,29 @@ traditional Chinese output.")
(define-public rime-data
(package
(name "rime-data")
- (version "0.38.20200623")
+ (version "0.38.20210802")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/rime/plum")
- (commit "397d601dd22cfc857613973724724b8f44db9f9c")))
+ (commit "0b835e347cad9c2d7038cfe82df5b5d1fe1c0327")))
(file-name "plum-checkout")
(sha256
- (base32 "06ad5c4m7xsfr4if5ywshfj2aj5g5b5hwzh38dzccn7c1l2ibi0z"))))
+ (base32 "0mja4wyazxdc6fr7pzij5ah4rzwxv4s12s64vfn5ikx1ias1f8ib"))))
(build-system gnu-build-system)
(arguments
`(#:modules ((ice-9 match)
,@%gnu-build-system-modules)
#:tests? #f ; no tests
- #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
- "no_update=1")
+ #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-source
(lambda _
- ;; Don't build binary Rime schema. The binary Rime schema files
- ;; are platform dependent and contains timestamp information.
- ;; Thus they are not reproducible.
-
- ;; Change `.DEFAULT_GOAL' to `all'.
- (substitute* "Makefile"
- (("^\\.DEFAULT_GOAL := preset")
- ".DEFAULT_GOAL := all"))
;; Disable git operations.
(substitute* "scripts/install-packages.sh"
- ((".*update-package\\.sh.*") ""))
+ (("^\\s*fetch_or_update_package\\s$") ""))
#t))
;; Copy Rime schemas into the "package/rime" directory.
(add-after 'unpack 'copy-rime-schemas
@@ -455,6 +446,12 @@ traditional Chinese output.")
(symlink path (string-append dest-dir "/" schema))))))
inputs))
#t))
+ (replace 'build
+ ;; NOTE: Don't build binary Rime schema. Binary Rime schema files
+ ;; are platform dependent and contain timestamp information.
+ ;; Therefore they are not reproducible.
+ (lambda* (#:key make-flags #:allow-other-keys)
+ (apply invoke "make" "all" make-flags)))
(delete 'configure))))
(inputs
`(("rime-array"
@@ -462,51 +459,51 @@ traditional Chinese output.")
(method git-fetch)
(uri (git-reference
(url "https://github.com/rime/rime-array")
- (commit "93cc99238f120606a076220ec4ddcad164f6396a")))
+ (commit "7a7bfafae966e5f949a23a82ee8594cacf492593")))
(file-name "rime-array-checkout")
(sha256
(base32
- "06yxrv3x702751jvx46rfw3ix34jk7jh183rz6bllznzi7lxz7sz"))))
+ "0kw0wyc5f77bv06fixkfvqnibmm80pyifvrhz8f1h411926ny37r"))))
("rime-bopomofo"
,(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/rime/rime-bopomofo")
- (commit "ed25098386f5efd3d70b08650f0d1b70c41c11a3")))
+ (commit "c7618f4f5728e1634417e9d02ea50d82b71956ab")))
(file-name "rime-bopomofo-checkout")
(sha256
(base32
- "1ip1pbfb1hadf2mcymr5939iagf25ywfl67d9198jahzyr6rdyvc"))))
+ "0g77nv0jrwqnbqqna0ib0kqcy6l5zl62kh49ny67d6bjwnwz9186"))))
("rime-cangjie"
,(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/rime/rime-cangjie")
- (commit "5fd8ce6f64039e505ca02655a621f2e830b97c19")))
+ (commit "8dfad9e537f18821b71ba28773315d9c670ae245")))
(file-name "rime-cangjie-checkout")
(sha256
(base32
- "1gf6r0q593ixar6v0jyvs56cik2gjp7pf9v799rfd2yydyia3bfg"))))
+ "029kw9nx6x0acg4f0m8wj1ziqffffhy9yyj51nlx17cnia0qcrby"))))
("rime-cantonese"
,(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/rime/rime-cantonese")
- (commit "e06fe8e79d7d64db2f2b6339aabc004d8cbc1f67")))
+ (commit "fa7c8ad19d51143c1a470295d56feeb63e92113f")))
(file-name "rime-cantonese-checkout")
(sha256
(base32
- "0j6kbhdfj7dx812yzykndzbk53s2v1rsaa2jlyma03hz7qlnnl0s"))))
+ "0vy5vv6h4r4b2msdvdrsj0zr6wmrv0fxm5zyyvxq8f1ix7ignm4c"))))
("rime-combo-pinyin"
,(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/rime/rime-combo-pinyin")
- (commit "67b29cdc786928ea46b43a9c660dee3db8f1adff")))
+ (commit "a84065a86b272c76215215bd6f03c506b6e7097c")))
(file-name "rime-combo-pinyin-checkout")
(sha256
(base32
- "1v6ax51xll2aizbz1xzjyk6p3lmq8cyzbxkrwcffa723zaj0zz4l"))))
+ "1f0b4kakw0x26gmx7xi4f94nbjlb8lvi9bks4f92jswa045vnd87"))))
("rime-double-pinyin"
,(origin
(method git-fetch)
@@ -522,21 +519,21 @@ traditional Chinese output.")
(method git-fetch)
(uri (git-reference
(url "https://github.com/rime/rime-emoji")
- (commit "c99d34e4a837349e4679a110bb4b94f71fe015ae")))
+ (commit "4c8c51f4a3bc7298c99376eda9bbd86070fc4fa1")))
(file-name "rime-emoji-checkout")
(sha256
(base32
- "1wiwlxjjml9xfgg7z1wzaf4b1bsg81dkwvsfff2b61fwxq61zkgw"))))
+ "0175jqh210fncafqckr9zzaw55qpswmqjrykwms1apmc68l43122"))))
("rime-essay"
,(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/rime/rime-essay")
- (commit "88055afa3752e4582fa887765d962a30e02bb1fa")))
+ (commit "9db2e77305e75798baf3ec8dcf1f82785b5e1be9")))
(file-name "rime-essay-checkout")
(sha256
(base32
- "0ap7xqv6v0x6mdkw2cv93cbr6qhpla3803z04522wb8l9hr7iryg"))))
+ "03ypkkaadd5qmyg26n24a66cll90xvcimgbmiyv4d33jradiqg22"))))
("rime-ipa"
,(origin
(method git-fetch)
@@ -552,51 +549,51 @@ traditional Chinese output.")
(method git-fetch)
(uri (git-reference
(url "https://github.com/rime/rime-jyutping")
- (commit "6fe0d727b3178feabd0f01e6cd82599202764735")))
+ (commit "1e24baa6998815c716c581effe8ec65ee87c4e8c")))
(file-name "rime-jyutping-checkout")
(sha256
(base32
- "0wz6d3pmi72ysh2c0nml3rsz9hd2vazsyhnz34gq26yf4j85phfs"))))
+ "0s2rckpwlrm3n7w1csnqyi5p9mkpp3z87s7mrm2vc9sv06rpv7zl"))))
("rime-luna-pinyin"
,(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/rime/rime-luna-pinyin")
- (commit "f1268e192ca88b9526467ce04ac3e47c837891ad")))
+ (commit "623adb022b094d540218b287c2e601509eee3347")))
(file-name "rime-luna-pinyin-checkout")
(sha256
(base32
- "0nxnjp1ybcrsan1mxnzwbkfhwl99kza6i9k1s7m9wzmhv7x7zahg"))))
+ "06pcwp09l5wkqv7792gbsl31xnlb3gr9q6bgbp94vvq6m2ycahqz"))))
("rime-middle-chinese"
,(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/rime/rime-middle-chinese")
- (commit "ed6d44f8d0bedf6e0c1c3183a270f8f01a211a40")))
+ (commit "9fad7a7c0c26167d5e6e85db8df48a15c7f7d4f0")))
(file-name "rime-middle-chinese-checkout")
(sha256
(base32
- "09mql88lsrxa99pyllby5z22kaiwwa037ha8gwaxjnnlsjgvz7zx"))))
+ "0a0bqrlzg0k692xblqnh1rh1fwwqqb205xwxlihgji85n8ibcgph"))))
("rime-pinyin-simp"
,(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/rime/rime-pinyin-simp")
- (commit "b73df7fc0994912ce785462b3be569ae81258ac2")))
+ (commit "b0e84cda02c613ebdedc127a26131b3800f45a8e")))
(file-name "rime-pinyin-simp-checkout")
(sha256
(base32
- "1m9hchnj1xf5s5185qm66ja0g1324drc98b2jjhnqgcp47bwz9fx"))))
+ "05v804qr3a9xvjzp9yid7231fi2l2yrl47ybbvql61z9k36ab094"))))
("rime-prelude"
,(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/rime/rime-prelude")
- (commit "8a52b4f86a59f3eb602f9a4cf6a680a67c15df8c")))
+ (commit "3de303ffaa731dba07b0462ce59f4767e1219ad2")))
(file-name "rime-prelude-checkout")
(sha256
(base32
- "039fr3996vfxzn2milaq1f5fw08f6zgjsxsql6cfhsc5b55fidm7"))))
+ "0g7a0bla58rh1v3md59k6adk185pilb4z8i2i0pqdl4nwqp40n2p"))))
("rime-quick"
,(origin
(method git-fetch)
@@ -652,21 +649,21 @@ traditional Chinese output.")
(method git-fetch)
(uri (git-reference
(url "https://github.com/rime/rime-terra-pinyin")
- (commit "492aaf914f9de37cc9d26b846dc693116de70ae8")))
+ (commit "ce7b9249612f575d2f43d51fcacd31d1b4e0ef1b")))
(file-name "rime-terra-pinyin-checkout")
(sha256
(base32
- "1l4l2w42mc3sf7jwbadx95gzrsq11ld9f6yj2hwaq9accainw3bf"))))
+ "0vm303f4lrdmdmif5klrp6w29vn9z2vzw33cw0y83pcnz39wiads"))))
("rime-wubi"
,(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/rime/rime-wubi")
- (commit "dd052ee158a38cb791755318b1aef9b4a3ed0316")))
+ (commit "f1876f08f1d4a9696395be0070c0e8e4353c44cb")))
(file-name "rime-wubi-checkout")
(sha256
(base32
- "00xzv3sbwqh2jz4i7s315h7rw17qa2dgj7kflyy3blxk0s2cqiqa"))))
+ "1d9y9rqssacria9d0hla96czsqv2wkfm6z926m1x269ryv96zxvk"))))
("rime-wugniu"
,(origin
(method git-fetch)
@@ -681,12 +678,42 @@ traditional Chinese output.")
(synopsis "Schema data of Rime Input Method Engine")
(description "@dfn{rime-data} provides the schema data of Rime Input
Method Engine.")
- (license lgpl3)))
+ (license (list
+ ;; rime-array
+ ;; rime-combo-pinyin
+ ;; rime-double-pinyin
+ ;; rime-middle-chinese
+ ;; rime-scj
+ ;; rime-soutzoe
+ ;; rime-stenotype
+ ;; rime-wugniu
+ gpl3
+
+ ;; plum
+ ;; rime-bopomofo
+ ;; rime-cangjie
+ ;; rime-emoji
+ ;; rime-essay
+ ;; rime-ipa
+ ;; rime-jyutping
+ ;; rime-luna-pinyin
+ ;; rime-prelude
+ ;; rime-quick
+ ;; rime-stroke
+ ;; rime-terra-pinyin
+ ;; rime-wubi
+ lgpl3
+
+ ;; rime-pinyin-simp
+ asl2.0
+
+ ;; rime-cantonese
+ cc-by4.0))))
(define-public ibus-rime
(package
(name "ibus-rime")
- (version "1.4.0")
+ (version "1.5.0")
(source
(origin
(method git-fetch)
@@ -695,40 +722,22 @@ Method Engine.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "12y6jdz1amhgrnqa7zjim63dfsz6zyxyahbirfan37wmcfp6gp1d"))))
- (build-system gnu-build-system)
+ (base32 "1vl3m6ydf7mvmalpdqqmrnnmqdi6l8yyac3bv19pp8a5q3qhkwlg"))))
+ (build-system cmake-build-system)
(arguments
`(#:tests? #f ; no tests
- #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
+ #:configure-flags
+ (list (string-append "-DRIME_DATA_DIR="
+ (assoc-ref %build-inputs "rime-data")
+ "/share/rime-data"))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-source
- (lambda* (#:key inputs outputs #:allow-other-keys)
- ;; Define RIME_DATA_DIR. It's required but not used by the code.
- (substitute* "Makefile"
- (("cmake")
- (string-append "cmake -DRIME_DATA_DIR="
- (assoc-ref inputs "rime-data")
- "/share/rime-data")))
- ;; rime_config.h defines the actual data directory.
- (substitute* "rime_config.h"
- (("^#define IBUS_RIME_INSTALL_PREFIX .*$")
- (string-append "#define IBUS_RIME_INSTALL_PREFIX \""
- (assoc-ref outputs "out")
- "\"\n"))
- (("^#define IBUS_RIME_SHARED_DATA_DIR .*$")
- (string-append "#define IBUS_RIME_SHARED_DATA_DIR \""
- (assoc-ref inputs "rime-data")
- "/share/rime-data\"\n")))
- #t))
- (add-after 'unpack 'fix-file-names
- (lambda* (#:key outputs #:allow-other-keys)
- ;; IBus uses the component file rime.xml to start the Rime
- ;; engine. It must be patched with appropriate file names.
- (substitute* "rime.xml"
- (("/usr") (assoc-ref outputs "out")))
- #t))
- (delete 'configure))))
+ (lambda _
+ (substitute* "CMakeLists.txt"
+ (("DESTINATION....RIME_DATA_DIR..")
+ "DESTINATION \"${CMAKE_INSTALL_DATADIR}/rime-data\""))
+ #t)))))
(inputs
`(("gdk-pixbuf" ,gdk-pixbuf)
("glib" ,glib)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 16f8800c9a..a80964c2b0 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -2265,7 +2265,7 @@ focus on speed and slick struct mapping.")
(define-public julia-lazyarrays
(package
(name "julia-lazyarrays")
- (version "0.21.11")
+ (version "0.21.14")
(source
(origin
(method git-fetch)
@@ -2274,7 +2274,7 @@ focus on speed and slick struct mapping.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1vdli4zr94xhrx5bpvrqiysz21nzlcgmqz0zhza1ayw0zjgzihfw"))))
+ (base32 "130kqyfk0h17s9dr9r1p9n1dgvzzlb1jwn6pj14lwr83s36glpv1"))))
(build-system julia-build-system)
(propagated-inputs
`(("julia-arraylayouts" ,julia-arraylayouts)
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index df8a74fea5..f5bbb5d267 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -32,7 +32,6 @@
#:use-module (gnu packages)
#:use-module (gnu packages algebra)
#:use-module (gnu packages base)
- #:use-module (gnu packages certs)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
#:use-module (gnu packages elf)
@@ -273,7 +272,7 @@ libraries. It is also a bit like @code{ldd} and @code{otool -L}.")
(define-public julia
(package
(name "julia")
- (version "1.6.1")
+ (version "1.6.2")
(source (origin
(method url-fetch)
(uri (string-append
@@ -281,7 +280,7 @@ libraries. It is also a bit like @code{ldd} and @code{otool -L}.")
version "/julia-" version ".tar.gz"))
(sha256
(base32
- "1mfzbjyqcmx7wb1sa7qab5fl78yzd7ap088krqbphbwvpn880srn"))
+ "0plbj4laifzz8ppk889iv3gaxj1mdddzv7yad6ghml6bfnn24r6m"))
(patches
(search-patches "julia-SOURCE_DATE_EPOCH-mtime.patch"))))
(build-system gnu-build-system)
@@ -341,6 +340,26 @@ libraries. It is also a bit like @code{ldd} and @code{otool -L}.")
(("\\$\\$\\(build_depsbindir\\)/libwhich")
(search-input-file inputs "/bin/libwhich")))
#t))
+ (add-after 'unpack 'change-number-of-precompile-statements
+ (lambda _
+ ;; Remove nss-certs drops the number of statements below 1200,
+ ;; causing the build to fail prematurely.
+ (substitute* "contrib/generate_precompile.jl"
+ (("1200") "1100"))
+ #t))
+ ;; For some reason libquadmath is unavailable on this architecture.
+ ;; https://github.com/JuliaLang/julia/issues/41613
+ ,@(if (target-aarch64?)
+ '((add-after 'unpack 'drop-libquadmath-on-aarch64
+ (lambda _
+ (substitute* '("contrib/fixup-libgfortran.sh"
+ "deps/csl.mk"
+ "base/Makefile")
+ ((".*libquadmath.*") ""))
+ (substitute* "Makefile"
+ (("libquadmath ") ""))
+ #t)))
+ '())
(add-before 'check 'set-home
;; Some tests require a home directory to be set.
(lambda _ (setenv "HOME" "/tmp") #t))
@@ -484,9 +503,6 @@ libraries. It is also a bit like @code{ldd} and @code{otool -L}.")
"@test_broken ispath(ca_roots_path())")
(("@test ca_roots_path\\(\\) \\!= bundled_ca_roots\\(\\)")
"@test_broken ca_roots_path() != bundled_ca_roots()"))
- ;; Some digraphs are too wide for some terminals during testing.
- (substitute* "stdlib/Unicode/test/runtests.jl"
- (("test collect\\(graphemes") "test_broken collect(grapemes"))
;; WARNING: failed to select UTF-8 encoding, using ASCII
;; Using 'setlocale' doesn't affect the test failures.
;(setlocale LC_ALL "en_US.utf8")
@@ -644,8 +660,7 @@ libraries. It is also a bit like @code{ldd} and @code{otool -L}.")
("dsfmt" ,dsfmt)
("libwhich" ,libwhich)))
(native-inputs
- `(("nss-certs" ,nss-certs)
- ("openssl" ,openssl)
+ `(("openssl" ,openssl)
("perl" ,perl)
("patchelf" ,patchelf)
("pkg-config" ,pkg-config)
diff --git a/gnu/packages/less.scm b/gnu/packages/less.scm
index c9b18ea36b..334d5864d9 100644
--- a/gnu/packages/less.scm
+++ b/gnu/packages/less.scm
@@ -2,7 +2,7 @@
;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2019–2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -59,7 +59,7 @@ text editors.")
(define-public lesspipe
(package
(name "lesspipe")
- (version "1.85")
+ (version "1.86")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -68,7 +68,7 @@ text editors.")
(file-name (git-file-name name version))
(sha256
(base32
- "1v1jdkdq1phc93gdr6mjlk98gipxrkkq4bj8kks0kfdvjgdwkdaa"))))
+ "14qsfwvsqn6r0najpfh5p68by4jwlg2hj4250cfi1hx3j9i5nhgn"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; no tests
diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm
index cb0d45ce86..5a5d867c60 100644
--- a/gnu/packages/libusb.scm
+++ b/gnu/packages/libusb.scm
@@ -225,14 +225,14 @@ implementing @code{javax.usb} (JSR-80).")
(define-public python-libusb1
(package
(name "python-libusb1")
- (version "1.6.4")
+ (version "1.9.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "libusb1" version))
(sha256
(base32
- "03b7xrz8vqg8w0za5r503jhcmbd1ls5610jcja1rqz833nf0v4wc"))))
+ "0j8p7jb7sibiiib18vyv3w5rrk0f4d2dl99bs18nwkq6pqvwxrk0"))))
(build-system python-build-system)
(arguments
`(#:modules ((srfi srfi-1)
@@ -257,7 +257,7 @@ implementing @code{javax.usb} (JSR-80).")
"^libusb.*\\.so\\..*"))
"\"")))
#t)))))
- (inputs `(("libusb" ,libusb)))
+ (propagated-inputs `(("libusb" ,libusb)))
(home-page "https://github.com/vpelletier/python-libusb1")
(synopsis "Pure-python wrapper for libusb-1.0")
(description "Libusb is a library that gives applications easy access to
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index a5fd8ddaee..cd3e46504a 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -356,7 +356,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
;; The current "stable" kernels. That is, the most recently released major
;; versions that are still supported upstream.
-(define-public linux-libre-5.13-version "5.13.7")
+(define-public linux-libre-5.13-version "5.13.9")
(define deblob-scripts-5.13
(linux-libre-deblob-scripts
linux-libre-5.13-version
@@ -364,7 +364,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "153jf5l5x4438zgxwggaky2ahjlfl48j438vhpzks6h77lzc51a5")))
(define-public linux-libre-5.13-pristine-source
(let ((version linux-libre-5.13-version)
- (hash (base32 "0fg41dv62vsnv2hywym15zz0n08rhdzwqvcarspm9r5gac85c7pr")))
+ (hash (base32 "16hm6sb64f1hlr0qmf2w81zv55s6flj1x8jr2q326d9ny30przkj")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-5.13)))
@@ -372,7 +372,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
;; The "longterm" kernels — the older releases with long-term upstream support.
;; Here are the support timelines:
;; <https://www.kernel.org/category/releases.html>
-(define-public linux-libre-5.10-version "5.10.55")
+(define-public linux-libre-5.10-version "5.10.57")
(define deblob-scripts-5.10
(linux-libre-deblob-scripts
linux-libre-5.10-version
@@ -380,12 +380,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "0c9x07gplzajm0h5if3fpw2rvfb7psw3yp7i2n6ws7ggq1dvmki2")))
(define-public linux-libre-5.10-pristine-source
(let ((version linux-libre-5.10-version)
- (hash (base32 "12c8zrbj2c578ysz6j72g4azk0wj39z4aay3bjy9b837mlyi30bm")))
+ (hash (base32 "0b8lwfjlyd6j0csk71v07bxb5lrrzp545g1wv6kdk0kzq6maxfq0")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-5.10)))
-(define-public linux-libre-5.4-version "5.4.137")
+(define-public linux-libre-5.4-version "5.4.139")
(define deblob-scripts-5.4
(linux-libre-deblob-scripts
linux-libre-5.4-version
@@ -393,12 +393,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "1xghbbnaisjd0k1klbyn1p7r6r4x5a1bpmkm56a3gh2zvw4s7mj8")))
(define-public linux-libre-5.4-pristine-source
(let ((version linux-libre-5.4-version)
- (hash (base32 "0z0zlfm9jkwk3wi059q66xjx33qk2zpjk8ndhzlbvn75dhv5x7ph")))
+ (hash (base32 "0zx3hj8fc0qpdmkn56cna5438wjxmj42a69msbkxlg4mnz6d0w84")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-5.4)))
-(define-public linux-libre-4.19-version "4.19.200")
+(define-public linux-libre-4.19-version "4.19.202")
(define deblob-scripts-4.19
(linux-libre-deblob-scripts
linux-libre-4.19-version
@@ -406,12 +406,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "1jiaw0as1ippkrjdpd52657w5mz9qczg3y2hlra7m9k0xawwiqlf")))
(define-public linux-libre-4.19-pristine-source
(let ((version linux-libre-4.19-version)
- (hash (base32 "06q8ws1lsrvhssp9qwdlq47sbsf7wzzxbp97sdjfnvmlqvchjx1h")))
+ (hash (base32 "09ya7n0il8fipp8ksb8cyl894ihny2r75g70vbhclbv20q2pv0pj")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.19)))
-(define-public linux-libre-4.14-version "4.14.241")
+(define-public linux-libre-4.14-version "4.14.243")
(define deblob-scripts-4.14
(linux-libre-deblob-scripts
linux-libre-4.14-version
@@ -419,12 +419,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "1qij18inijj6c3ma8hv98yjagnzxdxyn134da9fd23ky8q6hbvky")))
(define-public linux-libre-4.14-pristine-source
(let ((version linux-libre-4.14-version)
- (hash (base32 "0zczi2hv6ib67niycn6s2gaw73y0nxz0c75w11xa4jqmf2xh9fxm")))
+ (hash (base32 "0wdk93qv91pa6bd3ff1gv7manhkzh190c5blcpl14cbh9m2ms8vz")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.14)))
-(define-public linux-libre-4.9-version "4.9.277")
+(define-public linux-libre-4.9-version "4.9.279")
(define deblob-scripts-4.9
(linux-libre-deblob-scripts
linux-libre-4.9-version
@@ -432,12 +432,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "0fxajshb75siq39lj5h8xvhdj8lcmddkslwlyj65rhlwk6g2r4b2")))
(define-public linux-libre-4.9-pristine-source
(let ((version linux-libre-4.9-version)
- (hash (base32 "1pkjcz9llc7hkmzfyjcx20b5njnqbkwlzyy1ncc8na71nn6rvsg6")))
+ (hash (base32 "01rf3xh2jcz6l2h79g0m02i8f9q51j64wvgvzi8lmq0gx9yvbv91")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.9)))
-(define-public linux-libre-4.4-version "4.4.277")
+(define-public linux-libre-4.4-version "4.4.280")
(define deblob-scripts-4.4
(linux-libre-deblob-scripts
linux-libre-4.4-version
@@ -445,7 +445,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
(base32 "0hhin1jpfkd6nwrb6xqxjzl3hdxy4pn8a15hy2d3d83yw6pflbsf")))
(define-public linux-libre-4.4-pristine-source
(let ((version linux-libre-4.4-version)
- (hash (base32 "1m5zkssh523f15fvy80rcvfwqzdkldz3jhny6vbaj8q0zvk3w5r5")))
+ (hash (base32 "1b9jx9zkycj0xjmy35890q5phiznayaz730dmsv3mdjg4qgfn18y")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.4)))
@@ -3568,7 +3568,14 @@ from the module-init-tools project.")
(file-name (git-file-name name version))
(sha256
(base32
- "16iyn51xlrsbshc7p5xl2338yyfzknaqc538sa7mamgccqwgyvvq"))))
+ "16iyn51xlrsbshc7p5xl2338yyfzknaqc538sa7mamgccqwgyvvq"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (substitute* "Makefile"
+ (("go test -v")
+ "GO111MODULE=off go test -v"))
+ #t))))
(build-system gnu-build-system)
(arguments
`(#:phases
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 58cc421ad7..b01ded87ad 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -903,7 +903,7 @@ the HTML documentation of TXR.")
(define-public txr
(package
(name "txr")
- (version "266")
+ (version "268")
(source
(origin
(method git-fetch)
@@ -912,7 +912,7 @@ the HTML documentation of TXR.")
(commit (string-append "txr-" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1k9mj3zaxdsylgnb8g6cq0cmp6420x7fp3nnsqdmds4gh8ib95wn"))))
+ (base32 "0q97qddbgk9356gx4xp8iip4pwj3ln03dvjfgrny76f3wmmiwsw6"))))
(build-system gnu-build-system)
(native-inputs
;; Required to build the documentation.
@@ -957,10 +957,7 @@ the HTML documentation of TXR.")
(lambda _
(substitute* (list "tests/017/realpath.tl"
"tests/017/realpath.expected")
- (("/usr/bin") "/"))
- (substitute* "tests/018/path-test.tl"
- (("/bin") (dirname (which "sh"))))
- #t))
+ (("/usr/bin") "/"))))
(replace 'configure
;; ./configure is a hand-written script that can't handle standard
;; autotools arguments like CONFIG_SHELL.
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 4107117c76..d829634634 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -1253,6 +1253,45 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
"This package provides a Python binding to LLVM for use in Numba.")
(license license:bsd-3)))
+(define-public (clang-python-bindings clang)
+ "Return a package for the Python bindings of CLANG."
+ (package
+ (inherit clang)
+ (name "python-clang")
+ (build-system python-build-system)
+ (outputs '("out"))
+ (arguments
+ '(#:phases (modify-phases %standard-phases
+ (add-before 'build 'change-directory
+ (lambda _
+ (chdir "bindings/python")))
+ (add-before 'build 'create-setup-py
+ (lambda _
+ ;; Generate a basic "setup.py", enough so it can be
+ ;; built and installed.
+ (with-output-to-file "setup.py"
+ (lambda ()
+ (display "from setuptools import setup
+setup(name=\"clang\", packages=[\"clang\"])\n")))))
+ (add-before 'build 'set-libclang-file-name
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Record the absolute file name of libclang.so.
+ (let ((clang (assoc-ref inputs "clang")))
+ (substitute* "clang/cindex.py"
+ (("libclang\\.so")
+ (string-append clang "/lib/libclang.so")))))))))
+ (inputs `(("clang" ,clang)))
+ (synopsis "Python bindings to libclang")))
+
+(define-public python-clang-10
+ (clang-python-bindings clang-10))
+
+(define-public python-clang-11
+ (clang-python-bindings clang-11))
+
+(define-public python-clang-12
+ (clang-python-bindings clang-12))
+
(define-public emacs-clang-format
(package
(inherit clang)
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index a266c70886..7e7bb89943 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -56,6 +56,7 @@
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages cmake)
+ #:use-module (gnu packages cpp)
#:use-module (gnu packages cran)
#:use-module (gnu packages databases)
#:use-module (gnu packages dejagnu)
@@ -64,10 +65,12 @@
#:use-module (gnu packages graphviz)
#:use-module (gnu packages gstreamer)
#:use-module (gnu packages image)
+ #:use-module (gnu packages libffi)
#:use-module (gnu packages linux)
#:use-module (gnu packages llvm)
#:use-module (gnu packages maths)
#:use-module (gnu packages mpi)
+ #:use-module (gnu packages ninja)
#:use-module (gnu packages ocaml)
#:use-module (gnu packages onc-rpc)
#:use-module (gnu packages parallel)
@@ -86,6 +89,7 @@
#:use-module (gnu packages statistics)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages swig)
+ #:use-module (gnu packages tls)
#:use-module (gnu packages web)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
@@ -660,6 +664,50 @@ standard data types.")
;; headers, hence the name change.
(deprecated-package "python-onnx" onnx))
+(define-public onnx-optimizer
+ (package
+ (name "onnx-optimizer")
+ ;; Note: 0.2.x is *more* recent than 1.5.0.
+ (version "0.2.6")
+ (home-page "https://github.com/onnx/optimizer")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit (string-append "v" version))))
+ (sha256
+ (base32
+ "1wkqqdxcxpfbf8zpbdfdd3zz5jkw775g31gyykj11z4y6pp659l6"))
+ (file-name (git-file-name name version))
+ (patches (search-patches "onnx-optimizer-system-library.patch"))
+ (modules '((guix build utils)))
+ (snippet '(delete-file-recursively "third_party"))))
+ (build-system python-build-system)
+ (arguments (package-arguments onnx)) ;reuse build system tweaks
+ (native-inputs
+ `(("cmake" ,cmake)
+ ("python-pytest" ,python-pytest)
+ ("python-pytest-runner" ,python-pytest-runner)
+ ("python-nbval" ,python-nbval)
+ ("python-coverage" ,python-coverage)))
+ (inputs
+ `(("onnx" ,onnx)
+ ("protobuf" ,protobuf)
+ ("pybind11" ,pybind11)))
+ (propagated-inputs
+ `(("python-numpy" ,python-numpy)))
+ (synopsis "Library to optimize ONNX models")
+ (description
+ "This package provides a C++ and Python library for performing arbitrary
+optimizations on ONNX models, as well as a growing list of prepackaged
+optimization passes.
+
+Not all possible optimizations can be directly implemented on ONNX graphs---
+some will need additional backend-specific information---but many can, and the
+aim is to provide all such passes along with ONNX so that they can be re-used
+with a single function call.")
+ (license license:expat)))
+
(define-public rxcpp
(package
(name "rxcpp")
@@ -701,23 +749,22 @@ synchronization, thread-safety, concurrent data structures, and non-blocking
I/O.")
(license license:asl2.0)))
-(define-public gemmlowp-for-tensorflow
- ;; The commit hash is taken from "tensorflow/workspace.bzl".
- (let ((commit "38ebac7b059e84692f53e5938f97a9943c120d98")
- (revision "2"))
+
+(define-public gemmlowp
+ (let ((commit "f9959600daa42992baace8a49544a00a743ce1b6")
+ (version "0.1")
+ (revision "1"))
(package
(name "gemmlowp")
- (version (git-version "0" revision commit))
+ (version (git-version version revision commit))
+ (home-page "https://github.com/google/gemmlowp")
(source (origin
- (method url-fetch)
- (uri (string-append "https://mirror.bazel.build/"
- "github.com/google/gemmlowp/archive/"
- commit ".zip"))
- (file-name (string-append "gemmlowp-" version ".zip"))
+ (method git-fetch)
+ (uri (git-reference (url home-page) (commit commit)))
+ (file-name (git-file-name name version))
(sha256
(base32
- "0n56s2g8hrssm4w8qj1v58gfm56a04n9v992ixkmvk6zjiralzxq"))))
- (build-system cmake-build-system)
+ "1hzfhlhzcb827aza6a7drydc67dw5fm3qfqilb9ibskan8dsf0c6"))))
(arguments
`(#:configure-flags
(list ,@(match (%current-system)
@@ -737,18 +784,15 @@ I/O.")
(inc (string-append out "/include/")))
(install-file "../build/libeight_bit_int_gemm.so" lib)
(for-each (lambda (dir)
- (let ((target (string-append inc "/" dir)))
- (mkdir-p target)
+ (let ((target
+ (string-append inc "/gemmlowp/" dir)))
(for-each (lambda (h)
(install-file h target))
(find-files (string-append "../" dir)
"\\.h$"))))
'("meta" "profiling" "public" "fixedpoint"
- "eight_bit_int_gemm" "internal"))
- #t))))))
- (native-inputs
- `(("unzip" ,unzip)))
- (home-page "https://github.com/google/gemmlowp")
+ "eight_bit_int_gemm" "internal"))))))))
+ (build-system cmake-build-system)
(synopsis "Small self-contained low-precision GEMM library")
(description
"This is a small self-contained low-precision @dfn{general matrix
@@ -758,6 +802,46 @@ at most 8 bits. To avoid overflow, results are internally accumulated on more
than 8 bits, and at the end only some significant 8 bits are kept.")
(license license:asl2.0))))
+(define-public gemmlowp-for-tensorflow
+ ;; The commit hash is taken from "tensorflow/workspace.bzl".
+ (let ((commit "38ebac7b059e84692f53e5938f97a9943c120d98")
+ (revision "2"))
+ (package
+ (inherit gemmlowp)
+ (version (git-version "0" revision commit))
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://mirror.bazel.build/"
+ "github.com/google/gemmlowp/archive/"
+ commit ".zip"))
+ (file-name (string-append "gemmlowp-" version ".zip"))
+ (sha256
+ (base32
+ "0n56s2g8hrssm4w8qj1v58gfm56a04n9v992ixkmvk6zjiralzxq"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments gemmlowp)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (lib (string-append out "/lib/"))
+ (inc (string-append out "/include/")))
+ (install-file "../build/libeight_bit_int_gemm.so" lib)
+ (for-each (lambda (dir)
+ ;; Note: Install headers straight into
+ ;; $includedir instead of $includedir/gemmlowp.
+ (let ((target (string-append inc "/" dir)))
+ (for-each (lambda (h)
+ (install-file h target))
+ (find-files (string-append "../" dir)
+ "\\.h$"))))
+ '("meta" "profiling" "public" "fixedpoint"
+ "eight_bit_int_gemm" "internal")))))))))
+ (native-inputs
+ `(("unzip" ,unzip)))
+ (properties '((hidden? . #t))))))
+
(define-public dlib
(package
(name "dlib")
@@ -2030,6 +2114,175 @@ together building blocks and a subclassing API with an imperative style for
advanced research.")
(license license:asl2.0)))
+(define-public tensorflow-lite
+ (package
+ (name "tensorflow-lite")
+ (version "2.5.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/tensorflow/tensorflow")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1jdw2i1rq06zqd6aabh7bbm0avsg4pygnfmd7gviv0blhih9054l"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #false ; no "check" target
+ #:build-type "Release"
+ #:configure-flags
+ (list
+ "-DTFLITE_ENABLE_GPU=OFF"
+ "-DTFLITE_ENABLE_RUY=OFF"
+
+ ;; TODO: The build system attempts to build xnnpack from source. We
+ ;; would like to use our xnnpack package here, but this requires more
+ ;; work.
+ "-DTFLITE_ENABLE_XNNPACK=OFF"
+
+ ;; Pretend we've already fetched abseil. We won't actually build it
+ ;; but use the existing package.
+ "-Dabseil-cpp_POPULATED=TRUE"
+
+ ;; Don't fetch the sources. We have already built flatbuffers.
+ "-Dflatbuffers_POPULATED=TRUE"
+
+ "-DFFT2D_SOURCE_DIR=/tmp/fft2d"
+ "-Dneon2sse_SOURCE_DIR=/tmp/neon2sse"
+ "-Dneon2sse_BINARY_DIR=/tmp/neon2sse-bin"
+ "-DFARMHASH_SOURCE_DIR=/tmp/farmhash"
+ "-Dgemmlowp_SOURCE_DIR=/tmp/gemmlowp"
+ (string-append "-DRUY_SOURCE_DIR="
+ (assoc-ref %build-inputs "ruy-src")))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'chdir
+ (lambda _ (chdir "tensorflow/lite")))
+ (add-after 'chdir 'copy-sources
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Use external cmake finders instead of these stubs that won't
+ ;; find anything but the bundled sources.
+ (delete-file "tools/cmake/modules/Findabsl.cmake")
+ (delete-file "tools/cmake/modules/Findeigen.cmake")
+
+ (substitute* "CMakeLists.txt"
+ (("find_package\\(eigen REQUIRED")
+ "find_package(eigen REQUIRED NAMES Eigen3"))
+ (substitute* "tools/cmake/modules/Findflatbuffers.cmake"
+ (("get_target_property.*")
+ (format #false "set(FLATBUFFERS_INCLUDE_DIRS ~a/include)\n"
+ (assoc-ref inputs "flatbuffers"))))
+
+ ;; Don't fetch source code; we already have everything we need.
+ (substitute* '("tools/cmake/modules/fft2d.cmake"
+ "tools/cmake/modules/ruy.cmake"
+ "tools/cmake/modules/farmhash.cmake"
+ "tools/cmake/modules/neon2sse.cmake"
+ "tools/cmake/modules/gemmlowp.cmake")
+ (("OverridableFetchContent_Populate.*") ""))
+
+ (mkdir-p "/tmp/farmhash")
+ (with-directory-excursion "/tmp/farmhash"
+ (invoke "tar" "--strip-components=1"
+ "-xf" (assoc-ref inputs "farmhash-src")))
+
+ (mkdir-p "/tmp/fft2d")
+ (with-directory-excursion "/tmp/fft2d"
+ (invoke "tar" "--strip-components=1"
+ "-xf" (assoc-ref inputs "fft2d-src")))
+
+ (copy-recursively (assoc-ref inputs "neon2sse-src")
+ "/tmp/neon2sse/")
+ (copy-recursively (assoc-ref inputs "gemmlowp-src")
+ "/tmp/gemmlowp/")))
+ (add-after 'copy-sources 'prepare-shared-library-build
+ (lambda _ (chdir "c")))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (lib (string-append out "/lib"))
+ (headers (string-append out "/include/tensorflow/lite")))
+ (install-file "../build/libtensorflowlite_c.so" lib)
+ (with-directory-excursion ".."
+ (for-each
+ (lambda (file)
+ (let ((target-dir (string-append headers "/" (dirname file))))
+ (install-file file target-dir)))
+ (find-files "." "\\.h$")))))))))
+ (inputs
+ `(("abseil-cpp" ,abseil-cpp)
+ ("eigen" ,eigen-for-tensorflow-lite)
+ ("flatbuffers" ,flatbuffers)
+ ("python" ,python)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("gemmlowp-src"
+ ;; The commit hash is taken from
+ ;; "tensorflow/lite/tools/cmake/modules/gemmlowp.cmake".
+ ,(let ((commit "fda83bdc38b118cc6b56753bd540caa49e570745"))
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/google/gemmlowp")
+ (commit commit)))
+ (file-name (git-file-name "gemmlowp" (string-take commit 8)))
+ (sha256
+ (base32
+ "1sbp8kmr2azwlvfbzryy1frxi99jhsh1nc93bdbxdf8zdgpv0kxl")))))
+ ("neon2sse-src"
+ ,(let ((commit "a1652fd5253afbf3e39357b012974f93511f6108"))
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/intel/ARM_NEON_2_x86_SSE")
+ (commit commit)))
+ (file-name (git-file-name "neon2sse" (string-take commit 8)))
+ (sha256
+ (base32
+ "1q8gkxag9wlnwdwad2pclsrkwzrdjy94hyrkayrsvxyj7szb5y8i")))))
+ ("farmhash-src"
+ ,(let ((commit "816a4ae622e964763ca0862d9dbd19324a1eaf45"))
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://mirror.bazel.build/github.com/google/farmhash/archive/"
+ commit ".tar.gz"))
+ (file-name (git-file-name "farmhash" (string-take commit 8)))
+ (sha256
+ (base32
+ "185b2xdxl4d4cnsnv6abg8s22gxvx8673jq2yaq85bz4cdy58q35")))))
+ ("fft2d-src"
+ ,(origin
+ (method url-fetch)
+ (uri (string-append "https://storage.googleapis.com/"
+ "mirror.tensorflow.org/"
+ "www.kurims.kyoto-u.ac.jp/~ooura/fft2d.tgz"))
+ (file-name "fft2d.tar.gz")
+ (sha256
+ (base32
+ "1jfflzi74fag9z4qmgwvp90aif4dpbr1657izmxlgvf4hy8fk9xd"))))
+ ("ruy-src"
+ ,(let ((commit "9c56af3fce210a8a103eda19bd6f47c08a9e3d90"))
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/google/ruy")
+ (commit commit)
+ (recursive? #true)))
+ (file-name (git-file-name "ruy" (string-take commit 8)))
+ (sha256
+ (base32
+ "1cfd5gk6kaj8kbl3h98gx1ap8czd59y6p8qq8nr28fklpyzf5cis")))))))
+ (home-page "https://tensorflow.org")
+ (synopsis "Machine learning framework")
+ (description
+ "TensorFlow is a flexible platform for building and training machine
+learning models. This package provides the \"lite\" variant for mobile
+devices.")
+ (license license:asl2.0)))
+
(define-public python-iml
(package
(name "python-iml")
@@ -2194,8 +2447,8 @@ that:
(define-public gloo
(let ((version "0.0.0") ; no proper version tag
- (commit "ca528e32fea9ca8f2b16053cff17160290fc84ce")
- (revision "0"))
+ (commit "c22a5cfba94edf8ea4f53a174d38aa0c629d070f")
+ (revision "1"))
(package
(name "gloo")
(version (git-version version revision commit))
@@ -2208,18 +2461,20 @@ that:
(file-name (git-file-name name version))
(sha256
(base32
- "1q9f80zy75f6njrzrqkmhc0g3qxs4gskr7ns2jdqanxa2ww7a99w"))))
+ "1crmqgybzkgkpbmcx16912gsl5qsj49swa0ikx6mhqgph0chrh11"))))
(build-system cmake-build-system)
(native-inputs
`(("googletest" ,googletest)))
+ (inputs
+ `(("openssl" ,openssl)))
(arguments
`(#:configure-flags '("-DBUILD_TEST=1")
#:phases
(modify-phases %standard-phases
(replace 'check
- (lambda _
- (invoke "make" "gloo_test")
- #t)))))
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "make" "gloo_test")))))))
(synopsis "Collective communications library")
(description
"Gloo is a collective communications library. It comes with a
@@ -2265,7 +2520,7 @@ general non-linear dimension reduction.")
(package
(name "xnnpack")
(version (git-version version revision commit))
- (home-page "https://github.com/google/XNNPACK")
+ (home-page "https://github.com/google/XNNPACK") ;fork of QNNPACK
(source (origin
(method git-fetch)
(uri (git-reference (url home-page) (commit commit)))
@@ -2305,3 +2560,134 @@ high-level machine learning frameworks, such as TensorFlow Lite,
TensorFlow.js, PyTorch, and MediaPipe.")
(license license:bsd-3))))
+(define-public python-pytorch
+ (package
+ (name "python-pytorch")
+ (version "1.9.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pytorch/pytorch")
+ (commit (string-append "v" version))
+ (recursive? #t)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0cznsh68hwk5761gv7iijb4g6jgjpvs3bbixwpzzmkbkbn2q96c1"))
+ (patches (search-patches "python-pytorch-system-libraries.patch"
+ "python-pytorch-runpath.patch"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; XXX: Let's be clear: this package is a bundling fest. We
+ ;; delete as much as we can, but there's still a lot left.
+ (for-each (lambda (directory)
+ (delete-file-recursively
+ (string-append "third_party/" directory)))
+ '("benchmark" "cpuinfo" "eigen"
+
+ ;; FIXME: QNNPACK (of which XNNPACK is a fork)
+ ;; needs these.
+ ;; "FP16" "FXdiv" "gemmlowp" "psimd"
+
+ "gloo" "googletest" "ios-cmake"
+ "onnx" "protobuf" "pthreadpool"
+ "pybind11" "python-enum" "python-peachpy"
+ "python-six" "tbb" "XNNPACK" "zstd"))
+
+ ;; Adjust references to the onnx-optimizer headers.
+ (substitute* "caffe2/onnx/backend.cc"
+ (("onnx/optimizer/")
+ "onnxoptimizer/"))))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases (modify-phases %standard-phases
+ (add-before 'build 'use-system-libraries
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Tell 'setup.py' to let 'CMakeLists.txt' know that we
+ ;; want to use "system libraries" instead of the bundled
+ ;; ones.
+ (setenv "USE_SYSTEM_LIBS" "1")
+
+ ;; XXX: Disable that for simplicity for now.
+ (setenv "USE_FBGEMM" "0")))
+ (add-before 'build 'make-things-writable
+ (lambda _
+ ;; The 'build_caffe2' function in
+ ;; 'tools/build_pytorch_libs.py', called from the
+ ;; top-level 'setup.py', needs write access to this
+ ;; directory.
+ (for-each make-file-writable
+ (find-files "caffe2/proto" "."
+ #:directories? #t))))
+ (replace 'check
+ (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+ ;; Run the test suite following the instructions in
+ ;; 'CONTRIBUTING.md'. XXX: Unfortunately this doesn't
+ ;; work, unless you set PYTHONPATH presumably.
+ (when tests?
+ (let ((python-site (site-packages inputs outputs)))
+ (setenv "PYTHONPATH"
+ (string-append python-site ":"
+ (getenv "PYTHONPATH")))
+ (invoke "python" "test/run_test.py")))))
+ (add-after 'install 'remove-test-executables
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; Remove test executables, but keep other executables
+ ;; such as 'torch_shm_manager' and and .so files such as
+ ;; 'libtorch_global_deps.so'.
+ (let ((python-site (site-packages inputs outputs)))
+ (for-each delete-file
+ (find-files python-site
+ "(^test_cpp_rpc|_test)$"))))))
+
+ ;; XXX: Tests attempt to download data such as
+ ;; <https://raw.githubusercontent.com/pytorch/test-infra/master/stats/slow-tests.json>.
+ #:tests? #f))
+ (native-inputs
+ `(("cmake" ,cmake)
+ ("ninja" ,ninja)))
+ (inputs
+ `(("eigen" ,eigen)
+ ;; ("fmt" ,fmt)
+ ("fp16" ,fp16)
+ ("gemmlowp" ,gemmlowp)
+ ("googletest" ,googletest)
+ ("googlebenchmark" ,googlebenchmark)
+ ("gloo" ,gloo)
+ ("openblas" ,openblas)
+ ("openmpi" ,openmpi)
+ ("pthreadpool" ,pthreadpool)
+ ("protobuf" ,protobuf)
+ ("pybind11" ,pybind11)
+ ("sleef" ,sleef)
+ ("xnnpack" ,xnnpack)
+ ("zstd" ,zstd)))
+ (propagated-inputs
+ `(("python-astunparse" ,python-astunparse)
+ ("python-numpy" ,python-numpy)
+ ("python-pyyaml" ,python-pyyaml)
+ ("python-cffi" ,python-cffi)
+ ("python-peachpy" ,python-peachpy)
+ ("python-typing-extensions" ,python-typing-extensions)
+ ("python-future" ,python-future)
+ ("python-six" ,python-six)
+ ("python-requests" ,python-requests)
+ ("onnx" ,onnx) ;propagated for its Python modules
+ ("onnx-optimizer" ,onnx-optimizer)
+ ("cpuinfo" ,cpuinfo)))
+ (home-page "https://pytorch.org/")
+ (synopsis "Python library for tensor computation and deep neural networks")
+ (description
+ "PyTorch is a Python package that provides two high-level features:
+
+@itemize
+@item tensor computation (like NumPy) with strong GPU acceleration;
+@item deep neural networks (DNNs) built on a tape-based autograd system.
+@end itemize
+
+You can reuse Python packages such as NumPy, SciPy, and Cython to extend
+PyTorch when needed.
+
+Note: currently this package does not provide GPU support.")
+ (license license:bsd-3)))
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 64d72806d7..d5d790fcf8 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -499,7 +499,7 @@ to run without any changes.")
(define-public fetchmail
(package
(name "fetchmail")
- (version "6.4.19")
+ (version "6.4.21")
(source
(origin
(method url-fetch)
@@ -507,7 +507,7 @@ to run without any changes.")
(version-major+minor version) "/"
"fetchmail-" version ".tar.xz"))
(sha256
- (base32 "0pvbknpimf38ws4gskad79wd1cvy62kcsjy65sm0rr83s6ii33fd"))))
+ (base32 "07cxr5137hvrk8jfgn4wd6sq9361c3d40w8krnjxm8fpmwf9qiba"))))
(build-system gnu-build-system)
(inputs
`(("openssl" ,openssl)))
@@ -1147,7 +1147,7 @@ security functionality including PGP, S/MIME, SSH, and SSL.")
(define-public mu
(package
(name "mu")
- (version "1.4.15")
+ (version "1.6.2")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/djcb/mu/releases/"
@@ -1155,7 +1155,7 @@ security functionality including PGP, S/MIME, SSH, and SSL.")
"mu-" version ".tar.xz"))
(sha256
(base32
- "0ailz0k5fdgq6gdl5m7jxy315b7qn5ckj6xwd49hsiq9vqblwlpp"))))
+ "0jlpkx1486ac8649jc2kxjklzsfaxj9qf2kji4kszy4axd0iwi1p"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
@@ -1164,7 +1164,7 @@ security functionality including PGP, S/MIME, SSH, and SSL.")
("tzdata" ,tzdata-for-tests))) ; for mu/test/test-mu-query.c
(inputs
`(("xapian" ,xapian)
- ("guile" ,guile-2.2)
+ ("guile" ,guile-3.0)
("glib" ,glib)
("gmime" ,gmime)))
(arguments
@@ -1182,29 +1182,20 @@ security functionality including PGP, S/MIME, SSH, and SSL.")
;; the lispdir anyway, so we have to modify "configure.ac".
(lambda _
(substitute* "configure"
- (("^ +lispdir=\"\\$\\{lispdir\\}/mu4e/\".*") "")
- ;; Use latest Guile
- (("guile-2.0") "guile-2.2"))
- (substitute* '("guile/Makefile.in"
- "guile/mu/Makefile.in")
- (("share/guile/site/2.0/") "share/guile/site/2.2/"))
- #t))
+ (("^ +lispdir=\"\\$\\{lispdir\\}/mu4e/\".*") ""))))
(add-after 'unpack 'patch-bin-sh-in-tests
(lambda _
- (substitute* '("guile/tests/test-mu-guile.c"
- "mu/test-mu-cmd.c"
- "mu/test-mu-cmd-cfind.c"
- "mu/test-mu-query.c"
- "mu/test-mu-threads.c")
- (("/bin/sh") (which "sh")))
- #t))
+ (substitute* '("guile/tests/test-mu-guile.cc"
+ "mu/test-mu-cmd.cc"
+ "mu/test-mu-cmd-cfind.cc"
+ "mu/test-mu-query.cc")
+ (("/bin/sh") (which "sh")))))
(add-before 'install 'fix-ffi
(lambda* (#:key outputs #:allow-other-keys)
(substitute* "guile/mu.scm"
(("\"libguile-mu\"")
(format #f "\"~a/lib/libguile-mu\""
- (assoc-ref outputs "out"))))
- #t))
+ (assoc-ref outputs "out"))))))
(add-before 'check 'check-tz-setup
(lambda* (#:key inputs #:allow-other-keys)
;; For mu/test/test-mu-query.c
@@ -1215,8 +1206,7 @@ security functionality including PGP, S/MIME, SSH, and SSL.")
(emacs-generate-autoloads
"mu4e"
(string-append (assoc-ref outputs "out")
- "/share/emacs/site-lisp"))
- #t)))))
+ "/share/emacs/site-lisp")))))))
(home-page "https://www.djcbsoftware.nl/code/mu/")
(synopsis "Quickly find emails")
(description
@@ -1634,7 +1624,7 @@ compresses it.")
(let* ((mailutils (assoc-ref inputs "mailutils"))
(inc (string-append mailutils "/bin/mu-mh/inc"))
(send-mail (assoc-ref inputs "sendmail"))
- (sendmail (string-append send-mail "/usr/sbin/sendmail")))
+ (sendmail (string-append send-mail "/sbin/sendmail")))
(substitute* "src/common/defs.h"
(("/usr/bin/mh/inc") inc)
(("/usr/sbin/sendmail") sendmail)))))
@@ -1873,7 +1863,7 @@ facilities for checking incoming mail.")
(package
(name "dovecot")
;; Also update dovecot-pigeonhole when updating to a new minor version.
- (version "2.3.15")
+ (version "2.3.16")
(source
(origin
(method url-fetch)
@@ -1881,7 +1871,7 @@ facilities for checking incoming mail.")
(version-major+minor version) "/"
"dovecot-" version ".tar.gz"))
(sha256
- (base32 "141manrh54cy8xizr7f8fsa3vdzc2ccfgdz87l9rjylm8mfxvfr1"))))
+ (base32 "04ngqv5mml5z0i4p7fkchp4xw2awy7x7mq2mim9frnav0m9iv9q3"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
@@ -1942,7 +1932,7 @@ It supports mbox/Maildir and its own dbox/mdbox formats.")
(let ((dovecot-version (version-major+minor (package-version dovecot))))
(package
(name "dovecot-pigeonhole")
- (version "0.5.15")
+ (version "0.5.16")
(source
(origin
(method url-fetch)
@@ -1950,7 +1940,7 @@ It supports mbox/Maildir and its own dbox/mdbox formats.")
"https://pigeonhole.dovecot.org/releases/" dovecot-version "/"
"dovecot-" dovecot-version "-pigeonhole-" version ".tar.gz"))
(sha256
- (base32 "1l2h0p8ddsl3ja2lnwk0mfqplqh8n0iw8k27awd3ak7prr88yjg1"))
+ (base32 "0f79qsiqnhaxn7mrrfcrnsjyv6357kzb7wa0chhfd69vwa06g8sw"))
(modules '((guix build utils)))
(snippet
'(begin
@@ -2881,6 +2871,13 @@ powerful user customization features.")
(substitute* "devtools/bin/Build"
(("SHELL=/bin/sh") (string-append "SHELL=" (which "sh"))))
#t))
+ (add-before 'build 'replace-/usr
+ (lambda _
+ (substitute*
+ '("devtools/OS/Linux"
+ "cf/ostype/mklinux.m4"
+ "cf/ostype/linux.m4")
+ (("/usr/sbin") "/sbin"))))
(replace 'configure
(lambda _
@@ -2892,6 +2889,11 @@ powerful user customization features.")
(with-output-to-file "devtools/Site/site.config.m4"
(lambda ()
(format #t "
+define(`confEBINDIR', `/sbin')
+define(`confSBINDIR', `/sbin')
+define(`confMBINDIR', `/sbin')
+define(`confUBINDIR', `/bin')
+define(`confLINKS', `')
define(`confCC', `gcc')
define(`confOPTIMIZE', `-g -O2')
define(`confLIBS', `-lresolv')
@@ -2910,13 +2912,21 @@ define(`confINST_DEP', `')
(add-before 'install 'pre-install
(lambda _
(let ((out (assoc-ref %outputs "out")))
- (mkdir-p (string-append out "/usr/bin"))
- (mkdir-p (string-append out "/usr/sbin"))
+ (mkdir-p (string-append out "/bin"))
+ (mkdir-p (string-append out "/sbin"))
(mkdir-p (string-append out "/etc/mail"))
(setenv "DESTDIR" out)
(with-directory-excursion "cf/cf"
(invoke "sh" "Build" "install-cf"))
- #t))))
+ #t)))
+ (add-after 'install 'post-install
+ (lambda _
+ ;; Make symbolic links manually, because build script uses
+ ;; absolute paths for them and ignores DESTDIR.
+ (for-each
+ (lambda (name)
+ (symlink "../sbin/sendmail" (string-append %output "/bin/" name)))
+ '("hoststat" "newaliases" "mailq" "purgestat")))))
;; There is no make check. There are some post installation tests, but those
;; require root privileges
#:tests? #f))
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index a594278341..a7931e6eeb 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -124,6 +124,7 @@
#:use-module (gnu packages m4)
#:use-module (gnu packages mpi)
#:use-module (gnu packages multiprecision)
+ #:use-module (gnu packages ncurses)
#:use-module (gnu packages netpbm)
#:use-module (gnu packages ocaml)
#:use-module (gnu packages onc-rpc)
@@ -141,6 +142,7 @@
#:use-module (gnu packages ruby)
#:use-module (gnu packages tbb)
#:use-module (gnu packages scheme)
+ #:use-module (gnu packages serialization)
#:use-module (gnu packages shells)
#:use-module (gnu packages sphinx)
#:use-module (gnu packages tcl)
@@ -176,6 +178,39 @@ beginners.")
(license license:gpl3+)
(home-page "https://www.gnu.org/software/aris/")))
+(define-public bitwise
+ (package
+ (name "bitwise")
+ (version "0.42")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/mellowcandle/bitwise"
+ "/releases/download/v" version
+ "/bitwise-v" version ".tar.gz"))
+ (sha256
+ (base32 "1lniw4bsb5qs5ybf018qllf95pzixb1q3lvybzl4k3xz8zpkrm6k"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("ncurses" ,ncurses)
+ ("readline" ,readline)))
+ (native-inputs
+ `(("cunit" ,cunit)
+ ("pkg-config" ,pkg-config)))
+ (synopsis "Terminal based bit manipulator in ncurses")
+ (description "Bitwise is a multi base interactive calculator supporting
+dynamic base conversion and bit manipulation. It's a handy tool for low level
+hackers, kernel developers and device drivers developers.
+
+Some of the features include:
+@itemize
+@item Interactive ncurses interface.
+@item Command line calculator supporting all bitwise operations.
+@item Individual bit manipulator.
+@item Bitwise operations such as NOT, OR, AND, XOR, and shifts.
+@end itemize")
+ (license license:gpl3+)
+ (home-page "https://github.com/mellowcandle/bitwise/")))
+
(define-public c-graph
(package
(name "c-graph")
@@ -4610,6 +4645,154 @@ specifications.")
revised simplex and the branch-and-bound methods.")
(license license:lgpl2.1+)))
+;; Private Trilinos package for dealii-openmpi (similar to
+;; trilinos-serial-xyce and trilinos-parallel-xyce).
+;; This version is the latest known to be compatible with deal.II [1].
+;; Since the latest version of Trilinos is not necessarily supported by
+;; deal.II, it may be worth keeping this package even if and when Trilinos
+;; gets packaged separately for Guix (unless various versions of Trilinos are
+;; packaged).
+;;
+;; An insightful source of information for building Trilinos for deal.II lies
+;; in the Trilinos package for candi [2], which is a source-based installer
+;; for deal.II and its dependencies.
+;;
+;; [1]: https://www.dealii.org/current/external-libs/trilinos.html
+;; [2]: https://github.com/dealii/candi/blob/master/deal.II-toolchain/packages/trilinos.package
+(define trilinos-for-dealii-openmpi
+ (package
+ (name "trilinos-for-dealii-openmpi")
+ (version "12.18.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/trilinos/Trilinos/")
+ (commit
+ (string-append "trilinos-release-"
+ (string-replace-substring version "." "-")))))
+ (file-name (git-file-name "trilinos" version))
+ (sha256
+ (base32 "0fnwlhzsh85qj38cq3igbs8nm1b2jdgr2z734sapmyyzsy21mkgp"))))
+ (build-system cmake-build-system)
+ (native-inputs
+ `(("gfortran" ,gfortran)
+ ;; Trilinos's repository contains several C-shell scripts, but adding
+ ;; tcsh to the native inputs does not result in the check phase running
+ ;; any more tests than without it (nor is tcsh required to build
+ ;; Trilinos).
+ ;; It seems that Trilinos has replaced its use of C-shell test scripts
+ ;; with CMake's testing facilities.
+ ;; For example,
+ ;; packages/zoltan/doc/Zoltan_html/dev_html/dev_test_script.html [1]
+ ;; states that Zoltan's C-shell test script
+ ;; packages/zoltan/test/test_zoltan has been obsoleted by the tests now
+ ;; performed through CMake.
+ ;;
+ ;; Perl is required for some Zoltan tests and Python 2 for one ML test.
+ ;;
+ ;; [1]: https://cs.sandia.gov/zoltan/dev_html/dev_test_script.html
+ ("perl" ,perl)
+ ("python" ,python-2)))
+ (inputs
+ `(("blas" ,openblas)
+ ("lapack" ,lapack)
+ ("mumps" ,mumps-openmpi)
+ ("scalapack" ,scalapack)))
+ (propagated-inputs
+ `(("mpi" ,openmpi)))
+ (arguments
+ `(#:build-type "Release"
+ #:configure-flags
+ `("-DBUILD_SHARED_LIBS=ON"
+ ;; Obtain the equivalent of RelWithDebInfo but with -O3 (the Release
+ ;; default) rather than -O2 (the RelWithDebInfo default), to conform
+ ;; to candi's trilinos.package's compilation flags, which are -g -O3.
+ "-DCMAKE_C_FLAGS=-g"
+ "-DCMAKE_CXX_FLAGS=-g"
+ "-DCMAKE_Fortran_FLAGS=-g"
+
+ ;; Trilinos libraries that deal.II can interface with.
+ "-DTrilinos_ENABLE_Amesos=ON"
+ "-DTrilinos_ENABLE_AztecOO=ON"
+ "-DTrilinos_ENABLE_Epetra=ON"
+ "-DTrilinos_ENABLE_EpetraExt=ON"
+ "-DTrilinos_ENABLE_Ifpack=ON"
+ "-DTrilinos_ENABLE_ML=ON"
+ "-DTrilinos_ENABLE_MueLu=ON"
+ "-DTrilinos_ENABLE_ROL=ON"
+ ;; Optional; required for deal.II's GridIn::read_exodusii, but
+ ;; depends on netcdf.
+ ;; Enable if and when someone needs it.
+ ;;"-DTrilinos_ENABLE_SEACAS=ON"
+ "-DTrilinos_ENABLE_Sacado=ON"
+ "-DTrilinos_ENABLE_Teuchos=ON"
+ "-DTrilinos_ENABLE_Tpetra=ON"
+ "-DTrilinos_ENABLE_Zoltan=ON"
+
+ ;; Third-party libraries (TPLs) that Trilinos can interface with.
+ "-DBLAS_LIBRARY_NAMES=openblas"
+ "-DTPL_ENABLE_MPI=ON"
+ "-DTPL_ENABLE_MUMPS=ON"
+ "-DTPL_ENABLE_SCALAPACK=ON"
+
+ ;; Enable the tests but not the examples (which are enabled by
+ ;; default when enabling tests).
+ ;; Although some examples are run as tests, they are otherwise
+ ;; unnecessary since this is a private package meant for
+ ;; dealii-openmpi.
+ ;; Besides, some MueLu and ROL examples require a lot of memory to
+ ;; compile.
+ ;;
+ ;; (For future reference, note that some ROL and SEACAS examples
+ ;; require removing gfortran from CPLUS_INCLUDE_PATH as in the
+ ;; dune-istl, dune-localfunctions and dune-alugrid packages.)
+ "-DTrilinos_ENABLE_TESTS=ON"
+ "-DTrilinos_ENABLE_EXAMPLES=OFF"
+ ;; MueLu tests require considerably more time and memory to compile
+ ;; than the rest of the tests.
+ "-DMueLu_ENABLE_TESTS=OFF"
+
+ ;; The following options were gleaned from candi's trilinos.package.
+ ;; (We do not enable the complex instantiations, which are anyway
+ ;; provided only as an option in trilinos.package, because they are
+ ;; costly in compilation time and memory usage, and disk space [1].)
+ ;;
+ ;; [1]: https://www.docs.trilinos.org/files/TrilinosBuildReference.html#enabling-float-and-complex-scalar-types
+ "-DTrilinos_ENABLE_Ifpack2=OFF"
+ "-DTeuchos_ENABLE_FLOAT=ON"
+ "-DTpetra_INST_INT_LONG=ON"
+ "-DTPL_ENABLE_Boost=OFF")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'configure 'fix-kokkos-config
+ (lambda _
+ ;; GNU Make 4.3 accidentally leaves the backslash preceding the
+ ;; number sign in strings containing a literal backslash–number
+ ;; sign (\#) [1, 2].
+ ;; This is still an issue in Trilinos 13.0.1, but should be fixed
+ ;; in the following version.
+ ;; (The latest versions of Kokkos incorporate the fix [2].)
+ ;;
+ ;; [1]: https://github.com/GEOSX/thirdPartyLibs/issues/136
+ ;; [2]: https://github.com/kokkos/kokkos/blob/3.4.00/Makefile.kokkos#L441
+ (substitute* "KokkosCore_config.h"
+ (("\\\\#") "#"))
+ #t))
+ (add-before 'check 'mpi-setup
+ ,%openmpi-setup))))
+ (home-page "https://trilinos.github.io/")
+ (synopsis "Algorithms for engineering and scientific problems")
+ (description
+ "The Trilinos Project is an effort to develop algorithms and enabling
+technologies within an object-oriented software framework for the solution of
+large-scale, complex multi-physics engineering and scientific problems.
+A unique design feature of Trilinos is its focus on packages.")
+ ;; The packages are variously licensed under more than just BSD-3 and
+ ;; LGPL-2.1+, but all the licenses are either BSD- or LGPL-compatible.
+ ;; See https://trilinos.github.io/license.html.
+ (license (list license:bsd-3 license:lgpl2.1+))))
+
(define-public dealii
(package
(name "dealii")
@@ -4705,6 +4888,7 @@ in finite element programs.")
("p4est" ,p4est-openmpi)
("petsc" ,petsc-openmpi)
("slepc" ,slepc-openmpi)
+ ("trilinos" ,trilinos-for-dealii-openmpi)
,@(alist-delete "hdf5" (package-propagated-inputs dealii))))
(arguments
(substitute-keyword-arguments (package-arguments dealii)
@@ -6735,3 +6919,103 @@ when an application performs repeated divisions by the same divisor.")
"This header-only C++ library implements conversion to and from
half-precision floating point formats.")
(license license:expat))))
+
+(define-public optizelle
+ (let ((commit "ed4160b5287518448caeb34789d92dc6a0b7e2cc"))
+ (package
+ (name "optizelle")
+ (version (git-version "1.3.0" "0" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/OptimoJoe/Optizelle")
+ (commit commit)))
+ (file-name (git-file-name "optizelle" commit))
+ (sha256
+ (base32
+ "0rjrs5sdmd33a9f4xm8an7p0953aa0bxsmr4hs3ss1aad9k181vq"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Reduce the stopping tolerance in one test so that the
+ ;; convergence check returns the correct stopping
+ ;; condition.
+ (substitute*
+ "src/unit/linear_algebra/tcg_loss_of_orthogonality.cpp"
+ (("1e-13") "5e-14"))
+ ;; Skip one set of python tests. See
+ ;; https://github.com/OptimoJoe/Optizelle/issues/2.
+ (substitute*
+ "src/examples/inequality_scaling/CMakeLists.txt"
+ (("add_unit(.*)\\$\\{interfaces\\}(.*)$" all middle end)
+ (string-append "add_unit" middle "\"cpp\"" end)))
+ ;; Install the licence for Optizelle, without also
+ ;; including the licences for the dependencies.
+ (substitute* "licenses/CMakeLists.txt"
+ (("file.*package.*$" all)
+ (string-append "# " all))
+ ((".*[^l].[.]txt\\)\n") "")
+ (("add_license.*\"\n") ""))
+ #t))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:imported-modules ((guix build python-build-system)
+ ,@%cmake-build-system-modules)
+ #:modules (((guix build python-build-system) #:select
+ (python-version))
+ (guix build cmake-build-system)
+ (guix build utils))
+ #:configure-flags `("-DCMAKE_CXX_FLAGS:STRING=-pthread"
+ "-DENABLE_CPP_UNIT:BOOL=ON"
+ "-DENABLE_CPP_EXAMPLES:BOOL=ON"
+ "-DENABLE_PYTHON:BOOL=ON"
+ "-DENABLE_PYTHON_UNIT:BOOL=ON"
+ "-DENABLE_PYTHON_EXAMPLES:BOOL=ON"
+ ,(string-append "-DBLAS_LIBRARY:FILEPATH="
+ (assoc-ref %build-inputs
+ "blas/lapack")
+ "/lib/libopenblas.so")
+ ,(string-append "-DLAPACK_LIBRARY:FILEPATH="
+ (assoc-ref %build-inputs
+ "fortran:lib")
+ "/lib/libgfortran.so;"
+ (assoc-ref %build-inputs
+ "fortran:lib")
+ "/lib/libquadmath.so"))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'set-numpy-path ; Needed for the unit tests.
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let* ((pyver (python-version (assoc-ref inputs "python")))
+ (npdir (string-append (assoc-ref inputs "numpy")
+ "/lib/python" pyver
+ "/site-packages")))
+ (substitute* "src/cmake/Modules/Optizelle.cmake"
+ (("PYTHONPATH=")
+ (string-append "LD_LIBRARY_PATH=$ENV{LIBRARY_PATH};"
+ "PYTHONPATH=" npdir ":"))))))
+ (delete 'install-license-files)))) ; LICENSE.txt is installed.
+ (inputs
+ `(("blas/lapack" ,openblas)
+ ("fortran:lib" ,gfortran "lib")
+ ("jsoncpp" ,jsoncpp)
+ ("numpy" ,python-numpy)
+ ("python" ,python)))
+ (native-inputs
+ `(("fortran" ,gfortran)
+ ("pkg-config" ,pkg-config)))
+ (home-page "https://www.optimojoe.com/products/optizelle/")
+ (synopsis "Mathematical optimization library")
+ (description "@code{optizelle} is a software library designed to
+solve nonlinear optimization problems. Four types of problem are
+considered: unconstrained, equality constrained, inequality
+constrained and constrained. Constraints may be applied as values of
+functions or sets of partial differential equations (PDEs).
+
+Solution algorithms such as the preconditioned nonlinear conjugate
+gradient method, sequential quadratic programming (SQP) and the
+primal-dual interior-point method are made available. Interfaces are
+provided for applications written in C++ and Python. Parallel
+computation is supported via MPI.")
+ (license license:bsd-2))))
diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm
index d59a133535..a2f1c0e6e8 100644
--- a/gnu/packages/mp3.scm
+++ b/gnu/packages/mp3.scm
@@ -2,7 +2,7 @@
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014, 2015, 2017, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
;;; Copyright © 2017, 2019, 2020 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -372,7 +372,7 @@ This package contains the binary.")
(define-public mpg123
(package
(name "mpg123")
- (version "1.26.5")
+ (version "1.28.2")
(source
(origin
(method url-fetch)
@@ -382,7 +382,7 @@ This package contains the binary.")
"https://www.mpg123.org/download/mpg123-"
version ".tar.bz2")))
(sha256
- (base32 "01pgcqjbbi2r7nlg5118bkivl0gkv0hq0cw7v4vpxgimv7h9fajh"))))
+ (base32 "006v44nz4nkpgvxz1k2vbbrfpa2m47hyydscs0wf3iysiyvd9vvy"))))
(build-system gnu-build-system)
(arguments '(#:configure-flags '("--with-default-audio=pulse")))
(native-inputs
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index f115f48d03..4e3edd6e58 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -105,7 +105,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
(define-public mpd
(package
(name "mpd")
- (version "0.22.9")
+ (version "0.22.10")
(source (origin
(method url-fetch)
(uri
@@ -114,7 +114,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
"/mpd-" version ".tar.xz"))
(sha256
(base32
- "0r5w282klk3d9pgsjjr8lnc77cbsxqvvkx39lpa0n962jwr40dzr"))))
+ "0576z57rgwmnm5djd7rwbc93aikji0n6b3lx1553v74rx4sjbj07"))))
(build-system meson-build-system)
(arguments
`(#:configure-flags '("-Ddocumentation=enabled")))
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 7012418d83..2c43f70aff 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -40,6 +40,7 @@
;;; Copyright © 2021 Frank Pursel <frank.pursel@gmail.com>
;;; Copyright © 2021 Rovanion Luckey <rovanion.luckey@gmail.com>
;;; Copyright © 2021 Justin Veilleux <terramorpha@cock.li>
+;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -177,18 +178,19 @@
(define-public audacious
(package
(name "audacious")
- (version "4.0.5")
+ (version "4.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://distfiles.audacious-media-player.org/"
"audacious-" version ".tar.bz2"))
(sha256
- (base32 "028zjgz0p7ys15lk2a30m5zcv9xrx3ga50wjsh4m4zxilgkakbji"))))
+ (base32 "0p734psjjvjcmla2hg5h6a9v1prvy63jj9xm2g2ngs49jy7qan0z"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
- (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))
+ (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")
+ "--disable-gtk")
#:tests? #f ; no check target
#:phases
(modify-phases %standard-phases
@@ -228,7 +230,7 @@
(uri (string-append "https://distfiles.audacious-media-player.org/"
"audacious-plugins-" version ".tar.bz2"))
(sha256
- (base32 "0ny5w1agr9jaz5w3wyyxf1ygmzmd1sivaf97lcm4z4w6529520lz"))))
+ (base32 "0k0xnqmxi5lna034i2cnzvfzrykxmv4fbs1nkrc9sd2ma1igrmns"))))
("gettext" ,gettext-minimal)
("glib:bin" ,glib "bin") ; for gdbus-codegen
("pkg-config" ,pkg-config)))
@@ -248,9 +250,9 @@
("libcddb" ,libcddb)
("libcdio-paranoia" ,libcdio-paranoia)
("libcue" ,libcue)
- ("libmodplug" ,libmodplug)
("libnotify" ,libnotify)
("libogg" ,libogg)
+ ("libopenmpt" ,libopenmpt)
("libsamplerate" ,libsamplerate)
("libsndfile" ,libsndfile)
("libvorbis" ,libvorbis)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 1166a6b205..db01771fc7 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -13,7 +13,7 @@
;;; Copyright © 2016 Benz Schenk <benz.schenk@uzh.ch>
;;; Copyright © 2016, 2017 Pjotr Prins <pjotr.guix@thebird.nl>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2017, 2020 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2017, 2020, 2021 Leo Famulari <leo@famulari.name>
;;; Copyright © 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2017, 2019 Gábor Boskovits <boskovits@gmail.com>
@@ -3826,22 +3826,31 @@ some traces for unprivileged users.")
license:lgpl2.1+)))) ;for the libsupp subdirectory
(define-public vde2
+ (let ((commit "8c65ebc464b2f986d5f1f4e6ae829ef4480c9d5a")
+ (revision "0"))
(package
(name "vde2")
- (version "2.3.2")
+ (version (git-version "2.3.2" revision commit))
(source
(origin
- (method url-fetch)
- (uri "mirror://sourceforge/vde/vde2/2.3.2/vde2-2.3.2.tar.gz")
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/virtualsquare/vde-2")
+ (commit commit)))
+ (file-name (git-file-name name version))
(sha256
- (base32 "14xga0ib6p1wrv3hkl4sa89yzjxv7f1vfqaxsch87j6scdm59pr2"))))
+ (base32 "0l5xf71sv9zm5zw0wg8xgip58c0wh8zck2bazyc2a8gb67gc3s8y"))))
(build-system gnu-build-system)
(arguments
`(#:parallel-build? #f)) ; Build fails if #t.
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)))
(inputs
`(("python" ,python)
("libpcap" ,libpcap)
- ("openssl" ,openssl-1.0))) ; Build fails with 1.1.
+ ("wolfssl" ,wolfssl)))
(home-page "https://github.com/virtualsquare/vde-2")
(synopsis "Virtual Distributed Ethernet")
(description "VDE is a set of programs to provide virtual software-defined
@@ -3853,7 +3862,7 @@ cables.")
license:lgpl2.1 ; libvdeplug
(license:non-copyleft ; slirpvde
"file://COPYING.slirpvde"
- "See COPYING.slirpvde in the distribution.")))))
+ "See COPYING.slirpvde in the distribution."))))))
(define-public haproxy
(package
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 73ff9abb7b..183f88dd01 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -4479,12 +4479,7 @@ than the first one.")
`(#:phases
(modify-phases %standard-phases
(add-before 'build 'make-writable
- (lambda _
- (for-each
- (lambda (file)
- (chmod file #o644))
- (find-files "." "."))
- #t)))))
+ (lambda _ (for-each make-file-writable (find-files "." ".")))))))
(inputs
`(("ocaml-easy-format" ,ocaml-easy-format)))
(native-inputs
@@ -6543,7 +6538,7 @@ combinators.")
(define-public ocaml-bisect-ppx
(package
(name "ocaml-bisect-ppx")
- (version "1.4.2")
+ (version "2.6.1")
(source
(origin
(method git-fetch)
@@ -6553,24 +6548,14 @@ combinators.")
(file-name (git-file-name name version))
(sha256
(base32
- "0900vli5kw7s5kdam0n4cqsfsfqb7mdb3azn3i55595gilg1vyn8"))))
+ "1knglw1b2kjr9jnd8cpfzmm581abxxdcx9l3cd2balg6gnac7qk1"))))
(build-system dune-build-system)
(propagated-inputs
- `(("ocaml-migrate-parsetree" ,ocaml-migrate-parsetree-1)
- ("ocaml-ppx-tools-versioned" ,ocaml-ppx-tools-versioned)
- ("ocaml-ounit" ,ocaml-ounit)))
+ `(("ocaml-ppxlib" ,ocaml-ppxlib)
+ ("ocaml-cmdliner" ,ocaml-cmdliner)))
(arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'build 'fix-deprecated
- (lambda _
- ;; Fixed upstream in 22dd1ad9a0c9629f60599c22d82c6488394d6d32, but
- ;; not in a release yet.
- (substitute* "src/ppx/instrument.ml"
- (("module Ast = Ast_405")
- "module Ast = Migrate_parsetree.Ast_405
-module Ast_405 = Ast"))
- #t)))))
+ ;; Tests require ocamlformat which would lead to circular dependencies
+ '(#:tests? #f))
(home-page "https://github.com/aantron/bisect_ppx")
(synopsis "Code coverage for OCaml")
(description "Bisect_ppx helps you test thoroughly. It is a small
@@ -6975,6 +6960,196 @@ provides support to program with time varying values: declarative events and
client chooses the concrete timeline.")
(license license:lgpl2.1+)))
+(define-public ocaml-uucd
+ (package
+ (name "ocaml-uucd")
+ (version "13.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://erratique.ch/software/uucd/releases/"
+ "uucd-" version ".tbz"))
+ (sha256
+ (base32
+ "1fg77hg4ibidkv1x8hhzl8z3rzmyymn8m4i35jrdibb8adigi8v2"))))
+ (build-system ocaml-build-system)
+ (arguments
+ '(#:build-flags '("build" "--tests" "true")
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure))))
+ (propagated-inputs
+ `(("ocaml-xmlm" ,ocaml-xmlm)))
+ (native-inputs
+ `(("opam" ,opam)
+ ("ocaml-findlib" ,ocaml-findlib)
+ ("ocamlbuild" ,ocamlbuild)
+ ("ocaml-topkg" ,ocaml-topkg)))
+ (home-page "https://erratique.ch/software/uucd")
+ (synopsis "Unicode character database decoder for OCaml")
+ (description "Uucd is an OCaml module to decode the data of the Unicode
+character database from its XML representation. It provides high-level (but
+not necessarily efficient) access to the data so that efficient
+representations can be extracted.")
+ (license license:isc)))
+
+(define-public ocaml-uucp
+ (package
+ (name "ocaml-uucp")
+ (version "13.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://erratique.ch/software/uucp/releases/"
+ "uucp-" version ".tbz"))
+ (sha256
+ (base32
+ "19kf8ypxaakacgg1dwwfzkc2zicaj88cmw11fw2z7zl24dn4gyiq"))))
+ (build-system ocaml-build-system)
+ (arguments
+ '(#:build-flags '("build" "--tests" "true")
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure))))
+ (native-inputs
+ `(("opam" ,opam)
+ ("ocaml-findlib" ,ocaml-findlib)
+ ("ocamlbuild" ,ocamlbuild)
+ ("ocaml-topkg" ,ocaml-topkg)
+ ("ocaml-uucd" ,ocaml-uucd)
+ ("ocaml-uunf" ,ocaml-uunf)
+ ("ocaml-uutf" ,ocaml-uutf)))
+ (home-page "https://erratique.ch/software/uucp")
+ (synopsis "Unicode character properties for OCaml")
+ (description "Uucp is an OCaml library providing efficient access to a
+selection of character properties of the Unicode character database.")
+ (license license:isc)))
+
+(define-public ocaml-uuseg
+ (package
+ (name "ocaml-uuseg")
+ (version "13.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://erratique.ch/software/uuseg/releases/"
+ "uuseg-" version ".tbz"))
+ (sha256
+ (base32
+ "1a635j8ra6p27g1ivfln3387lhwqmf6vq4r6bn7b6n1qsqyi1rls"))))
+ (build-system ocaml-build-system)
+ (arguments
+ '(#:build-flags '("build" "--tests" "true")
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure))))
+ (propagated-inputs
+ `(("ocaml-uucp" ,ocaml-uucp)
+ ("ocaml-uutf" ,ocaml-uutf)
+ ("ocaml-cmdliner" ,ocaml-cmdliner)))
+ (native-inputs
+ `(("opam" ,opam)
+ ("ocaml-findlib" ,ocaml-findlib)
+ ("ocamlbuild" ,ocamlbuild)
+ ("ocaml-topkg" ,ocaml-topkg)))
+ (home-page "https://erratique.ch/software/uuseg")
+ (synopsis "Unicode text segmentation for OCaml")
+ (description "Uuseg is an OCaml library for segmenting Unicode text. It
+implements the locale independent Unicode text segmentation algorithms to
+detect grapheme cluster, word and sentence boundaries and the Unicode line
+breaking algorithm to detect line break opportunities.
+
+The library is independent from any IO mechanism or Unicode text data
+structure and it can process text without a complete in-memory
+representation.")
+ (license license:isc)))
+
+(define-public ocaml-fix
+ (package
+ (name "ocaml-fix")
+ (version "20201120")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.inria.fr/fpottier/fix")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1j40mg1gy03c0djzx3nzmpvnl984s14n04zwcmp2xnlidq48kvs4"))))
+ (build-system dune-build-system)
+ (arguments
+ ;; No tests.
+ '(#:tests? #f))
+ (home-page "https://gitlab.inria.fr/fpottier/fix")
+ (synopsis "Facilities for memoization and fixed points")
+ (description "This package provides helpers with various constructions
+that involve memoization and recursion.")
+ (license license:lgpl2.0)))
+
+(define-public ocaml-dune-build-info
+ (package
+ (inherit dune)
+ (name "ocaml-dune-build-info")
+ (build-system dune-build-system)
+ (arguments
+ '(#:package "dune-build-info"
+ ;; No separate test suite from dune.
+ #:tests? #f))
+ (propagated-inputs
+ `(("ocaml-odoc" ,ocaml-odoc)))
+ (synopsis "Embed build informations inside executable")
+ (description "This package allows one to access information about how the
+executable was built, such as the version of the project at which it was built
+or the list of statically linked libraries with their versions. It supports
+reporting the version from the version control system during development to
+get an precise reference of when the executable was built.")))
+
+(define-public ocamlformat
+ (package
+ (name "ocamlformat")
+ (version "0.18.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ocaml-ppx/ocamlformat")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0n6363km8xr81pvyk453n6h2mb0256c5yxw3p1li4dn83f3lwxr1"))))
+ (build-system dune-build-system)
+ (arguments
+ '(#:package "ocamlformat"
+ ;; FIXME: The expected format is slightly different than what the
+ ;; produced format is for test/cli/stdin.t
+ #:tests? #f))
+ (propagated-inputs
+ `(("ocaml-version" ,ocaml-version)
+ ("ocaml-base" ,ocaml-base)
+ ("ocaml-cmdliner" ,ocaml-cmdliner)
+ ("ocaml-dune-build-info" ,ocaml-dune-build-info)
+ ("ocaml-fix" ,ocaml-fix)
+ ("ocaml-fpath" ,ocaml-fpath)
+ ("ocaml-menhir" ,ocaml-menhir)
+ ("ocaml-odoc" ,ocaml-odoc)
+ ("ocaml-ppxlib" ,ocaml-ppxlib)
+ ("ocaml-re" ,ocaml-re)
+ ("ocaml-stdio" ,ocaml-stdio)
+ ("ocaml-uuseg" ,ocaml-uuseg)
+ ("ocaml-uutf" ,ocaml-uutf)))
+ (native-inputs
+ `(("ocaml-alcotest" ,ocaml-alcotest)
+ ("ocaml-ocp-indent" ,ocaml-ocp-indent)
+ ("ocaml-bisect-ppx" ,ocaml-bisect-ppx)))
+ (home-page "https://github.com/ocaml-ppx/ocamlformat")
+ (synopsis "Auto-formatter for OCaml code")
+ (description "OCamlFormat is a tool to automatically format OCaml code in
+a uniform style.")
+ (license license:expat)))
+
(define-public ocaml-bigstringaf
(package
(name "ocaml-bigstringaf")
diff --git a/gnu/packages/patches/instead-use-games-path.patch b/gnu/packages/patches/instead-use-games-path.patch
new file mode 100644
index 0000000000..783fd21add
--- /dev/null
+++ b/gnu/packages/patches/instead-use-games-path.patch
@@ -0,0 +1,32 @@
+From 8b350daa847dd8e131d9e6b5b4434ce68a7903d0 Mon Sep 17 00:00:00 2001
+From: Dmitry Polyakov <polyakov@liltechdude.xyz>
+Date: Wed, 4 Aug 2021 15:46:33 +0500
+Subject: [PATCH] Add support for INSTEAD_GAMES_PATH
+
+In some setups, users might prefer to determine on their own the path in
+which games are located. This patch enables them to do so by setting
+the “INSTEAD_GAMES_PATH” environmnent variable.
+---
+ src/main.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/src/main.c b/src/main.c
+index ba0ada1d..b05497b8 100644
+--- a/src/main.c
++++ b/src/main.c
+@@ -394,6 +394,12 @@ int instead_main(int argc, char *argv[])
+ setdir(game_cwd);
+ profile_load(NULL);
+
++ char *gamespath_env = NULL;
++
++ if (gamespath_env = getenv("INSTEAD_GAMES_PATH"), gamespath_env != NULL) {
++ games_sw = strdup(gamespath_env);
++ }
++
+ for (i = 1; i < argc; i++) {
+ if (lua_sw) /* during load profile */
+ break;
+--
+2.32.0
+
diff --git a/gnu/packages/patches/llvm-roc-3.0.0-add_libraries.patch b/gnu/packages/patches/llvm-roc-3.0.0-add_libraries.patch
new file mode 100644
index 0000000000..f6bc639f33
--- /dev/null
+++ b/gnu/packages/patches/llvm-roc-3.0.0-add_libraries.patch
@@ -0,0 +1,22 @@
+Taken from https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-devel/llvm-roc/files
+
+diff -Naur a/clang/lib/Basic/CMakeLists.txt b/clang/lib/Basic/CMakeLists.txt
+--- a/clang/lib/Basic/CMakeLists.txt 2019-12-28 07:42:49.119055933 +0100
++++ b/clang/lib/Basic/CMakeLists.txt 2019-12-28 07:42:13.265056070 +0100
+@@ -2,6 +2,7 @@
+ Core
+ MC
+ Support
++ Option
+ )
+
+ find_first_existing_vc_file("${LLVM_MAIN_SRC_DIR}" llvm_vc)
+diff -Naur a/clang/lib/Driver/CMakeLists.txt b/clang/lib/Driver/CMakeLists.txt
+--- a/clang/lib/Driver/CMakeLists.txt 2019-12-28 07:41:39.521056199 +0100
++++ b/clang/lib/Driver/CMakeLists.txt 2019-12-28 07:40:23.998056487 +0100
+@@ -79,4 +79,5 @@
+ LINK_LIBS
+ clangBasic
+ ${system_libs}
++ pthread
+ )
diff --git a/gnu/packages/patches/llvm-roc-4.0.0-remove-isystem-usr-include.patch b/gnu/packages/patches/llvm-roc-4.0.0-remove-isystem-usr-include.patch
new file mode 100644
index 0000000000..f14ec4ac0d
--- /dev/null
+++ b/gnu/packages/patches/llvm-roc-4.0.0-remove-isystem-usr-include.patch
@@ -0,0 +1,29 @@
+Author: Wilfried (justxi) Holzke
+
+Adopted from https://github.com/justxi/rocm/blob/master/sys-devel/llvm-roc/files/llvm-roc-4.0.0-remove-isystem-usr-include.patch
+
+Index: llvm-project-rocm-4.0.0/clang/lib/Driver/ToolChains/AMDGPU.cpp
+===================================================================
+--- llvm-project-rocm-4.0.0.orig/clang/lib/Driver/ToolChains/AMDGPU.cpp
++++ llvm-project-rocm-4.0.0/clang/lib/Driver/ToolChains/AMDGPU.cpp
+@@ -326,11 +326,6 @@ void RocmInstallationDetector::AddHIPInc
+ //
+ // ROCm 3.5 does not fully support the wrapper headers. Therefore it needs
+ // a workaround.
+- SmallString<128> P(D.ResourceDir);
+- if (UsesRuntimeWrapper)
+- llvm::sys::path::append(P, "include", "cuda_wrappers");
+- CC1Args.push_back("-internal-isystem");
+- CC1Args.push_back(DriverArgs.MakeArgString(P));
+ }
+
+ if (DriverArgs.hasArg(options::OPT_nogpuinc))
+@@ -341,8 +336,6 @@ void RocmInstallationDetector::AddHIPInc
+ return;
+ }
+
+- CC1Args.push_back("-internal-isystem");
+- CC1Args.push_back(DriverArgs.MakeArgString(getIncludePath()));
+ if (UsesRuntimeWrapper)
+ CC1Args.append({"-include", "__clang_hip_runtime_wrapper.h"});
+ }
diff --git a/gnu/packages/patches/llvm-roc-4.2.0-add_Object.patch b/gnu/packages/patches/llvm-roc-4.2.0-add_Object.patch
new file mode 100644
index 0000000000..f1762a558b
--- /dev/null
+++ b/gnu/packages/patches/llvm-roc-4.2.0-add_Object.patch
@@ -0,0 +1,13 @@
+Taken from https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-devel/llvm-roc/files
+
+diff --color -uprN orig/lib/Target/AMDGPU/Disassembler/CMakeLists.txt llvm/lib/Target/AMDGPU/Disassembler/CMakeLists.txt
+--- a/llvm/lib/Target/AMDGPU/Disassembler/CMakeLists.txt 2021-06-14 11:57:54.222796911 +0800
++++ b/llvm/lib/Target/AMDGPU/Disassembler/CMakeLists.txt 2021-06-14 11:58:35.206796875 +0800
+@@ -11,6 +11,7 @@ add_llvm_component_library(LLVMAMDGPUDis
+ MC
+ MCDisassembler
+ Support
++ Object
+
+ ADD_TO_COMPONENT
+ AMDGPU
diff --git a/gnu/packages/patches/onnx-optimizer-system-library.patch b/gnu/packages/patches/onnx-optimizer-system-library.patch
new file mode 100644
index 0000000000..5c592597e0
--- /dev/null
+++ b/gnu/packages/patches/onnx-optimizer-system-library.patch
@@ -0,0 +1,53 @@
+Arrange so that onnx-optimizer (1) uses our own ONNX build,
+(2) builds as a shared library, and (3) links against the shared
+libraries of ONNX.
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index c2e48b35..8af51076 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -9,8 +9,6 @@ endif(NOT MSVC)
+
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+
+-set(ONNX_ROOT ${PROJECT_SOURCE_DIR}/third_party/onnx)
+-add_subdirectory(${ONNX_ROOT})
+
+ file(READ "${PROJECT_SOURCE_DIR}/VERSION_NUMBER" ONNX_OPTIMIZER_VERSION)
+ string(STRIP "${ONNX_OPTIMIZER_VERSION}" ONNX_OPTIMIZER_VERSION)
+@@ -21,14 +19,18 @@ file(GLOB_RECURSE onnx_opt_srcs "onnxoptimizer/*.cc"
+ list(REMOVE_ITEM onnx_opt_srcs "${PROJECT_SOURCE_DIR}/onnxoptimizer/cpp2py_export.cc")
+
+ add_library(onnx_optimizer ${onnx_opt_srcs})
+-target_link_libraries(onnx_optimizer PUBLIC onnx)
++target_link_libraries(onnx_optimizer PUBLIC onnx onnx_proto)
+ target_include_directories(onnx_optimizer PUBLIC
+ $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
+ $<INSTALL_INTERFACE:include>
+ )
+
++# These cpp macros must be defined so the ONNX headers behave
++# correctly.
++set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DONNX_ML=1 -DONNX_NAMESPACE=onnx")
++
+ add_executable(onnx_optimizer_exec examples/onnx_optimizer_exec.cpp)
+-target_link_libraries(onnx_optimizer_exec onnx_optimizer)
++target_link_libraries(onnx_optimizer_exec onnx_optimizer protobuf)
+
+ if(BUILD_ONNX_PYTHON)
+ if("${PY_EXT_SUFFIX}" STREQUAL "")
+@@ -79,11 +81,10 @@ if(BUILD_ONNX_PYTHON)
+ PRIVATE $<TARGET_OBJECTS:onnx_optimizer>)
+ else()
+ # Assume everything else is like gcc
+- target_link_libraries(onnx_opt_cpp2py_export
+- PRIVATE "-Wl,--whole-archive" $<TARGET_FILE:onnx_optimizer>
+- "-Wl,--no-whole-archive")
++ target_link_libraries(onnx_opt_cpp2py_export PRIVATE onnx_optimizer)
+ set_target_properties(onnx_opt_cpp2py_export
+- PROPERTIES LINK_FLAGS "-Wl,--exclude-libs,ALL")
++ PROPERTIES LINK_FLAGS
++ "-Wl,-rpath=${CMAKE_INSTALL_PREFIX}/lib")
+ endif()
+
+ target_link_libraries(onnx_opt_cpp2py_export PRIVATE onnx_optimizer)
diff --git a/gnu/packages/patches/pypy3-7.3.1-fix-tests.patch b/gnu/packages/patches/pypy3-7.3.1-fix-tests.patch
deleted file mode 100644
index 464aad967f..0000000000
--- a/gnu/packages/patches/pypy3-7.3.1-fix-tests.patch
+++ /dev/null
@@ -1,278 +0,0 @@
-Fix a few testcases. Adapted from python-3-fix-tests.patch.
-
-diff -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/ctypes/test/test_callbacks.py pypy3.6-v7.3.1-src/lib-python/3/ctypes/test/test_callbacks.py
---- pypy3.6-v7.3.1-src.orig/lib-python/3/ctypes/test/test_callbacks.py 1970-01-01 01:00:01.000000000 +0100
-+++ pypy3.6-v7.3.1-src/lib-python/3/ctypes/test/test_callbacks.py 2020-05-21 14:19:14.827288853 +0200
-@@ -4,6 +4,7 @@
- from ctypes import *
- from ctypes.test import need_symbol
- import _ctypes_test
-+import platform
-
- class Callbacks(unittest.TestCase):
- functype = CFUNCTYPE
-@@ -178,6 +179,8 @@
-
- self.assertLess(diff, 0.01, "%s not less than 0.01" % diff)
-
-+ @unittest.skipIf(platform.machine() in ['mips64'],
-+ "This test fails on this platform")
- def test_issue_8959_a(self):
- from ctypes.util import find_library
- libc_path = find_library("c")
-diff -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/ctypes/test/test_libc.py pypy3.6-v7.3.1-src/lib-python/3/ctypes/test/test_libc.py
---- pypy3.6-v7.3.1-src.orig/lib-python/3/ctypes/test/test_libc.py 1970-01-01 01:00:01.000000000 +0100
-+++ pypy3.6-v7.3.1-src/lib-python/3/ctypes/test/test_libc.py 2020-05-21 14:19:14.827288853 +0200
-@@ -2,6 +2,7 @@
-
- from ctypes import *
- import _ctypes_test
-+import platform
-
- lib = CDLL(_ctypes_test.__file__)
-
-@@ -17,6 +18,8 @@
- import math
- self.assertEqual(lib.my_sqrt(2.0), math.sqrt(2.0))
-
-+ @unittest.skipIf(platform.machine() in ['mips64'],
-+ "This test fails on this platform")
- def test_qsort(self):
- comparefunc = CFUNCTYPE(c_int, POINTER(c_char), POINTER(c_char))
- lib.my_qsort.argtypes = c_void_p, c_size_t, c_size_t, comparefunc
-diff -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/distutils/tests/test_archive_util.py pypy3.6-v7.3.1-src/lib-python/3/distutils/tests/test_archive_util.py
---- pypy3.6-v7.3.1-src.orig/lib-python/3/distutils/tests/test_archive_util.py 1970-01-01 01:00:01.000000000 +0100
-+++ pypy3.6-v7.3.1-src/lib-python/3/distutils/tests/test_archive_util.py 2020-05-21 14:19:14.827288853 +0200
-@@ -333,6 +333,7 @@
- self.assertEqual(os.path.basename(res), 'archive.tar.xz')
- self.assertEqual(self._tarinfo(res), self._created_files)
-
-+ @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
- def test_make_archive_owner_group(self):
- # testing make_archive with owner and group, with various combinations
- # this works even if there's not gid/uid support
-@@ -362,6 +363,7 @@
-
- @unittest.skipUnless(ZLIB_SUPPORT, "Requires zlib")
- @unittest.skipUnless(UID_GID_SUPPORT, "Requires grp and pwd support")
-+ @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
- def test_tarfile_root_owner(self):
- tmpdir = self._create_files()
- base_name = os.path.join(self.mkdtemp(), 'archive')
-diff -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/distutils/tests/test_sdist.py pypy3.6-v7.3.1-src/lib-python/3/distutils/tests/test_sdist.py
---- pypy3.6-v7.3.1-src.orig/lib-python/3/distutils/tests/test_sdist.py 1970-01-01 01:00:01.000000000 +0100
-+++ pypy3.6-v7.3.1-src/lib-python/3/distutils/tests/test_sdist.py 2020-05-21 14:19:14.827288853 +0200
-@@ -443,6 +443,7 @@
- "The tar command is not found")
- @unittest.skipIf(find_executable('gzip') is None,
- "The gzip command is not found")
-+ @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
- def test_make_distribution_owner_group(self):
- # now building a sdist
- dist, cmd = self.get_cmd()
-diff -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_asyncio/test_base_events.py pypy3.6-v7.3.1-src/lib-python/3/test/test_asyncio/test_base_events.py
---- pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_asyncio/test_base_events.py 1970-01-01 01:00:01.000000000 +0100
-+++ pypy3.6-v7.3.1-src/lib-python/3/test/test_asyncio/test_base_events.py 2020-05-21 14:19:14.827288853 +0200
-@@ -1296,6 +1296,8 @@
- self._test_create_connection_ip_addr(m_socket, False)
-
- @patch_socket
-+ @unittest.skipUnless(support.is_resource_enabled('network'),
-+ 'network is not enabled')
- def test_create_connection_service_name(self, m_socket):
- m_socket.getaddrinfo = socket.getaddrinfo
- sock = m_socket.socket.return_value
-diff -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_generators.py pypy3.6-v7.3.1-src/lib-python/3/test/test_generators.py
---- pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_generators.py 1970-01-01 01:00:01.000000000 +0100
-+++ pypy3.6-v7.3.1-src/lib-python/3/test/test_generators.py 2020-05-21 14:19:14.827288853 +0200
-@@ -35,6 +35,7 @@
- else:
- return "FAILED"
-
-+ @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment')
- def test_raise_and_yield_from(self):
- gen = self.generator1()
- gen.send(None)
-diff -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/_test_multiprocessing.py pypy3.6-v7.3.1-src/lib-python/3/test/_test_multiprocessing.py
---- pypy3.6-v7.3.1-src.orig/lib-python/3/test/_test_multiprocessing.py 1970-01-01 01:00:01.000000000 +0100
-+++ pypy3.6-v7.3.1-src/lib-python/3/test/_test_multiprocessing.py 2020-05-21 14:19:14.827288853 +0200
-@@ -1212,6 +1212,7 @@
- if pid is not None:
- os.kill(pid, signal.SIGINT)
-
-+ @unittest.skipIf(True, "This fails for unknown reasons on Guix")
- def test_wait_result(self):
- if isinstance(self, ProcessesMixin) and sys.platform != 'win32':
- pid = os.getpid()
-diff -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_normalization.py pypy3.6-v7.3.1-src/lib-python/3/test/test_normalization.py
---- pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_normalization.py 1970-01-01 01:00:01.000000000 +0100
-+++ pypy3.6-v7.3.1-src/lib-python/3/test/test_normalization.py 2020-05-21 14:19:14.827288853 +0200
-@@ -2,6 +2,7 @@
- import unittest
-
- from http.client import HTTPException
-+from urllib.error import URLError
- import sys
- from unicodedata import normalize, unidata_version
-
-@@ -43,6 +44,8 @@
- except PermissionError:
- self.skipTest(f"Permission error when downloading {TESTDATAURL} "
- f"into the test data directory")
-+ except URLError:
-+ self.skipTest("DNS lookups are not enabled.")
- except (OSError, HTTPException):
- self.fail(f"Could not retrieve {TESTDATAURL}")
-
-diff -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_pathlib.py pypy3.6-v7.3.1-src/lib-python/3/test/test_pathlib.py
---- pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_pathlib.py 1970-01-01 01:00:01.000000000 +0100
-+++ pypy3.6-v7.3.1-src/lib-python/3/test/test_pathlib.py 2020-05-21 14:19:14.827288853 +0200
-@@ -2130,8 +2130,7 @@
- self.assertEqual(given, expect)
- self.assertEqual(set(p.rglob("FILEd*")), set())
-
-- @unittest.skipUnless(hasattr(pwd, 'getpwall'),
-- 'pwd module does not expose getpwall()')
-+ @unittest.skipIf(True, "Guix builder home is '/' which causes trouble for these tests")
- def test_expanduser(self):
- P = self.cls
- support.import_module('pwd')
-diff -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_pdb.py pypy3.6-v7.3.1-src/lib-python/3/test/test_pdb.py
---- pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_pdb.py 1970-01-01 01:00:01.000000000 +0100
-+++ pypy3.6-v7.3.1-src/lib-python/3/test/test_pdb.py 2020-05-21 14:20:24.377203281 +0200
-@@ -1136,11 +1136,11 @@
- > <doctest test.test_pdb.test_pdb_issue_20766[0]>(6)test_function()
- -> print('pdb %d: %s' % (i, sess._previous_sigint_handler))
- (Pdb) continue
-- pdb 1: <built-in function default_int_handler>
-+ pdb 1: Handlers.SIG_IGN
- > <doctest test.test_pdb.test_pdb_issue_20766[0]>(6)test_function()
- -> print('pdb %d: %s' % (i, sess._previous_sigint_handler))
- (Pdb) continue
-- pdb 2: <built-in function default_int_handler>
-+ pdb 2: Handlers.SIG_IGN
- """
-
- class PdbTestCase(unittest.TestCase):
-diff -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_regrtest.py pypy3.6-v7.3.1-src/lib-python/3/test/test_regrtest.py
---- pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_regrtest.py 1970-01-01 01:00:01.000000000 +0100
-+++ pypy3.6-v7.3.1-src/lib-python/3/test/test_regrtest.py 2020-05-21 14:19:14.827288853 +0200
-@@ -766,6 +766,7 @@
- output = self.run_tests('--fromfile', filename)
- self.check_executed_tests(output, tests)
-
-+ @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment.')
- def test_interrupted(self):
- code = TEST_INTERRUPTED
- test = self.create_test('sigint', code=code)
-diff -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_resource.py pypy3.6-v7.3.1-src/lib-python/3/test/test_resource.py
---- pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_resource.py 1970-01-01 01:00:01.000000000 +0100
-+++ pypy3.6-v7.3.1-src/lib-python/3/test/test_resource.py 2020-05-21 14:19:14.827288853 +0200
-@@ -146,6 +146,7 @@
-
- @unittest.skipUnless(hasattr(resource, 'prlimit'), 'no prlimit')
- @support.requires_linux_version(2, 6, 36)
-+ @unittest.skipIf(True, "Bug: the PermissionError is not raised")
- def test_prlimit(self):
- self.assertRaises(TypeError, resource.prlimit)
- self.assertRaises(ProcessLookupError, resource.prlimit,
-diff -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_shutil.py pypy3.6-v7.3.1-src/lib-python/3/test/test_shutil.py
---- pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_shutil.py 1970-01-01 01:00:01.000000000 +0100
-+++ pypy3.6-v7.3.1-src/lib-python/3/test/test_shutil.py 2020-05-21 14:19:14.827288853 +0200
-@@ -1138,6 +1138,7 @@
- self.assertRaises(ValueError, make_archive, base_name, 'xxx')
-
- @support.requires_zlib
-+ @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
- def test_make_archive_owner_group(self):
- # testing make_archive with owner and group, with various combinations
- # this works even if there's not gid/uid support
-@@ -1166,6 +1167,7 @@
-
-
- @support.requires_zlib
-+ @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
- @unittest.skipUnless(UID_GID_SUPPORT, "Requires grp and pwd support")
- def test_tarfile_root_owner(self):
- root_dir, base_dir = self._create_files()
-diff -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_socket.py pypy3.6-v7.3.1-src/lib-python/3/test/test_socket.py
---- pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_socket.py 1970-01-01 01:00:01.000000000 +0100
-+++ pypy3.6-v7.3.1-src/lib-python/3/test/test_socket.py 2020-05-21 14:19:14.827288853 +0200
-@@ -815,6 +815,8 @@
- if not fqhn in all_host_names:
- self.fail("Error testing host resolution mechanisms. (fqdn: %s, all: %s)" % (fqhn, repr(all_host_names)))
-
-+ @unittest.skipUnless(support.is_resource_enabled('network'),
-+ 'network is not enabled')
- def test_host_resolution(self):
- for addr in [support.HOST, '10.0.0.1', '255.255.255.255']:
- self.assertEqual(socket.gethostbyname(addr), addr)
-@@ -934,6 +936,8 @@
- self.assertRaises(OverflowError, socket.htonl, k)
- self.assertRaises(OverflowError, socket.htons, k)
-
-+ @unittest.skipUnless(os.path.exists("/etc/services"),
-+ "getservbyname uses /etc/services, which is not in the chroot")
- def testGetServBy(self):
- eq = self.assertEqual
- # Find one service that exists, then check all the related interfaces.
-@@ -1278,6 +1282,8 @@
- raise
- self.assertRaises(TypeError, s.ioctl, socket.SIO_LOOPBACK_FAST_PATH, None)
-
-+ @unittest.skipUnless(os.path.exists("/etc/gai.conf"),
-+ "getaddrinfo() will fail")
- def testGetaddrinfo(self):
- try:
- socket.getaddrinfo('localhost', 80)
-@@ -1357,6 +1363,8 @@
- # only IP addresses are allowed
- self.assertRaises(OSError, socket.getnameinfo, ('mail.python.org',0), 0)
-
-+ @unittest.skipUnless(os.path.exists("/etc/gai.conf"),
-+ "getaddrinfo() will fail")
- @unittest.skipUnless(support.is_resource_enabled('network'),
- 'network is not enabled')
- def test_idna(self):
-diff -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_spwd.py pypy3.6-v7.3.1-src/lib-python/3/test/test_spwd.py
---- pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_spwd.py 1970-01-01 01:00:01.000000000 +0100
-+++ pypy3.6-v7.3.1-src/lib-python/3/test/test_spwd.py 2020-05-21 14:19:14.827288853 +0200
-@@ -5,8 +5,7 @@
- spwd = support.import_module('spwd')
-
-
--@unittest.skipUnless(hasattr(os, 'geteuid') and os.geteuid() == 0,
-- 'root privileges required')
-+@unittest.skipUnless(os.path.exists("/etc/shadow"), 'spwd tests require /etc/shadow')
- class TestSpwdRoot(unittest.TestCase):
-
- def test_getspall(self):
-@@ -56,8 +55,7 @@
- self.assertRaises(TypeError, spwd.getspnam, bytes_name)
-
-
--@unittest.skipUnless(hasattr(os, 'geteuid') and os.geteuid() != 0,
-- 'non-root user required')
-+@unittest.skipUnless(os.path.exists("/etc/shadow"), 'spwd tests require /etc/shadow')
- class TestSpwdNonRoot(unittest.TestCase):
-
- def test_getspnam_exception(self):
-diff -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_tarfile.py pypy3.6-v7.3.1-src/lib-python/3/test/test_tarfile.py
---- pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_tarfile.py 1970-01-01 01:00:01.000000000 +0100
-+++ pypy3.6-v7.3.1-src/lib-python/3/test/test_tarfile.py 2020-05-21 14:19:14.827288853 +0200
-@@ -2491,9 +2491,12 @@
- import pwd, grp
- except ImportError:
- return False
-- if pwd.getpwuid(0)[0] != 'root':
-- return False
-- if grp.getgrgid(0)[0] != 'root':
-+ try:
-+ if pwd.getpwuid(0)[0] != 'root':
-+ return False
-+ if grp.getgrgid(0)[0] != 'root':
-+ return False
-+ except KeyError:
- return False
- return True
-
diff --git a/gnu/packages/patches/python-pytorch-runpath.patch b/gnu/packages/patches/python-pytorch-runpath.patch
new file mode 100644
index 0000000000..6f270ef9b1
--- /dev/null
+++ b/gnu/packages/patches/python-pytorch-runpath.patch
@@ -0,0 +1,25 @@
+Libraries (such as 'libtorch_cpu.so') and executables (such as 'torch_shm_manager')
+get installed, quite surprisingly, to 'lib/python3.8/site-packages/{bin,lib}'.
+Make sure RUNPATH matches that.
+
+--- a/cmake/Dependencies.cmake
++++ b/cmake/Dependencies.cmake
+@@ -4,7 +4,7 @@ if(APPLE)
+ set(CMAKE_MACOSX_RPATH ON)
+ set(_rpath_portable_origin "@loader_path")
+ else()
+- set(_rpath_portable_origin $ORIGIN)
++ set(_rpath_portable_origin $ORIGIN/../lib)
+ endif(APPLE)
+ # Use separate rpaths during build and install phases
+ set(CMAKE_SKIP_BUILD_RPATH FALSE)
+
+--- a/caffe2/CMakeLists.txt
++++ b/caffe2/CMakeLists.txt
+@@ -1797,5 +1797,5 @@ if(BUILD_PYTHON)
+ if(${BUILDING_WITH_TORCH_LIBS})
+ # site-packages/caffe2/python/caffe2_pybind11_state
+ # site-packages/torch/lib
+- set(caffe2_pybind11_rpath "${_rpath_portable_origin}/../../torch/lib")
++ set(caffe2_pybind11_rpath $ORIGIN/../../torch/lib)
+ endif(${BUILDING_WITH_TORCH_LIBS})
diff --git a/gnu/packages/patches/python-pytorch-system-libraries.patch b/gnu/packages/patches/python-pytorch-system-libraries.patch
new file mode 100644
index 0000000000..c8d14b3f56
--- /dev/null
+++ b/gnu/packages/patches/python-pytorch-system-libraries.patch
@@ -0,0 +1,131 @@
+Use our own googletest rather than the bundled one.
+Get NNPACK to use our own PeachPy rather than the bundled one.
+
+diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake
+index 5d57b9ca78..620cca4e60 100644
+--- a/cmake/Dependencies.cmake
++++ b/cmake/Dependencies.cmake
+@@ -644,11 +644,6 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
+ # this shouldn't be necessary anymore.
+ get_property(INC_DIR_temp DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
+ set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES "")
+- add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest)
+- set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES ${INC_DIR_temp})
+-
+- include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googletest/include)
+- include_directories(BEFORE SYSTEM ${CMAKE_CURRENT_LIST_DIR}/../third_party/googletest/googlemock/include)
+
+ # We will not need to test benchmark lib itself.
+ set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Disable benchmark testing as we don't need it.")
+@@ -1485,7 +1480,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
+ endif()
+ set_property(TARGET onnx_proto PROPERTY IMPORTED_LOCATION ${ONNX_PROTO_LIBRARY})
+ message("-- Found onnx: ${ONNX_LIBRARY} ${ONNX_PROTO_LIBRARY}")
+- list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx)
++ list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx onnx_optimizer)
+ endif()
+ include_directories(${FOXI_INCLUDE_DIRS})
+ list(APPEND Caffe2_DEPENDENCY_LIBS foxi_loader)
+
+diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt
+index 50ebb224ce..5953d9ddf7 100644
+--- a/caffe2/CMakeLists.txt
++++ b/caffe2/CMakeLists.txt
+@@ -1632,7 +1632,7 @@ if(BUILD_TEST)
+ if(NOT MSVC)
+ add_executable(${test_name}_${CPU_CAPABILITY} "${test_src}" ../aten/src/ATen/native/quantized/affine_quantizer_base.cpp)
+ # TODO: Get rid of c10 dependency (which is only needed for the implementation of AT_ERROR)
+- target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main)
++ target_link_libraries(${test_name}_${CPU_CAPABILITY} c10 sleef gtest_main gtest)
+ if(USE_FBGEMM)
+ target_link_libraries(${test_name}_${CPU_CAPABILITY} fbgemm)
+ endif()
+@@ -1655,7 +1655,7 @@ if(BUILD_TEST)
+ foreach(test_src ${Caffe2_CPU_TEST_SRCS})
+ get_filename_component(test_name ${test_src} NAME_WE)
+ add_executable(${test_name} "${test_src}")
+- target_link_libraries(${test_name} torch_library gtest_main)
++ target_link_libraries(${test_name} torch_library gtest_main gtest)
+ target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+ target_include_directories(${test_name} PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
+ target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
+@@ -1673,7 +1673,7 @@ if(BUILD_TEST)
+ foreach(test_src ${Caffe2_GPU_TEST_SRCS})
+ get_filename_component(test_name ${test_src} NAME_WE)
+ cuda_add_executable(${test_name} "${test_src}")
+- target_link_libraries(${test_name} torch_library gtest_main)
++ target_link_libraries(${test_name} torch_library gtest_main gtest)
+ target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+ target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
+ add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
+@@ -1691,7 +1691,7 @@ if(BUILD_TEST)
+ foreach(test_src ${Caffe2_VULKAN_TEST_SRCS})
+ get_filename_component(test_name ${test_src} NAME_WE)
+ add_executable(${test_name} "${test_src}")
+- target_link_libraries(${test_name} torch_library gtest_main)
++ target_link_libraries(${test_name} torch_library gtest_main gtest)
+ target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+ target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE})
+ add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
+@@ -1709,7 +1709,7 @@ if(BUILD_TEST)
+ foreach(test_src ${Caffe2_HIP_TEST_SRCS})
+ get_filename_component(test_name ${test_src} NAME_WE)
+ add_executable(${test_name} "${test_src}")
+- target_link_libraries(${test_name} torch_library gtest_main)
++ target_link_libraries(${test_name} torch_library gtest_main gtest)
+ target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+ target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE} ${Caffe2_HIP_INCLUDE})
+ target_compile_options(${test_name} PRIVATE ${HIP_CXX_FLAGS})
+
+diff --git a/torch/lib/c10d/test/CMakeLists.txt b/torch/lib/c10d/test/CMakeLists.txt
+index b74d4b65f7..fc7c207505 100644
+--- a/torch/lib/c10d/test/CMakeLists.txt
++++ b/torch/lib/c10d/test/CMakeLists.txt
+@@ -16,25 +16,25 @@ function(c10d_add_test test_src)
+ add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
+ endfunction()
+
+-c10d_add_test(FileStoreTest.cpp c10d gtest_main)
+-c10d_add_test(TCPStoreTest.cpp c10d gtest_main)
++c10d_add_test(FileStoreTest.cpp c10d gtest_main gtest)
++c10d_add_test(TCPStoreTest.cpp c10d gtest_main gtest)
+ if(NOT WIN32)
+- c10d_add_test(HashStoreTest.cpp c10d gtest_main)
++ c10d_add_test(HashStoreTest.cpp c10d gtest_main gtest)
+ endif()
+
+ if(USE_CUDA)
+ if(USE_C10D_GLOO)
+- c10d_add_test(ProcessGroupGlooTest.cpp c10d c10d_cuda_test gtest_main)
+- c10d_add_test(ProcessGroupGlooAsyncTest.cpp c10d c10d_cuda_test gtest_main)
++ c10d_add_test(ProcessGroupGlooTest.cpp c10d c10d_cuda_test gtest_main gtest)
++ c10d_add_test(ProcessGroupGlooAsyncTest.cpp c10d c10d_cuda_test gtest_main gtest)
+ endif()
+ if(USE_C10D_NCCL)
+- c10d_add_test(ProcessGroupNCCLTest.cpp c10d c10d_cuda_test gtest_main)
++ c10d_add_test(ProcessGroupNCCLTest.cpp c10d c10d_cuda_test gtest_main gtest)
+ c10d_add_test(ProcessGroupNCCLErrorsTest.cpp c10d c10d_cuda_test
+- gtest_main)
++ gtest_main gtest)
+ endif()
+ else()
+ if(USE_C10D_GLOO)
+- c10d_add_test(ProcessGroupGlooTest.cpp c10d gtest_main)
++ c10d_add_test(ProcessGroupGlooTest.cpp c10d gtest_main gtest)
+ endif()
+ endif()
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 5ecd2df..24feae3 100644
+--- a/third_party/NNPACK/CMakeLists.txt
++++ b/third_party/NNPACK/CMakeLists.txt
+@@ -427,8 +427,7 @@ IF(NNPACK_BACKEND STREQUAL "x86-64")
+ FILE(MAKE_DIRECTORY ${obj_dir})
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${obj}
+- COMMAND "PYTHONPATH=${PEACHPY_PYTHONPATH}"
+- ${PYTHON_EXECUTABLE} -m peachpy.x86_64
++ COMMAND ${PYTHON_EXECUTABLE} -m peachpy.x86_64
+ -mabi=sysv -g4 -mimage-format=${PEACHPY_IMAGE_FORMAT}
+ "-I${PROJECT_SOURCE_DIR}/src" "-I${PROJECT_SOURCE_DIR}/src/x86_64-fma" "-I${FP16_SOURCE_DIR}/include"
+ -o ${obj} "${PROJECT_SOURCE_DIR}/${src}"
diff --git a/gnu/packages/patches/rapidjson-gcc-compat.patch b/gnu/packages/patches/rapidjson-gcc-compat.patch
index b5ffc0a908..8bfdb075d9 100644
--- a/gnu/packages/patches/rapidjson-gcc-compat.patch
+++ b/gnu/packages/patches/rapidjson-gcc-compat.patch
@@ -16,3 +16,51 @@ index 422a5240..d4039716 100644
#endif
#ifdef _MSC_VER
+
+Cast destination pointers to avoid a GCC error about memmove writing to
+a different type.
+
+Adapted from this upstream commit:
+https://github.com/Tencent/rapidjson/commit/fa5963a2f5b231ee2babff771f169ccca22870ed
+
+diff --git a/include/rapidjson/document.h b/include/rapidjson/document.h
+--- a/include/rapidjson/document.h
++++ b/include/rapidjson/document.h
+@@ -1425,7 +1425,7 @@ public:
+ MemberIterator pos = MemberBegin() + (first - MemberBegin());
+ for (MemberIterator itr = pos; itr != last; ++itr)
+ itr->~Member();
+- std::memmove(&*pos, &*last, static_cast<size_t>(MemberEnd() - last) * sizeof(Member));
++ std::memmove(static_cast<void*>(&*pos), &*last, static_cast<size_t>(MemberEnd() - last) * sizeof(Member));
+ data_.o.size -= static_cast<SizeType>(last - first);
+ return pos;
+ }
+@@ -1628,8 +1628,8 @@ public:
+ RAPIDJSON_ASSERT(last <= End());
+ ValueIterator pos = Begin() + (first - Begin());
+ for (ValueIterator itr = pos; itr != last; ++itr)
+- itr->~GenericValue();
+- std::memmove(pos, last, static_cast<size_t>(End() - last) * sizeof(GenericValue));
++ itr->~GenericValue();
++ std::memmove(static_cast<void*>(pos), last, static_cast<size_t>(End() - last) * sizeof(GenericValue));
+ data_.a.size -= static_cast<SizeType>(last - first);
+ return pos;
+ }
+@@ -1936,7 +1936,7 @@ private:
+ if (count) {
+ GenericValue* e = static_cast<GenericValue*>(allocator.Malloc(count * sizeof(GenericValue)));
+ SetElementsPointer(e);
+- std::memcpy(e, values, count * sizeof(GenericValue));
++ std::memcpy(static_cast<void*>(e), values, count * sizeof(GenericValue));
+ }
+ else
+ SetElementsPointer(0);
+@@ -1949,7 +1949,7 @@ private:
+ if (count) {
+ Member* m = static_cast<Member*>(allocator.Malloc(count * sizeof(Member)));
+ SetMembersPointer(m);
+- std::memcpy(m, members, count * sizeof(Member));
++ std::memcpy(static_cast<void*>(m), members, count * sizeof(Member));
+ }
+ else
+ SetMembersPointer(0);
diff --git a/gnu/packages/patches/restic-0.9.6-fix-tests-for-go1.15.patch b/gnu/packages/patches/restic-0.9.6-fix-tests-for-go1.15.patch
new file mode 100644
index 0000000000..cc510c1cfe
--- /dev/null
+++ b/gnu/packages/patches/restic-0.9.6-fix-tests-for-go1.15.patch
@@ -0,0 +1,51 @@
+This cherry-picked patch fixes tests for Go >= 1.15. Restic v0.10 (which
+includes this patch) requires go module support from the Go build system.
+Original patch follows.
+
+---
+From 97950ab81a18de06b95384da6d8646fef87c9d97 Mon Sep 17 00:00:00 2001
+From: Alexander Neumann <alexander@bumpern.de>
+Date: Sat, 12 Sep 2020 17:36:44 +0200
+Subject: [PATCH] options: Fix test for Go >= 1.15
+
+---
+ internal/options/options_test.go | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/internal/options/options_test.go b/internal/options/options_test.go
+index de94fc90a1..8d268992a3 100644
+--- a/internal/options/options_test.go
++++ b/internal/options/options_test.go
+@@ -3,6 +3,7 @@ package options
+ import (
+ "fmt"
+ "reflect"
++ "regexp"
+ "testing"
+ "time"
+ )
+@@ -199,7 +200,7 @@ var invalidSetTests = []struct {
+ "timeout": "2134",
+ },
+ "ns",
+- `time: missing unit in duration 2134`,
++ `time: missing unit in duration "?2134"?`,
+ },
+ }
+
+@@ -212,8 +213,13 @@ func TestOptionsApplyInvalid(t *testing.T) {
+ t.Fatalf("expected error %v not found", test.err)
+ }
+
+- if err.Error() != test.err {
+- t.Fatalf("expected error %q, got %q", test.err, err.Error())
++ matched, err := regexp.MatchString(test.err, err.Error())
++ if err != nil {
++ t.Fatal(err)
++ }
++
++ if !matched {
++ t.Fatalf("expected error to match %q, got %q", test.err, err.Error())
+ }
+ })
+ }
diff --git a/gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch b/gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch
new file mode 100644
index 0000000000..c91d273f92
--- /dev/null
+++ b/gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch
@@ -0,0 +1,52 @@
+https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/pull/25
+
+From c65cba2e73f9118e128b9ab7e655ee0f8a7798e7 Mon Sep 17 00:00:00 2001
+From: Craig Andrews <candrews@integralblue.com>
+Date: Sun, 1 Mar 2020 19:24:22 -0500
+Subject: [PATCH] Link additional required LLVM libraries
+
+Without these additional required dependencies, linking fails with errors such as:
+`undefined reference to llvm::errs()'`
+---
+ CMakeLists.txt | 20 ++++++++++++++++++--
+ 1 file changed, 18 insertions(+), 2 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 1794a07..c7b852a 100644
+--- a/lib/comgr/CMakeLists.txt
++++ b/lib/comgr/CMakeLists.txt
+@@ -207,7 +207,11 @@ install(FILES
+ DESTINATION "${AMD_COMGR_PACKAGE_PREFIX}")
+
+ set(CLANG_LIBS
+- clangFrontendTool)
++ clangFrontendTool
++ clangFrontend
++ clangBasic
++ clangDriver
++ clangSerialization)
+
+ set(LLD_LIBS
+ lldELF
+@@ -218,8 +222,20 @@ if (LLVM_LINK_LLVM_DYLIB)
+ else()
+ llvm_map_components_to_libnames(LLVM_LIBS
+ ${LLVM_TARGETS_TO_BUILD}
++ Option
+ DebugInfoDWARF
+- Symbolize)
++ Symbolize
++ Support
++ Object
++ BitWriter
++ MC
++ MCParser
++ MCDisassembler
++ Core
++ IRReader
++ CodeGen
++ Linker
++ BinaryFormat)
+ endif()
+
+ target_link_libraries(amd_comgr
diff --git a/gnu/packages/patches/rocm-opencl-runtime-3.10.0-includes.patch b/gnu/packages/patches/rocm-opencl-runtime-3.10.0-includes.patch
new file mode 100644
index 0000000000..d81bb0747f
--- /dev/null
+++ b/gnu/packages/patches/rocm-opencl-runtime-3.10.0-includes.patch
@@ -0,0 +1,14 @@
+Add missing include dirs for ROCclr.
+
+--- a/amdocl/CMakeLists.txt 2020-12-05 22:05:55.838529158 +0100
++++ b/amdocl/CMakeLists.txt 2020-12-05 22:07:35.677524507 +0100
+@@ -23,6 +23,9 @@
+ include_directories(${CMAKE_CURRENT_LIST_DIR}/../khronos)
+ include_directories(${CMAKE_CURRENT_LIST_DIR}/../khronos/headers)
+ include_directories(${CMAKE_CURRENT_LIST_DIR}/../khronos/headers/opencl2.2)
++include_directories(${ROCclr_DIR}/../../../include)
++include_directories(${ROCclr_DIR}/../../../include/compiler/lib/include/)
++include_directories(${ROCclr_DIR}/../../../include/elf/)
+
+ if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR
+ (CMAKE_${COMPILER}_COMPILER_ID MATCHES "Clang"))
diff --git a/gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch b/gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch
new file mode 100644
index 0000000000..5709e0d19a
--- /dev/null
+++ b/gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch
@@ -0,0 +1,28 @@
+Do not build and install clinfo.
+
+diff --git a/CMakeLists.txt.orig b/CMakeLists.txt
+index 76847d3..3f62bfe 100644
+--- a/CMakeLists.txt.orig
++++ b/CMakeLists.txt
+@@ -72,7 +72,7 @@ find_package(ROCclr REQUIRED CONFIG
+
+ add_subdirectory(khronos/icd)
+ add_subdirectory(amdocl)
+-add_subdirectory(tools/clinfo)
++#add_subdirectory(tools/clinfo)
+ add_subdirectory(tools/cltrace)
+ if(BUILD_TESTS)
+ add_subdirectory(tests/ocltst)
+@@ -108,9 +108,9 @@ endif()
+ ###--- Packaging ------------------------------------------------------------###
+
+ # MAIN package
+-install(PROGRAMS $<TARGET_FILE:clinfo>
+- DESTINATION bin
+- COMPONENT MAIN)
++#install(PROGRAMS $<TARGET_FILE:clinfo>
++# DESTINATION bin
++# COMPONENT MAIN)
+ install(PROGRAMS $<TARGET_FILE:cltrace>
+ DESTINATION lib
+ COMPONENT MAIN)
diff --git a/gnu/packages/patches/rocm-opencl-runtime-4.3-nocltrace.patch b/gnu/packages/patches/rocm-opencl-runtime-4.3-nocltrace.patch
new file mode 100644
index 0000000000..e0328d7734
--- /dev/null
+++ b/gnu/packages/patches/rocm-opencl-runtime-4.3-nocltrace.patch
@@ -0,0 +1,25 @@
+Do not build and install cltrace.
+
+diff --git a/CMakeLists.txt.orig b/CMakeLists.txt
+index c449db4..9cff673 100644
+--- a/CMakeLists.txt.orig
++++ b/CMakeLists.txt
+@@ -73,7 +73,7 @@ find_package(ROCclr REQUIRED CONFIG
+ #add_subdirectory(khronos/icd)
+ add_subdirectory(amdocl)
+ #add_subdirectory(tools/clinfo)
+-add_subdirectory(tools/cltrace)
++#add_subdirectory(tools/cltrace)
+ if(BUILD_TESTS)
+ add_subdirectory(tests/ocltst)
+ endif()
+@@ -108,9 +108,6 @@ endif()
+ #install(PROGRAMS $<TARGET_FILE:clinfo>
+ # DESTINATION bin
+ # COMPONENT MAIN)
+-install(PROGRAMS $<TARGET_FILE:cltrace>
+- DESTINATION lib
+- COMPONENT MAIN)
+ install(PROGRAMS $<TARGET_FILE:amdocl64>
+ DESTINATION lib
+ COMPONENT MAIN)
diff --git a/gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch b/gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch
new file mode 100644
index 0000000000..ed20f02503
--- /dev/null
+++ b/gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch
@@ -0,0 +1,63 @@
+Do not build and install libOpenCL.
+
+--- b/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -70,7 +70,7 @@
+ ${ROCclr_DIR}
+ ${LIBROCclr_STATIC_DIR})
+
+-add_subdirectory(khronos/icd)
++#add_subdirectory(khronos/icd)
+ add_subdirectory(amdocl)
+ #add_subdirectory(tools/clinfo)
+ add_subdirectory(tools/cltrace)
+@@ -93,9 +93,6 @@
+ OUTPUT_VARIABLE OPENCL_VERSION_GITDATE
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+-get_target_property(OPENCL_LIB_VERSION_MAJOR OpenCL SOVERSION)
+-get_target_property(OPENCL_LIB_VERSION_STRING OpenCL VERSION)
+-
+ find_package(ROCM QUIET CONFIG PATHS /opt/rocm)
+
+ if(ROCM_FOUND)
+@@ -117,25 +114,6 @@
+ install(PROGRAMS $<TARGET_FILE:amdocl64>
+ DESTINATION lib
+ COMPONENT MAIN)
+-install(PROGRAMS $<TARGET_FILE:OpenCL>
+- DESTINATION lib
+- COMPONENT MAIN)
+-install(PROGRAMS $<TARGET_SONAME_FILE:OpenCL>
+- DESTINATION lib
+- COMPONENT MAIN)
+-
+-# DEV package
+-install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/khronos/headers/opencl2.2/CL"
+- DESTINATION include
+- COMPONENT DEV
+- USE_SOURCE_PERMISSIONS
+- PATTERN cl_d3d10.h EXCLUDE
+- PATTERN cl_d3d11.h EXCLUDE
+- PATTERN cl_dx9_media_sharing.h EXCLUDE
+- PATTERN cl_egl.h EXCLUDE)
+-install(PROGRAMS $<TARGET_LINKER_FILE:OpenCL>
+- DESTINATION lib
+- COMPONENT DEV)
+
+ #############################
+ # Packaging steps
+--- a/khronos/icd/CMakeLists.txt 2020-06-07 16:05:32.425022904 +0200
++++ b/khronos/icd/CMakeLists.txt 2020-06-07 16:06:03.273022786 +0200
+@@ -132,7 +132,7 @@
+ add_subdirectory (test)
+ endif()
+
+-install (TARGETS OpenCL
+- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
++#install (TARGETS OpenCL
++# RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
++# ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
++# LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
diff --git a/gnu/packages/patches/samba-fix-fcntl-hint-detection.patch b/gnu/packages/patches/samba-fix-fcntl-hint-detection.patch
deleted file mode 100644
index b56c628537..0000000000
--- a/gnu/packages/patches/samba-fix-fcntl-hint-detection.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 454ccd986b61799908a6898a55d0480911f15306 Mon Sep 17 00:00:00 2001
-From: Ralph Boehme <slow@samba.org>
-Date: Mon, 21 Sep 2020 07:48:43 +0200
-Subject: [PATCH] s3: fix fcntl waf configure check
-
-RN: Fix fcntl waf configure check
-BUG: https://bugzilla.samba.org/show_bug.cgi?id=14503
-
-Signed-off-by: Ralph Boehme <slow@samba.org>
-Reviewed-by: Volker Lendecke <vl@samba.org>
-
-Autobuild-User(master): Volker Lendecke <vl@samba.org>
-Autobuild-Date(master): Mon Sep 21 07:26:54 UTC 2020 on sn-devel-184
----
- source3/wscript | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/source3/wscript b/source3/wscript
-index 840ed430c0f..d3ef346eecd 100644
---- a/source3/wscript
-+++ b/source3/wscript
-@@ -1244,7 +1244,7 @@ err:
-
- int main(void)
- {
-- uint64_t *hint, get_hint;
-+ uint64_t hint, get_hint;
- int fd;
-
- fd = open(DATA, O_RDONLY | O_CREAT | O_EXCL);
-@@ -1252,8 +1252,8 @@ int main(void)
- goto err;
- }
-
-- *hint = RWH_WRITE_LIFE_SHORT;
-- int ret = fcntl(fd, F_SET_RW_HINT, hint);
-+ hint = RWH_WRITE_LIFE_SHORT;
-+ int ret = fcntl(fd, F_SET_RW_HINT, &hint);
- if (ret == -1) {
- goto err;
- }
-@@ -1267,8 +1267,8 @@ int main(void)
- goto err;
- }
-
-- *hint = RWH_WRITE_LIFE_EXTREME;
-- ret = fcntl(fd, F_SET_FILE_RW_HINT, hint);
-+ hint = RWH_WRITE_LIFE_EXTREME;
-+ ret = fcntl(fd, F_SET_FILE_RW_HINT, &hint);
- if (ret == -1) {
- goto err;
- }
---
-2.28.0
-
diff --git a/gnu/packages/patches/u-boot-riscv64-fix-extlinux.patch b/gnu/packages/patches/u-boot-riscv64-fix-extlinux.patch
index d6c1987718..468024ab00 100644
--- a/gnu/packages/patches/u-boot-riscv64-fix-extlinux.patch
+++ b/gnu/packages/patches/u-boot-riscv64-fix-extlinux.patch
@@ -30,8 +30,8 @@ Index: u-boot/configs/qemu-riscv64_smode_defconfig
+CONFIG_PREBOOT="setenv fdt_addr ${fdtcontroladdr}; fdt addr ${fdtcontroladdr};"
Index: u-boot/configs/sifive_fu540_defconfig
===================================================================
---- u-boot.orig/configs/sifive_fu540_defconfig
-+++ u-boot/configs/sifive_fu540_defconfig
+--- u-boot.orig/configs/sifive_unleashed_defconfig
++++ u-boot/configs/sifive_unleashed_defconfig
@@ -27,3 +27,5 @@ CONFIG_SPL_DM_SEQ_ALIAS=y
CONFIG_SPL_CLK=y
CONFIG_DM_MTD=y
diff --git a/gnu/packages/patches/u-boot-sifive-prevent-reloc-initrd-fdt.patch b/gnu/packages/patches/u-boot-sifive-prevent-reloc-initrd-fdt.patch
new file mode 100644
index 0000000000..a5b92e3e8f
--- /dev/null
+++ b/gnu/packages/patches/u-boot-sifive-prevent-reloc-initrd-fdt.patch
@@ -0,0 +1,16 @@
+Description: prevent relocating initrd & fdt, that results in failure to boot
+Author: Heinrich Schuchardt (xypron)
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/u-boot/+bug/1937246
+Index: u-boot-2021.07~rc4+dfsg/include/configs/sifive-unmatched.h
+===================================================================
+--- u-boot-2021.07~rc4+dfsg.orig/include/configs/sifive-unmatched.h
++++ u-boot-2021.07~rc4+dfsg/include/configs/sifive-unmatched.h
+@@ -62,6 +62,8 @@
+ "name=system,size=-,bootable,type=${type_guid_gpt_system};"
+
+ #define CONFIG_EXTRA_ENV_SETTINGS \
++ "fdt_high=0xffffffffffffffff\0" \
++ "initrd_high=0xffffffffffffffff\0" \
+ "kernel_addr_r=0x84000000\0" \
+ "fdt_addr_r=0x88000000\0" \
+ "scriptaddr=0x88100000\0" \
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index 2197623363..8a6abe5991 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -486,6 +486,24 @@ photographic equipment.")
"-DBUILD_TESTING=On")
#:phases
(modify-phases %standard-phases
+ (add-after 'unpack 'libOpenCL-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Statically link to libOpenCL.
+ (substitute* "./src/common/dlopencl.c"
+ (("\"libOpenCL\"")
+ (string-append "\"" (assoc-ref inputs "ocl-icd") "/lib/libOpenCL.so\"")))
+ #t))
+ ;; The use of inline is wrong and darktable cannot compile its kernels
+ ;; with ROCm. See upstream commit
+ ;; https://github.com/darktable-org/darktable/commit/f0d8710f5ef34eb7e33b4064e022ebf3057b9e53
+ (add-after 'unpack 'opencl-inline
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; This is a feature of OpenCL 1.2 and later.
+ (substitute* "data/kernels/CMakeLists.txt"
+ (("CL1\\.1") "CL1.2"))
+ (substitute* (find-files "data/kernels" "\\.(cl|h)$")
+ (("inline") "static inline"))
+ #t))
(add-before 'configure 'prepare-build-environment
(lambda* (#:key inputs #:allow-other-keys)
;; Rawspeed fails to build with GCC due to OpenMP error:
@@ -516,11 +534,7 @@ photographic equipment.")
;; For GtkFileChooserDialog.
`("GSETTINGS_SCHEMA_DIR" =
(,(string-append (assoc-ref inputs "gtk+")
- "/share/glib-2.0/schemas")))
- ;; For libOpenCL.so.
- `("LD_LIBRARY_PATH" =
- (,(string-append (assoc-ref inputs "ocl-icd")
- "/lib"))))
+ "/share/glib-2.0/schemas"))))
#t)))))
(native-inputs
`(("clang" ,clang-11)
@@ -769,7 +783,7 @@ a complete panorama and stitch any series of overlapping pictures.")
(version "5.8")
(source (origin
(method url-fetch)
- (uri (string-append "http://rawtherapee.com/shared/source/"
+ (uri (string-append "https://rawtherapee.com/shared/source/"
"rawtherapee-" version ".tar.xz"))
(sha256
(base32
@@ -809,7 +823,7 @@ a complete panorama and stitch any series of overlapping pictures.")
("libsigc++" ,libsigc++)
("libtiff" ,libtiff)
("zlib" ,zlib)))
- (home-page "http://rawtherapee.com")
+ (home-page "https://rawtherapee.com")
(synopsis "Raw image developing and processing")
(description "RawTherapee is a raw image processing suite. It comprises a
subset of image editing operations specifically aimed at non-destructive raw
diff --git a/gnu/packages/prolog.scm b/gnu/packages/prolog.scm
index a5c57cd37c..4eb0f4d3b6 100644
--- a/gnu/packages/prolog.scm
+++ b/gnu/packages/prolog.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
+;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -42,7 +43,7 @@
(define-public gprolog
(package
(name "gprolog")
- (version "1.4.5")
+ (version "1.5.0")
(source
(origin
(method url-fetch)
@@ -53,7 +54,7 @@
".tar.gz")))
(sha256
(base32
- "0z4cc42n3k6i35b8mr816iwsvrpxshw6d7dgz6s2h1hy0l7g1p5z"))))
+ "009ca4wn2q6xdmb0js0vz647cw5ygsqyyqc9svmjgahg7js441k7"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
@@ -61,13 +62,9 @@
"--with-install-dir=" %output "/share/gprolog"))
#:phases
(modify-phases %standard-phases
- (add-before 'configure 'change-dir-n-fix-shells
+ (add-before 'configure 'change-dir
(lambda _
- (chdir "src")
- (substitute* "configure"
- (("-/bin/sh") (string-append "-" (which "sh")))
- (("= /bin/sh") (string-append "= " (which "sh"))))
- #t)))))
+ (chdir "src"))))))
(home-page "https://www.gnu.org/software/gprolog/")
(synopsis "Prolog compiler")
(description
diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index f5258d2609..5a414e415f 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -116,7 +116,7 @@ are useful when writing automated tests in Python.")
(define-public python-coveralls
(package
(name "python-coveralls")
- (version "3.1.0")
+ (version "3.2.0")
(home-page "https://github.com/coveralls-clients/coveralls-python")
(source
(origin
@@ -126,7 +126,7 @@ are useful when writing automated tests in Python.")
(file-name (git-file-name name version))
(sha256
(base32
- "1rpdv7rhs4xy6q4s63krrfhwihli9vla0qsw64vls0naail9yjn3"))))
+ "1915ab77nfb1rfw4i2ps0zy19wpf20lwxn81qxxbwyd2gy7m0fn8"))))
(build-system python-build-system)
(arguments
'(#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index c864835248..00e704a15f 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -138,9 +138,6 @@ on the Blowfish password hashing algorithm, as described in
Password Scheme\"} by Niels Provos and David Mazieres.")
(license license:asl2.0)))
-(define-public python2-bcrypt
- (package-with-python2 python-bcrypt))
-
(define-public python-passlib
(package
(name "python-passlib")
@@ -260,9 +257,6 @@ extension for low level cryptography (PyCrypto), Paramiko itself is a pure
Python interface around SSH networking concepts.")
(license license:lgpl2.1+)))
-(define-public python2-paramiko
- (package-with-python2 python-paramiko))
-
(define-public python-ecdsa
(package
(name "python-ecdsa")
@@ -839,9 +833,6 @@ Networking and Cryptography library. These libraries have a stated goal
of improving usability, security and speed.")
(license license:asl2.0)))
-(define-public python2-pynacl
- (package-with-python2 python-pynacl))
-
(define-public python-blurhash
(package
(name "python-blurhash")
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index abc337397a..be75f03a43 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -282,14 +282,14 @@ using @url{https://github.com/saghul/pycares,pycares}.")
(define-public python-aiorpcx
(package
(name "python-aiorpcx")
- (version "0.18.3")
+ (version "0.22.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "aiorpcX" version))
(sha256
(base32
- "0k545hc7wl6sh1svydzbv6x7sx5pig2pqkl3yxs9riwmvzawx9xp"))))
+ "0lx54bcinp44fmr8q4bbffsqbkg8kdcwykf9i5jj0bj3sfzgf9k0"))))
(build-system python-build-system)
(propagated-inputs
`(("python-attrs" ,python-attrs)))
@@ -304,6 +304,18 @@ The package includes a module with full coverage of JSON RPC versions 1.0 and
comes with a SOCKS proxy client.")
(license (list license:expat license:bsd-2))))
+(define-public python-aiorpcx-0.18
+ (package
+ (inherit python-aiorpcx)
+ (version "0.18.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "aiorpcX" version))
+ (sha256
+ (base32
+ "1rswrspv27x33xa5bnhrkjqzhv0sknv5kd7pl1vidw9d2z4rx2l0"))))))
+
(define-public python-asgiref
(package
(name "python-asgiref")
@@ -6142,3 +6154,43 @@ your code non-blocking and speedy.")
"Socks is a library providing core proxy (SOCKS4, SOCKS5, HTTP tunneling)
functionality.")
(license license:asl2.0)))
+
+(define-public python-azure-nspkg
+ (package
+ (name "python-azure-nspkg")
+ (version "3.0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "azure-nspkg" version ".zip"))
+ (sha256
+ (base32
+ "1l4xwdh0fcnvrv0mzig4g2kgqkfbsy64zjm1ggc6grk3mykcxlz7"))))
+ (build-system python-build-system)
+ (native-inputs `(("unzip" ,unzip)))
+ (home-page "https://github.com/Azure/azure-sdk-for-python")
+ (synopsis "Azure namespace internals")
+ (description
+ "This package is an internal Azure namespace package.")
+ (license license:expat)))
+
+(define-public python-azure-storage-nspkg
+ (package
+ (name "python-azure-storage-nspkg")
+ (version "3.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "azure-storage-nspkg" version))
+ (sha256
+ (base32
+ "049qcmgshz7dj9yaqma0fwcgbxwddgwyfcw4gmv45xfmaa3bwfvg"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-azure-nspkg" ,python-azure-nspkg)))
+ (home-page "https://github.com/Azure/azure-storage-python")
+ (synopsis "Microsoft Azure Storage Namespace package")
+ (description
+ "This project provides a client library in Python that makes it easy to
+communicate with Microsoft Azure Storage services.")
+ (license license:expat)))
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 5223f5a73e..abee3df5a2 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -8516,13 +8516,13 @@ interfaces in an easy and portable manner.")
(define-public python-networkx
(package
(name "python-networkx")
- (version "2.5.1")
+ (version "2.6.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "networkx" version))
(sha256
- (base32 "0ni3pdisdr8vfp5m9sw8jzr7jwzgqqmc9hq327vrf4n4ra2xb70h"))))
+ (base32 "1fqrq7gc0nn4rd4zqibw96cap75vb5nlixapkajwawp71jaz21i3"))))
(build-system python-build-system)
(arguments
'(#:phases (modify-phases %standard-phases
@@ -17377,39 +17377,6 @@ applications in seconds while maintaining all the flexibility.")
older Pythons because it was not part of the standard library back then.")
(license license:psfl)))
-(define-public python-fudge
- (package
- (name "python-fudge")
- ;; 0.9.6 is the latest version suitable for testing the "fabric" Python 2
- ;; package, which is currently the only use of this package.
- (version "0.9.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "fudge" version))
- (sha256
- (base32
- "185ia3vr3qk4f2s1a9hdxb8ci4qc0x0xidrad96pywg8j930qs9l"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ;XXX: Tests require the NoseJS Python package.
- (home-page "https://github.com/fudge-py/fudge")
- (synopsis "Replace real objects with fakes/mocks/stubs while testing")
- (description
- "Fudge is a Python module for using fake objects (mocks and stubs) to
-test real ones.
-
-In readable Python code, you declare the methods available on your fake object
-and how they should be called. Then you inject that into your application and
-start testing. This declarative approach means you don’t have to record and
-playback actions and you don’t have to inspect your fakes after running code.
-If the fake object was used incorrectly then you’ll see an informative
-exception message with a traceback that points to the culprit.")
- (license license:expat)))
-
-(define-public python2-fudge
- (package-with-python2 python-fudge))
-
(define-public python-mwclient
(package
(name "python-mwclient")
@@ -26041,3 +26008,77 @@ enabling you to write CommonMark inside of Docutils & Sphinx projects.")
Qhull} for the computation of the convex hull, Delaunay triangulation, and
Voronoi diagram.")
(license license:expat)))
+
+(define-public python-opcodes
+ ;; There are no tags in this repo, but 'opcodes/__init__.py' specifies a
+ ;; version number, which is what we use here.
+ (let ((commit "0f7c7d63f5e13ce5a89d9acc3934f1b6e247ec1f"))
+ (package
+ (name "python-opcodes")
+ (version "0.3.14") ;from 'opcodes/__init__.py'
+ (home-page "https://github.com/Maratyszcza/Opcodes")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference (url home-page) (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1fvxkr83gfl9f0ikd2wl2lzazzya2qz1hk4yn2a0pq742brbwpys"))))
+ (build-system python-build-system)
+ (synopsis "Database of processor instructions and opcodes")
+ (description
+ "This project documents instruction sets in a format convenient for
+tools development. An instruction set is represented by three files:
+
+@itemize
+@item an XML file that describes instructions;
+@item an XSD file that describes the structure of the XML file;
+@item a Python module that reads the XML file and represents it as a set of
+Python objects;
+@end itemize
+
+It currently provides descriptions for most user-mode x86, x86_64, and k1om
+instructions up to AVX-512 and SHA (including 3dnow!+, XOP, FMA3, FMA4, TBM
+and BMI2).")
+ (license license:bsd-2))))
+
+(define-public python-peachpy
+ ;; There is no tag in this repo.
+ (let ((commit "906d578266dc7188bf61e4cdbc9f8ea7d69edec0")
+ (version "0.2.0") ;from 'peachpy/__init__.py'
+ (revision "1"))
+ (package
+ (name "python-peachpy")
+ (version (git-version version revision commit))
+ (home-page "https://github.com/Maratyszcza/PeachPy")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference (url home-page) (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1yy62k3cjr6556nbp651w6v4hzl7kz4y75wy2dfqgndgbnixskx2"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "python" "setup.py" "nosetests")))))))
+ (native-inputs
+ `(("python-nose" ,python-nose)
+ ("python-rednose" ,python-rednose)))
+ (propagated-inputs
+ `(("python-six" ,python-six)
+ ("python-opcodes" ,python-opcodes)))
+ (synopsis "Efficient assembly code generation in Python")
+ (description
+ "PeachPy is a Python framework for writing high-performance assembly kernels.
+PeachPy aims to simplify writing optimized assembly kernels while preserving
+all optimization opportunities of traditional assembly.
+
+PeachPy can generate ELF, MS-COFF, Mach-O object files, and assembly listings
+for the Go language tool chain; it adapts to different calling conventions and
+application binary interfaces (ABIs); it takes care of register allocation; it
+supports x86_64 instructions up to AVX-512 and SHA.")
+ (license license:bsd-2))))
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 9e637a03d0..28a3c77953 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -748,15 +748,14 @@ ease from the desktop to a microcontroller or embedded system.")
(define-public pypy3
(package
(name "pypy3")
- (version "7.3.1")
+ (version "7.3.5")
(source (origin
(method url-fetch)
- (uri (string-append "https://bitbucket.org/pypy/pypy/downloads/" ;
- "pypy3.6-v" version "-src.tar.bz2"))
+ (uri (string-append "https://downloads.python.org/pypy/"
+ "pypy3.7-v" version "-src.tar.bz2"))
(sha256
(base32
- "10zsk8jby8j6visk5mzikpb1cidvz27qq4pfpa26jv53klic6b0c"))
- (patches (search-patches "pypy3-7.3.1-fix-tests.patch"))))
+ "18lrdmpcczlbk3cfarkgwqdmilrybz56i1dafk8dkjlyk90gw86r"))))
(build-system gnu-build-system)
(native-inputs
`(("python-2" ,python-2)
@@ -778,10 +777,9 @@ ease from the desktop to a microcontroller or embedded system.")
("tcl" ,tcl)
("tk" ,tk)
("glibc" ,glibc)
- ("bash-minimal" ,bash-minimal) ; Used as /bin/sh
("xz" ,xz))) ; liblzma
(arguments
- `(#:tests? #f ;FIXME: Disabled for now, there are many tests failing.
+ `(#:tests? #f ;FIXME: 43 out of 364 tests are failing
#:modules ((ice-9 ftw) (ice-9 match)
(guix build utils) (guix build gnu-build-system))
#:phases (modify-phases %standard-phases
@@ -810,6 +808,12 @@ ease from the desktop to a microcontroller or embedded system.")
(substitute* '("lib_pypy/_curses_build.py")
;; Find curses
(("/usr/local") (assoc-ref inputs "ncurses")))
+ (substitute* '("lib_pypy/_dbm.py")
+ ;; Use gdbm compat library, so we don’t need to pull
+ ;; in bdb.
+ (("ctypes.util.find_library\\('db'\\)")
+ (format #f "'~a/lib/libgdbm_compat.so'"
+ (assoc-ref inputs "gdbm"))))
(substitute* '("lib_pypy/_sqlite3_build.py")
;; Always use search paths
(("sys\\.platform\\.startswith\\('freebsd'\\)") "True")
@@ -825,8 +829,7 @@ ease from the desktop to a microcontroller or embedded system.")
(search-input-file inputs "/bin/sh")))
(substitute* '("lib-python/3/distutils/unixccompiler.py")
;; gcc-toolchain does not provide symlink cc -> gcc
- (("\"cc\"") "\"gcc\""))
- #t))
+ (("\"cc\"") "\"gcc\""))))
(add-after
'unpack 'set-source-file-times-to-1980
;; copied from python package, required by zip testcase
@@ -834,8 +837,7 @@ ease from the desktop to a microcontroller or embedded system.")
(let ((circa-1980 (* 10 366 24 60 60)))
(ftw "." (lambda (file stat flag)
(utime file circa-1980 circa-1980)
- #t))
- #t)))
+ #t)))))
(replace 'build
(lambda* (#:key inputs #:allow-other-keys)
(with-directory-excursion "pypy/goal"
@@ -845,7 +847,8 @@ ease from the desktop to a microcontroller or embedded system.")
(string-append "--make-jobs="
(number->string (parallel-job-count)))
"-Ojit"
- "targetpypystandalone"))
+ "targetpypystandalone"
+ "--allworkingmodules"))
;; Build c modules and package everything, so tests work.
(with-directory-excursion "pypy/tool/release"
(invoke "python2" "package.py"
@@ -864,44 +867,45 @@ ease from the desktop to a microcontroller or embedded system.")
"pypy/test_all.py"
"--pypy=pypy/tool/release/pypy-dist/bin/pypy3"
"lib-python"))
- (format #t "test suite not run~%"))
- #t))
+ (format #t "test suite not run~%"))))
(replace 'install
(lambda* (#:key inputs outputs #:allow-other-keys)
- (with-directory-excursion "pypy/tool/release"
- ;; Delete test data.
- (for-each
- (lambda (x)
- (delete-file-recursively (string-append
- "pypy-dist/lib-python/3/" x)))
- '("tkinter/test"
- "test"
- "sqlite3/test"
- "lib2to3/tests"
- "idlelib/idle_test"
- "distutils/tests"
- "ctypes/test"
- "unittest/test"))
- ;; Patch shebang referencing python2
- (substitute* '("pypy-dist/lib-python/3/cgi.py"
- "pypy-dist/lib-python/3/encodings/rot_13.py")
- (("#!.+/bin/python")
- (string-append "#!" (assoc-ref outputs "out") "/bin/pypy3")))
- (with-fluids ((%default-port-encoding "ISO-8859-1"))
- (substitute* '("pypy-dist/lib_pypy/_md5.py"
- "pypy-dist/lib_pypy/_sha1.py")
- (("#!.+/bin/python")
- (string-append "#!" (assoc-ref outputs "out") "/bin/pypy3"))))
- (copy-recursively "pypy-dist" (assoc-ref outputs "out")))
- #t)))))
+ (let* ((out (assoc-ref outputs "out"))
+ (bin-pypy3 (string-append out "/bin/pypy3"))
+ (shebang-match-python "#!.+/bin/python")
+ (shebang-pypy3 (string-append "#!" bin-pypy3))
+ (dist-dir "pypy/tool/release/pypy-dist"))
+ (with-directory-excursion dist-dir
+ ;; Delete test data.
+ (for-each
+ (lambda (x)
+ (delete-file-recursively (string-append
+ "lib-python/3/" x)))
+ '("tkinter/test"
+ "test"
+ "sqlite3/test"
+ "lib2to3/tests"
+ "idlelib/idle_test"
+ "distutils/tests"
+ "ctypes/test"
+ "unittest/test"))
+ ;; Patch shebang referencing python2
+ (substitute* '("lib-python/3/cgi.py"
+ "lib-python/3/encodings/rot_13.py")
+ ((shebang-match-python) shebang-pypy3))
+ (with-fluids ((%default-port-encoding "ISO-8859-1"))
+ (substitute* '("lib_pypy/_md5.py"
+ "lib_pypy/_sha1.py")
+ ((shebang-match-python) shebang-pypy3))))
+ (copy-recursively dist-dir out)))))))
(home-page "https://www.pypy.org/")
(synopsis "Python implementation with just-in-time compilation")
(description "PyPy is a faster, alternative implementation of the Python
programming language employing a just-in-time compiler. It supports most
Python code natively, including C extensions.")
- (license (list license:expat ; pypy itself; _pytest/
- license:psfl ; python standard library in lib-python/
- license:asl2.0 ; dotviewer/font/ and some of lib-python/
+ (license (list license:expat ; pypy itself; _pytest/
+ license:psfl ; python standard library in lib-python/
+ license:asl2.0 ; dotviewer/font/ and some of lib-python/
license:gpl3+ ; ./rpython/rlib/rvmprof/src/shared/libbacktrace/dwarf2.*
license:bsd-3 ; lib_pypy/cffi/_pycparser/ply/
(license:non-copyleft
diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm
index d8f4161eb7..f1f06828e9 100644
--- a/gnu/packages/radio.scm
+++ b/gnu/packages/radio.scm
@@ -872,7 +872,7 @@ using GNU Radio and the Qt GUI toolkit.")
(define-public fldigi
(package
(name "fldigi")
- (version "4.1.19")
+ (version "4.1.20")
(source
(origin
(method git-fetch)
@@ -881,7 +881,7 @@ using GNU Radio and the Qt GUI toolkit.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "08rmc7vb2irb67g3sry7md653n9ac0x0b44az729lj6sljqvw3bv"))))
+ (base32 "0y43241s3p8qzn7x6x28v5v2bf934riznj14bb7m6k6vgd849qzl"))))
(build-system gnu-build-system)
(native-inputs
`(("autoconf" ,autoconf)
diff --git a/gnu/packages/rocm.scm b/gnu/packages/rocm.scm
new file mode 100644
index 0000000000..66a28fc169
--- /dev/null
+++ b/gnu/packages/rocm.scm
@@ -0,0 +1,365 @@
+;;;
+;;; Copyright © 2021 Lars-Dominik Braun <lars@6xq.net>
+;;;
+;;; This program is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; This program is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages rocm)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix utils)
+ #:use-module (guix git-download)
+ #:use-module (guix build-system cmake)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages elf)
+ #:use-module (gnu packages gl)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages llvm)
+ #:use-module (gnu packages opencl)
+ #:use-module (gnu packages version-control)
+ #:use-module (gnu packages vim))
+
+;; The components are tightly integrated and can only be upgraded as a unit. If
+;; you want to upgrade ROCm, bump this version number and update hashes below.
+(define %rocm-version "4.3.0")
+
+(define-public rocm-cmake
+ (package
+ (name "rocm-cmake")
+ (version %rocm-version)
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/RadeonOpenCompute/rocm-cmake.git")
+ (commit (string-append "rocm-" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0sic2zxmzl2pb2865vvq55mbpcr8pby8v19pjdlm08pypqw5h6h6"))))
+ (build-system cmake-build-system)
+ (arguments `(#:tests? #f)) ; Tests try to use git commit
+ (native-inputs `(("git" ,git)))
+ (home-page "https://github.com/RadeonOpenCompute/rocm-cmake")
+ (synopsis "ROCm cmake modules")
+ (description "ROCm cmake modules provides cmake modules for common build
+tasks needed for the ROCM software stack.")
+ (license license:ncsa)))
+
+(define-public llvm-for-rocm
+ (hidden-package
+ (package
+ ;; Actually based on LLVM 13 as of v4.3, but llvm-12 works just fine.
+ (inherit llvm-12)
+ (name "llvm-for-rocm")
+ (version %rocm-version)
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/RadeonOpenCompute/llvm-project.git")
+ (commit (string-append "rocm-" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0p75nr1qpmy6crymdax5hm40wkimman4lnglz4x5cnbiqindya7s"))
+ (patches
+ (search-patches "llvm-roc-4.2.0-add_Object.patch"
+ "llvm-roc-3.0.0-add_libraries.patch"
+ "llvm-roc-4.0.0-remove-isystem-usr-include.patch"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments llvm-12)
+ ((#:phases phases '%standard-phases)
+ `(modify-phases ,phases
+ (add-after 'unpack 'chdir
+ (lambda _
+ (chdir "llvm")))))
+ ((#:configure-flags flags)
+ ''("-DLLVM_ENABLE_PROJECTS=llvm;clang;lld"
+ "-DLLVM_TARGETS_TO_BUILD=AMDGPU;X86"
+ "-DCMAKE_SKIP_BUILD_RPATH=FALSE"
+ "-DCMAKE_BUILD_WITH_INSTALL_RPATH=FALSE"
+ "-DBUILD_SHARED_LIBS:BOOL=TRUE"
+ "-DLLVM_VERSION_SUFFIX=")))))))
+
+(define-public rocm-device-libs
+ (package
+ (name "rocm-device-libs")
+ (version %rocm-version)
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/RadeonOpenCompute/ROCm-Device-Libs.git")
+ (commit (string-append "rocm-" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1f8xsylfajpxqjk6ayjnrry53y8b0a6lh9d72pd41nffxfyzvw3w"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags
+ (list "-DCMAKE_SKIP_BUILD_RPATH=FALSE"
+ "-DCMAKE_BUILD_WITH_INSTALL_RPATH=FALSE")))
+ (inputs `(("llvm" ,llvm-for-rocm)))
+ (home-page "https://github.com/RadeonOpenCompute/ROCm-Device-Libs")
+ (synopsis "ROCm Device libraries")
+ (description "AMD-specific device-side language runtime libraries, namely
+oclc, ocml, ockl, opencl, hip and hc.")
+ (license license:ncsa)))
+
+(define-public rocm-comgr
+ (package
+ (name "rocm-comgr")
+ (version %rocm-version)
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/RadeonOpenCompute/ROCm-CompilerSupport.git")
+ (commit (string-append "rocm-" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0bakbm7shr0l67lph44b5cnc9psd6rivg1mp79qizaawkn380x60"))
+ (patches
+ (search-patches "rocm-comgr-3.1.0-dependencies.patch"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'chdir
+ (lambda _
+ (chdir "lib/comgr"))))))
+ (inputs
+ `(("rocm-device-libs" ,rocm-device-libs)
+ ("llvm" ,llvm-for-rocm)
+ ("lld" ,lld)))
+ (home-page "https://github.com/RadeonOpenCompute/ROCm-CompilerSupport")
+ (synopsis "ROCm Code Object Manager")
+ (description "The Comgr library provides APIs for compiling and inspecting
+AMDGPU code objects.")
+ (license license:ncsa)))
+
+(define-public roct-thunk-interface
+ (package
+ (name "roct-thunk-interface")
+ (version %rocm-version)
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface.git")
+ (commit (string-append "rocm-" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0ffqhrrscmcydfqf61dk58d7nnxk6n2k68jhqfj7a4hvhlphb74f"))))
+ (build-system cmake-build-system)
+ (arguments `(#:tests? #f)) ; Not sure how to run tests.
+ (inputs `(("numactl" ,numactl)))
+ (home-page "https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface")
+ (synopsis "Radeon Open Compute Thunk Interface")
+ (description "User-mode API interfaces used to interact with the ROCk
+driver.")
+ (license license:ncsa)))
+
+(define-public rocr-runtime
+ (package
+ (name "rocr-runtime")
+ (version %rocm-version)
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/RadeonOpenCompute/ROCR-Runtime.git")
+ (commit (string-append "rocm-" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0jqfqf5ymwlbpac065bhigmkgsk7mbyimdgvca7ymn38wpf80ka7"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags
+ `(,(string-append
+ "-DBITCODE_DIR="
+ (assoc-ref %build-inputs "rocm-device-libs")
+ "/amdgcn/bitcode/"))
+ #:tests? #f ; No tests.
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'chdir
+ (lambda _
+ (chdir "src"))))))
+ (inputs
+ `(("libelf" ,libelf)
+ ("numactl" ,numactl)
+ ("llvm" ,llvm-for-rocm)
+ ("roct-thunk-interface" ,roct-thunk-interface)
+ ("rocm-device-libs" ,rocm-device-libs))) ; For bitcode.
+ (native-inputs `(("xxd" ,xxd)))
+ (home-page "https://github.com/RadeonOpenCompute/ROCR-Runtime")
+ (synopsis "ROCm Platform Runtime")
+ (description "User-mode API interfaces and libraries necessary for host
+applications to launch compute kernels to available HSA ROCm kernel agents.")
+ (license license:ncsa)))
+
+(define-public rocclr
+ (package
+ (name "rocclr")
+ (version %rocm-version)
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ROCm-Developer-Tools/ROCclr.git")
+ (commit (string-append "rocm-" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1pm1y020zriz7zmi95w0rcpka0jrsc7wwh81sssnysi8wxk3nnfy"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f ; No tests.
+ #:configure-flags
+ `(,(string-append
+ "-DOPENCL_DIR="
+ (assoc-ref %build-inputs "rocm-opencl-runtime-src")))))
+ (inputs
+ `(("mesa" ,mesa)
+ ("rocm-comgr" ,rocm-comgr)
+ ("llvm" ,llvm-for-rocm)
+ ("rocm-device-libs" ,rocm-device-libs)
+ ("rocr-runtime" ,rocr-runtime)
+ ("rocm-cmake" ,rocm-cmake)
+ ;; rocclr depends on a few headers provided by rocm-opencl-runtime.
+ ("rocm-opencl-runtime-src"
+ ,(origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime.git")
+ (commit (string-append "rocm-" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1cglpiaj3ny1z74ssmy6j63vj92sfy4q38ix6qsga0mg3b2wvqz3"))))))
+ (home-page "https://github.com/ROCm-Developer-Tools/ROCclr")
+ (synopsis "Radeon Open Compute Common Language Runtime")
+ (description "ROCclr is a virtual device interface that compute runtimes
+interact with to different backends such as ROCr or PAL. This abstraction
+allows runtimes to work on Windows as well as on Linux without much effort.")
+ (license license:ncsa)))
+
+(define-public rocm-opencl-runtime
+ (package
+ (name "rocm-opencl-runtime")
+ (version %rocm-version)
+ (home-page "https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit (string-append "rocm-" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1cglpiaj3ny1z74ssmy6j63vj92sfy4q38ix6qsga0mg3b2wvqz3"))
+ (patches
+ (search-patches
+ "rocm-opencl-runtime-3.10.0-includes.patch"
+ ;; Do not install libOpenCL, which ocl-icd provides.
+ "rocm-opencl-runtime-4.3-noopencl.patch"
+ ;; Guix includes a program clinfo already.
+ "rocm-opencl-runtime-4.3-noclinfo.patch"
+ ;; cltrace linking fails, remove it.
+ "rocm-opencl-runtime-4.3-nocltrace.patch"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f ; Not sure how to run them.
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'create-icd
+ ;; Manually install ICD, which simply consists of dumping
+ ;; the path of the .so into the correct file.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (vendors (string-append out "/etc/OpenCL/vendors"))
+ (sopath (string-append out "/lib/libamdocl64.so")))
+ (mkdir-p vendors)
+ (with-output-to-file (string-append vendors "/amdocl64.icd")
+ (lambda _ (display sopath)))))))))
+ (inputs
+ `(("mesa" ,mesa)
+ ("rocm-comgr" ,rocm-comgr)
+ ("rocr-runtime" ,rocr-runtime)
+ ("rocclr" ,rocclr)
+ ("ocl-icd" ,ocl-icd)
+ ("glew" ,glew)))
+ (native-inputs `())
+ (synopsis "ROCm OpenCL Runtime")
+ (description "OpenCL 2.0 compatible language runtime, supporting offline
+and in-process/in-memory compilation.")
+ (license license:ncsa)))
+
+(define-public rocminfo
+ (package
+ (name "rocminfo")
+ (version %rocm-version)
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/RadeonOpenCompute/rocminfo.git")
+ (commit (string-append "rocm-" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0pcm308vwkjrwnrk507iya20mkil8j0vx699w9jk2gas4n4jvkcz"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f ; No tests.
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-binary-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "rocminfo.cc"
+ (("lsmod")
+ (string-append (assoc-ref inputs "kmod") "/bin/lsmod"))
+ (("grep") (which "grep"))))))))
+ (inputs
+ `(("rocr-runtime" ,rocr-runtime)
+ ("kmod" ,kmod)))
+ (home-page "https://github.com/RadeonOpenCompute/rocminfo")
+ (synopsis "ROCm Application for Reporting System Info")
+ (description "List @acronym{HSA,Heterogeneous System Architecture} Agents
+available to ROCm and show their properties.")
+ (license license:ncsa)))
+
+(define-public rocm-bandwidth-test
+ (package
+ (name "rocm-bandwidth-test")
+ (version %rocm-version)
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/RadeonOpenCompute/rocm_bandwidth_test.git")
+ (commit (string-append "rocm-" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0a14kwkjpiyljgzxblh031qibn6xgbxp6m12zdy1pmwb2c44jjmm"))))
+ (build-system cmake-build-system)
+ (arguments `(#:tests? #f)) ; No tests.
+ (inputs `(("rocr-runtime" ,rocr-runtime)))
+ (home-page "https://github.com/RadeonOpenCompute/rocm_bandwidth_test")
+ (synopsis "Bandwidth test for ROCm")
+ (description "RocBandwidthTest is designed to capture the performance
+characteristics of buffer copying and kernel read/write operations. The help
+screen of the benchmark shows various options one can use in initiating
+cop/read/writer operations. In addition one can also query the topology of the
+system in terms of memory pools and their agents.")
+ (license license:ncsa)))
+
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 9eddc60b80..2a9fef518e 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -154,21 +154,16 @@ a focus on simplicity and productivity.")
(define-public ruby-2.7
(package
(inherit ruby-2.6)
- (version "2.7.2")
+ (version "2.7.4")
(source
(origin
- (method url-fetch)
+ (inherit (package-source ruby-2.6))
(uri (string-append "https://cache.ruby-lang.org/pub/ruby/"
(version-major+minor version)
"/ruby-" version ".tar.gz"))
(sha256
(base32
- "1m63461mxi3fg4y3bspbgmb0ckbbb1ldgf9xi0piwkpfsk80cmvf"))
- (modules '((guix build utils)))
- (snippet `(begin
- ;; Remove bundled libffi
- (delete-file-recursively "ext/fiddle/libffi-3.2.1")
- #t))))
+ "0nxwkxh7snmjqf787qsp4i33mxd1rbf9yzyfiky5k230i680jhrh"))))
(arguments
`(#:test-target "test"
#:configure-flags '("--enable-shared") ; dynamic linking
@@ -197,7 +192,7 @@ a focus on simplicity and productivity.")
(define-public ruby-3.0
(package
(inherit ruby-2.7)
- (version "3.0.0")
+ (version "3.0.2")
(source
(origin
(method url-fetch)
@@ -206,12 +201,12 @@ a focus on simplicity and productivity.")
"/ruby-" version ".tar.xz"))
(sha256
(base32
- "1cbcixwnr0y8q0lg67wjgplp06kjd6p6hjjh680csv3v0bpsxgv8"))))))
+ "0h2w2ms4gx2s96v3lzdr3add94bd2qqkhdjzaycmaqhg21rpf3jp"))))))
(define-public ruby-2.5
(package
(inherit ruby-2.6)
- (version "2.5.8")
+ (version "2.5.9")
(source
(origin
(method url-fetch)
@@ -220,12 +215,7 @@ a focus on simplicity and productivity.")
"/ruby-" version ".tar.xz"))
(sha256
(base32
- "0vad5ah1lrdhxsyqr5iqc8c7r7qczpmm76cz8rsf4crimpzv5483"))
- (modules '((guix build utils)))
- (snippet `(begin
- ;; Remove bundled libffi
- (delete-file-recursively "ext/fiddle/libffi-3.2.1")
- #t))))))
+ "1w2qncacm7h3f3il1whghdabwnv9fvwmz9f1a9vcg32006ljyzx8"))))))
(define-public ruby-2.4
(package
diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm
index fd67e4b8ba..359a345029 100644
--- a/gnu/packages/samba.scm
+++ b/gnu/packages/samba.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2015, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2019, 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
;;; Copyright © 2017, 2018, 2020 Marius Bakke <mbakke@fastmail.com>
@@ -172,15 +172,14 @@ external dependencies.")
(define-public samba
(package
(name "samba")
- (version "4.13.4")
+ (version "4.13.10")
(source
(origin
(method url-fetch)
(uri (string-append "https://download.samba.org/pub/samba/stable/"
"samba-" version ".tar.gz"))
(sha256
- (base32 "0y2wc7njhyhg055krp878xfv9c3wbhrhzn02d5ich30hyxilrcx1"))
- (patches (search-patches "samba-fix-fcntl-hint-detection.patch"))
+ (base32 "00q5hf2r71dyma785dckcyksv3082mqfgyy9q6k6rc6kqjwkirzh"))
(modules '((guix build utils)))
(snippet
'(begin
@@ -281,14 +280,14 @@ Desktops into Active Directory environments using the winbind daemon.")
(define-public talloc
(package
(name "talloc")
- (version "2.3.2")
+ (version "2.3.3")
(source (origin
(method url-fetch)
(uri (string-append "https://www.samba.org/ftp/talloc/talloc-"
version ".tar.gz"))
(sha256
(base32
- "1mvv57srpzcc1qh6vjjyjhgpdlcw4bmmsxfz4j8pfk9qkvwkx817"))))
+ "1ala3l6v8qk2pwq97z1zdkj1isnfnrp1923srp2g22mxd0impsbb"))))
(build-system gnu-build-system)
(arguments
'(#:phases
@@ -348,14 +347,14 @@ destructors. It is the core memory allocator used in Samba.")
(define-public tevent
(package
(name "tevent")
- (version "0.10.2")
+ (version "0.11.0")
(source (origin
(method url-fetch)
(uri (string-append "https://www.samba.org/ftp/tevent/tevent-"
version ".tar.gz"))
(sha256
(base32
- "15k6i8ad5lpxfjsjyq9h64zlyws8d3cm0vwdnaw8z1xjwli7hhpq"))))
+ "1fl2pj4p8p5fa2laykwf1sfjdw7pkw9slklj3vzc5ah8x348d6pf"))))
(build-system gnu-build-system)
(arguments
'(#:phases
@@ -368,7 +367,8 @@ destructors. It is the core memory allocator used in Samba.")
(string-append "--prefix=" out)
"--bundled-libraries=NONE")))))))
(native-inputs
- `(("pkg-config" ,pkg-config)
+ `(("cmocka" ,cmocka)
+ ("pkg-config" ,pkg-config)
("python" ,python)
("which" ,which)))
(propagated-inputs
@@ -384,14 +384,14 @@ many event types, including timers, signals, and the classic file descriptor eve
(define-public ldb
(package
(name "ldb")
- (version "1.5.6")
+ (version "2.4.0")
(source (origin
(method url-fetch)
(uri (string-append "https://www.samba.org/ftp/ldb/ldb-"
version ".tar.gz"))
(sha256
(base32
- "0nwpkqidsna4yz3vhjzzadm4hpviwnyk80yml8ay82gi1d6lg0pz"))
+ "10rd1z2llqz8xdx6m7yyxb9a118gx2xxwri18bhkkab9n1w55rvn"))
(modules '((guix build utils)))
(snippet
'(begin
diff --git a/gnu/packages/scanner.scm b/gnu/packages/scanner.scm
index 9b405a59af..00d094cc4b 100644
--- a/gnu/packages/scanner.scm
+++ b/gnu/packages/scanner.scm
@@ -23,14 +23,18 @@
(define-module (gnu packages scanner)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages compression)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gettext)
#:use-module (gnu packages ghostscript)
+ #:use-module (gnu packages glib)
#:use-module (gnu packages gtk)
#:use-module (gnu packages image)
#:use-module (gnu packages libusb)
+ #:use-module (gnu packages linux)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
+ #:use-module (gnu packages textutils)
#:use-module (gnu packages xml)
#:use-module (guix build-system gnu)
#:use-module (guix download)
@@ -190,6 +194,66 @@ proving access to any raster image scanner hardware (flatbed scanner,
hand-held scanner, video- and still-cameras, frame-grabbers, etc.). The
package contains the library and drivers.")))
+(define-public scanbd
+ (package
+ (name "scanbd")
+ (version "1.5.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/scanbd/releases/"
+ "scanbd-" version ".tgz"))
+ (sha256
+ (base32 "0pvy4qirfjdfm8aj6x5rkbgl7hk3jfa2s21qkk8ic5dqfjjab75n"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags
+ (list "--disable-debug"
+ "--sysconfdir=/etc")
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'install
+ (lambda* (#:key make-flags outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (conf (string-append out "/etc/scanbd")))
+ (apply invoke "make" "install"
+ ;; Install example configuration to the store, not /etc.
+ ;; These don't inherit from each other, so we need both.
+ (string-append "scanbdconfdir=" conf)
+ (string-append "scannerconfdir=" conf "/scanner.d")
+ make-flags))))
+ (add-after 'install 'install-extra-documentation
+ ;; The README provides more detailed set-up instructions than the
+ ;; man page.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (doc (string-append out "/share/doc/"
+ ,name "-" ,version)))
+ (install-file "doc/README.txt" doc)))))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("dbus" ,dbus)
+ ("libconfuse" ,libconfuse)
+ ("sane-backends" ,sane-backends)
+ ("udev" ,eudev)
+ ("zlib" ,zlib)))
+ (home-page "https://scanbd.sourceforge.io")
+ (synopsis "Configurable scanner button monitor")
+ (description "Scanbd stands for scanner button daemon. It regulary polls
+scanners for pressed buttons, function knob changes, or other events such
+as (un)plugging the scanner or inserting and removing paper. Then it performs
+the desired action(s) such as saving, copying, or e-mailing the image.
+
+Actions can be fully customized through scripts, based on any combination of
+switch or knob settings. Events are also signaled over D-Bus and scans can
+even be triggered over D-Bus from foreign applications.
+
+Scanbd talks to scanners through the @acronym{SANE, Scanner Access Now Easy}
+back-end library. This means that it supports almost all existing scanners,
+provided the driver also exposes the buttons.")
+ (license license:gpl2+)))
+
(define-public xsane
(package
(name "xsane")
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 3a87dad69f..ea1adb99ee 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -90,7 +90,7 @@
(define-public mit-scheme
(package
(name "mit-scheme")
- (version "10.1.3")
+ (version "11.2")
(source #f) ; see below
(outputs '("out" "doc"))
(build-system gnu-build-system)
@@ -173,11 +173,14 @@
("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)
- ("texlive" ,(texlive-updmap.cfg (list texlive-tex-texinfo)))
+ ("texlive" ,(texlive-updmap.cfg (list texlive-tex-texinfo
+ texlive-epsf)))
("texinfo" ,texinfo)
+ ("ghostscript" ,ghostscript)
("m4" ,m4)))
(inputs
`(("libx11" ,libx11)
+ ("ncurses" ,ncurses)
("source"
@@ -193,8 +196,8 @@
(match (%current-system)
("x86_64-linux"
(string-append version "-x86-64"))
- ("i686-linux"
- (string-append version "-i386"))
+ ("aarch64-linux"
+ (string-append version "-aarch64le"))
(_
(string-append "c-" version)))
".tar.gz"))
@@ -202,10 +205,10 @@
(match (%current-system)
("x86_64-linux"
(base32
- "03m7cc035w3avs91j2pcz9f15ssgvgp3rm045d1vbydqrkzfyw8k"))
- ("i686-linux"
+ "17822hs9y07vcviv2af17p3va7qh79dird49nj50bwi9rz64ia3w"))
+ ("aarch64-linux"
(base32
- "05sjyz90xxfnmi87qv8x0yx0fcallnzl1dciygdafp317pn489is"))
+ "11maixldk20wqb5js5p4imq221zz9nf27649v9pqkdf8fv7rnrs9"))
(_
(base32
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"))))))))
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index ae0e0fa72c..c8dcf65905 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -621,22 +621,28 @@ to generate and parse. The two primary functions are @code{cbor.loads} and
(define-public flatbuffers
(package
(name "flatbuffers")
- (version "1.10.0")
+ (version "2.0.0")
(source
(origin
- (method url-fetch)
- (uri (string-append "https://github.com/google/flatbuffers/archive/v"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/google/flatbuffers")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "0z4swldxs0s31hnkqdhsbfmc8vx3p7zsvmqaw4l31r2iikdy651p"))))
+ "1zbf6bdpps8369r1ql00irxrp58jnalycc8jcapb8iqg654vlfz8"))))
(build-system cmake-build-system)
(arguments
'(#:build-type "Release"
#:configure-flags
- (list (string-append "-DCMAKE_INSTALL_LIBDIR="
- (assoc-ref %outputs "out") "/lib"))))
+ (list "-DFLATBUFFERS_BUILD_SHAREDLIB=ON"
+ (string-append "-DCMAKE_INSTALL_LIBDIR="
+ (assoc-ref %outputs "out") "/lib"))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'make-writable
+ (lambda _ (for-each make-file-writable (find-files ".")))))))
(home-page "https://google.github.io/flatbuffers/")
(synopsis "Memory-efficient serialization library")
(description "FlatBuffers is a cross-platform serialization library for C++,
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index a694790fe3..68a4a401f6 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -957,7 +957,7 @@ files and text.")
(define-public nushell
(package
(name "nushell")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method git-fetch)
@@ -966,7 +966,7 @@ files and text.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "0cacc3pply9bly82kklphps2haajdzz6zgcc3nj419dp096fj3dz"))))
+ (base32 "0p5whwx6wk9k7mrxhr7azrppbj9mv53hd4bl1cgygxz231aq8337"))))
(build-system cargo-build-system)
(arguments
`(#:rust ,rust-1.52
@@ -975,43 +975,44 @@ files and text.")
#:cargo-inputs
(("rust-ctrlc" ,rust-ctrlc-3)
("rust-futures" ,rust-futures-0.3)
+ ("rust-insta" ,rust-insta-1)
("rust-itertools" ,rust-itertools-0.10)
("rust-mp4" ,rust-mp4-0.8)
- ("rust-nu-cli" ,rust-nu-cli-0.34)
- ("rust-nu-command" ,rust-nu-command-0.34)
- ("rust-nu-completion" ,rust-nu-completion-0.34)
- ("rust-nu-data" ,rust-nu-data-0.34)
- ("rust-nu-engine" ,rust-nu-engine-0.34)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-parser" ,rust-nu-parser-0.34)
- ("rust-nu-path" ,rust-nu-path-0.34)
- ("rust-nu-plugin" ,rust-nu-plugin-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
- ("rust-nu-value-ext" ,rust-nu-value-ext-0.34)
- ("rust-nu-plugin-binaryview" ,rust-nu-plugin-binaryview-0.34)
- ("rust-nu-plugin-chart" ,rust-nu-plugin-chart-0.34)
- ("rust-nu-plugin-fetch" ,rust-nu-plugin-fetch-0.34)
- ("rust-nu-plugin-from-bson" ,rust-nu-plugin-from-bson-0.34)
- ("rust-nu-plugin-from-sqlite" ,rust-nu-plugin-from-sqlite-0.34)
- ("rust-nu-plugin-inc" ,rust-nu-plugin-inc-0.34)
- ("rust-nu-plugin-match" ,rust-nu-plugin-match-0.34)
- ("rust-nu-plugin-post" ,rust-nu-plugin-post-0.34)
- ("rust-nu-plugin-ps" ,rust-nu-plugin-ps-0.34)
- ("rust-nu-plugin-query-json" ,rust-nu-plugin-query-json-0.34)
- ("rust-nu-plugin-s3" ,rust-nu-plugin-s3-0.34)
- ("rust-nu-plugin-selector" ,rust-nu-plugin-selector-0.34)
- ("rust-nu-plugin-start" ,rust-nu-plugin-start-0.34)
- ("rust-nu-plugin-sys" ,rust-nu-plugin-sys-0.34)
- ("rust-nu-plugin-textview" ,rust-nu-plugin-textview-0.34)
- ("rust-nu-plugin-to-bson" ,rust-nu-plugin-to-bson-0.34)
- ("rust-nu-plugin-to-sqlite" ,rust-nu-plugin-to-sqlite-0.34)
- ("rust-nu-plugin-tree" ,rust-nu-plugin-tree-0.34)
- ("rust-nu-plugin-xpath" ,rust-nu-plugin-xpath-0.34))
+ ("rust-nu-cli" ,rust-nu-cli-0.35)
+ ("rust-nu-command" ,rust-nu-command-0.35)
+ ("rust-nu-completion" ,rust-nu-completion-0.35)
+ ("rust-nu-data" ,rust-nu-data-0.35)
+ ("rust-nu-engine" ,rust-nu-engine-0.35)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-parser" ,rust-nu-parser-0.35)
+ ("rust-nu-path" ,rust-nu-path-0.35)
+ ("rust-nu-plugin" ,rust-nu-plugin-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
+ ("rust-nu-value-ext" ,rust-nu-value-ext-0.35)
+ ("rust-nu-plugin-binaryview" ,rust-nu-plugin-binaryview-0.35)
+ ("rust-nu-plugin-chart" ,rust-nu-plugin-chart-0.35)
+ ("rust-nu-plugin-fetch" ,rust-nu-plugin-fetch-0.35)
+ ("rust-nu-plugin-from-bson" ,rust-nu-plugin-from-bson-0.35)
+ ("rust-nu-plugin-from-sqlite" ,rust-nu-plugin-from-sqlite-0.35)
+ ("rust-nu-plugin-inc" ,rust-nu-plugin-inc-0.35)
+ ("rust-nu-plugin-match" ,rust-nu-plugin-match-0.35)
+ ("rust-nu-plugin-post" ,rust-nu-plugin-post-0.35)
+ ("rust-nu-plugin-ps" ,rust-nu-plugin-ps-0.35)
+ ("rust-nu-plugin-query-json" ,rust-nu-plugin-query-json-0.35)
+ ("rust-nu-plugin-s3" ,rust-nu-plugin-s3-0.35)
+ ("rust-nu-plugin-selector" ,rust-nu-plugin-selector-0.35)
+ ("rust-nu-plugin-start" ,rust-nu-plugin-start-0.35)
+ ("rust-nu-plugin-sys" ,rust-nu-plugin-sys-0.35)
+ ("rust-nu-plugin-textview" ,rust-nu-plugin-textview-0.35)
+ ("rust-nu-plugin-to-bson" ,rust-nu-plugin-to-bson-0.35)
+ ("rust-nu-plugin-to-sqlite" ,rust-nu-plugin-to-sqlite-0.35)
+ ("rust-nu-plugin-tree" ,rust-nu-plugin-tree-0.35)
+ ("rust-nu-plugin-xpath" ,rust-nu-plugin-xpath-0.35))
#:cargo-development-inputs
(("rust-dunce" ,rust-dunce-1)
("rust-hamcrest2" ,rust-hamcrest2-0.3)
- ("rust-nu-test-support" ,rust-nu-test-support-0.34)
+ ("rust-nu-test-support" ,rust-nu-test-support-0.35)
("rust-rstest" ,rust-rstest-0.10)
("rust-serial-test" ,rust-serial-test-0.5))))
(native-inputs
@@ -1036,17 +1037,17 @@ directory. These values can be piped through a series of steps, in a series
of commands called a ``pipeline''.")
(license license:expat)))
-(define-public rust-nu-ansi-term-0.34
+(define-public rust-nu-ansi-term-0.35
(package
(name "rust-nu-ansi-term")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu-ansi-term" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "1bs0ww7lnqf6144hd3nxxx4436dbf7h0zl3nnypwi0szf3h5rkyc"))))
+ (base32 "0lmax555a3k5dsxmks3s4al0qsn70i8g9w28xx5ymrxjdv1x577x"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
@@ -1062,34 +1063,35 @@ of commands called a ``pipeline''.")
underline).")
(license license:expat)))
-(define-public rust-nu-cli-0.34
+(define-public rust-nu-cli-0.35
(package
(name "rust-nu-cli")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu-cli" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "1jyv73h5wdc128p1mrskw1iwryk93rp0xw12fc7qcd4534jwccla"))))
+ (base32 "04d2xdjzhbj055vjr9d0v2fkjb7xnqpj6340b8xb65vcnwmhwc0c"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs
(("rust-ctrlc" ,rust-ctrlc-3)
("rust-indexmap" ,rust-indexmap-1)
+ ("rust-lazy-static" ,rust-lazy-static-1)
("rust-log" ,rust-log-0.4)
- ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.34)
- ("rust-nu-command" ,rust-nu-command-0.34)
- ("rust-nu-completion" ,rust-nu-completion-0.34)
- ("rust-nu-data" ,rust-nu-data-0.34)
- ("rust-nu-engine" ,rust-nu-engine-0.34)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-parser" ,rust-nu-parser-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
- ("rust-nu-stream" ,rust-nu-stream-0.34)
+ ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.35)
+ ("rust-nu-command" ,rust-nu-command-0.35)
+ ("rust-nu-completion" ,rust-nu-completion-0.35)
+ ("rust-nu-data" ,rust-nu-data-0.35)
+ ("rust-nu-engine" ,rust-nu-engine-0.35)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-parser" ,rust-nu-parser-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
+ ("rust-nu-stream" ,rust-nu-stream-0.35)
("rust-pretty-env-logger"
,rust-pretty-env-logger-0.4)
("rust-rustyline" ,rust-rustyline-8)
@@ -1104,17 +1106,17 @@ underline).")
(description "CLI for nushell")
(license license:expat)))
-(define-public rust-nu-command-0.34
+(define-public rust-nu-command-0.35
(package
(name "rust-nu-command")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu-command" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "1ri9dlrk4xmqfx4ydbfrz4bjcmrg2jfsj9ciaci34rq2faw8zq8q"))))
+ (base32 "1m85ar9sn4hfjikb1c5pl54bj6la4w6miwvwhjh0qd5vs843qpqk"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
@@ -1133,6 +1135,7 @@ underline).")
("rust-csv" ,rust-csv-1)
("rust-ctrlc" ,rust-ctrlc-3)
("rust-derive-new" ,rust-derive-new-0.5)
+ ("rust-digest" ,rust-digest-0.9)
("rust-directories-next"
,rust-directories-next-2)
("rust-dirs-next" ,rust-dirs-next-2)
@@ -1152,25 +1155,27 @@ underline).")
("rust-itertools" ,rust-itertools-0.10)
("rust-lazy-static" ,rust-lazy-static-1)
("rust-log" ,rust-log-0.4)
- ("rust-md5" ,rust-md5-0.7)
+ ("rust-md-5" ,rust-md-5-0.9)
("rust-meval" ,rust-meval-0.2)
("rust-minus" ,rust-minus-3)
- ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.34)
- ("rust-nu-data" ,rust-nu-data-0.34)
- ("rust-nu-engine" ,rust-nu-engine-0.34)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-json" ,rust-nu-json-0.34)
- ("rust-nu-parser" ,rust-nu-parser-0.34)
- ("rust-nu-path" ,rust-nu-path-0.34)
- ("rust-nu-plugin" ,rust-nu-plugin-0.34)
- ("rust-nu-pretty-hex" ,rust-nu-pretty-hex-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
- ("rust-nu-stream" ,rust-nu-stream-0.34)
- ("rust-nu-table" ,rust-nu-table-0.34)
+ ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.35)
+ ("rust-nu-data" ,rust-nu-data-0.35)
+ ("rust-nu-engine" ,rust-nu-engine-0.35)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-json" ,rust-nu-json-0.35)
+ ("rust-nu-parser" ,rust-nu-parser-0.35)
+ ("rust-nu-path" ,rust-nu-path-0.35)
+ ("rust-nu-plugin" ,rust-nu-plugin-0.35)
+ ("rust-nu-pretty-hex" ,rust-nu-pretty-hex-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-quickcheck-macros"
+ ,rust-quickcheck-macros-1)
+ ("rust-nu-source" ,rust-nu-source-0.35)
+ ("rust-nu-stream" ,rust-nu-stream-0.35)
+ ("rust-nu-table" ,rust-nu-table-0.35)
("rust-nu-test-support"
- ,rust-nu-test-support-0.34)
- ("rust-nu-value-ext" ,rust-nu-value-ext-0.34)
+ ,rust-nu-test-support-0.35)
+ ("rust-nu-value-ext" ,rust-nu-value-ext-0.35)
("rust-num-bigint" ,rust-num-bigint-0.3)
("rust-num-format" ,rust-num-format-0.4)
("rust-num-traits" ,rust-num-traits-0.2)
@@ -1180,8 +1185,6 @@ underline).")
("rust-query-interface"
,rust-query-interface-0.3)
("rust-quick-xml" ,rust-quick-xml-0.22)
- ("rust-quickcheck-macros"
- ,rust-quickcheck-macros-1)
("rust-rand" ,rust-rand-0.8)
("rust-rayon" ,rust-rayon-1)
("rust-regex" ,rust-regex-1)
@@ -1222,10 +1225,10 @@ underline).")
(description "CLI for nushell")
(license license:expat)))
-(define-public rust-nu-completion-0.34
+(define-public rust-nu-completion-0.35
(package
(name "rust-nu-completion")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
@@ -1234,7 +1237,7 @@ underline).")
(string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0h8z34ir5f1l6whkzhyj9p3zlxg62hqnp2f9df7hn1cv2yg06f26"))))
+ "0x264c7rsmsrm39fhka11cdp04iiclmjsycjq2nn80v9wkdmpmkm"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
@@ -1242,31 +1245,31 @@ underline).")
(("rust-dirs-next" ,rust-dirs-next-2)
("rust-indexmap" ,rust-indexmap-1)
("rust-is-executable" ,rust-is-executable-1)
- ("rust-nu-data" ,rust-nu-data-0.34)
- ("rust-nu-engine" ,rust-nu-engine-0.34)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-parser" ,rust-nu-parser-0.34)
- ("rust-nu-path" ,rust-nu-path-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
+ ("rust-nu-data" ,rust-nu-data-0.35)
+ ("rust-nu-engine" ,rust-nu-engine-0.35)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-parser" ,rust-nu-parser-0.35)
+ ("rust-nu-path" ,rust-nu-path-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
("rust-nu-test-support"
- ,rust-nu-test-support-0.34))))
+ ,rust-nu-test-support-0.35))))
(home-page "https://www.nushell.sh")
(synopsis "Completions for nushell")
(description "Completions for nushell")
(license license:expat)))
-(define-public rust-nu-data-0.34
+(define-public rust-nu-data-0.35
(package
(name "rust-nu-data")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu-data" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "1k2hsb8v1a69mfs5n66mscs5121fm00r6mmcpq2abfnlyvvfgrc3"))))
+ (base32 "0p0hblkrkfrrg9gg2d36lqy3b2mkwj132s7y6z4i09vgyvqns307"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
@@ -1282,18 +1285,17 @@ underline).")
("rust-getset" ,rust-getset-0.1)
("rust-indexmap" ,rust-indexmap-1)
("rust-log" ,rust-log-0.4)
- ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.34)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
- ("rust-nu-table" ,rust-nu-table-0.34)
+ ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.35)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
+ ("rust-nu-table" ,rust-nu-table-0.35)
("rust-nu-test-support"
- ,rust-nu-test-support-0.34)
- ("rust-nu-value-ext" ,rust-nu-value-ext-0.34)
+ ,rust-nu-test-support-0.35)
+ ("rust-nu-value-ext" ,rust-nu-value-ext-0.35)
("rust-num-bigint" ,rust-num-bigint-0.3)
("rust-num-format" ,rust-num-format-0.4)
("rust-num-traits" ,rust-num-traits-0.2)
- ("rust-polars" ,rust-polars-0.14)
("rust-query-interface"
,rust-query-interface-0.3)
("rust-serde" ,rust-serde-1)
@@ -1306,17 +1308,17 @@ underline).")
(description "CLI for nushell")
(license license:expat)))
-(define-public rust-nu-engine-0.34
+(define-public rust-nu-engine-0.35
(package
(name "rust-nu-engine")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu-engine" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "17k6gqpcvp1fn7hk90pivk1238qgbaz9iajgiff52m9zpyzwq8v1"))))
+ (base32 "1gmkpr7qq76r0cas31w5x2hhlwfgssvjr16m926q7capqfb47pdn"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
@@ -1346,18 +1348,18 @@ underline).")
("rust-itertools" ,rust-itertools-0.10)
("rust-lazy-static" ,rust-lazy-static-1)
("rust-log" ,rust-log-0.4)
- ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.34)
- ("rust-nu-data" ,rust-nu-data-0.34)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-parser" ,rust-nu-parser-0.34)
- ("rust-nu-path" ,rust-nu-path-0.34)
- ("rust-nu-plugin" ,rust-nu-plugin-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
- ("rust-nu-stream" ,rust-nu-stream-0.34)
+ ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.35)
+ ("rust-nu-data" ,rust-nu-data-0.35)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-parser" ,rust-nu-parser-0.35)
+ ("rust-nu-path" ,rust-nu-path-0.35)
+ ("rust-nu-plugin" ,rust-nu-plugin-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
+ ("rust-nu-stream" ,rust-nu-stream-0.35)
("rust-nu-test-support"
- ,rust-nu-test-support-0.34)
- ("rust-nu-value-ext" ,rust-nu-value-ext-0.34)
+ ,rust-nu-test-support-0.35)
+ ("rust-nu-value-ext" ,rust-nu-value-ext-0.35)
("rust-num-bigint" ,rust-num-bigint-0.3)
("rust-num-format" ,rust-num-format-0.4)
("rust-num-traits" ,rust-num-traits-0.2)
@@ -1377,17 +1379,17 @@ underline).")
(description "Core commands for nushell")
(license license:expat)))
-(define-public rust-nu-errors-0.34
+(define-public rust-nu-errors-0.35
(package
(name "rust-nu-errors")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu-errors" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "1c9ywwr9m6k27alfmja8i3lgdc6rqpxqqk21ccsqlvygq6784vv0"))))
+ (base32 "1078ijc2r77s211bm7izg39k5g21dq72b5jdmnp7pwq6k880xyxl"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
@@ -1398,8 +1400,8 @@ underline).")
("rust-derive-new" ,rust-derive-new-0.5)
("rust-getset" ,rust-getset-0.1)
("rust-glob" ,rust-glob-0.3)
- ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
+ ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
("rust-num-bigint" ,rust-num-bigint-0.3)
("rust-num-traits" ,rust-num-traits-0.2)
("rust-serde" ,rust-serde-1)
@@ -1411,17 +1413,17 @@ underline).")
(description "Core error subsystem for Nushell")
(license license:expat)))
-(define-public rust-nu-json-0.34
+(define-public rust-nu-json-0.35
(package
(name "rust-nu-json")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu-json" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "11n88gywhbn026in3n2yd5gfdb92j9yhka23p6wkdb626wh7i1c1"))))
+ (base32 "10vzq390xlrjwj02khqv5h186829d6armb9fymyqgrwy6hyik7wy"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
@@ -1437,17 +1439,17 @@ underline).")
(description "This package is a fork of @code{serde-hjson}.")
(license license:expat)))
-(define-public rust-nu-parser-0.34
+(define-public rust-nu-parser-0.35
(package
(name "rust-nu-parser")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu-parser" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "0k6f9dbhwhr0n78x0ilf3gyaqjdbig7mxknwr4lah1agcln3d5vk"))))
+ (base32 "1w06kf54jhl3c1xvvvr8g48f4zh48a6gm3b8sbxv5ac0armb58q2"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
@@ -1462,12 +1464,12 @@ underline).")
("rust-indexmap" ,rust-indexmap-1)
("rust-itertools" ,rust-itertools-0.10)
("rust-log" ,rust-log-0.4)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-path" ,rust-nu-path-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-path" ,rust-nu-path-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
("rust-nu-test-support"
- ,rust-nu-test-support-0.34)
+ ,rust-nu-test-support-0.35)
("rust-num-bigint" ,rust-num-bigint-0.3)
("rust-num-traits" ,rust-num-traits-0.2)
("rust-serde" ,rust-serde-1)
@@ -1477,17 +1479,17 @@ underline).")
(description "Nushell parser")
(license license:expat)))
-(define-public rust-nu-path-0.34
+(define-public rust-nu-path-0.35
(package
(name "rust-nu-path")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu-path" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "1by7y09ldiqzj0h9n30k351rxhv3ycs7z72d4gsw2g7c33gzaqsc"))))
+ (base32 "0dckmj1agrlpxbwkdqdn1msslm4xdsyd8b5ypfz4mxzmhwwxcfnh"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
@@ -1499,10 +1501,10 @@ underline).")
(description "Nushell parser")
(license license:expat)))
-(define-public rust-nu-plugin-0.34
+(define-public rust-nu-plugin-0.35
(package
(name "rust-nu-plugin")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
@@ -1510,19 +1512,19 @@ underline).")
(file-name
(string-append name "-" version ".tar.gz"))
(sha256
- (base32 "1zcraxxg2pmqlf3zg02i5jm203ynm2p5f51al74r7l8w9l17zkrv"))))
+ (base32 "10pygksxzzl8b6szanb4wgkf39hj0r54kf3r2rl1qk1lfg4vakjs"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs
(("rust-bigdecimal" ,rust-bigdecimal-0.2)
("rust-indexmap" ,rust-indexmap-1)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
("rust-nu-test-support"
- ,rust-nu-test-support-0.34)
- ("rust-nu-value-ext" ,rust-nu-value-ext-0.34)
+ ,rust-nu-test-support-0.35)
+ ("rust-nu-value-ext" ,rust-nu-value-ext-0.35)
("rust-num-bigint" ,rust-num-bigint-0.3)
("rust-serde" ,rust-serde-1)
("rust-serde-json" ,rust-serde-json-1))))
@@ -1531,17 +1533,17 @@ underline).")
(description "Nushell Plugin")
(license license:expat)))
-(define-public rust-nu-plugin-binaryview-0.34
+(define-public rust-nu-plugin-binaryview-0.35
(package
(name "rust-nu-plugin-binaryview")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu_plugin_binaryview" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "17c7yms68vwgkgjdn71qwlyd221z1l4c97pjrrw5a3hlybyqvb2x"))))
+ (base32 "01c2rqf4ncmrjkazh8jp5qc3xrq6qhhxwhdqjflmily89ch08cbz"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
@@ -1549,12 +1551,12 @@ underline).")
(("rust-crossterm" ,rust-crossterm-0.19)
("rust-image" ,rust-image-0.22)
("rust-neso" ,rust-neso-0.5)
- ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.34)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-plugin" ,rust-nu-plugin-0.34)
- ("rust-nu-pretty-hex" ,rust-nu-pretty-hex-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
+ ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.35)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-plugin" ,rust-nu-plugin-0.35)
+ ("rust-nu-pretty-hex" ,rust-nu-pretty-hex-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
("rust-rawkey" ,rust-rawkey-0.1))))
(home-page "https://www.nushell.sh")
(synopsis "Binary viewer plugin for Nushell")
@@ -1562,28 +1564,28 @@ underline).")
"This package provides a binary viewer plugin for Nushell.")
(license license:expat)))
-(define-public rust-nu-plugin-chart-0.34
+(define-public rust-nu-plugin-chart-0.35
(package
(name "rust-nu-plugin-chart")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu_plugin_chart" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "1mzw7cbh3nr1kl7k439wvirc7pvxvhl1b19ziip87bypgwaqjx86"))))
+ (base32 "1d0shl0fsk4j89vqan8fv5pipm2rrq1gf689hf42yrkh5h8ciwya"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs
(("rust-crossterm" ,rust-crossterm-0.19)
- ("rust-nu-data" ,rust-nu-data-0.34)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-plugin" ,rust-nu-plugin-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
- ("rust-nu-value-ext" ,rust-nu-value-ext-0.34)
+ ("rust-nu-data" ,rust-nu-data-0.35)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-plugin" ,rust-nu-plugin-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
+ ("rust-nu-value-ext" ,rust-nu-value-ext-0.35)
("rust-tui" ,rust-tui-0.15))))
(home-page "https://www.nushell.sh")
(synopsis "Plugin to display charts")
@@ -1591,17 +1593,17 @@ underline).")
"This package provides a plugin to display charts in Nushell.")
(license license:expat)))
-(define-public rust-nu-plugin-fetch-0.34
+(define-public rust-nu-plugin-fetch-0.35
(package
(name "rust-nu-plugin-fetch")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu_plugin_fetch" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "0cf4j9l74zsdbkh4g86jvn1db8s8rxwxmnqnazdcgvy8fgj8v2gh"))))
+ (base32 "1wsns5dh9727z1v88y1hcjw45h6bvrh0a4izx5p7b1ygfl0j8db5"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
@@ -1609,10 +1611,10 @@ underline).")
(("rust-base64" ,rust-base64-0.13)
("rust-futures" ,rust-futures-0.3)
("rust-mime" ,rust-mime-0.3)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-plugin" ,rust-nu-plugin-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-plugin" ,rust-nu-plugin-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
("rust-surf" ,rust-surf-2)
("rust-url" ,rust-url-2))))
(home-page "https://www.nushell.sh")
@@ -1620,28 +1622,28 @@ underline).")
(description "This package provides a URL fetch plugin for Nushell.")
(license license:expat)))
-(define-public rust-nu-plugin-from-bson-0.34
+(define-public rust-nu-plugin-from-bson-0.35
(package
(name "rust-nu-plugin-from-bson")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu_plugin_from_bson" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "0azshpp9cp1lc2xcm4zi45fx0swpqkmqw3yskzsap2fhpsiv7cp9"))))
+ (base32 "04v98rj6gks9rpawzsiwlhhqbl5pqjvhwhadad98nw7bqicd8miw"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs
(("rust-bigdecimal" ,rust-bigdecimal-0.2)
("rust-bson" ,rust-bson-0.14)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-plugin" ,rust-nu-plugin-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
- ("rust-nu-value-ext" ,rust-nu-value-ext-0.34)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-plugin" ,rust-nu-plugin-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
+ ("rust-nu-value-ext" ,rust-nu-value-ext-0.35)
("rust-num-traits" ,rust-num-traits-0.2))))
(home-page "https://www.nushell.sh")
(synopsis "Converter plugin to the bson format for Nushell")
@@ -1650,27 +1652,27 @@ underline).")
Nushell.")
(license license:expat)))
-(define-public rust-nu-plugin-from-sqlite-0.34
+(define-public rust-nu-plugin-from-sqlite-0.35
(package
(name "rust-nu-plugin-from-sqlite")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu_plugin_from_sqlite" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "0vq4v8dppw4ban485jf4z4pl05vaid2p9q72d4lmghjgspxvaajw"))))
+ (base32 "04s5733il9hamhpq32phisa9vfprlq8fy3b4887145d0fn4d10nz"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs
(("rust-bigdecimal" ,rust-bigdecimal-0.2)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-plugin" ,rust-nu-plugin-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
- ("rust-nu-value-ext" ,rust-nu-value-ext-0.34)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-plugin" ,rust-nu-plugin-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
+ ("rust-nu-value-ext" ,rust-nu-value-ext-0.35)
("rust-num-traits" ,rust-num-traits-0.2)
("rust-rusqlite" ,rust-rusqlite-0.25)
("rust-tempfile" ,rust-tempfile-3))))
@@ -1681,28 +1683,28 @@ Nushell.")
Nushell.")
(license license:expat)))
-(define-public rust-nu-plugin-inc-0.34
+(define-public rust-nu-plugin-inc-0.35
(package
(name "rust-nu-plugin-inc")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu_plugin_inc" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "0ms32kk0h74gz3h1d61sc1sbg490r3lcfpl4vy5gww2kl9qbgl9w"))))
+ (base32 "0414skx1qffmddp81kaacjd6bfcf9843xdq65kkaxc4lp1zs03i5"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs
- (("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-plugin" ,rust-nu-plugin-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
+ (("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-plugin" ,rust-nu-plugin-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
("rust-nu-test-support"
- ,rust-nu-test-support-0.34)
- ("rust-nu-value-ext" ,rust-nu-value-ext-0.34)
+ ,rust-nu-test-support-0.35)
+ ("rust-nu-value-ext" ,rust-nu-value-ext-0.35)
("rust-semver" ,rust-semver-0.11))))
(home-page "https://www.nushell.sh")
(synopsis "Version incrementer plugin for Nushell")
@@ -1711,25 +1713,25 @@ Nushell.")
Nushell.")
(license license:expat)))
-(define-public rust-nu-plugin-match-0.34
+(define-public rust-nu-plugin-match-0.35
(package
(name "rust-nu-plugin-match")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu_plugin_match" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "17manvhkh90lsq9rk2vjxscvbkbxr1qffdvz7bcyz35aqazw961a"))))
+ (base32 "1ycqw59ngkmqrwqbxaijl3b0l1vymxa3z7irf907fzw3qyx3w86v"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs
- (("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-plugin" ,rust-nu-plugin-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
+ (("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-plugin" ,rust-nu-plugin-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
("rust-regex" ,rust-regex-1))))
(home-page "https://www.nushell.sh")
(synopsis "Regex match plugin for Nushell")
@@ -1737,17 +1739,17 @@ Nushell.")
"This package provides a regex match plugin for Nushell.")
(license license:expat)))
-(define-public rust-nu-plugin-post-0.34
+(define-public rust-nu-plugin-post-0.35
(package
(name "rust-nu-plugin-post")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu_plugin_post" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "0cfi6ggy318mjwlgx4sdvhbjbdmil9c04f5w8s1f3d64xp69yynz"))))
+ (base32 "1ny6d1fg303xwv7hsmajphy0s934dyiqz2apm0zv505v0wz7k3r9"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
@@ -1755,10 +1757,10 @@ Nushell.")
(("rust-base64" ,rust-base64-0.13)
("rust-futures" ,rust-futures-0.3)
("rust-mime" ,rust-mime-0.3)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-plugin" ,rust-nu-plugin-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-plugin" ,rust-nu-plugin-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
("rust-num-traits" ,rust-num-traits-0.2)
("rust-serde-json" ,rust-serde-json-1)
("rust-surf" ,rust-surf-2)
@@ -1768,27 +1770,27 @@ Nushell.")
(description "This package is an HTTP POST plugin for Nushell.")
(license license:expat)))
-(define-public rust-nu-plugin-ps-0.34
+(define-public rust-nu-plugin-ps-0.35
(package
(name "rust-nu-plugin-ps")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu_plugin_ps" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "0fkl1c92gs59f5466s236s50mxpmwapfgg8jrm6pv32zqjdh0g26"))))
+ (base32 "0mlfax0j855n3r5mx0f4498ydb735xj2nrcfsh0zr3w5fkdff3l9"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs
(("rust-futures" ,rust-futures-0.3)
("rust-futures-timer" ,rust-futures-timer-3)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-plugin" ,rust-nu-plugin-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-plugin" ,rust-nu-plugin-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
("rust-num-bigint" ,rust-num-bigint-0.3)
("rust-sysinfo" ,rust-sysinfo-0.16))))
(home-page "https://www.nushell.sh")
@@ -1797,105 +1799,105 @@ Nushell.")
"This package provides a process list plugin for Nushell.")
(license license:expat)))
-(define-public rust-nu-plugin-query-json-0.34
+(define-public rust-nu-plugin-query-json-0.35
(package
(name "rust-nu-plugin-query-json")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu_plugin_query_json" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "1kiyr0wli7w8xwngapvi77nnc9pdwzhli9i6d4d7c2ic5rcmzc1g"))))
+ (base32 "1xjk1lcq6pf7a94397p8hdypkn38g4wv859qwcrh9llz9awi23n1"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs
(("rust-gjson" ,rust-gjson-0.7)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-plugin" ,rust-nu-plugin-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34))))
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-plugin" ,rust-nu-plugin-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35))))
(home-page "https://www.nushell.sh")
(synopsis "Query JSON files with Gjson")
(description "query json files with gjson")
(license license:expat)))
-(define-public rust-nu-plugin-s3-0.34
+(define-public rust-nu-plugin-s3-0.35
(package
(name "rust-nu-plugin-s3")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu_plugin_s3" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "0h7w3vw86h01rw7l5q3f5417xclyscl3s8p2bx927k4rw3x5iwdh"))))
+ (base32 "027d2pdbxr1qxfk4fby10r1yvm95sbna0in762b3c84461ci3kj5"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs
(("rust-futures" ,rust-futures-0.3)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-plugin" ,rust-nu-plugin-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-plugin" ,rust-nu-plugin-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
("rust-s3handler" ,rust-s3handler-0.7))))
(home-page "https://www.nushell.sh")
(synopsis "S3 plugin for Nushell")
(description "This package is an S3 plugin for Nushell.")
(license license:expat)))
-(define-public rust-nu-plugin-selector-0.34
+(define-public rust-nu-plugin-selector-0.35
(package
(name "rust-nu-plugin-selector")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu_plugin_selector" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "1wpjhhzi8sfwwy0aakcw65zspv8gmpixmcpmwxfsz62jq5n0sj93"))))
+ (base32 "1pabiyb67cpf0d4cj4w6v8d402imvy844ixilvrhl6pgyg2a8mvj"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs
(("rust-nipper" ,rust-nipper-0.1)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-plugin" ,rust-nu-plugin-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34))))
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-plugin" ,rust-nu-plugin-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35))))
(home-page "https://www.nushell.sh")
(synopsis "Web scraping using CSS selector")
(description
"This package provides web scraping using CSS selector.")
(license license:expat)))
-(define-public rust-nu-plugin-start-0.34
+(define-public rust-nu-plugin-start-0.35
(package
(name "rust-nu-plugin-start")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu_plugin_start" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "0s1kmjdygk60s10wcqfwmhvmkgqfbdf3nss95ds18dh64nnrkgk5"))))
+ (base32 "1g5j74jbadm9ckgz7yp1bc773hnpplwk8p94xxihsxjmy29nqvbd"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs
(("rust-glob" ,rust-glob-0.3)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-plugin" ,rust-nu-plugin-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-plugin" ,rust-nu-plugin-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
("rust-open" ,rust-open-1)
("rust-url" ,rust-url-2)
("rust-webbrowser" ,rust-webbrowser-0.5))))
@@ -1906,10 +1908,10 @@ Nushell.")
Nushell.")
(license license:expat)))
-(define-public rust-nu-plugin-sys-0.34
+(define-public rust-nu-plugin-sys-0.35
(package
(name "rust-nu-plugin-sys")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
@@ -1917,17 +1919,17 @@ Nushell.")
(file-name
(string-append name "-" version ".tar.gz"))
(sha256
- (base32 "1mi883gwj79kb9cp6zxvl8di9q82ik5s7azcqxmlahyz0f7dd7rm"))))
+ (base32 "1wvnxb6dnd3vqci00glrli6l7n4r9gbb4s7ihm5rqvsi9qyfbsfp"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs
(("rust-futures" ,rust-futures-0.3)
("rust-futures-util" ,rust-futures-util-0.3)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-plugin" ,rust-nu-plugin-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-plugin" ,rust-nu-plugin-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
("rust-num-bigint" ,rust-num-bigint-0.3)
("rust-sysinfo" ,rust-sysinfo-0.18))))
(home-page "https://www.nushell.sh")
@@ -1935,28 +1937,28 @@ Nushell.")
(description "This package provides a system info plugin for Nushell.")
(license license:expat)))
-(define-public rust-nu-plugin-textview-0.34
+(define-public rust-nu-plugin-textview-0.35
(package
(name "rust-nu-plugin-textview")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu_plugin_textview" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "14is8myb0yqi402zdami66qnn9jgfpm37g7bxnqiax7cdrw1dkhb"))))
+ (base32 "0kwzpybxkc8bbv6aa7ijkyiy2wrcbjv9nfjs32wzvcvchg6f5k75"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs
(("bat" ,bat)
- ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.34)
- ("rust-nu-data" ,rust-nu-data-0.34)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-plugin" ,rust-nu-plugin-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
+ ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.35)
+ ("rust-nu-data" ,rust-nu-data-0.35)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-plugin" ,rust-nu-plugin-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
("rust-term-size" ,rust-term-size-0.3)
("rust-url" ,rust-url-2))))
(home-page "https://www.nushell.sh")
@@ -1965,27 +1967,27 @@ Nushell.")
Nushell.")
(license license:expat)))
-(define-public rust-nu-plugin-to-bson-0.34
+(define-public rust-nu-plugin-to-bson-0.35
(package
(name "rust-nu-plugin-to-bson")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu_plugin_to_bson" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "1iq9kv60zd4vmxql3ac2sxnkvj51pwf2vfsar8ldmjhsg45w8r74"))))
+ (base32 "0yq04z02wl1nwm5k75766x6d24xwji9znqgbyz21mwri1hy85afw"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs
(("rust-bson" ,rust-bson-0.14)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-plugin" ,rust-nu-plugin-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
- ("rust-nu-value-ext" ,rust-nu-value-ext-0.34)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-plugin" ,rust-nu-plugin-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
+ ("rust-nu-value-ext" ,rust-nu-value-ext-0.35)
("rust-num-traits" ,rust-num-traits-0.2))))
(home-page "https://www.nushell.sh")
(synopsis "Converter plugin to the bson format for Nushell")
@@ -1994,27 +1996,27 @@ Nushell.")
Nushell.")
(license license:expat)))
-(define-public rust-nu-plugin-to-sqlite-0.34
+(define-public rust-nu-plugin-to-sqlite-0.35
(package
(name "rust-nu-plugin-to-sqlite")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu_plugin_to_sqlite" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "1iq83bk8xi4y93fz0mj526vz54js6r8gpiqp310jgg8h1d6fiv3j"))))
+ (base32 "1nq1z8bxjw6gg0hay75g1230h7nxa4ggcvqp8wd09zicwk0pd8f0"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs
(("rust-hex" ,rust-hex-0.4)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-plugin" ,rust-nu-plugin-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
- ("rust-nu-value-ext" ,rust-nu-value-ext-0.34)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-plugin" ,rust-nu-plugin-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
+ ("rust-nu-value-ext" ,rust-nu-value-ext-0.35)
("rust-num-traits" ,rust-num-traits-0.2)
("rust-rusqlite" ,rust-rusqlite-0.25)
("rust-tempfile" ,rust-tempfile-3))))
@@ -2025,26 +2027,26 @@ Nushell.")
Nushell.")
(license license:expat)))
-(define-public rust-nu-plugin-tree-0.34
+(define-public rust-nu-plugin-tree-0.35
(package
(name "rust-nu-plugin-tree")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu_plugin_tree" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "0wyfkddvcim8rrxjhb6zxz951wvmxd6qlrigzim1h2d3i7x5gkkr"))))
+ (base32 "08rcgy3d3nk0h232bnv42pr3qzrs34dbw3ghmrk8n2lr3a0i88zb"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs
(("rust-derive-new" ,rust-derive-new-0.5)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-plugin" ,rust-nu-plugin-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-plugin" ,rust-nu-plugin-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
("rust-ptree" ,rust-ptree-0.3))))
(home-page "https://www.nushell.sh")
(synopsis "Tree viewer plugin for Nushell")
@@ -2052,27 +2054,27 @@ Nushell.")
Nushell.")
(license license:expat)))
-(define-public rust-nu-plugin-xpath-0.34
+(define-public rust-nu-plugin-xpath-0.35
(package
(name "rust-nu-plugin-xpath")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu_plugin_xpath" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "1r4gpgpx4gl75ihm4y38jsvk2sj5h7rx8phsm4qmnzxd9pwvwqwd"))))
+ (base32 "0vzvs008w1p4fg0icax6qllri2xpj504xl6nql3w7rm7m4hg8liq"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs
(("rust-bigdecimal" ,rust-bigdecimal-0.2)
("rust-indexmap" ,rust-indexmap-1)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-plugin" ,rust-nu-plugin-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-plugin" ,rust-nu-plugin-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
("rust-sxd-document" ,rust-sxd-document-0.3)
("rust-sxd-xpath" ,rust-sxd-xpath-0.4))))
(home-page "https://www.nushell.sh")
@@ -2080,23 +2082,23 @@ Nushell.")
(description "Traverses XML")
(license license:expat)))
-(define-public rust-nu-pretty-hex-0.34
+(define-public rust-nu-pretty-hex-0.35
(package
(name "rust-nu-pretty-hex")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu-pretty-hex" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "0zc33npid3fkl1nj4k2pq3rak4ws89n2c781vwwiyrnp4525imif"))))
+ (base32 "0mg1xdrss9jvc7kmn65b14abm2yhjgdx7yzpz1iry9907hfvkwvc"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs
(("rust-heapless" ,rust-heapless-0.6)
- ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.34)
+ ("rust-nu-ansi-term" ,rust-nu-ansi-term-0.35)
("rust-rand" ,rust-rand-0.8))))
(home-page "https://www.nushell.sh")
(synopsis "Pretty hex dump of bytes slice in the common style")
@@ -2105,17 +2107,17 @@ Nushell.")
style.")
(license license:expat)))
-(define-public rust-nu-protocol-0.34
+(define-public rust-nu-protocol-0.35
(package
(name "rust-nu-protocol")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu-protocol" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "1ycb0w8x1aprysri35xfl6il28bhq5qjlki12pp6vs8ydpwaqnv6"))))
+ (base32 "1cqngmqrkqjvkf76vw9j0pjjw3r766nqpk2j33kfapzw33bsxlpi"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
@@ -2123,12 +2125,14 @@ style.")
(("rust-bigdecimal" ,rust-bigdecimal-0.2)
("rust-byte-unit" ,rust-byte-unit-4)
("rust-chrono" ,rust-chrono-0.4)
+ ("rust-chrono-humanize"
+ ,rust-chrono-humanize-0.2)
("rust-derive-new" ,rust-derive-new-0.5)
("rust-getset" ,rust-getset-0.1)
("rust-indexmap" ,rust-indexmap-1)
("rust-log" ,rust-log-0.4)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
("rust-num-bigint" ,rust-num-bigint-0.3)
("rust-num-integer" ,rust-num-integer-0.1)
("rust-num-traits" ,rust-num-traits-0.2)
@@ -2143,17 +2147,17 @@ style.")
(description "Core values and protocols for Nushell")
(license license:expat)))
-(define-public rust-nu-source-0.34
+(define-public rust-nu-source-0.35
(package
(name "rust-nu-source")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu-source" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "0hn0yfg7kx3s3jdg3czl7z98zvdxpnys7ijcrqhpa1i0313s7x7i"))))
+ (base32 "1y4r5g146fcqs999z6nr6pvqp26yff5a01i18sp4n3qsr5h9n3di"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
@@ -2170,46 +2174,46 @@ style.")
Nushell.")
(license license:expat)))
-(define-public rust-nu-stream-0.34
+(define-public rust-nu-stream-0.35
(package
(name "rust-nu-stream")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu-stream" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "075rfkl1bhr08g9pn0r5ji7dnbxc92ggrf454x0cfnjvjsxiy6n7"))))
+ (base32 "1l1lc4p3jylfb6x56527vjphqjr3a5yh8ci1rgysargh3jnzj990"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs
(("rust-futures" ,rust-futures-0.3)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34))))
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35))))
(home-page "https://www.nushell.sh")
(synopsis "Nushell stream")
(description "This package provides Nushell stream.")
(license license:expat)))
-(define-public rust-nu-table-0.34
+(define-public rust-nu-table-0.35
(package
(name "rust-nu-table")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu-table" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "17i37fj2qsyikmh3yrfqq7gg7j8f6d8g20livfra57mvzvixk4b6"))))
+ (base32 "0w85lkvzw6l8zzarnbymw7kx0hzizfxz0lqiy4h7d6vk33fn7yav"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs
- (("rust-nu-ansi-term" ,rust-nu-ansi-term-0.34)
+ (("rust-nu-ansi-term" ,rust-nu-ansi-term-0.35)
("rust-regex" ,rust-regex-1)
("rust-unicode-width" ,rust-unicode-width-0.1))))
(home-page "https://www.nushell.sh")
@@ -2217,17 +2221,17 @@ Nushell.")
(description "Nushell table printing")
(license license:expat)))
-(define-public rust-nu-test-support-0.34
+(define-public rust-nu-test-support-0.35
(package
(name "rust-nu-test-support")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "nu-test-support" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "1h7rgmczr5fdr3yn163q2bgmvl2fmybvv28dlmxxrr9jcnvqr8xg"))))
+ (base32 "1lyjv27d2xa31sjf80cca74v88bgkar81i41fyjql2zc6gvf8pq1"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
@@ -2239,10 +2243,10 @@ Nushell.")
("rust-glob" ,rust-glob-0.3)
("rust-hamcrest2" ,rust-hamcrest2-0.3)
("rust-indexmap" ,rust-indexmap-1)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
- ("rust-nu-value-ext" ,rust-nu-value-ext-0.34)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
+ ("rust-nu-value-ext" ,rust-nu-value-ext-0.35)
("rust-num-bigint" ,rust-num-bigint-0.3)
("rust-tempfile" ,rust-tempfile-3))))
(home-page "https://www.nushell.sh")
@@ -2251,10 +2255,10 @@ Nushell.")
tests.")
(license license:expat)))
-(define-public rust-nu-value-ext-0.34
+(define-public rust-nu-value-ext-0.35
(package
(name "rust-nu-value-ext")
- (version "0.34.0")
+ (version "0.35.0")
(source
(origin
(method url-fetch)
@@ -2262,16 +2266,16 @@ tests.")
(file-name
(string-append name "-" version ".tar.gz"))
(sha256
- (base32 "1c2xkgjiczvz8rzrq53hhg2gn6vyqif4wk7kqp8vayah82a53qry"))))
+ (base32 "00xvygh7vya1xgng7bplcq63ipsavcqqwgzilvyay60wvfhxqx5y"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs
(("rust-indexmap" ,rust-indexmap-1)
("rust-itertools" ,rust-itertools-0.10)
- ("rust-nu-errors" ,rust-nu-errors-0.34)
- ("rust-nu-protocol" ,rust-nu-protocol-0.34)
- ("rust-nu-source" ,rust-nu-source-0.34)
+ ("rust-nu-errors" ,rust-nu-errors-0.35)
+ ("rust-nu-protocol" ,rust-nu-protocol-0.35)
+ ("rust-nu-source" ,rust-nu-source-0.35)
("rust-num-traits" ,rust-num-traits-0.2))))
(home-page "https://www.nushell.sh")
(synopsis "@code{Extension} traits for values in Nushell")
diff --git a/gnu/packages/spice.scm b/gnu/packages/spice.scm
index b407a4b95b..b21394ea8a 100644
--- a/gnu/packages/spice.scm
+++ b/gnu/packages/spice.scm
@@ -351,8 +351,8 @@ resolution scaling on graphical console window resize.")
(build-system meson-build-system)
(propagated-inputs
`(("glib" ,glib) ; Requires: in the pkg-config file
- ("nss" ,nss))) ; Requires.private: in the pkg-config
- ; file
+ ("nss" ,nss) ; Requires.private: in the pkg-config
+ ("pcsc-lite" ,pcsc-lite))) ; file
(native-inputs
`(("openssl" ,openssl)
("nss" ,nss "bin")
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 8b43fbaa38..804e2e6a8c 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -14,6 +14,7 @@
;;; Copyright © 2020 Tim Howes <timhowes@lavabit.com>
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Bonface Munyoki Kilyungi <me@bonfacemunyoki.com>
+;;; Copyright © 2021 Lars-Dominik Braun <lars@6xq.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -6300,3 +6301,35 @@ the machinery described in the paper \"Learning interactions via hierarchical
group-lasso regularization\" (JCGS 2015, Volume 24, Issue 3).
Michael Lim & Trevor Hastie (2015)")
(license license:gpl2)))
+
+(define-public r-datasaurus
+ (package
+ (name "r-datasaurus")
+ (version "0.1.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "datasauRus" version))
+ (sha256
+ (base32
+ "1w1yhwwrmh95bklacz44wjwynxd8cj3z8b9zvsnzmk18m5a4k0fl"))))
+ (properties `((upstream-name . "datasauRus")))
+ (build-system r-build-system)
+ (native-inputs `(("r-knitr" ,r-knitr)))
+ (home-page
+ "https://github.com/lockedata/datasauRus")
+ (synopsis "Datasets from the Datasaurus Dozen")
+ (description
+ "The Datasaurus Dozen is a set of datasets with the same summary
+statistics. They retain the same summary statistics despite having radically
+different distributions. The datasets represent a larger and quirkier object
+lesson that is typically taught via Anscombe's Quartet (available in the
+'datasets' package). Anscombe's Quartet contains four very different
+distributions with the same summary statistics and as such highlights the value
+of visualisation in understanding data, over and above summary statistics. As
+well as being an engaging variant on the Quartet, the data is generated in a
+novel way. The simulated annealing process used to derive datasets from the
+original Datasaurus is detailed in \"Same Stats, Different Graphs: Generating
+Datasets with Varied Appearance and Identical Statistics through Simulated
+Annealing\" @url{doi:10.1145/3025453.3025912}.")
+ (license license:expat)))
diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm
index 0f0491b39b..4200793021 100644
--- a/gnu/packages/suckless.scm
+++ b/gnu/packages/suckless.scm
@@ -8,6 +8,7 @@
;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2017 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -49,6 +50,78 @@
#:use-module (guix utils)
#:use-module (guix packages))
+(define-public slscroll
+ (package
+ (name "slscroll")
+ (version "0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://dl.suckless.org/tools/scroll-"
+ version ".tar.gz"))
+ (sha256
+ (base32 "1mpfrvn122lnaqid1pi99ckpxd6x679b0w91pl003xmdwsfdbcly"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; no check target
+ #:make-flags
+ (list
+ (string-append "CC=" ,(cc-for-target))
+ (string-append "PREFIX=" %output))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)))) ; no configure script
+ (home-page "https://tools.suckless.org/scroll/")
+ (synopsis "Scroll-back buffer program for st")
+ (description "Scroll is a program that provides a scroll back buffer for
+terminal like @code{st}.")
+ (license license:isc)))
+
+(define-public tabbed
+ (package
+ (name "tabbed")
+ (version "0.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://dl.suckless.org/tools/tabbed-"
+ version ".tar.gz"))
+ (sha256
+ (base32 "0hhwckyzvsj9aim2l6m69wmvl2n7gzd6b1ly8qjnlpgcrcxfllbn"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; no check target
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (substitute* "config.mk"
+ (("/usr/local")
+ (assoc-ref outputs "out"))
+ (("/usr/X11R6")
+ (assoc-ref inputs "libx11"))
+ (("/usr/include/freetype2")
+ (string-append (assoc-ref inputs "freetype")
+ "/include/freetype2"))
+ (("CC = cc")
+ (string-append "CC = " ,(cc-for-target))))))
+ (delete 'configure)))) ; no configure script
+ (inputs
+ `(("fontconfig" ,fontconfig)
+ ("freetype" ,freetype)
+ ("libx11" ,libx11)
+ ("libxft" ,libxft)))
+ (home-page "https://tools.suckless.org/tabbed/")
+ (synopsis "Tab interface for application supporting Xembed")
+ (description "Tabbed is a generic tabbed frontend to xembed-aware
+applications. It was originally designed for surf but also usable with many
+other applications, i.e. st, uzbl, urxvt and xterm.")
+ (license
+ ;; Dual-licensed.
+ (list
+ license:expat
+ license:x11))))
+
(define-public slstatus
;; No release tarballs yet.
(let ((commit "84a2f117a32f0796045941260cdc4b69852b41e0")
diff --git a/gnu/packages/syndication.scm b/gnu/packages/syndication.scm
index a55f1180f7..215e8e32cb 100644
--- a/gnu/packages/syndication.scm
+++ b/gnu/packages/syndication.scm
@@ -474,9 +474,10 @@ a simple interface that makes it easy to organize and browse feeds.")
`(#:phases
(modify-phases %standard-phases
(replace 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
+ (lambda* (#:key tests? inputs outputs #:allow-other-keys)
(add-installed-pythonpath inputs outputs)
- (invoke "pytest"))))))
+ (when tests?
+ (invoke "pytest")))))))
(inputs
`(("python-beautifulsoup4" ,python-beautifulsoup4)
("python-decorator" ,python-decorator)
diff --git a/gnu/packages/task-runners.scm b/gnu/packages/task-runners.scm
index 49a07fa3bd..1c1fa69894 100644
--- a/gnu/packages/task-runners.scm
+++ b/gnu/packages/task-runners.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
+;;; Copyright © 2021 Ivan Gankevich <i.gankevich@spbu.ru>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -19,8 +20,14 @@
(define-module (gnu packages task-runners)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
+ #:use-module (guix download)
#:use-module (guix git-download)
+ #:use-module (guix utils)
+ #:use-module (gnu packages bash)
+ #:use-module (gnu packages compression)
#:use-module (gnu packages golang)
+ #:use-module (gnu packages mail)
+ #:use-module (guix build-system gnu)
#:use-module (guix build-system go))
(define-public run
@@ -47,3 +54,60 @@
using a Runfile.")
(home-page "https://github.com/TekWizely/run")
(license license:expat)))
+
+(define-public task-spooler
+ (package
+ (name "task-spooler")
+ (version "1.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://vicerveza.homeunix.net/~viric/soft/ts/ts-" version ".tar.gz"))
+ (sha256 (base32 "0y32sm2i2jxs88c307h76449fynk75p9qfw1k11l5ixrn03z67pl"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:make-flags
+ (let ((c-flags "-g -O2"))
+ (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+ ,(string-append "CC=" (cc-for-target))
+ (string-append "CFLAGS=" c-flags)))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure) ;; no configuration script
+ (add-after 'unpack 'rename-and-patch-paths
+ (lambda _
+ ;; Rename "ts" to "tsp" to not interfere with "ts" command
+ ;; from moreutils package.
+ (rename-file "ts.1" "tsp.1");
+ (substitute* '("Makefile" "testbench.sh")
+ (("\\bts\\b") "tsp"))
+ ;; Patch gzip/sendmail/shell paths.
+ (substitute* "execute.c"
+ (("execlp\\(\"gzip\"")
+ (format #f "execlp(\"~a/bin/gzip\""
+ (assoc-ref %build-inputs "gzip"))))
+ (substitute* "list.c"
+ (("/bin/sh\\b") (which "sh")))
+ (substitute* "env.c"
+ (("execlp\\(\"/bin/sh\"")
+ (format #f "execlp(\"~a/bin/sh\""
+ (assoc-ref %build-inputs "bash"))))
+ (substitute* "mail.c"
+ (("execl\\(\"/usr/sbin/sendmail\"")
+ (format #f "execl(\"~a/sbin/sendmail\""
+ (assoc-ref %build-inputs "sendmail"))))))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (setenv "PATH" (string-join (list (getenv "PATH") (getcwd)) ":"))
+ (invoke "./testbench.sh")))))))
+ (inputs
+ `(("bash" ,bash-minimal)
+ ("gzip" ,gzip)
+ ("sendmail" ,sendmail)))
+ (synopsis "UNIX task queue system")
+ (description "Task spooler lets users run shell commands asynchronously
+one after the other in a separate process.")
+ (home-page "https://vicerveza.homeunix.net/~viric/soft/ts/")
+ (license license:gpl2+)))
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index fccda07094..4b8df04f17 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -4,13 +4,13 @@
;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015 David Thompson <davet@gnu.org>
-;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2017, 2019, 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017, 2018 Nikita <nikita@n0.is>
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017, 2018, 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
-;;; Copyright © 2017–2019, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
@@ -51,6 +51,7 @@
#:use-module (guix build-system trivial)
#:use-module (gnu packages compression)
#:use-module (gnu packages)
+ #:use-module (gnu packages autotools)
#:use-module (gnu packages bash)
#:use-module (gnu packages check)
#:use-module (gnu packages curl)
@@ -1034,6 +1035,14 @@ coding footprint.")
(native-inputs
`(("gzip" ,gzip)
("tar" ,tar)))
+ ;; The following definition is copied from the cURL package to prevent a
+ ;; cycle between the curl and tls modules.
+ (native-search-paths
+ (list (search-path-specification
+ (variable "CURL_CA_BUNDLE")
+ (file-type 'regular)
+ (separator #f)
+ (files '("etc/ssl/certs/ca-certificates.crt")))))
(home-page "https://dehydrated.io/")
(synopsis "Let's Encrypt/ACME client implemented as a shell script")
(description "Dehydrated is a client for signing certificates with an
@@ -1099,3 +1108,34 @@ default set of preferences. Remaining on a specific version for backwards
compatibility is also supported.")
(home-page "https://github.com/awslabs/s2n")
(license license:asl2.0)))
+
+(define-public wolfssl
+ (package
+ (name "wolfssl")
+ (version "4.8.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/wolfSSL/wolfssl")
+ (commit (string-append "v" version "-stable"))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1w9gs9cq2yhj5s3diz3x1l15pgrc1pbm00jccizvcjyibmwyyf2h"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:configure-flags
+ '("--enable-reproducible-build")))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)))
+ (synopsis "SSL/TLS implementation")
+ (description "The wolfSSL embedded SSL library (formerly CyaSSL) is an
+SSL/TLS library written in ANSI C and targeted for embedded, RTOS, and
+resource-constrained environments - primarily because of its small size, speed,
+and feature set. wolfSSL supports industry standards up to the current TLS 1.3
+and DTLS 1.2, is up to 20 times smaller than OpenSSL, and offers progressive
+ciphers such as ChaCha20, Curve25519, NTRU, and Blake2b.")
+ (home-page "https://www.wolfssl.com/")
+ (license license:gpl2+))) ; Audit
diff --git a/gnu/packages/uucp.scm b/gnu/packages/uucp.scm
index 1bb4fdb975..120417dea1 100644
--- a/gnu/packages/uucp.scm
+++ b/gnu/packages/uucp.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2021 Arun Isaac <arunisaac@systemreboot.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -17,10 +18,13 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages uucp)
+ #:use-module (gnu packages golang)
+ #:use-module (gnu packages texinfo)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
- #:use-module (guix build-system gnu))
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system go))
(define-public uucp
(package
@@ -54,3 +58,115 @@
set of utilities for remotely transferring files, email and net news
between computers.")
(license gpl2+)))
+
+(define-public nncp
+ (package
+ (name "nncp")
+ (version "7.5.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://www.nncpgo.org/download/nncp-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "1r1zgj7gpkdmdm3wf31m0xi8y313kzd4dbyp4r4y8khnp32jvn8l"))
+ (modules '((ice-9 ftw)
+ (guix build utils)))
+ (snippet
+ '(begin
+ ;; Unbundle dependencies.
+ ;; TODO: go.cypherpunks.ru was down at the time of
+ ;; packaging. Unbundle go.cypherpunks dependencies as well once it
+ ;; comes back online.
+ (for-each (lambda (file)
+ (unless (member file (list "." ".." "go.cypherpunks.ru"))
+ (delete-file-recursively (string-append "src/vendor/" file))))
+ (scandir "src/vendor"))
+ ;; Delete built documentation.
+ (delete-file "doc/nncp.info")
+ #t))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:modules ((guix build gnu-build-system)
+ ((guix build go-build-system) #:prefix go:)
+ (guix build utils))
+ #:imported-modules ,%go-build-system-modules
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'unpack 'setup-go-environment
+ (assoc-ref go:%standard-phases 'setup-go-environment))
+ (add-after 'unpack 'go-unpack
+ (lambda* (#:key source #:allow-other-keys)
+ ;; Copy source to GOPATH.
+ (copy-recursively "src" "../src/go.cypherpunks.ru/nncp/v7")
+ ;; Move bundled dependencies to GOPATH.
+ (for-each (lambda (dependency)
+ (rename-file (string-append "src/vendor/go.cypherpunks.ru/"
+ dependency)
+ (string-append "../src/go.cypherpunks.ru/"
+ dependency)))
+ (list "balloon" "recfile"))
+ ;; Delete empty bundled dependencies directory.
+ (delete-file-recursively "src/vendor")))
+ (replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ ;; Set configuration path.
+ (setenv "CFGPATH" "/etc/nncp.hjson")
+ ;; Set output directories.
+ (setenv "BINDIR" (string-append out "/bin"))
+ (setenv "INFODIR" (string-append out "/share/info"))
+ (setenv "DOCDIR" (string-append out "/share/doc/nncp")))
+ ;; Set absolute store paths to sh and cat.
+ (substitute* (list "src/pipe.go" "src/toss_test.go")
+ (("/bin/sh") (which "sh")))
+ (substitute* "src/toss_test.go"
+ (("; cat") (string-append "; " (which "cat"))))
+ ;; Remove module flags.
+ (substitute* (list "bin/default.do" "bin/hjson-cli.do" "test.do")
+ ((" -mod=vendor") "")
+ ((" -m") ""))
+ ;; Use the correct module path. `go list` does not report the
+ ;; correct module path since we have moved the source files.
+ (substitute* "bin/default.do"
+ (("^mod=[^\n]*" all) "mod=go.cypherpunks.ru/nncp/v7"))
+ ;; Disable timeout in tests. Tests can take longer than the
+ ;; default timeout on spinning disks.
+ (substitute* "test.do"
+ (("test") "test -timeout 0"))))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "contrib/do" "-c" "test"))))
+ (add-after 'install 'remove-go-references
+ (assoc-ref go:%standard-phases 'remove-go-references)))))
+ (inputs
+ `(("go-github-com-davecgh-go-xdr" ,go-github-com-davecgh-go-xdr)
+ ("go-github-com-dustin-go-humanize" ,go-github-com-dustin-go-humanize)
+ ("go-github-com-flynn-noise" ,go-github-com-flynn-noise)
+ ("go-github-com-gorhill-cronexpr" ,go-github-com-gorhill-cronexpr)
+ ("go-github-com-hjson-hjson-go" ,go-github-com-hjson-hjson-go)
+ ("go-github-com-klauspost-compress" ,go-github-com-klauspost-compress)
+ ("go-golang-org-x-crypto" ,go-golang-org-x-crypto)
+ ("go-golang-org-x-net" ,go-golang-org-x-net)
+ ("go-golang-org-x-term" ,go-golang-org-x-term)
+ ("go-lukechampine-com-blake3" ,go-lukechampine-com-blake3)))
+ (native-inputs
+ `(("go" ,go)
+ ("texinfo" ,texinfo)))
+ (home-page "http://www.nncpgo.org/")
+ (synopsis "Store and forward utilities")
+ (description "NNCP (Node to Node copy) is a collection of utilities
+simplifying secure store-and-forward files, mail and command exchanging.
+These utilities are intended to help build up small size (dozens of nodes)
+ad-hoc friend-to-friend (F2F) statically routed darknet delay-tolerant
+networks for fire-and-forget secure reliable files, file requests, Internet
+mail and commands transmission. All packets are integrity checked, end-to-end
+encrypted, explicitly authenticated by known participants public keys. Onion
+encryption is applied to relayed packets. Each node acts both as a client and
+server, can use push and poll behaviour model. Multicasting areas, offline
+sneakernet/floppynet, dead drops, sequential and append-only CD-ROM/tape
+storages, air-gapped computers and online TCP daemon with full-duplex
+resumable data transmission exists are all supported.")
+ (license gpl3)))
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index b6f7d5eafc..660a219ea0 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -1036,7 +1036,7 @@ a built-in cache to decrease server I/O pressure.")
"'"))
(("/usr/sbin/sendmail")
(search-input-file inputs
- "/usr/sbin/sendmail"))))))))
+ "/sbin/sendmail"))))))))
(inputs
`(("git" ,git)
("sendmail" ,sendmail)))
@@ -1603,7 +1603,7 @@ execution of any hook written in any language before every commit.")
(define-public mercurial
(package
(name "mercurial")
- (version "5.8")
+ (version "5.8.1")
(source (origin
(method url-fetch)
(uri (string-append "https://www.mercurial-scm.org/"
@@ -1611,7 +1611,7 @@ execution of any hook written in any language before every commit.")
(patches (search-patches "mercurial-hg-extension-path.patch"))
(sha256
(base32
- "17rhlmmkqz5ll3k68jfzpcifg3nndbcbc2nx7kw8xn3qcj7nlpgw"))))
+ "16xi4bmjqzi7ig8sfa5mnypfpbbbiyafmmqrs4nxmgc743za7fl1"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 7ae5c62a58..ac6fc14b1f 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -781,7 +781,7 @@ television and DVD. It is also known as AC-3.")
(define-public libaom
(package
(name "libaom")
- (version "3.1.1")
+ (version "3.1.2")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -790,7 +790,7 @@ television and DVD. It is also known as AC-3.")
(file-name (git-file-name name version))
(sha256
(base32
- "11fy2xw35ladkjcz71samhcpqlqr3y0n1n17nk90i13aydrll66f"))))
+ "1c7yrhb56qj5c3lz54n1f9cbrvdr32g2yrrdiiy72sib8ycq9hz2"))))
(build-system cmake-build-system)
(native-inputs
`(("perl" ,perl)
@@ -4752,7 +4752,7 @@ and audio capture, network stream playback, and many more.")
(define-public dav1d
(package
(name "dav1d")
- (version "0.9.0")
+ (version "0.9.1")
(source
(origin
(method git-fetch)
@@ -4761,7 +4761,7 @@ and audio capture, network stream playback, and many more.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "0ki3wlyaqr80gl1srbbd18dd5bs1sl9icxym8ar62abpvgzxl5yk"))))
+ (base32 "15ngaqyjbwkj0rd9mvxaqf3i9vzsnlrqgr50cnxxjqnpf7xdmslj"))))
(build-system meson-build-system)
(native-inputs `(("nasm" ,nasm)))
(home-page "https://code.videolan.org/videolan/dav1d")
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index a0c0d0d84a..5a928d9b46 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -303,7 +303,7 @@ and the GTK+ toolkit.")
(define-public lynx
(package
(name "lynx")
- (version "2.9.0dev.6")
+ (version "2.9.0dev.9")
(source (origin
(method url-fetch)
(uri (string-append
@@ -311,7 +311,7 @@ and the GTK+ toolkit.")
"/lynx" version ".tar.bz2"))
(sha256
(base32
- "1cjkpwxc1r8x8q73bgh9a4skaph1bwa0anml6f6lvf7lh5zvxw3q"))))
+ "06jhv8ibfw1xkf8d8zrnkc2aw4d462s77hlp6f6xa6k8awzxvmkg"))))
(build-system gnu-build-system)
(native-inputs `(("pkg-config" ,pkg-config)
("perl" ,perl)))
@@ -490,7 +490,7 @@ interface.")
(define-public qutebrowser
(package
(name "qutebrowser")
- (version "2.2.2")
+ (version "2.3.1")
(source
(origin
(method url-fetch)
@@ -498,7 +498,7 @@ interface.")
"qutebrowser/releases/download/v" version "/"
"qutebrowser-" version ".tar.gz"))
(sha256
- (base32 "11vjp20gzmdjj09b7wxzn7ar6viih0bk76y618yqsyqqkffylmbq"))))
+ (base32 "05n64mw9lzzxpxr7lhakbkm9ir3x8p0rwk6vbbg01aqg5iaanyj0"))))
(build-system python-build-system)
(native-inputs
`(("python-attrs" ,python-attrs))) ; for tests
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 23a4130b63..c0ed0f98a5 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -1382,8 +1382,7 @@ current version of any major web browser.")
'(begin
;; Remove code using the problematic JSON license (see
;; <https://www.gnu.org/licenses/license-list.html#JSON>).
- (delete-file-recursively "bin/jsonchecker")
- #t))))
+ (delete-file-recursively "bin/jsonchecker")))))
(build-system cmake-build-system)
(arguments
(if (string-prefix? "aarch64" (or (%current-target-system)
@@ -1393,10 +1392,8 @@ current version of any major web browser.")
(add-after 'unpack 'patch-aarch-march-detection
(lambda _
(substitute* (find-files "." "^CMakeLists\\.txt$")
- (("native") "armv8-a"))
- #t))))
- ;; Disable CPU optimization for reproducibility.
- '(#:configure-flags '("-DRAPIDJSON_ENABLE_INSTRUMENTATION_OPT=OFF"))))
+ (("native") "armv8-a"))))))
+ '()))
(home-page "https://github.com/Tencent/rapidjson")
(synopsis "JSON parser/generator for C++ with both SAX/DOM style API")
(description
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 6963cad8f1..dde6e9926d 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -50,6 +50,7 @@
;;; Copyright © 2021 Paul A. Patience <paul@apatience.com>
;;; Copyright © 2021 Niklas Eklund <niklas.eklund@posteo.net>
;;; Copyright © 2021 Nikita Domnitskii <nikita@domnitskii.me>
+;;; Copyright © 2021 ikasero <ahmed@ikasero.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -101,6 +102,7 @@
#:use-module (gnu packages haskell-xyz)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages image)
+ #:use-module (gnu packages libevent)
#:use-module (gnu packages linux)
#:use-module (gnu packages m4)
#:use-module (gnu packages man)
@@ -912,6 +914,55 @@ xedit, for example. The human factors crowd would agree it should make
things less distracting.")
(license license:public-domain)))
+(define-public unclutter-xfixes
+ (package
+ (name "unclutter-xfixes")
+ (version "1.5")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Airblader/unclutter-xfixes")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "148m4wx8v57s3l2wb69y9imb00y8ca2li27hsxibwnl1wrkb7z4b"))))
+ (build-system gnu-build-system)
+ (arguments `(#:tests? #f
+ #:make-flags
+ (list ,(string-append "CC=" (cc-for-target))
+ (string-append "PREFIX=" (assoc-ref %outputs "out")))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure))))
+ (inputs
+ `(("libx11" ,libx11)
+ ("libev" ,libev)
+ ("libxfixes" ,libxfixes)
+ ("libxi" ,libxi)))
+ (native-inputs
+ `(("asciidoc" ,asciidoc)
+ ("pkg-config" ,pkg-config)))
+ (home-page "https://github.com/Airblader/unclutter-xfixes")
+ (synopsis "Hide idle mouse cursor")
+ (description
+ "unclutter-xfixes is a rewrite of the popular tool unclutter, but
+using the x11-xfixes extension. This means that this rewrite doesn't
+use fake windows or pointer grabbing and hence causes less problems
+with window managers and/or applications.
+
+Unclutter is a program which runs permanently in the background of an
+X11 session. It checks on the X11 pointer (cursor) position every few
+seconds, and when it finds it has not moved (and no buttons are pressed
+on the mouse, and the cursor is not in the root window) it creates a
+small sub-window as a child of the window the cursor is in. The new
+window installs a cursor of size 1x1 but a mask of all 0, i.e. an
+invisible cursor. This allows you to see all the text in an xterm or
+xedit, for example. The human factors crowd would agree it should make
+things less distracting.")
+ (license license:expat)))
+
(define-public xautomation
(package
(name "xautomation")
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 4d913d14c6..08b24f67d5 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -1243,7 +1243,7 @@ of data to either CD/DVD/BD.")
(define-public mousepad
(package
(name "mousepad")
- (version "0.5.5")
+ (version "0.5.6")
(source (origin
(method url-fetch)
(uri (string-append "https://archive.xfce.org/src/apps/mousepad/"
@@ -1251,7 +1251,7 @@ of data to either CD/DVD/BD.")
version ".tar.bz2"))
(sha256
(base32
- "1qdbch7g8ppwn1rsm8nq9rbvabvx02lvn3dxb45ga3g1w005zhs0"))))
+ "03rmjraxb6a3w7gknmf6mdzkfc0m8shs1vkb2chvv28xn1irhma2"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '(;; Use the GSettings keyfile backend rather than
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index ab3e441a7b..c784d312b1 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -12,7 +12,7 @@
;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de>
-;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2020, 2021 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2021 qblade <qblade@protonmail.com>
;;; Copyright © 2021 Hui Lu <luhuins@163.com>
;;;
@@ -1383,14 +1383,8 @@ information on the configuration file syntax."
(let ((security-limits
;; Create /etc/security containing the provided "limits.conf" file.
(lambda (limits-file)
- `(("security"
- ,(computed-file
- "security"
- #~(begin
- (mkdir #$output)
- (stat #$limits-file)
- (symlink #$limits-file
- (string-append #$output "/limits.conf"))))))))
+ `(("security/limits.conf"
+ ,limits-file))))
(pam-extension
(lambda (pam)
(let ((pam-limits (pam-entry
@@ -1700,21 +1694,21 @@ proxy of 'guix-daemon'...~%")
(define (guix-activation config)
"Return the activation gexp for CONFIG."
- (match config
- (($ <guix-configuration> guix build-group build-accounts authorize-key? keys)
- ;; Assume that the store has BUILD-GROUP as its group. We could
- ;; otherwise call 'chown' here, but the problem is that on a COW overlayfs,
- ;; chown leads to an entire copy of the tree, which is a bad idea.
-
- ;; Generate a key pair and optionally authorize substitute server keys.
- #~(begin
- (unless (file-exists? "/etc/guix/signing-key.pub")
- (system* #$(file-append guix "/bin/guix") "archive"
- "--generate-key"))
-
- #$(if authorize-key?
- (substitute-key-authorization keys guix)
- #~#f)))))
+ (match-record config <guix-configuration>
+ (guix authorize-key? authorized-keys)
+ #~(begin
+ ;; Assume that the store has BUILD-GROUP as its group. We could
+ ;; otherwise call 'chown' here, but the problem is that on a COW overlayfs,
+ ;; chown leads to an entire copy of the tree, which is a bad idea.
+
+ ;; Generate a key pair and optionally authorize substitute server keys.
+ (unless (file-exists? "/etc/guix/signing-key.pub")
+ (system* #$(file-append guix "/bin/guix") "archive"
+ "--generate-key"))
+
+ #$(if authorize-key?
+ (substitute-key-authorization authorized-keys guix)
+ #~#f))))
(define* (references-file item #:optional (name "references"))
"Return a file that contains the list of references of ITEM."
diff --git a/gnu/services/configuration.scm b/gnu/services/configuration.scm
index fd07b6fa49..df3d3b6f9b 100644
--- a/gnu/services/configuration.scm
+++ b/gnu/services/configuration.scm
@@ -25,10 +25,12 @@
#:use-module (guix records)
#:use-module (guix gexp)
#:use-module ((guix utils) #:select (source-properties->location))
+ #:use-module ((guix diagnostics) #:select (location-file))
+ #:use-module ((guix modules) #:select (file-name->module-name))
#:autoload (texinfo) (texi-fragment->stexi)
#:autoload (texinfo serialize) (stexi->texi)
#:use-module (ice-9 match)
- #:use-module ((srfi srfi-1) #:select (append-map))
+ #:use-module (srfi srfi-1)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:export (configuration-field
@@ -252,35 +254,62 @@ does not have a default value" field kind)))
;; A little helper to make it easier to document all those fields.
(define (generate-documentation documentation documentation-name)
(define (str x) (object->string x))
+
+ (define (package->symbol package)
+ "Return the first symbol name of a package that matches PACKAGE, else #f."
+ (let* ((module (file-name->module-name
+ (location-file (package-location package))))
+ (symbols (filter-map
+ identity
+ (module-map (lambda (symbol var)
+ (and (equal? package (variable-ref var))
+ symbol))
+ (resolve-module module)))))
+ (if (null? symbols)
+ #f
+ (first symbols))))
+
(define (generate configuration-name)
(match (assq-ref documentation configuration-name)
((fields . sub-documentation)
- `((para "Available " (code ,(str configuration-name)) " fields are:")
- ,@(map
- (lambda (f)
- (let ((field-name (configuration-field-name f))
- (field-type (configuration-field-type f))
- (field-docs (cdr (texi-fragment->stexi
- (configuration-field-documentation f))))
- (default (catch #t
- (configuration-field-default-value-thunk f)
- (lambda _ '%invalid))))
- (define (show-default? val)
- (or (string? val) (number? val) (boolean? val)
- (and (symbol? val) (not (eq? val '%invalid)))
- (and (list? val) (and-map show-default? val))))
- `(deftypevr (% (category
- (code ,(str configuration-name)) " parameter")
- (data-type ,(str field-type))
- (name ,(str field-name)))
- ,@field-docs
- ,@(if (show-default? default)
- `((para "Defaults to " (samp ,(str default)) "."))
- '())
- ,@(append-map
- generate
- (or (assq-ref sub-documentation field-name) '())))))
- fields)))))
+ `((deftp (% (category "Data Type") (name ,(str configuration-name)))
+ (para "Available " (code ,(str configuration-name)) " fields are:")
+ (table
+ (% (formatter (asis)))
+ ,@(map
+ (lambda (f)
+ (let ((field-name (configuration-field-name f))
+ (field-type (configuration-field-type f))
+ (field-docs (cdr (texi-fragment->stexi
+ (configuration-field-documentation f))))
+ (default (catch #t
+ (configuration-field-default-value-thunk f)
+ (lambda _ '%invalid))))
+ (define (show-default? val)
+ (or (string? val) (number? val) (boolean? val)
+ (package? val)
+ (and (symbol? val) (not (eq? val '%invalid)))
+ (and (list? val) (and-map show-default? val))))
+
+ (define (show-default val)
+ (cond
+ ((package? val)
+ (symbol->string (package->symbol val)))
+ (else (str val))))
+
+ `(entry (% (heading
+ (code ,(str field-name))
+ ,@(if (show-default? default)
+ `(" (default: "
+ (code ,(show-default default)) ")")
+ '())
+ " (type: " ,(str field-type) ")"))
+ (para ,@field-docs)
+ ,@(append-map
+ generate
+ (or (assq-ref sub-documentation field-name)
+ '())))))
+ fields)))))))
(stexi->texi `(*fragment* . ,(generate documentation-name))))
(define (configuration->documentation configuration-symbol)
diff --git a/gnu/services/telephony.scm b/gnu/services/telephony.scm
index e1259cc2df..fd90840324 100644
--- a/gnu/services/telephony.scm
+++ b/gnu/services/telephony.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 nee <nee-git@hidamari.blue>
+;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -17,16 +18,45 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu services telephony)
- #:use-module (gnu services)
+ #:use-module ((gnu build jami-service) #:select (account-fingerprint?))
+ #:use-module ((gnu services) #:hide (delete))
+ #:use-module (gnu services configuration)
#:use-module (gnu services shepherd)
#:use-module (gnu system shadow)
#:use-module (gnu packages admin)
+ #:use-module (gnu packages certs)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages jami)
#:use-module (gnu packages telephony)
#:use-module (guix records)
+ #:use-module (guix modules)
+ #:use-module (guix packages)
#:use-module (guix gexp)
#:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-2)
+ #:use-module (srfi srfi-26)
+ #:use-module (ice-9 format)
#:use-module (ice-9 match)
- #:export (murmur-configuration
+ #:export (jami-account
+ jami-account-archive
+ jami-account-allowed-contacts
+ jami-account-moderators
+ jami-account-rendezvous-point?
+ jami-account-discovery?
+ jami-account-bootstrap-uri
+ jami-account-name-server-uri
+
+ jami-configuration
+ jami-configuration-jamid
+ jami-configuration-dbus
+ jami-configuration-enable-logging?
+ jami-configuration-debug?
+ jami-configuration-auto-answer?
+ jami-configuration-accounts
+
+ jami-service-type
+
+ murmur-configuration
make-murmur-configuration
murmur-configuration?
murmur-configuration-package
@@ -74,6 +104,652 @@
murmur-service-type))
+
+;;;
+;;; Jami daemon.
+;;;
+
+;;; XXX: Passing a computed-file object as the account is used for tests.
+(define (string-or-computed-file? val)
+ (or (string? val)
+ (computed-file? val)))
+
+(define (string-list? val)
+ (and (list? val)
+ (and-map string? val)))
+
+(define (account-fingerprint-list? val)
+ (and (list? val)
+ (and-map account-fingerprint? val)))
+
+(define-maybe string-list)
+
+(define-maybe/no-serialization account-fingerprint-list)
+
+(define-maybe boolean)
+
+(define-maybe string)
+
+;;; The following serializers are used to derive an account details alist from
+;;; a <jami-account> record.
+(define (serialize-string-list _ val)
+ (string-join val ";"))
+
+(define (serialize-boolean _ val)
+ (format #f "~:[false~;true~]" val))
+
+(define (serialize-string _ val)
+ val)
+
+;;; Note: Serialization is used to produce an account details alist that can
+;;; be passed to the SET-ACCOUNT-DETAILS procedure. Fields that do not map to
+;;; a Jami account 'detail' should have their serialization disabled via the
+;;; 'empty-serializer' procedure.
+(define-configuration jami-account
+ (archive
+ (string-or-computed-file)
+ "The account archive (backup) file name of the account. This is used to
+provision the account when the service starts. The account archive should
+@emph{not} be encrypted. It is highly recommended to make it readable only to
+the @samp{root} user (i.e., not in the store), to guard against leaking the
+secret key material of the Jami account it contains."
+ empty-serializer)
+ (allowed-contacts
+ (maybe-account-fingerprint-list 'disabled)
+ "The list of allowed contacts for the account, entered as their 40
+characters long fingerprint. Messages or calls from accounts not in that list
+will be rejected. When unspecified, the configuration of the account archive
+is used as-is with respect to contacts and public inbound calls/messaging
+allowance, which typically defaults to allow any contact to communicate with
+the account."
+ empty-serializer)
+ (moderators
+ (maybe-account-fingerprint-list 'disabled)
+ "The list of contacts that should have moderation privileges (to ban, mute,
+etc. other users) in rendezvous conferences, entered as their 40 characters
+long fingerprint. When unspecified, the configuration of the account archive
+is used as-is with respect to moderation, which typically defaults to allow
+anyone to moderate."
+ empty-serializer)
+ ;; The serializable fields below are to be set with set-account-details.
+ (rendezvous-point?
+ (maybe-boolean 'disabled)
+ "Whether the account should operate in the rendezvous mode. In this mode,
+all the incoming audio/video calls are mixed into a conference. When left
+unspecified, the value from the account archive prevails.")
+ (peer-discovery?
+ (maybe-boolean 'disabled)
+ "Whether peer discovery should be enabled. Peer discovery is used to
+discover other OpenDHT nodes on the local network, which can be useful to
+maintain communication between devices on such network even when the
+connection to the the Internet has been lost. When left unspecified, the
+value from the account archive prevails.")
+ (bootstrap-hostnames
+ (maybe-string-list 'disabled)
+ "A list of hostnames or IPs pointing to OpenDHT nodes, that should be used
+to initially join the OpenDHT network. When left unspecified, the value from
+the account archive prevails.")
+ (name-server-uri
+ (maybe-string 'disabled)
+ "The URI of the name server to use, that can be used to retrieve the
+account fingerprint for a registered username."))
+
+(define (jami-account->alist jami-account-object)
+ "Serialize the JAMI-ACCOUNT object as an alist suitable to be passed to
+SET-ACCOUNT-DETAILS."
+ (define (field-name->account-detail name)
+ (match name
+ ('rendezvous-point? "Account.rendezVous")
+ ('peer-discovery? "Account.peerDiscovery")
+ ('bootstrap-hostnames "Account.hostname")
+ ('name-server-uri "RingNS.uri")
+ (_ #f)))
+
+ (filter-map (lambda (field)
+ (and-let* ((name (field-name->account-detail
+ (configuration-field-name field)))
+ (value ((configuration-field-serializer field)
+ name ((configuration-field-getter field)
+ jami-account-object)))
+ ;; The define-maybe default serializer produces an
+ ;; empty string for the 'disabled value.
+ (value* (if (string-null? value)
+ #f
+ value)))
+ (cons name value*)))
+ jami-account-fields))
+
+(define (jami-account-list? val)
+ (and (list? val)
+ (and-map jami-account? val)))
+
+(define-maybe/no-serialization jami-account-list)
+
+(define-configuration/no-serialization jami-configuration
+ (jamid
+ (package libring)
+ "The Jami daemon package to use.")
+ (dbus
+ (package dbus)
+ "The D-Bus package to use to start the required D-Bus session.")
+ (nss-certs
+ (package nss-certs)
+ "The nss-certs package to use to provide TLS certificates.")
+ (enable-logging?
+ (boolean #t)
+ "Whether to enable logging to syslog.")
+ (debug?
+ (boolean #f)
+ "Whether to enable debug level messages.")
+ (auto-answer?
+ (boolean #f)
+ "Whether to force automatic answer to incoming calls.")
+ (accounts
+ (maybe-jami-account-list 'disabled)
+ "A list of Jami accounts to be (re-)provisioned every time the Jami daemon
+service starts. When providing this field, the account directories under
+@file{/var/lib/jami/} are recreated every time the service starts, ensuring a
+consistent state."))
+
+(define %jami-accounts
+ (list (user-group (name "jami") (system? #t))
+ (user-account
+ (name "jami")
+ (group "jami")
+ (system? #t)
+ (comment "Jami daemon user")
+ (home-directory "/var/lib/jami"))))
+
+(define (jami-configuration->command-line-arguments config)
+ "Derive the command line arguments to used to launch the Jami daemon from
+CONFIG, a <jami-configuration> object."
+ (match-record config <jami-configuration>
+ (jamid dbus enable-logging? debug? auto-answer?)
+ `(,(file-append jamid "/lib/ring/dring")
+ "--persistent" ;stay alive after client quits
+ ,@(if enable-logging?
+ '() ;logs go to syslog by default
+ (list "--console")) ;else stdout/stderr
+ ,@(if debug?
+ (list "--debug")
+ '())
+ ,@(if auto-answer?
+ (list "--auto-answer")
+ '()))))
+
+(define (jami-dbus-session-activation config)
+ "Create a directory to hold the Jami D-Bus session socket."
+ (with-imported-modules (source-module-closure '((gnu build activation)))
+ #~(begin
+ (use-modules (gnu build activation))
+ (let ((user (getpwnam "jami")))
+ (mkdir-p/perms "/var/run/jami" user #o700)))))
+
+(define (jami-shepherd-services config)
+ "Return a <shepherd-service> running the Jami daemon."
+ (let* ((jamid (jami-configuration-jamid config))
+ (nss-certs (jami-configuration-nss-certs config))
+ (dbus (jami-configuration-dbus config))
+ (dbus-daemon (file-append dbus "/bin/dbus-daemon"))
+ (dbus-send (file-append dbus "/bin/dbus-send"))
+ (accounts (jami-configuration-accounts config))
+ (declarative-mode? (not (eq? 'disabled accounts))))
+
+ (with-imported-modules (source-module-closure
+ '((gnu build jami-service)
+ (gnu build shepherd)
+ (gnu system file-systems)))
+
+ (define list-accounts-action
+ (shepherd-action
+ (name 'list-accounts)
+ (documentation "List the available Jami accounts. Return the account
+details alists keyed by their account username.")
+ (procedure
+ #~(lambda _
+ (parameterize ((%send-dbus-binary #$dbus-send)
+ (%send-dbus-bus "unix:path=/var/run/jami/bus")
+ (%send-dbus-user "jami")
+ (%send-dbus-group "jami"))
+ ;; Print the accounts summary or long listing, according to
+ ;; user-provided option.
+ (let* ((usernames (get-usernames))
+ (accounts (map-in-order username->account usernames)))
+ (match accounts
+ (() ;empty list
+ (format #t "There is no Jami account available.~%"))
+ ((one two ...)
+ (format #t "The following Jami accounts are available:~%")
+ (for-each
+ (lambda (account)
+ (define fingerprint (assoc-ref account
+ "Account.username"))
+ (define human-friendly-name
+ (or (assoc-ref account
+ "Account.registeredName")
+ (assoc-ref account
+ "Account.displayName")
+ (assoc-ref account
+ "Account.alias")))
+ (define disabled?
+ (and=> (assoc-ref account "Account.enable")
+ (cut string=? "false" <>)))
+
+ (format #t " - ~a~@[ (~a)~] ~:[~;[disabled]~]~%"
+ fingerprint human-friendly-name disabled?))
+ accounts)
+ (display "\n")))
+ ;; Return the account-details-list alist.
+ (map cons usernames accounts)))))))
+
+ (define list-account-details-action
+ (shepherd-action
+ (name 'list-account-details)
+ (documentation "Display the account details of the available Jami
+accounts in the @code{recutils} format. Return the account details alists
+keyed by their account username.")
+ (procedure
+ #~(lambda _
+ (parameterize ((%send-dbus-binary #$dbus-send)
+ (%send-dbus-bus "unix:path=/var/run/jami/bus")
+ (%send-dbus-user "jami")
+ (%send-dbus-group "jami"))
+ (let* ((usernames (get-usernames))
+ (accounts (map-in-order username->account usernames)))
+ (for-each (lambda (account)
+ (display (account-details->recutil account))
+ (display "\n\n"))
+ accounts)
+ (map cons usernames accounts)))))))
+
+ (define list-contacts-action
+ (shepherd-action
+ (name 'list-contacts)
+ (documentation "Display the contacts for each Jami account. Return
+an alist containing the contacts keyed by the account usernames.")
+ (procedure
+ #~(lambda _
+ (parameterize ((%send-dbus-binary #$dbus-send)
+ (%send-dbus-bus "unix:path=/var/run/jami/bus")
+ (%send-dbus-user "jami")
+ (%send-dbus-group "jami"))
+ (let* ((usernames (get-usernames))
+ (contacts (map-in-order username->contacts usernames)))
+ (for-each (lambda (username contacts)
+ (format #t "Contacts for account ~a:~%"
+ username)
+ (format #t "~{ - ~a~%~}~%" contacts))
+ usernames contacts)
+ (map cons usernames contacts)))))))
+
+ (define list-moderators-action
+ (shepherd-action
+ (name 'list-moderators)
+ (documentation "Display the moderators for each Jami account. Return
+an alist containing the moderators keyed by the account usernames.")
+ (procedure
+ #~(lambda _
+ (parameterize ((%send-dbus-binary #$dbus-send)
+ (%send-dbus-bus "unix:path=/var/run/jami/bus")
+ (%send-dbus-user "jami")
+ (%send-dbus-group "jami"))
+ (let* ((usernames (get-usernames))
+ (moderators (map-in-order username->moderators
+ usernames)))
+ (for-each
+ (lambda (username moderators)
+ (if (username->all-moderators? username)
+ (format #t "Anyone can moderate for account ~a~%"
+ username)
+ (begin
+ (format #t "Moderators for account ~a:~%" username)
+ (format #t "~{ - ~a~%~}~%" moderators))))
+ usernames moderators)
+ (map cons usernames moderators)))))))
+
+ (define add-moderator-action
+ (shepherd-action
+ (name 'add-moderator)
+ (documentation "Add a moderator for a given Jami account. The
+MODERATOR contact must be given as its 40 characters fingerprint, while the
+Jami account can be provided as its registered USERNAME or fingerprint.
+
+@example
+herd add-moderator jami 1dbcb0f5f37324228235564b79f2b9737e9a008f username
+@end example
+
+Return the moderators for the account known by USERNAME.")
+ (procedure
+ #~(lambda (_ moderator username)
+ (parameterize ((%send-dbus-binary #$dbus-send)
+ (%send-dbus-bus "unix:path=/var/run/jami/bus")
+ (%send-dbus-user "jami")
+ (%send-dbus-group "jami"))
+ (set-all-moderators #f username)
+ (add-contact moderator username)
+ (set-moderator moderator #t username)
+ (username->moderators username))))))
+
+ (define ban-contact-action
+ (shepherd-action
+ (name 'ban-contact)
+ (documentation "Ban a contact for a given or all Jami accounts, and
+clear their moderator flag. The CONTACT must be given as its 40 characters
+fingerprint, while the Jami account can be provided as its registered USERNAME
+or fingerprint, or omitted. When the account is omitted, CONTACT is banned
+from all accounts.
+
+@example
+herd ban-contact jami 1dbcb0f5f37324228235564b79f2b9737e9a008f [username]
+@end example")
+ (procedure
+ #~(lambda* (_ contact #:optional username)
+ (parameterize ((%send-dbus-binary #$dbus-send)
+ (%send-dbus-bus "unix:path=/var/run/jami/bus")
+ (%send-dbus-user "jami")
+ (%send-dbus-group "jami"))
+ (let ((usernames (or (and=> username list)
+ (get-usernames))))
+ (for-each (lambda (username)
+ (set-moderator contact #f username)
+ (remove-contact contact username #:ban? #t))
+ usernames)))))))
+
+ (define list-banned-contacts-action
+ (shepherd-action
+ (name 'list-banned-contacts)
+ (documentation "List the banned contacts for each accounts. Return
+an alist of the banned contacts, keyed by the account usernames.")
+ (procedure
+ #~(lambda _
+ (parameterize ((%send-dbus-binary #$dbus-send)
+ (%send-dbus-bus "unix:path=/var/run/jami/bus")
+ (%send-dbus-user "jami")
+ (%send-dbus-group "jami"))
+
+ (define banned-contacts
+ (let ((usernames (get-usernames)))
+ (map cons usernames
+ (map-in-order (lambda (x)
+ (receive (_ banned)
+ (username->contacts x)
+ banned))
+ usernames))))
+
+ (for-each (match-lambda
+ ((username . banned)
+ (unless (null? banned)
+ (format #t "Banned contacts for account ~a:~%"
+ username)
+ (format #t "~{ - ~a~%~}~%" banned))))
+ banned-contacts)
+ banned-contacts)))))
+
+ (define enable-account-action
+ (shepherd-action
+ (name 'enable-account)
+ (documentation "Enable an account. It takes USERNAME as an argument,
+either a registered username or the fingerprint of the account.")
+ (procedure
+ #~(lambda (_ username)
+ (parameterize ((%send-dbus-binary #$dbus-send)
+ (%send-dbus-bus "unix:path=/var/run/jami/bus")
+ (%send-dbus-user "jami")
+ (%send-dbus-group "jami"))
+ (enable-account username))))))
+
+ (define disable-account-action
+ (shepherd-action
+ (name 'disable-account)
+ (documentation "Disable an account. It takes USERNAME as an
+argument, either a registered username or the fingerprint of the account.")
+ (procedure
+ #~(lambda (_ username)
+ (parameterize ((%send-dbus-binary #$dbus-send)
+ (%send-dbus-bus "unix:path=/var/run/jami/bus")
+ (%send-dbus-user "jami")
+ (%send-dbus-group "jami"))
+ (disable-account username))))))
+
+ (list (shepherd-service
+ (documentation "Run a D-Bus session for the Jami daemon.")
+ (provision '(jami-dbus-session))
+ (modules `((gnu build shepherd)
+ (gnu build jami-service)
+ (gnu system file-systems)
+ ,@%default-modules))
+ ;; The requirement on dbus-system is to ensure other required
+ ;; activation for D-Bus, such as a /etc/machine-id file.
+ (requirement '(dbus-system syslogd))
+ (start
+ #~(lambda args
+ (define pid
+ ((make-forkexec-constructor/container
+ (list #$dbus-daemon "--session"
+ "--address=unix:path=/var/run/jami/bus"
+ "--nofork" "--syslog-only" "--nopidfile")
+ #:mappings (list (file-system-mapping
+ (source "/dev/log") ;for syslog
+ (target source))
+ (file-system-mapping
+ (source "/var/run/jami")
+ (target source)
+ (writable? #t)))
+ #:user "jami"
+ #:group "jami"
+ #:environment-variables
+ ;; This is so that the cx.ring.Ring service D-Bus
+ ;; definition is found by dbus-send.
+ (list (string-append "XDG_DATA_DIRS="
+ #$jamid "/share")))))
+
+ ;; XXX: This manual synchronization probably wouldn't be
+ ;; needed if we were using a PID file, but providing it via a
+ ;; customized config file with <pidfile> would not override
+ ;; the one inherited from the base config of D-Bus.
+ (let ((sock (socket PF_UNIX SOCK_STREAM 0)))
+ (with-retries 20 1 (catch 'system-error
+ (lambda ()
+ (connect sock AF_UNIX
+ "/var/run/jami/bus")
+ (close-port sock)
+ #t)
+ (lambda args
+ #f))))
+
+ pid))
+ (stop #~(make-kill-destructor)))
+
+ (shepherd-service
+ (documentation "Run the Jami daemon.")
+ (provision '(jami))
+ (actions (list list-accounts-action
+ list-account-details-action
+ list-contacts-action
+ list-moderators-action
+ add-moderator-action
+ ban-contact-action
+ list-banned-contacts-action
+ enable-account-action
+ disable-account-action))
+ (requirement '(jami-dbus-session))
+ (modules `((ice-9 format)
+ (ice-9 ftw)
+ (ice-9 match)
+ (ice-9 receive)
+ (srfi srfi-1)
+ (srfi srfi-26)
+ (gnu build jami-service)
+ (gnu build shepherd)
+ (gnu system file-systems)
+ ,@%default-modules))
+ (start
+ #~(lambda args
+ (define (delete-file-recursively/safe file)
+ ;; Ensure we're not deleting things outside of
+ ;; /var/lib/jami. This prevents a possible attack in case
+ ;; the daemon is compromised and an attacker gains write
+ ;; access to /var/lib/jami.
+ (let ((parent-directory (dirname file)))
+ (if (eq? 'symlink (stat:type (stat parent-directory)))
+ (error "abnormality detected; unexpected symlink found at"
+ parent-directory)
+ (delete-file-recursively file))))
+
+ (when #$declarative-mode?
+ ;; Clear the Jami configuration and accounts, to enforce the
+ ;; declared state.
+ (catch #t
+ (lambda ()
+ (for-each (cut delete-file-recursively/safe <>)
+ '("/var/lib/jami/.cache/jami"
+ "/var/lib/jami/.config/jami"
+ "/var/lib/jami/.local/share/jami"
+ "/var/lib/jami/accounts")))
+ (lambda args
+ #t))
+ ;; Copy the Jami account archives from somewhere readable
+ ;; by root to a place only the jami user can read.
+ (let* ((accounts-dir "/var/lib/jami/accounts/")
+ (pwd (getpwnam "jami"))
+ (user (passwd:uid pwd))
+ (group (passwd:gid pwd)))
+ (mkdir-p accounts-dir)
+ (chown accounts-dir user group)
+ (for-each (lambda (f)
+ (let ((dest (string-append accounts-dir
+ (basename f))))
+ (copy-file f dest)
+ (chown dest user group)))
+ '#$(and declarative-mode?
+ (map jami-account-archive accounts)))))
+
+ ;; Start the daemon.
+ (define daemon-pid
+ ((make-forkexec-constructor/container
+ '#$(jami-configuration->command-line-arguments config)
+ #:mappings
+ (list (file-system-mapping
+ (source "/dev/log") ;for syslog
+ (target source))
+ (file-system-mapping
+ (source "/var/lib/jami")
+ (target source)
+ (writable? #t))
+ (file-system-mapping
+ (source "/var/run/jami")
+ (target source)
+ (writable? #t))
+ ;; Expose TLS certificates for GnuTLS.
+ (file-system-mapping
+ (source #$(file-append nss-certs "/etc/ssl/certs"))
+ (target "/etc/ssl/certs")))
+ #:user "jami"
+ #:group "jami"
+ #:environment-variables
+ (list (string-append "DBUS_SESSION_BUS_ADDRESS="
+ "unix:path=/var/run/jami/bus")
+ ;; Expose TLS certificates for OpenSSL.
+ "SSL_CERT_DIR=/etc/ssl/certs"))))
+
+ (parameterize ((%send-dbus-binary #$dbus-send)
+ (%send-dbus-bus "unix:path=/var/run/jami/bus")
+ (%send-dbus-user "jami")
+ (%send-dbus-group "jami"))
+
+ ;; Wait until the service name has been acquired by D-Bus.
+ (with-retries 20 1
+ (dbus-service-available? "cx.ring.Ring"))
+
+ (when #$declarative-mode?
+ ;; Provision the accounts via the D-Bus API of the daemon.
+ (let* ((jami-account-archives
+ (map (cut string-append
+ "/var/lib/jami/accounts/" <>)
+ (scandir "/var/lib/jami/accounts/"
+ (lambda (f)
+ (not (member f '("." "..")))))))
+ (usernames (map-in-order (cut add-account <>)
+ jami-account-archives)))
+
+ (define (archive-name->username archive)
+ (list-ref
+ usernames
+ (list-index (lambda (f)
+ (string-suffix? (basename archive) f))
+ jami-account-archives)))
+
+ (for-each
+ (lambda (archive allowed-contacts moderators
+ account-details)
+ (let ((username (archive-name->username
+ archive)))
+ (when (not (eq? 'disabled allowed-contacts))
+ ;; Reject calls from unknown contacts.
+ (set-account-details
+ '(("DHT.PublicInCalls" . "false")) username)
+ ;; Remove all contacts.
+ (for-each (cut remove-contact <> username)
+ (username->contacts username))
+ ;; Add allowed ones.
+ (for-each (cut add-contact <> username)
+ allowed-contacts))
+ (when (not (eq? 'disabled moderators))
+ ;; Disable the 'AllModerators' property.
+ (set-all-moderators #f username)
+ ;; Remove all moderators.
+ (for-each (cut set-moderator <> #f username)
+ (username->moderators username))
+ ;; Add declared moderators.
+ (for-each (cut set-moderator <> #t username)
+ moderators))
+ ;; Set the various account parameters.
+ (set-account-details account-details username)))
+ '#$(and declarative-mode?
+ (map-in-order (cut jami-account-archive <>)
+ accounts))
+ '#$(and declarative-mode?
+ (map-in-order
+ (cut jami-account-allowed-contacts <>)
+ accounts))
+ '#$(and declarative-mode?
+ (map-in-order (cut jami-account-moderators <>)
+ accounts))
+ '#$(and declarative-mode?
+ (map-in-order jami-account->alist accounts))))))
+
+ ;; Finally, return the PID of the daemon process.
+ daemon-pid))
+ (stop
+ #~(lambda (pid . args)
+ (kill pid SIGKILL)
+ ;; Wait for the process to exit; this prevents overlapping
+ ;; processes when issuing 'herd restart'.
+ (waitpid pid)
+ #f)))))))
+
+(define jami-service-type
+ (service-type
+ (name 'jami)
+ (default-value (jami-configuration))
+ (extensions
+ (list (service-extension shepherd-root-service-type
+ jami-shepherd-services)
+ (service-extension account-service-type
+ (const %jami-accounts))
+ (service-extension activation-service-type
+ jami-dbus-session-activation)))
+ (description "Run the Jami daemon (@command{dring}). This service is
+geared toward the use case of hosting Jami rendezvous points over a headless
+server. If you use Jami on your local machine, you may prefer to setup a user
+Shepherd service for it instead; this way, the daemon will be shared via your
+normal user D-Bus session bus.")))
+
+
+;;;
+;;; Murmur.
+;;;
+
;; https://github.com/mumble-voip/mumble/blob/master/scripts/murmur.ini
(define-record-type* <murmur-configuration> murmur-configuration
@@ -305,3 +981,7 @@ suite.")
(service-extension account-service-type
murmur-accounts)))
(default-value (murmur-configuration))))
+
+;; Local Variables:
+;; eval: (put 'with-retries 'scheme-indent-function 2)
+;; End:
diff --git a/gnu/tests/data/jami-dummy-account.dat b/gnu/tests/data/jami-dummy-account.dat
new file mode 100644
index 0000000000..0e908396ca
--- /dev/null
+++ b/gnu/tests/data/jami-dummy-account.dat
@@ -0,0 +1,392 @@
+;;; -*- mode: scheme; -*-
+;;; JSON extracted from an actual Jami account and processed with
+;;; Emacs/guile-json.
+(define %jami-account-content-sexp
+ '(("RINGCAKEY" . "LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpRd0lCQURBTkJna3F\
+oa2lHOXcwQkFRRUZBQVNDQ1Mwd2dna3BBZ0VBQW9JQ0FRQzBxWUozSkYvTzhQRGEKRnUwRnpRcHBCaD\
+gybGJMdURrNTlVU0I0MUJSaS9kdDZGV1BRN29YOVpsY25vNGZzM2dmUHQ0dU1hRVBkVFBGKwowbGN2Q\
+jc2cytQTEFlcjlOZGpVQzQ2ZXp0UnNiNE9aQXc4ZUk1M3EwSU04QWJFd0o0ZjllLzBmQUFueHgrK3Qw\
+CmZDeGV1YTBUaVBqVHBpZVJMNmpwQkd5UGI2Qk5pU2ViTkZCNzJOMTBnbzI4REVQYlhkNE9CNkN1blZ\
+5RGZKSU0KOC9PRy8rMndNamI4WkRwT3JrYy93U2ZHbnQyZXA3U0xKSkgwOFIzV1FKWklsSndrcGdLTH\
+FRakVwWFNpclN4dAozSkdtdXdBdE9LaXFFTXh1R043elV3ZlNINEtHdkRaUFNkZklZVXJ3eEp4aDJZZ\
+3lobG5RRC9SSnhRN3d4YlJBCjFhMUZVV0FzbDhLODk5cEtESk1GL09VOWZMRUx6QlViblpaRDRmSlg1\
+NmcyTlluUnJobS94NG9FbFk0MFNYMUUKcHYzb01hNnZrVGN5RjJnUFhKL2FkUVJoS0dFaGRjaHBpeDl\
+5UVphaDFCUFBGYW5jNzBMcjhOaDZJeHFNQ1hiMQozMG9vWHpWZmZNMVFOd28rL3hzRnBlRkRqUTAxQ0\
+9pdWZocitKREcyc0txb0o0V0JwYVhubWI1YXVrVWUvV1RKCjAxVmRyaEkvSVExd3V4QzNMMnpac3dVU\
+1NTaDk0aXg1M0hpU3pWbkI5UkxmaVhZUUVCcFEyNHVoRTdiYlo0bm0KZTczZC9zenpPTXMzYUt3OWtW\
+a2VLMTVtYWhSVWZjdEdhSVQxTkhGWUNYYXByaWExakdNdVpmSk1pSUtZUzNidQpMbUhZckF6dEptNDZ\
+0aHpjdnN3NHlhMnFoa2xUUlFJREFRQUJBb0lDQVFDaHZaUm85KzZ5aFhFTHZ6U3FXZHcxCkZGOERibG\
+hIMmhVWkNuV0kxMDM5SmdyRkxMczFSU1krSzg1aFZYMk9hV1VTNk44TmNCYzUyL1hrdFltS09HUFQKM\
+WZqMnE2M3pPcDNSSFdGNWVPMXhNeExRN3JZSDhqMGZZTFFTUytKemdwb3ZRVnJLSXkrb21JSSt3aUN6\
+R1laRApGQUM0ODJzL0J5MHdtRjVjdC9JTEdIeVY3ZXNVUlo1Vi9iL0ltQzUwQ1lDUWpQR2xBb3JkeUx\
+1MHp2NjZZUXc2CkQycTg0VHAyVUg3SExEVmhFNytUbDg4Q04xWll0VGtpSkthbkNpMFVmbStPKzJFM0\
+5HM01hajk1aDl2NktqYkoKUlkxeTNDRTVmQmkyUFNLbVVzRjN3SzdhbzJDRks5MTgybmlxL2FaNm5WO\
+Xc3NmVrRjhEOWUvS1pqUE5ZT0xkaApFczBSL2laV3RpbUx2RHdXQWNWNFNnSFFjNXJvNU9yOEFUS1ZK\
+VmlzZGFuWXkvdUhmVXZWN3U5cDVLK2E4SHU2CllabW13ZTh4bnF5M3V2M0VabE9LY20zTnZvWllVMnJ\
+HUUFQQW1sWWQ4WlRsZGxPa1JCSGxxYzllMmJuSnNTQW8KNUhhS0N3aDJsWmZpalVGNXFrMXNQcm1kN3\
+BlMld2VVV3QmVuSjJnS1ZoTE5VVGtHWmtTWGhzNlV3WWRRMjVtRQppQzl6WjhXNkQ2OXBvb0lsTTVXT\
+01ySEs0Rng1ck9vT05kUHQ4NEk1bTI3cnpnbXM4QnJXVUlGLytZZjJ0bGdmClBIR0V4c3ZCK3JRQk52\
+WHU3dXoxcVdFTlJTL2YwR2E3dVF4ZW5sZ2dubHc5M1pNOW1GWXpXb1RpdWFmdnphTnAKWEsrTEVrV2F\
+RYUs1Q0VaNEhmUlhBUUtDQVFFQTUyK240OUxQODlyQkR2bFdsTkxNanJqTDdSb0xyQ3FVZGpQWQpyT1\
+hZS3ZkTkxyS2NTc1hNdkY4YW5HQng1UG5oVDZGY05ic2dzQ3BUUXowMThZYmcrbUUxQno5ZTdFNTJGZ\
+i9NCk9BbWZqSllXUnZueUtiNnB3SGlvOHlXUXlVVk1zZU1CcmpvWk1kNkpPZEZ0K2JITHBWOS9iSkdR\
+a3NTRE04WTkKbWxGQUlUL0gyNTh1K1ZKTWsrT0prU28zZmJQSk5Ja1Q2WVBKVmNaSnZTRGI5QU83WDF\
+lendCOXVRL0FEblZ6YwpSQkJOUVZaTStZS2ZNWFJBdmFuWnlmWFFwaUxCQW8rRVRPSHJCR1dDRUhtSF\
+RCaEZIMTkyamtxNlcrTStvS0R1Cm1xMitMc2hZWTVFc2NpL2hPOVZjK2FCM0hhaGliME03M092MHFNc\
+WZoTncyU1BncHdRS0NBUUVBeDlaR1gxQnQKL3MwdGtNcGV1QWhlWjFqTklnZmFEY0RRTWlmU0k4QjRx\
+WUhiL1hOREQ5NjFQME9zMDdCN2wzNE1iZ3U2QlNwcwpXdSt0Y1hjSFlqQVJUc0Qzd0pSaVRIb0RSQzR\
+YYkxEa2pHRUVCVzRKbFVqZTA1QWZrU0QrdkZSMkJwZStxQlBLCm5yb3Mwd1BWL3RXa3MzY2VFOUlBTV\
+pWWDhQeFA3RVNXbitVZDJEWkZhcVFLb0JybHZXRXhxelpYUEJSVjhoS3QKcFBqWnFkZXFQLzhUZTBtS\
+zh5MEVreXVXOWhFdGZ2Sm5HWXhMNStrSG9xd2hQVk1tODZ5YlZNVHRQYWJTdCtPUwp0WHhJTE9RMWRN\
+QkFabzRxSnNkUUZJcTJnSHA5WFYwa2ZNUms1ajdJT1Q4c2Z6TlpKVkRNK1k5VHVlSGJXSnduCnZsWld\
+VZ2NVZTlBaWhRS0NBUUVBbFJaK2h1ckUvNGdLR2dWUld5bTRrTEJHM2dTTFJHdGhuQXVtSnlzaFoveE\
+wKZ2l1Wk55bll5L2hRQWpDMjdoUnlxb04rRFRid3hjdGVPOUJ3c1poNzBZOVJROHYwOERGVExMVE43O\
+E56UG5OcApBbXY5TGhzZTYxaFBMZU1qTkNVcVZPV3hyWFRMeWk1YkpCM2Z4SnhlWGJmNU5BMUpudUpz\
+eXF1SC82TWJ0cytKCmhkY3p3WFRjMCtBZVBKOS9nOENQZXdKYkMzRFVBQ2R1VlNHWHo4ZWZxcm1xbDd\
+jbnB5ZzBpK2pJRkNpVU8rVEcKVFcxeDg3KzUvUFF2MGtSQ0Z1UUloZ2ZCNkcwWW9vcHBrUWRZdXhKZl\
+pPaHdUUldpbTVMMlF5K294WWZySGVQOQozSlltbGFCMmJiN3kxL1FoQjcvek9VMk1nTEtYdHl4Z09ve\
+EpoQlFwZ1FLQ0FRQkIwSUE4dy9CMkNuMEhRcDhQClhUSTZOelRZRUYzd1NhQkg1SFdBOE5MTWdNaERJ\
+TUxsWnlPcVFrK1pLSGFMM2llWjFxTGRNS3VmQjNESC9idWcKeXRQb2JBVXNsN0lJSGVjVmZWaVpvMml\
+pRXhHUCtEMlB2UUFtRFVGWU90V3FrT2FPSlV2VmJ5ODhOM1NyeW9lZgo5aHpZUGxMWmxFQWNGR055S3\
+FibjJXOENHaU5LSWhXYW1Zd21UclY3T1pkeUcrTi9GZk40Vms1NkZyc1pCTDQ5CmRYU2xGZ045TTBaZ\
+WNleTEvZEpPRE9lSHNuME5VK0gvNFZEUk1hR1NmelpwSkxJOXE4T2FiSWpVM0ttb24wQTcKdzFWeWNU\
+L1FwYlBxRUFVckt5dytvMzV3MlAyaUZ1czZiMlBvUUxFTGFTRVl6K3R6UEw5UTM1ejNRdGdMQytuagp\
+IUmxCQW9JQkFES0Q4NGhrYkphczlIQ00zanNNSU9kb213ZEMvcktxVUxKNHFWZU5QR0xDY2VpNEdocn\
+dlQnNICnNoN0hibFlZSDN2U2Y3RW1iZEVCb2xlWVJsaUx5ZzJDQU1ZOGpNK0lpUEwydk1yM2Y3SzZPT\
+mU0UkVPUFJSZkcKWlJDcTh4a0ZPQlg1SUJUbkVCV3QzdVdyb1NGY2x4RTdUa2I4VkUyVzExTG9ZNlkw\
+TUNPaHdxN21xYXRUVnNrawpTRDNySmkrTFR6a2Y4OEx1bjZZNjdiaFNOTWpKZkFaUXNQc0FTRkJBUTJ\
+rQnE5alRLZGVuaU4yYTJIbm0xNCtrCnJDeU9ZVE14Q2hQbWNpS25pVy9MWnFUL0U1dlNRUGdBVzc0dT\
+VLazJoSjRBajNjRW9NVEwxSytZbStWYWh2U0cKTi8xOFdYQ1JRQkg1d0p2eXJYczBtT29GQlRnTWg4d\
+z0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo=")
+ ("ringAccountKey" . "LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpRUUlCQURBTk\
+Jna3Foa2lHOXcwQkFRRUZBQVNDQ1Nzd2dna25BZ0VBQW9JQ0FRRDNCdDRnOUVUdk9EVnYKM3hWV0ZlS\
+1Nnbk5uVEF3S2dYa3IrQ1FhdU8vTGZWM01RenNSNHliL3hoaWhhb1Z2c2FtZ3ZRU1haL0M1R3I5QQpE\
+YlAxbHNHclRCK1pXMC9uMXVEb3hmVWdZRWY3SGtVanJtdVFjUGlFWGlUVkNiY002U0NzdVNrMnRxdE1\
+BNjBNClRacVo2LzAvbkEvblR5TnFNaUJNSmFRN0NUb2xOTTh2Z2tvd0tBRW14OGpJUG9YZEttMnd6MD\
+Z6SnhwU1d4WjUKc0FBTkdSSHU0b2ZXNWJiMERvamtnRzFBYUJ6Nm9uSmdKK1JFSWV1UkpNQWFHYmtzW\
+TQ4Z1Z1b21BVTU0UFNvUApFb3psVGdHd1k0cnhJTGE0V1Y0RVZMVExrR240ZTYrRUYrSjIvRURBUFdN\
+bXREdFpUeURCc2t5bStLaDRUT2xPCjdnN3JlUUhLdDd1R21YU0RnbzVKZ2hOOHNVRFUxL1Z2YmFFcUZ\
+tTDJrZWNGOVlVZmNsUWRGY1ZncmIrMkh5R3AKRVc0b3RkZjlYYzhOMWxrbGk1dFBqRGZuQ1U3OHB6QT\
+BxQmV1SWhZTnF1VjhGSm1NemhXeVFDbE1MUEFYbXFVdwpWYlY0MWduM0NkektuUlVhZXFONXlzOG5KQ\
+mRJNDBleWlYRUlvU0VKcFpyT1Z5ck1icnNCQzltaVFpZUFhSnlBClFvcjFaRGlwMkpZNUFza2phUGQ0\
+NGk0MGNkeFpob1RhNnpzako5UjZScllFYjhWTmZQemFLaElwSXJSd2NpbCsKWjFrbUUwSE1kY21ITXR\
+hbWZhK0l6WUR4dDV6OGVOZys1RGpVVG1MRkdyQUVWRW5hNDcxdllxYnk5UCs1T1cvNQpSdkxtUER2Tj\
+dlUURpTlZENlBYRFk5OTY4bTZaaHdJREFRQUJBb0lDQURjOEkrTCtlNE41OEFqcHV0MmEyeVNqCllxY\
+VFUSWowMW1GTWhOWXMwQUdTTUswQncyMkdleXZwNFl3R1EzdnNIOSsvSkEydXdoYkJzazNpUW9FQmlx\
+Q0EKenZmOWdPcDRFNlk0elV6RitwSmQvRnUwSG4wWHBab0Rhdnp2eFN4djNFeUN3b0puYWZuL1FHeGw\
+xZEhoQUtsKwpmZGZjekRCc3NPZ1Y2cGtBd1MyY2wwOHFOT2g3cVhaQWFkYk1sQ1lWM0owU1hhaVZiNz\
+lHZXNvTzNwUVBMUUZiClNjQjFjT2sxYnNxWkpOU244d0xmMis5QVBEdzMwWEtNNHg5eTdRTE42Q3oxQ\
+WpvcFJLQ0NIS3R1SEc4UmVETTIKcnRTbjJmTnltQ0VqeDZGVTB6MHFldDV3Y01UbU5weEZuYXdEMU5s\
+dFpnZXBsSllwTjVKZXNEUmo2cFlnWXBPKwo5UDU2cEdtZVNTVzVxcHRoWFFLQmFsdy8wWXp2YUlYdHp\
+hTnZyNUJzRFNrWkU3cldzODIvQmFzUE1RckFmOGpLClZFMU9pSzcrVllUVTRFVWVoZ0FZOXdzNjFqYk\
+lSSEpQbW9VQXpkWHcyL0d0Vk9JUTFwUFJnOXNYN0JaMmUyV1YKdmd5aThPUEJxRWtwblBiMkU5Z0d1U\
+25rY01OeWFVbUl0c3pFandadW14dnZrUW5HanlTb3pjY2R3dnNQNnBJagpoN0g5VUNQTHdOM0N5N1lp\
+UmliSlZBWlNjZkF6QzhubXNLODQrTzJUZHBzTXk0SEZDMmM4dlZiclpteTVkWC9qCk1ESnBzS25JWlZ\
+JMmpXSzRpRS82aUdIWVdoY3JvWnYvVEJ0YW1SQUxTWDVOYkhhWTI0bXVRSG5yMldtaytld3EKbHRGbC\
+90bXgyVkpWUitMZ0JCUGhBb0lCQVFENEI0MjQyVTgvbkJ4d2RzelhCdWxBOVFTa0I5Zktud0RlRkV3S\
+wp3Nks0eU14YVdRU04ycjRxRDhLcW93OVZVMzRYdkRWbFh0RUlDaVh3Q0hZdW5IL3g3cXNSdEVzbHJM\
+aWg4UHRPClpDSU8zUml4RmlIQXFlQUh2YXF0NVhXdndaREx6WnV2THRJOTdINkZ1QjYxck5qMnhxdlR\
+IN05pUmp2S0R0WXgKR1VtNURoQ094cm9tR0NkWHRnWHJGaS9WRU1TSmpQMkM3OTNrN1pTNmNZL0Nkc1\
+RqWEsrZ1UzeWM3OC9kN1pYbwpKMGg2WFlSdmhlQW9Bd2dkVTl4MWtYL2ZmY2tZK1hUcFRwV2xXWmtlU\
+ytsejBpQkRnUlJzMm45OFZDeTZDRmRZCldsZXZaZy9SWXZ6dzlKdWFVcXArOHpHbHNXR2xuOEhtZW5X\
+Q1luSHJnNFBxQnRkL0FvSUJBUUQrOXhDL1N5ZGIKVWZxMUJHYy95YktZc3RLb3A1azB0d3M0SlUwTzN\
+aT1U3MlZ5YTdLT2lTemdPSzVnL2QzckhMMXR2dHViTDBWNAo1dEF4a1AzSkVYbmxZZU5IVkpROTc2RH\
+NGS3Ztc0FGL2JJdVBsdFBRT1dyM3g1eW1RU3lCOTBUczV0dFdWMTVQCktYYVNnMTZidDhwNS9MeERkZ\
+ng2c1YzN1o5RDFRd21EQllreVFIcWQ4clljTm9ad1M5ZnI3UTZhN1ZNSDVtT3IKbEF5dzBCYVdZQk9k\
+bjFGd0pVV3NlRlpmTy9vNUVqZk9Hd0xMR1hiOEVmQ1hqdlRYcUNHLzNrT1JvN1NkOWY1eQowVjIxMmt\
+YVVNINHNDbFB0SmwzeHpaMWJxQ2RMVDNITWNLUTk5UGFFVFppQnNXQ1lOcXg1c0Q0RGhoMzdZQ2hKCm\
+hlN3VUM1E0MElINUFvSUJBREN1VXR1b0UweloyQjhld2grbUpKdnlPMEh5cENFSnlrTE1Xd3gxejNkV\
+E9nQzEKbmhZMWk4TjNxbTZSYUk0SHdDVHFkTlI3b3ExZ1NJZnZNVHIrem9IdXBUYnBXeUorM3hJeDJU\
+Rk9wL3lnMnByUApURHFqWE94SUJycnc0WU5vaTRIa3poeTVKTnl3a1RpdnBaOWsySVMvQTdTQmNWVGx\
+raENianVDK0pPRWthSTJOClpiWGFZY1p1WElVQ3FzcTM2c3RRbCtWZUxRQWt2VjlHc0wrclRnT09Dbz\
+UrTkdRZEVZQnVoRkMzZlJzL1JhSVoKOWFBRTBFL3BTTWp1a05tTnQ2Mm1NSk1tTUdydXhnWFRRblBRR\
+npNSW43aXB2Z0hxQjRsUDM4emdsbnMvbmZVcgo1NWRuZXk3ejhMRFFETHVIc0RHd3hINzNKQjgrTVR2\
+WGFVbkNwQU1DZ2dFQVNBSGxBL0dvdXR6TFRvWmcxcDRUClI1YnhjZHBycFh5d3VYbW5hclJmY3VldG9\
+nUVNtTGpiS0xRNVk0RXZSTENJTzA5MDNENGNnOG5FTU10L01XTXoKSnZwZll3emJGU2J4THR1anRQSX\
+VhaHR3eXV2UkJIVEM1aG5FL3h0WEE1bWZLTDBHWXpzbmtubm1WL2lzSnBSZwpwZFVnSW5sWEJodkRyR\
+FlreUsvWEp0N1FZWlhlUzI5NXlUd0krZndoamlzVVBlTWEyUmRUUE9rQ01JbUVaNUhZCjJHSmZjS25H\
+SkxDVHpDKzNPcGtQazdFRE4vTUlMS2F3YVUxaGp1cVlKWVVUVmpXQzFEM2VUL1ViWHptM0VQNHMKVEN\
+uYWpCYVMzN0N2YVd4ek5JektXZS9TSXdGbEFmYWNSTHlneUR4Z3Q3bHp1akVObEtvU2xya3h3ckpEND\
+Z2WAptUUtDQVFBcTVQWWxSQjgvNnFiWWt1OTA0NUZRdXk2QWtlYXBaMW0raS9SQzZtbFRvUXB6NDlPU\
+Gs4ZGx5YjVtCndvSVhpaEo2V05jN1RsWlRYMnpQTTRBS0M5VFNBUWJrWDg5bjEyU2VDSUlHbXVINnk0\
+TjZiY2lxZjVVcSsvc0IKcHJKeFRNYlRSUFpqS0VVd1N0SFg1MUQ1bi9sQnZERGY3Y2VEZytsYlE0RjR\
+KMTlPd09oZ1lGcjFheGQvNXd2VgpURjNoVlQwbFZGN2RyRC9iMHZOcmxnbUNjbEk4UDg1a2dkRUhZbG\
+ZtTFoxeXJIMkNXVy9SS0lsWk9ZdFVuNFNpCkp5a2VlNDROWElXU3ovalRBdFRta3VQTzRvUjF5d3dRc\
+jdhUTF5a3hRVm9rVm5vY2xqU0tyQlk4R294a0I0eDIKUDNrb3F1UnkvcUd3QzBnN1o4ZjBTQjNQZVZt\
+eQotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCg==")
+ ("ringAccountCert" . "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZXakNDQTBLZ\
+0F3SUJBZ0lJRm1tNmZuaWRndEl3RFFZSktvWklodmNOQVFFTUJRQXdUREVRTUE0R0ExVUUKQXhNSFNt\
+RnRhU0JEUVRFNE1EWUdDZ21TSm9tVDhpeGtBUUVUS0RjNVpqSTJaVFZpWTJNeU9EWXlPREppT0dFMwp\
+PRFF6TUdOak1EWXpNakV4T1RFNFkyWm1PVGd3SGhjTk1qRXdOREUyTVRjek1qRXdXaGNOTXpFd05ERT\
+BNVGN6Ck1qRXdXakJKTVEwd0N3WURWUVFERXdSS1lXMXBNVGd3TmdZS0NaSW1pWlB5TEdRQkFSTW9aa\
+k16TkRWbU1qYzMKTldSa1ptVXdOMkUwWWpCa09UVmtZV1ZoTVRFeFpERTFabUpqTVRFNU9UQ0NBaUl3\
+RFFZSktvWklodmNOQVFFQgpCUUFEZ2dJUEFEQ0NBZ29DZ2dJQkFQY0czaUQwUk84NE5XL2ZGVllWNHB\
+LQ2MyZE1EQXFCZVN2NEpCcTQ3OHQ5ClhjeERPeEhqSnYvR0dLRnFoVyt4cWFDOUJKZG44TGthdjBBTn\
+MvV1d3YXRNSDVsYlQrZlc0T2pGOVNCZ1Ivc2UKUlNPdWE1QncrSVJlSk5VSnR3enBJS3k1S1RhMnEwd\
+0RyUXhObXBuci9UK2NEK2RQSTJveUlFd2xwRHNKT2lVMAp6eStDU2pBb0FTYkh5TWcraGQwcWJiRFBU\
+ck1uR2xKYkZubXdBQTBaRWU3aWg5Ymx0dlFPaU9TQWJVQm9IUHFpCmNtQW41RVFoNjVFa3dCb1p1U3h\
+qanlCVzZpWUJUbmc5S2c4U2pPVk9BYkJqaXZFZ3RyaFpYZ1JVdE11UWFmaDcKcjRRWDRuYjhRTUE5WX\
+lhME8xbFBJTUd5VEtiNHFIaE02VTd1RHV0NUFjcTN1NGFaZElPQ2prbUNFM3l4UU5UWAo5Vzl0b1NvV\
+1l2YVI1d1gxaFI5eVZCMFZ4V0N0djdZZklha1JiaWkxMS8xZHp3M1dXU1dMbTArTU4rY0pUdnluCk1E\
+U29GNjRpRmcycTVYd1VtWXpPRmJKQUtVd3M4QmVhcFRCVnRYaldDZmNKM01xZEZScDZvM25Lenlja0Y\
+wamoKUjdLSmNRaWhJUW1sbXM1WEtzeHV1d0VMMmFKQ0o0Qm9uSUJDaXZWa09LbllsamtDeVNObzkzam\
+lMalJ4M0ZtRwpoTnJyT3lNbjFIcEd0Z1J2eFUxOC9Ob3FFaWtpdEhCeUtYNW5XU1lUUWN4MXlZY3kxc\
+Vo5cjRqTmdQRzNuUHg0CjJEN2tPTlJPWXNVYXNBUlVTZHJqdlc5aXB2TDAvN2s1Yi9sRzh1WThPODN0\
+NUFPSTFVUG85Y05qMzNyeWJwbUgKQWdNQkFBR2pRekJCTUIwR0ExVWREZ1FXQkJUek5GOG5kZDMrQjZ\
+TdzJWMnVvUkhSWDd3Um1UQVBCZ05WSFJNQgpBZjhFQlRBREFRSC9NQThHQTFVZER3RUIvd1FGQXdNSE\
+JnQXdEUVlKS29aSWh2Y05BUUVNQlFBRGdnSUJBRDMrCjlscFluMjZyeG5pekY2UkNvZFFFVmgvOVF2R\
+Wp1V3dHUWZqa3gxb3VlVjdDMzUyWnpIT2hWU3VGcG43TUxkVFcKamI2dWhMRkpoMWtlTDlYZ0pHalMy\
+V0UwdDlJUGp2UWx5UHIwRWJoWGRJNDJMYUR0NDk0dWQ2MEE0bWg0bW1zbwovcjY2NERKOWMwUjZBOUd\
+QZUJjWi9zekhMQjJ4VmM5M3hYNjVjcmNoVTFLMDBVK2ZZUWtHS0xidFFXeUZzdnlKCmRHdFRxamVlYV\
+VNeGt5dFFWNWFxVHJ1SG4vV3U2RWRZejYrZ0ViQXJHUURRK1J3QmMxMDNGcWRIU0xReWdEWHoKd0pNV\
+GhDREdBVmR6V2NCemJYL1JIZms5bTZzK01HblNJUFBrNG9FOUdFbGdQc2JUZ2FrTzc3aElUdzRxZXJi\
+TAp2M0tiaTVOeVZZVFNVa3hDb0VRSkIrWlZJT3BVNFhRdVAvNkZkWldBRk1LU0Jkd1JLcnRmT1hZT1E\
+xcVBvYU1uCjZPR1VGMU0rYWZ0dTNCMkNhZ2ZMaE5hbVBoSjdxWTNSMzJhK2VRVllvYWlESXZKMElIUH\
+FnQ0NuWXlIaVBHTjQKS3VvaE9IZFpXTkxOUXdIQTg3SDV5NEwrSGZISmdFZFppdWYrbTNMa3JJcnN5M\
+WFoUjgyaEpZVkhreHVyZVRDcQpIR2NJaUIvTHpkSG91WFVrWGNrNjRvWXVRQnM3ZE9KVEx6bGlibU8x\
+elRzVWRoc0d4dE9zc2lYWkFjUURmZHBnCjNHdFJ3UkRwd0ZtL2k5TC9UWjMzMjBwY0VZd21aN1dBSzJ\
+Ra3Z6eWZlelRGeXdLWmh3c0RQRkwycllzLzhXdWsKRk1sek5BVmRMTytTS1RxeGlkM0l1elFaQ0FwU0\
+5ybTJMY2ZVN2grWAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tQkVHSU4gQ0VSVElGSUNBV\
+EUtLS0tLQpNSUlGWFRDQ0EwV2dBd0lCQWdJSXV0T3MxUXBsSVRvd0RRWUpLb1pJaHZjTkFRRU1CUUF3\
+VERFUU1BNEdBMVVFCkF4TUhTbUZ0YVNCRFFURTRNRFlHQ2dtU0pvbVQ4aXhrQVFFVEtEYzVaakkyWlR\
+WaVkyTXlPRFl5T0RKaU9HRTMKT0RRek1HTmpNRFl6TWpFeE9URTRZMlptT1Rnd0hoY05NakV3TkRFMk\
+1UY3pNakExV2hjTk16RXdOREUwTVRjegpNakExV2pCTU1SQXdEZ1lEVlFRREV3ZEtZVzFwSUVOQk1UZ\
+3dOZ1lLQ1pJbWlaUHlMR1FCQVJNb056bG1NalpsCk5XSmpZekk0TmpJNE1tSTRZVGM0TkRNd1kyTXdO\
+ak15TVRFNU1UaGpabVk1T0RDQ0FpSXdEUVlKS29aSWh2Y04KQVFFQkJRQURnZ0lQQURDQ0Fnb0NnZ0l\
+CQUxTcGduY2tYODd3OE5vVzdRWE5DbWtHSHphVnN1NE9UbjFSSUhqVQpGR0w5MjNvVlk5RHVoZjFtVn\
+llamgremVCOCszaTR4b1E5MU04WDdTVnk4SHZxejQ4c0I2djAxMk5RTGpwN08xCkd4dmc1a0REeDRqb\
+mVyUWd6d0JzVEFuaC8xNy9SOEFDZkhINzYzUjhMRjY1clJPSStOT21KNUV2cU9rRWJJOXYKb0UySko1\
+czBVSHZZM1hTQ2pid01ROXRkM2c0SG9LNmRYSU44a2d6ejg0Yi83YkF5TnZ4a09rNnVSei9CSjhhZQo\
+zWjZudElza2tmVHhIZFpBbGtpVW5DU21Bb3VwQ01TbGRLS3RMRzNja2FhN0FDMDRxS29Rekc0WTN2Tl\
+RCOUlmCmdvYThOazlKMThoaFN2REVuR0haaURLR1dkQVA5RW5GRHZERnRFRFZyVVZSWUN5WHdyejMya\
+29Na3dYODVUMTgKc1F2TUZSdWRsa1BoOGxmbnFEWTFpZEd1R2IvSGlnU1ZqalJKZlVTbS9lZ3hycStS\
+TnpJWGFBOWNuOXAxQkdFbwpZU0YxeUdtTEgzSkJscUhVRTg4VnFkenZRdXZ3Mkhvakdvd0pkdlhmU2l\
+oZk5WOTh6VkEzQ2o3L0d3V2w0VU9OCkRUVUk2SzUrR3Y0a01iYXdxcWduaFlHbHBlZVp2bHE2UlI3OV\
+pNblRWVjJ1RWo4aERYQzdFTGN2Yk5tekJSSkoKS0gzaUxIbmNlSkxOV2NIMUV0K0pkaEFRR2xEYmk2R\
+VR0dHRuaWVaN3ZkMyt6UE00eXpkb3JEMlJXUjRyWG1acQpGRlI5eTBab2hQVTBjVmdKZHFtdUpyV01Z\
+eTVsOGt5SWdwaExkdTR1WWRpc0RPMG1ianEySE55K3pEakpyYXFHClNWTkZBZ01CQUFHalF6QkJNQjB\
+HQTFVZERnUVdCQlI1OG01YnpDaGlncmluaERETUJqSVJrWXovbURBUEJnTlYKSFJNQkFmOEVCVEFEQV\
+FIL01BOEdBMVVkRHdFQi93UUZBd01IQmdBd0RRWUpLb1pJaHZjTkFRRU1CUUFEZ2dJQgpBRWFDblluY\
+m9yWmRhWWZRUmxSb0dtSE94T1g5VFdNMXY0dWEweCtFcG11RDVWRDVlWEY1QVZkMlZadEdaeHYvCkd2\
+VnFBU2l0UTk3ampKV2p2bURWTUZtb3hQSmRYWDFkYTd5cmJYeFRmYm1mM1pac1RpdmZVdWQxYThxdUN\
+3dTUKTnBrdHFjV0JyMHRnNzFhOXlidHJOdm1GczZGRE1WMXkrY2JxYlp1UWlDWnc0WmZhekFaeTRQRG\
+NocE9SNjRCSwpBWFZIT05HcWFoV2hwcDkwd2E0TFEwUTE1U3FDR25kYVI4SHg5MHJOeEdkRjM1T1BLU\
+jd1TDdrWDU4ZGxaWStDClJJK1pKMndYMzJUZzgrc1RtTmNaUTliWDdvS0t3R3E5Uk94SjZJSUhOSnN2\
+bXhaSnlPcmE2N21hNTd3OWxiQnUKSzJlQ3cwZjRDeHdLNU1LNStkbWx6R3dhZmJlMG00TTBvVjlhWUx\
+ZTzAwR3Iza05heW9PdjRRVGtEM2pCMzVSMQpDMGJnQmk2eU1sTVJ2akZ5eEZkOFJpL003VG1jcXNObT\
+B5aklqbkZaenVtMFZTR1NLMXlRU3Flak40S0Y2R0JMCllpZ2JpM3c4WG5HYm9pZGdBUE9ncVVJeTJ1d\
+EU1MllzVXFsVHVncXhtM2xDOUhzaDM2UFJLNURDUG93eHVUNlgKcXo1M1ZiN2h6TkxLelpiRlJzbUdF\
+OFY2cWM2bXZTbUFXa25nL3QwaStXVmdGVkZuZFQrQ0oyNTJsa0ZacGljdAp6ekdETW44VUNDRUp4TDR\
+KTklTM2lLOUhlRys2MlZuay9QOEM3YVpLSXpVdjFud25rcVdUUUFYWDBKckJGdDdICjI5ZDk1RElmRT\
+RuT0FyS0JFNHc2Z1R4SU1uZzVzWi9ZbDFjcG5wUHlsR3VICi0tLS0tRU5EIENFUlRJRklDQVRFLS0tL\
+S0K")
+ ("ethKey" . "fN8cOT1lYNziaW0+pjBIgZ8r6+zMMhHsukkWBNPDsFo=")
+ ("TURN.username" . "ring")
+ ("TURN.server" . "turn.jami.net")
+ ("TURN.realm" . "ring")
+ ("TURN.password" . "ring")
+ ("TURN.enable" . "true")
+ ("TLS.verifyServer" . "true")
+ ("TLS.verifyClient" . "true")
+ ("TLS.serverName" . "")
+ ("TLS.requireClientCertificate" . "true")
+ ("TLS.privateKeyFile" . "LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpRd0lCQU\
+RBTkJna3Foa2lHOXcwQkFRRUZBQVNDQ1Mwd2dna3BBZ0VBQW9JQ0FRQzM5b1Z0cXNtUGdaSUgKcHpTV\
+GtlT3BlWC9CSEx2KzFTYnJPSFpVRHEwNFZCUU5BNmJmSFNSWTJpbHE1WEVheXNVSmwzQmsvM0txZEhS\
+cQpEV01wQ1dpcE1Vc2FwSGxJR0tSWHEwbXhQZ29WODZSUVBub1dCRTdhWVVEZTlJZXlxMmllZXpDK1l\
+YSnBtWTljCk5tblpaMFlHOHJGMEVpWFA0SHpVWGphZklTKzdKTTJ5ZTZyUlpINXBvdHBQNmV4NXhqVU\
+VuNEFFdWhuWGJ6U0EKNnZMaC9wYnhIUVBHMVlmNHFhcU9TY1lXV0ZWaE5ySVBCVFJNZ2RaTWRGRTh0W\
+VFyaUNkNTV4dUhrYncrQmY1VQpmVENqN25tVEcybDJNbGcrSXBHVkFXUFRWNkl0NFNiS3VadW5MZmRD\
+S2FrSU03SnA3V2dJWjZNRHdkaFFQWjJNClJPQzN0b0c1ajh4aFZOU0Q5QlZiOGZBcnRmeHdldlliQk1\
+yOEdRV2JQYlRKYk9tZHZnUGRGcXNTb1F4QnRUcWQKSG1TMG53RjJ4UGZrdm1Cd3BSWWhHNHpuZlVtMl\
+BQcDBIK1g5Sk96d0R1QWI5K0c0cWZtK3Z6bDd1N0o3anJ0TQpHQlJlSlREdGFNd2RHa0lmcUNRZGREZ\
+HFpM1hzVHVVOVNubVN4NkdxT2V6ZU04bk55dmtZWjR2Uk9vODFzU1JjCjQ4L3pZZjJ1OFBJUm4vVy9x\
+Zk9hbjVIbkcxeFNBUDZkcHAzQ1Y0YTgwUFduZyszcXQ4NW5Ha2k2Nk00NUlnRjgKNHZwRGUyM2YyZnp\
+rTk5OOTk1VTBvUStKVGg5eG1HaWJmenlCaXk5d3RUVHVYWDB3Y3gwTm9wNjdYaFFDVVBGSApybVd6Wj\
+V5bXhEdkRhcUN1U3NwcG0vTkRVRWQyc1FJREFRQUJBb0lDQUYyWXo4bzhXdERvMjZPSkx2Ym1BeTcyC\
+jRra2VsWWZTYXpyQ1AzSUZCWnpqS2xCMHl6STVZWVRUZXI4b2ZhTmtCMXdaOE5WeUlxVVhHeVBhSzls\
+MU1BcmwKU1pFRW5iQlEyVXpCbVh6VVU4MVhhUUpxeHpMc2ZqSWR5U09teG1QaFVobFFGRHpJMTYxaXM\
+4MzI0V1A3WjJXaApsU2U1RkFQdjg1TVpYREVhY1c2R0N5SUVTYVMvdkpHQ2loQ2VzL0pCSmpoejdtNT\
+VRU3liSjl0dnJxUE5KSDhJCmhDTm1BUWhEU3NPYVJXNlpBdGV6UEdUb0FQUHNHMXhLMGdwUlVDM1YyR\
+C90bGRRa0VlSjhxaW5TaUN6ZjZIc3cKTnpncjVUbTMzTm96R3Rjc2Z4ZFl0cVB1UzRPRG40bktLSFpE\
+MTBLTng2Qi9HakdQTHIra21jUUVSMUV4U2s2QwpSemtzSTRzRml6VnVLYTFNK2ZqaVNVc3RTdHV1cTJ\
+QQTJJNzFNTTZlMHJmU3ZKM3VESEJYOWY5T1RFaGxZUFBkCnB1VWM2ek1pdEJKRTg2SFo1M08wR0MzdG\
+p1M1BnSnhmWnJyMHBCU20rSzQ3ajVTUFNkaytiVGh3UDZDZDhzWGUKNmljS3YvMXI0SjVqd1pFTmRna\
+2hKeHVuMkE1WVA0c0NBU21JSFFXWmU1cGdFQ0ljUXBHZjNBVllVdVpGeXZ6cApLL3VBRTc0L3NMK0VU\
+UnhDUlhkN0ZJM2cwZFVySTA2WUFIV1FkY1JpdWpIUU12ZXB3V2RrdUdkaE9wV3VRTy9oCjc0MGgvRlZ\
+0dFdOMjc3ajhhc3ptSDA3T2lRWFIwTU1mN2FEaldMaElMYkd2YkV4TzN0TnRBYXZ6cGxmMUNSNk8KUm\
+1nNDdhVTZpR3lON1MwTE85RUJBb0lCQVFEWWMwelh2UmJHTWxkVVZnOFFTT1ZHKzV4NXVocTVyQ2xtQ\
+lp2ZApvYitWS1hkMXBONThraWkxTFBiYUJmZG9JcWVUamdOK0E0YnVpT3RGNjdCWUdISkp0WTk4ZWR5\
+RkpZREtCSzIyCmthRml2eWVuV01UWG5jaHMvUmNXMnVGS1M3cFAyNDRXYkF2clQxZGxmTTF3L1JzbTZ\
+QVjF1dndPSmNJcEdLSzgKWWgyN2hiaThUbEF6bnJCSS9TbGZwNlpxV3Y0MFRLanNNdmVGVFNWRU5yd1\
+F2MVl4TjcxbjA1UWRVUkIrT0lJSQpPenpNMWpNcm43cjNmS3RKTEx0RllEdUhJZzJDL2E0cUZORmpjM\
+296V1laQkhlcDkrWlEyOTgxdy96VTJIZ0oxCkxiajZjMy9qQU5EakI3MnRkcWMxVUkvMWhwVUh2WDJz\
+emY2czM0L3VSY3RlaFgxWEFvSUJBUURaazVaT01RdVMKNzlVQkhCeTRFbFR2cVkvUUxjMUd1aG9LVXE\
+0dzhONEtJZlpMSDk5TTcwek9JWjNoaEdaYWJDREZHN3RqSDl4Vwo3UnhXVWt5cFRDK1h5TTc1YjF0YW\
+9jRVVyZ1hnUnE4R1JFRXg3OUtwWUE3ei95TVc1OHJCTWhHTWlGZ1JTM00zCmNQSzg2dHBvaTFDN2crd\
+lUxcjJwcDEzN0habzZiUHpKTFRPNXA1OG1tTFRPQVpKd1VSZ3pzZWJnc1dsWXZlR0wKZWNBZ3lYbUtt\
+WmVSeGRNUFlCK0NmMno1TWZ5Ujk4MHRVSDJPaitGQjlJNExzRTExREphZ2wwS1lHMWxKRTBFagpodEV\
+1cTFOTG9DcVkzYXVKYjhtRUpqNlA2Ylc2SytCZTBlUi9CS1MraGxxb3VOYWEySnlhSDc4Qis2U1VZWE\
+RuCnd6MityWUhVZEI4M0FvSUJBRFlXc2ZnaloyS0Z4KzdxUm45aVIvRXlCUXNpSjNXSWdSdmVnUEdrY\
+nRTZWRSeXYKNDIwcnRRSjVSd0o2aFRXL216S3pSVW9qSlgvTU5VYld1ODEzNW05bThJRkJqb3F6TVhq\
+S0xJSzM1NlZlY1ZGUApUSGs1RTVHd3VTbGI3dnA2N0FieXJaSUswL3VzYXdHUWEySTF6YWd1aE5BenR\
+yTHVXcE9jZFdZditwQVd2WEJJCi9aKzRvd0xLU0tGL3FvVmZVYkRPQzFSaTlCbWFpcHArTndiVVdYeV\
+pHanFzMDVGejVYUTFPTUZIMUV5M3BqZmIKaFlRODRpeTZBZDQzU3dqY3lKV1lRUUtCQzBZWDRFeWVyW\
+Dd1TTkvaEUxbWRHUGlJdmNwVk8zWCt3Ly9LQndZNQorUGtTd1NKc3lTSDRqTkRsSGE2K2VuNUpSNy81\
+YWVVNENiY0lFcWNDZ2dFQkFLelMvNnhDWnZnalN5V2poK2hxCm4wN3plQW1icUJmTEVZNHJtTFBGVUF\
+ucWFqSElNbDV4SXFnRnFkd05pQ1BCQ2RLbnNaUU9KYjVpZjRUTndKa2wKckJRNzdMUFRVVlJQY2dnVU\
+p4Uzc4S0Rnckl5Vys5V1FPTEIxZEJEb3MzUDhhbFlmb3h5eHV1Wko4SFpCY3BWaQpQQkdHdTFnSDd3V\
+0lyUzBmbVhkWlJQNGp5cGRvM3hFUWNXWEZkK1dCZE9EektmcEcwZkFzZTdDSFdDWnpBdmttCkFYQklH\
+OXQxdGZHNWQvMEZTS05GbTVPb0FPT3h3L0xZNTgrL0RmZXd0U0VBcFdRZkxTL1BmSWxVdUdvQ3FwcEM\
+Kc2pOVXVNSGxxc011Z2JsY29mNHNoZityWjMzQldYOEJSNWdIb21mRE1ibDNDQWp5TXd1dHpybzVxcD\
+BBUTBWWApxOGNDZ2dFQkFLakFXVVRYY1F2TE8yYkxOZmJBTUlSVXk1T2lTZmJCbDNYRThSZnNzaUt2V\
+VBnTFcwSlV1V3FLCjdGdUFxTlJPRHhrS0pMSTdyQlo2YVNqNitFWHpUMnJwY2dFWktnSjFOUEFRdFNs\
+UjNJUkcyU3JJdjBFK3UzbkUKK1laa3pOa2Q0MUJqTkRjRm1HV21lZk5ROUJmaVIrZlZFSkZmcE5oSkl\
+mNUloSWU0RUtZUE5VUXNua0tSVTlxUApzWi9idXBXc2w4bWVFcko3bllJQ05ucHpnSHRpNXdSMlliVF\
+VXT01odmRFUldxMnhTV3BBYmtNMElhZDBUc05kCmUrYVRQVmJOMXFibFZLMm1qUTl2YS9JSkVuSE51V\
+E9TREtJeUpvcVArQkxiRTVjQU5acXQ2OFFadWdOc2RxNHkKV2FoeStydU5LS1F3Mk5MYzQzZUtsNmxv\
+bXdtRlFZOD0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo=")
+ ("TLS.password" . "")
+ ("TLS.negotiationTimeoutSec" . "-1")
+ ("TLS.method" . "Automatic")
+ ("TLS.ciphers" . "")
+ ("TLS.certificateFile" . "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZHVENDQ\
+XdHZ0F3SUJBZ0lJU1pUdlZPQnh3akF3RFFZSktvWklodmNOQVFFTUJRQXdTVEVOTUFzR0ExVUUKQXhN\
+RVNtRnRhVEU0TURZR0NnbVNKb21UOGl4a0FRRVRLR1l6TXpRMVpqSTNOelZrWkdabE1EZGhOR0l3WkR\
+rMQpaR0ZsWVRFeE1XUXhOV1ppWXpFeE9Ua3dIaGNOTWpFd05ERTJNVGN6TWpFd1doY05NekV3TkRFME\
+1UY3pNakV3CldqQlFNUlF3RWdZRFZRUURFd3RLWVcxcElHUmxkbWxqWlRFNE1EWUdDZ21TSm9tVDhpe\
+GtBUUVUS0dFM09XTmwKTURVNE16VmhPRFV5WlRsbU5qWmxOelF3TURjeU5EUXdPVFZpTVdaa1kyVXdO\
+bVV3Z2dJaU1BMEdDU3FHU0liMwpEUUVCQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUUMzOW9WdHFzbVBnWkl\
+IcHpTVGtlT3BlWC9CSEx2KzFTYnJPSFpVCkRxMDRWQlFOQTZiZkhTUlkyaWxxNVhFYXlzVUpsM0JrLz\
+NLcWRIUnFEV01wQ1dpcE1Vc2FwSGxJR0tSWHEwbXgKUGdvVjg2UlFQbm9XQkU3YVlVRGU5SWV5cTJpZ\
+WV6QytZWEpwbVk5Y05tblpaMFlHOHJGMEVpWFA0SHpVWGphZgpJUys3Sk0yeWU2clJaSDVwb3RwUDZl\
+eDV4alVFbjRBRXVoblhielNBNnZMaC9wYnhIUVBHMVlmNHFhcU9TY1lXCldGVmhOcklQQlRSTWdkWk1\
+kRkU4dFlRcmlDZDU1eHVIa2J3K0JmNVVmVENqN25tVEcybDJNbGcrSXBHVkFXUFQKVjZJdDRTYkt1Wn\
+VuTGZkQ0tha0lNN0pwN1dnSVo2TUR3ZGhRUFoyTVJPQzN0b0c1ajh4aFZOU0Q5QlZiOGZBcgp0Znh3Z\
+XZZYkJNcjhHUVdiUGJUSmJPbWR2Z1BkRnFzU29ReEJ0VHFkSG1TMG53RjJ4UGZrdm1Cd3BSWWhHNHpu\
+CmZVbTJQUHAwSCtYOUpPendEdUFiOStHNHFmbSt2emw3dTdKN2pydE1HQlJlSlREdGFNd2RHa0lmcUN\
+RZGREZHEKaTNYc1R1VTlTbm1TeDZHcU9lemVNOG5OeXZrWVo0dlJPbzgxc1NSYzQ4L3pZZjJ1OFBJUm\
+4vVy9xZk9hbjVIbgpHMXhTQVA2ZHBwM0NWNGE4MFBXbmcrM3F0ODVuR2tpNjZNNDVJZ0Y4NHZwRGUyM\
+2YyZnprTk5OOTk1VTBvUStKClRoOXhtR2liZnp5Qml5OXd0VFR1WFgwd2N4ME5vcDY3WGhRQ1VQRkhy\
+bVd6WjV5bXhEdkRhcUN1U3NwcG0vTkQKVUVkMnNRSURBUUFCTUEwR0NTcUdTSWIzRFFFQkRBVUFBNEl\
+DQVFCZmRCc0p4RVVWeFRBeG5vNll1bEFoR1ZvUAplWG8xMHIwOE5DcDZRZlJxeGJlTkZ5aXEvKzEwSE\
+NpL1RoZk41OVdLNlpudFF4NlFNZUxEUVZTb0NjNzlaaWQ4ClE2RUdsWkp1c2RTTmg0VjVteXRCQVZHZ\
+2J2aXJFWU1Wcm5jWWg3bHR2LzVuSGRsbyt2WXV3Vzh0aEhHTk1TUkIKQmhJN2xydmpqY3NkbVl6L1Bp\
+NFNZdkg3c3RaVWpRYmUzNzh3UE90b3lBMTNybEtQUTF4QjJFbUxISDYya21WTQowa25wL1hQQ2o2alR\
+zakpFWko1NzZNMmloYy9DTzkvREVlWWZ4RFlJb004NEF5dTc0UU9UUVN1cnVHRjF5T1RKCmlxRkltTH\
+hMcWRxNk1Zdmx1QjFmTzlKaU9QaS84UEJFTTVpeGYzajlGOFVMQTZUTU1NSklFR1ROeUNzOWpzQloKR\
+UNiWVgweTY4WWtGYnYzQmNWaGk2K1VVWVhBVUd0akhwQ3Z2VThYaHowL0RVZFVaTkpqejRJeWl1ZE5N\
+dnFjQgppSEJDdkxFS1B4VFd1ZlFZaGM5ZkVXTm1valc1WSsvalBVeDcrQWxPM1RXZm1OclBpWDJuSEd\
+5UG5tYjZIR2hWCmp3UU0wT1h4cGxnZ2dQMWpVZ0VYWWRucStjYzdRMy94RFIvdi9Fd244T1d4OVB3eV\
+Y0WFZwZXY5QnpmeWwyQTMKdFhWVkFKMzJtcTlPQmVadXczdWlWU2E2TWdCVG80eXcrYnBjU2VIU2xXO\
+XNRc1NYY3dUNjhvOUdhR2hMNjdXMApwQWx4R2VxSWRtbTZ0MkxIUCtQQnBtL3BweTMvTmh1NFIwMTNv\
+Znp5V2Y0bEcrVnpWVGE0eXVqU1J3UlluYmZyCjlSWER0L0I5VEg5TnNsamdBQT09Ci0tLS0tRU5EIEN\
+FUlRJRklDQVRFLS0tLS0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZXakNDQTBLZ0F3SU\
+JBZ0lJRm1tNmZuaWRndEl3RFFZSktvWklodmNOQVFFTUJRQXdUREVRTUE0R0ExVUUKQXhNSFNtRnRhU\
+0JEUVRFNE1EWUdDZ21TSm9tVDhpeGtBUUVUS0RjNVpqSTJaVFZpWTJNeU9EWXlPREppT0dFMwpPRFF6\
+TUdOak1EWXpNakV4T1RFNFkyWm1PVGd3SGhjTk1qRXdOREUyTVRjek1qRXdXaGNOTXpFd05ERTBNVGN\
+6Ck1qRXdXakJKTVEwd0N3WURWUVFERXdSS1lXMXBNVGd3TmdZS0NaSW1pWlB5TEdRQkFSTW9aak16Tk\
+RWbU1qYzMKTldSa1ptVXdOMkUwWWpCa09UVmtZV1ZoTVRFeFpERTFabUpqTVRFNU9UQ0NBaUl3RFFZS\
+ktvWklodmNOQVFFQgpCUUFEZ2dJUEFEQ0NBZ29DZ2dJQkFQY0czaUQwUk84NE5XL2ZGVllWNHBLQ2My\
+ZE1EQXFCZVN2NEpCcTQ3OHQ5ClhjeERPeEhqSnYvR0dLRnFoVyt4cWFDOUJKZG44TGthdjBBTnMvV1d\
+3YXRNSDVsYlQrZlc0T2pGOVNCZ1Ivc2UKUlNPdWE1QncrSVJlSk5VSnR3enBJS3k1S1RhMnEwd0RyUX\
+hObXBuci9UK2NEK2RQSTJveUlFd2xwRHNKT2lVMAp6eStDU2pBb0FTYkh5TWcraGQwcWJiRFBUck1uR\
+2xKYkZubXdBQTBaRWU3aWg5Ymx0dlFPaU9TQWJVQm9IUHFpCmNtQW41RVFoNjVFa3dCb1p1U3hqanlC\
+VzZpWUJUbmc5S2c4U2pPVk9BYkJqaXZFZ3RyaFpYZ1JVdE11UWFmaDcKcjRRWDRuYjhRTUE5WXlhME8\
+xbFBJTUd5VEtiNHFIaE02VTd1RHV0NUFjcTN1NGFaZElPQ2prbUNFM3l4UU5UWAo5Vzl0b1NvV1l2YV\
+I1d1gxaFI5eVZCMFZ4V0N0djdZZklha1JiaWkxMS8xZHp3M1dXU1dMbTArTU4rY0pUdnluCk1EU29GN\
+jRpRmcycTVYd1VtWXpPRmJKQUtVd3M4QmVhcFRCVnRYaldDZmNKM01xZEZScDZvM25Lenlja0YwamoK\
+UjdLSmNRaWhJUW1sbXM1WEtzeHV1d0VMMmFKQ0o0Qm9uSUJDaXZWa09LbllsamtDeVNObzkzamlMalJ\
+4M0ZtRwpoTnJyT3lNbjFIcEd0Z1J2eFUxOC9Ob3FFaWtpdEhCeUtYNW5XU1lUUWN4MXlZY3kxcVo5cj\
+RqTmdQRzNuUHg0CjJEN2tPTlJPWXNVYXNBUlVTZHJqdlc5aXB2TDAvN2s1Yi9sRzh1WThPODN0NUFPS\
+TFVUG85Y05qMzNyeWJwbUgKQWdNQkFBR2pRekJCTUIwR0ExVWREZ1FXQkJUek5GOG5kZDMrQjZTdzJW\
+MnVvUkhSWDd3Um1UQVBCZ05WSFJNQgpBZjhFQlRBREFRSC9NQThHQTFVZER3RUIvd1FGQXdNSEJnQXd\
+EUVlKS29aSWh2Y05BUUVNQlFBRGdnSUJBRDMrCjlscFluMjZyeG5pekY2UkNvZFFFVmgvOVF2RWp1V3\
+dHUWZqa3gxb3VlVjdDMzUyWnpIT2hWU3VGcG43TUxkVFcKamI2dWhMRkpoMWtlTDlYZ0pHalMyV0Uwd\
+DlJUGp2UWx5UHIwRWJoWGRJNDJMYUR0NDk0dWQ2MEE0bWg0bW1zbwovcjY2NERKOWMwUjZBOUdQZUJj\
+Wi9zekhMQjJ4VmM5M3hYNjVjcmNoVTFLMDBVK2ZZUWtHS0xidFFXeUZzdnlKCmRHdFRxamVlYVVNeGt\
+5dFFWNWFxVHJ1SG4vV3U2RWRZejYrZ0ViQXJHUURRK1J3QmMxMDNGcWRIU0xReWdEWHoKd0pNVGhDRE\
+dBVmR6V2NCemJYL1JIZms5bTZzK01HblNJUFBrNG9FOUdFbGdQc2JUZ2FrTzc3aElUdzRxZXJiTAp2M\
+0tiaTVOeVZZVFNVa3hDb0VRSkIrWlZJT3BVNFhRdVAvNkZkWldBRk1LU0Jkd1JLcnRmT1hZT1ExcVBv\
+YU1uCjZPR1VGMU0rYWZ0dTNCMkNhZ2ZMaE5hbVBoSjdxWTNSMzJhK2VRVllvYWlESXZKMElIUHFnQ0N\
+uWXlIaVBHTjQKS3VvaE9IZFpXTkxOUXdIQTg3SDV5NEwrSGZISmdFZFppdWYrbTNMa3JJcnN5MWFoUj\
+gyaEpZVkhreHVyZVRDcQpIR2NJaUIvTHpkSG91WFVrWGNrNjRvWXVRQnM3ZE9KVEx6bGlibU8xelRzV\
+WRoc0d4dE9zc2lYWkFjUURmZHBnCjNHdFJ3UkRwd0ZtL2k5TC9UWjMzMjBwY0VZd21aN1dBSzJRa3Z6\
+eWZlelRGeXdLWmh3c0RQRkwycllzLzhXdWsKRk1sek5BVmRMTytTS1RxeGlkM0l1elFaQ0FwU05ybTJ\
+MY2ZVN2grWAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS\
+0tLQpNSUlGWFRDQ0EwV2dBd0lCQWdJSXV0T3MxUXBsSVRvd0RRWUpLb1pJaHZjTkFRRU1CUUF3VERFU\
+U1BNEdBMVVFCkF4TUhTbUZ0YVNCRFFURTRNRFlHQ2dtU0pvbVQ4aXhrQVFFVEtEYzVaakkyWlRWaVky\
+TXlPRFl5T0RKaU9HRTMKT0RRek1HTmpNRFl6TWpFeE9URTRZMlptT1Rnd0hoY05NakV3TkRFMk1UY3p\
+NakExV2hjTk16RXdOREUwTVRjegpNakExV2pCTU1SQXdEZ1lEVlFRREV3ZEtZVzFwSUVOQk1UZ3dOZ1\
+lLQ1pJbWlaUHlMR1FCQVJNb056bG1NalpsCk5XSmpZekk0TmpJNE1tSTRZVGM0TkRNd1kyTXdOak15T\
+VRFNU1UaGpabVk1T0RDQ0FpSXdEUVlKS29aSWh2Y04KQVFFQkJRQURnZ0lQQURDQ0Fnb0NnZ0lCQUxT\
+cGduY2tYODd3OE5vVzdRWE5DbWtHSHphVnN1NE9UbjFSSUhqVQpGR0w5MjNvVlk5RHVoZjFtVnllamg\
+remVCOCszaTR4b1E5MU04WDdTVnk4SHZxejQ4c0I2djAxMk5RTGpwN08xCkd4dmc1a0REeDRqbmVyUW\
+d6d0JzVEFuaC8xNy9SOEFDZkhINzYzUjhMRjY1clJPSStOT21KNUV2cU9rRWJJOXYKb0UySko1czBVS\
+HZZM1hTQ2pid01ROXRkM2c0SG9LNmRYSU44a2d6ejg0Yi83YkF5TnZ4a09rNnVSei9CSjhhZQozWjZu\
+dElza2tmVHhIZFpBbGtpVW5DU21Bb3VwQ01TbGRLS3RMRzNja2FhN0FDMDRxS29Rekc0WTN2TlRCOUl\
+mCmdvYThOazlKMThoaFN2REVuR0haaURLR1dkQVA5RW5GRHZERnRFRFZyVVZSWUN5WHdyejMya29Na3\
+dYODVUMTgKc1F2TUZSdWRsa1BoOGxmbnFEWTFpZEd1R2IvSGlnU1ZqalJKZlVTbS9lZ3hycStSTnpJW\
+GFBOWNuOXAxQkdFbwpZU0YxeUdtTEgzSkJscUhVRTg4VnFkenZRdXZ3Mkhvakdvd0pkdlhmU2loZk5W\
+OTh6VkEzQ2o3L0d3V2w0VU9OCkRUVUk2SzUrR3Y0a01iYXdxcWduaFlHbHBlZVp2bHE2UlI3OVpNblR\
+WVjJ1RWo4aERYQzdFTGN2Yk5tekJSSkoKS0gzaUxIbmNlSkxOV2NIMUV0K0pkaEFRR2xEYmk2RVR0dH\
+RuaWVaN3ZkMyt6UE00eXpkb3JEMlJXUjRyWG1acQpGRlI5eTBab2hQVTBjVmdKZHFtdUpyV01ZeTVsO\
+Gt5SWdwaExkdTR1WWRpc0RPMG1ianEySE55K3pEakpyYXFHClNWTkZBZ01CQUFHalF6QkJNQjBHQTFV\
+ZERnUVdCQlI1OG01YnpDaGlncmluaERETUJqSVJrWXovbURBUEJnTlYKSFJNQkFmOEVCVEFEQVFIL01\
+BOEdBMVVkRHdFQi93UUZBd01IQmdBd0RRWUpLb1pJaHZjTkFRRU1CUUFEZ2dJQgpBRWFDblluYm9yWm\
+RhWWZRUmxSb0dtSE94T1g5VFdNMXY0dWEweCtFcG11RDVWRDVlWEY1QVZkMlZadEdaeHYvCkd2VnFBU\
+2l0UTk3ampKV2p2bURWTUZtb3hQSmRYWDFkYTd5cmJYeFRmYm1mM1pac1RpdmZVdWQxYThxdUN3dTUK\
+TnBrdHFjV0JyMHRnNzFhOXlidHJOdm1GczZGRE1WMXkrY2JxYlp1UWlDWnc0WmZhekFaeTRQRGNocE9\
+SNjRCSwpBWFZIT05HcWFoV2hwcDkwd2E0TFEwUTE1U3FDR25kYVI4SHg5MHJOeEdkRjM1T1BLUjd1TD\
+drWDU4ZGxaWStDClJJK1pKMndYMzJUZzgrc1RtTmNaUTliWDdvS0t3R3E5Uk94SjZJSUhOSnN2bXhaS\
+nlPcmE2N21hNTd3OWxiQnUKSzJlQ3cwZjRDeHdLNU1LNStkbWx6R3dhZmJlMG00TTBvVjlhWUxZTzAw\
+R3Iza05heW9PdjRRVGtEM2pCMzVSMQpDMGJnQmk2eU1sTVJ2akZ5eEZkOFJpL003VG1jcXNObTB5akl\
+qbkZaenVtMFZTR1NLMXlRU3Flak40S0Y2R0JMCllpZ2JpM3c4WG5HYm9pZGdBUE9ncVVJeTJ1dEU1Ml\
+lzVXFsVHVncXhtM2xDOUhzaDM2UFJLNURDUG93eHVUNlgKcXo1M1ZiN2h6TkxLelpiRlJzbUdFOFY2c\
+WM2bXZTbUFXa25nL3QwaStXVmdGVkZuZFQrQ0oyNTJsa0ZacGljdAp6ekdETW44VUNDRUp4TDRKTklT\
+M2lLOUhlRys2MlZuay9QOEM3YVpLSXpVdjFud25rcVdUUUFYWDBKckJGdDdICjI5ZDk1RElmRTRuT0F\
+yS0JFNHc2Z1R4SU1uZzVzWi9ZbDFjcG5wUHlsR3VICi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K")
+ ("STUN.server" . "")
+ ("STUN.enable" . "false")
+ ("SRTP.rtpFallback" . "false")
+ ("SRTP.keyExchange" . "sdes")
+ ("SRTP.enable" . "true")
+ ("RingNS.uri" . "")
+ ("RingNS.account" . "0790738ce15fa05933b49dd77034312787da86c3")
+ ("DHT.PublicInCalls" . "true")
+ ("Account.videoPortMin" . "49152")
+ ("Account.videoPortMax" . "65534")
+ ("Account.videoEnabled" . "true")
+ ("Account.username" . "f3345f2775ddfe07a4b0d95daea111d15fbc1199")
+ ("Account.useragent" . "")
+ ("Account.upnpEnabled" . "true")
+ ("Account.type" . "RING")
+ ("Account.ringtoneEnabled" . "true")
+ ("Account.rendezVous" . "true")
+ ("Account.publishedSameAsLocal" . "true")
+ ("Account.publishedPort" . "5060")
+ ("Account.publishedAddress" . "")
+ ("Account.presenceSubscribeSupported" . "true")
+ ("Account.peerDiscovery" . "false")
+ ("Account.managerUsername" . "")
+ ("Account.managerUri" . "")
+ ("Account.mailbox" . "")
+ ("Account.localModeratorsEnabled" . "true")
+ ("Account.localInterface" . "default")
+ ("Account.hostname" . "bootstrap.jami.net")
+ ("Account.hasCustomUserAgent" . "false")
+ ("Account.enable" . "true")
+ ("Account.dtmfType" . "overrtp")
+ ("Account.displayName" . "dummy")
+ ("Account.defaultModerators" . "")
+ ("Account.audioPortMin" . "16384")
+ ("Account.audioPortMax" . "32766")
+ ("Account.archiveHasPassword" . "false")
+ ("Account.allowCertFromTrusted" . "true")
+ ("Account.allowCertFromHistory" . "true")
+ ("Account.allowCertFromContact" . "true")
+ ("Account.allModeratorEnabled" . "true")
+ ("Account.alias" . "dummy")
+ ("Account.activeCallLimit" . "-1")
+ ("Account.accountPublish" . "false")
+ ("Account.accountDiscovery" . "false")))
diff --git a/gnu/tests/telephony.scm b/gnu/tests/telephony.scm
new file mode 100644
index 0000000000..1155a9dbc2
--- /dev/null
+++ b/gnu/tests/telephony.scm
@@ -0,0 +1,366 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gnu.org>.
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu tests telephony)
+ #:use-module (gnu)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages guile)
+ #:use-module (gnu tests)
+ #:use-module (gnu system vm)
+ #:use-module (gnu services)
+ #:use-module (gnu services dbus)
+ #:use-module (gnu services networking)
+ #:use-module (gnu services ssh)
+ #:use-module (gnu services telephony)
+ #:use-module (guix gexp)
+ #:use-module (guix modules)
+ #:export (%test-jami
+ %test-jami-provisioning))
+
+;;;
+;;; Jami daemon.
+;;;
+
+(include "data/jami-dummy-account.dat") ;defines %jami-account-content-sexp
+
+(define %dummy-jami-account-archive
+ ;; A Jami account archive is a gzipped JSON file.
+ (computed-file
+ "dummy-jami-account.gz"
+ (with-extensions (list guile-json-4 guile-zlib)
+ #~(begin
+ (use-modules (json) (zlib))
+ (let ((port (open-output-file #$output)))
+ (call-with-gzip-output-port port
+ (lambda (port)
+ (scm->json '#$%jami-account-content-sexp port))))))))
+
+(define %allowed-contacts '("1dbcb0f5f37324228235564b79f2b9737e9a008f"
+ "2dbcb0f5f37324228235564b79f2b9737e9a008f"))
+
+(define %moderators '("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+ "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"))
+
+(define %dummy-jami-account (jami-account
+ (archive %dummy-jami-account-archive)
+ (allowed-contacts %allowed-contacts)
+ (moderators %moderators)
+ (rendezvous-point? #t)
+ (peer-discovery? #f)
+ (bootstrap-hostnames '("bootstrap.me"
+ "fallback.another.host"))
+ (name-server-uri "https://my.name.server")))
+
+(define* (make-jami-os #:key provisioning?)
+ (operating-system
+ (host-name "jami")
+ (timezone "America/Montreal")
+ (locale "en_US.UTF-8")
+
+ (bootloader (bootloader-configuration
+ (bootloader grub-bootloader)
+ (target "/dev/sdX")))
+ (file-systems (cons (file-system
+ (device (file-system-label "my-root"))
+ (mount-point "/")
+ (type "ext4"))
+ %base-file-systems))
+ (firmware '())
+
+ (services (cons* (service jami-service-type
+ (if provisioning?
+ (jami-configuration
+ (debug? #t)
+ (accounts (list %dummy-jami-account)))
+ (jami-configuration
+ (debug? #t))))
+ (service dbus-root-service-type)
+ ;; The following services/packages are added for
+ ;; debugging purposes.
+ (service dhcp-client-service-type)
+ (service openssh-service-type
+ (openssh-configuration
+ (permit-root-login #t)
+ (allow-empty-passwords? #t)))
+ %base-services))
+ (packages (cons* (specification->package "recutils")
+ (specification->package "strace")
+ %base-packages))))
+
+(define %jami-os
+ (make-jami-os))
+
+(define %jami-os-provisioning
+ (make-jami-os #:provisioning? #t))
+
+(define* (run-jami-test #:key provisioning?)
+ "Run tests in %JAMI-OS. When PROVISIONING? is true, test the
+accounts provisioning feature of the service."
+ (define os (marionette-operating-system
+ (if provisioning?
+ %jami-os-provisioning
+ %jami-os)
+ #:imported-modules '((gnu services herd)
+ (guix combinators))))
+ (define vm (virtual-machine
+ (operating-system os)
+ (memory-size 512)))
+
+ (define username (assoc-ref %jami-account-content-sexp
+ "Account.username"))
+
+ (define test
+ (with-imported-modules (source-module-closure
+ '((gnu build marionette)
+ (gnu build jami-service)))
+ #~(begin
+ (use-modules (rnrs base)
+ (srfi srfi-11)
+ (srfi srfi-64)
+ (gnu build marionette)
+ (gnu build jami-service))
+
+ (define marionette
+ (make-marionette (list #$vm)))
+
+ (mkdir #$output)
+ (chdir #$output)
+
+ (test-begin "jami")
+
+ (test-assert "service is running"
+ (marionette-eval
+ '(begin
+ (use-modules (gnu services herd))
+ (match (start-service 'jami)
+ (#f #f)
+ (('service response-parts ...)
+ (match (assq-ref response-parts 'running)
+ ((pid) (number? pid))))))
+ marionette))
+
+ (test-assert "service can be stopped"
+ (marionette-eval
+ '(begin
+ (use-modules (gnu services herd)
+ (rnrs base))
+ (setenv "PATH" "/run/current-system/profile/bin")
+ (let ((pid (match (start-service 'jami)
+ (#f #f)
+ (('service response-parts ...)
+ (match (assq-ref response-parts 'running)
+ ((pid) pid))))))
+
+ (assert (number? pid))
+
+ (match (stop-service 'jami)
+ (services ;a list of service symbols
+ (member 'jami services)))
+ ;; Sometimes, the process still appear in pgrep, even
+ ;; though we are using waitpid after sending it SIGTERM
+ ;; in the service; use retries.
+ (with-retries 20 1
+ (not (zero? (status:exit-val
+ (system* "pgrep" "dring")))))))
+ marionette))
+
+ (test-assert "service can be restarted"
+ (marionette-eval
+ '(begin
+ (use-modules (gnu services herd)
+ (rnrs base))
+ ;; Start and retrieve the current PID.
+ (define pid (match (start-service 'jami)
+ (#f #f)
+ (('service response-parts ...)
+ (match (assq-ref response-parts 'running)
+ ((pid) pid)))))
+ (assert (number? pid))
+
+ ;; Restart the service.
+ (restart-service 'jami)
+
+ (define new-pid (match (start-service 'jami)
+ (#f #f)
+ (('service response-parts ...)
+ (match (assq-ref response-parts 'running)
+ ((pid) pid)))))
+ (assert (number? new-pid))
+
+ (not (eq? pid new-pid)))
+ marionette))
+
+ (unless #$provisioning? (test-skip 1))
+ (test-assert "jami accounts provisioning, account present"
+ (marionette-eval
+ '(begin
+ (use-modules (gnu services herd)
+ (rnrs base))
+ ;; Accounts take some time to appear after being added.
+ (with-retries 20 1
+ (with-shepherd-action 'jami ('list-accounts) results
+ (let ((account (assoc-ref (car results) #$username)))
+ (assert (string=? #$username
+ (assoc-ref account
+ "Account.username")))))))
+ marionette))
+
+ (unless #$provisioning? (test-skip 1))
+ (test-assert "jami accounts provisioning, allowed-contacts"
+ (marionette-eval
+ '(begin
+ (use-modules (gnu services herd)
+ (rnrs base)
+ (srfi srfi-1))
+
+ ;; Public mode is disabled.
+ (with-shepherd-action 'jami ('list-account-details)
+ results
+ (let ((account (assoc-ref (car results) #$username)))
+ (assert (string=? "false"
+ (assoc-ref account
+ "DHT.PublicInCalls")))))
+
+ ;; Allowed contacts match those declared in the configuration.
+ (with-shepherd-action 'jami ('list-contacts) results
+ (let ((contacts (assoc-ref (car results) #$username)))
+ (assert (lset= string-ci=? contacts '#$%allowed-contacts)))))
+ marionette))
+
+ (unless #$provisioning? (test-skip 1))
+ (test-assert "jami accounts provisioning, moderators"
+ (marionette-eval
+ '(begin
+ (use-modules (gnu services herd)
+ (rnrs base)
+ (srfi srfi-1))
+
+ ;; Moderators match those declared in the configuration.
+ (with-shepherd-action 'jami ('list-moderators) results
+ (let ((moderators (assoc-ref (car results) #$username)))
+ (assert (lset= string-ci=? moderators '#$%moderators))))
+
+ ;; Moderators can be added via the Shepherd action.
+ (with-shepherd-action 'jami
+ ('add-moderator "cccccccccccccccccccccccccccccccccccccccc"
+ #$username) results
+ (let ((moderators (car results)))
+ (assert (lset= string-ci=? moderators
+ (cons "cccccccccccccccccccccccccccccccccccccccc"
+ '#$%moderators))))))
+ marionette))
+
+ (unless #$provisioning? (test-skip 1))
+ (test-assert "jami service actions, ban/unban contacts"
+ (marionette-eval
+ '(begin
+ (use-modules (gnu services herd)
+ (rnrs base)
+ (srfi srfi-1))
+
+ ;; Globally ban a contact.
+ (with-shepherd-action 'jami
+ ('ban-contact "1dbcb0f5f37324228235564b79f2b9737e9a008f") _
+ (with-shepherd-action 'jami ('list-banned-contacts) results
+ (every (match-lambda
+ ((username . banned-contacts)
+ (member "1dbcb0f5f37324228235564b79f2b9737e9a008f"
+ banned-contacts)))
+ (car results))))
+
+ ;; Ban a contact for a single account.
+ (with-shepherd-action 'jami
+ ('ban-contact "dddddddddddddddddddddddddddddddddddddddd"
+ #$username) _
+ (with-shepherd-action 'jami ('list-banned-contacts) results
+ (every (match-lambda
+ ((username . banned-contacts)
+ (let ((found? (member "dddddddddddddddddddddddddddddddddddddddd"
+ banned-contacts)))
+ (if (string=? #$username username)
+ found?
+ (not found?)))))
+ (car results)))))
+ marionette))
+
+ (unless #$provisioning? (test-skip 1))
+ (test-assert "jami service actions, enable/disable accounts"
+ (marionette-eval
+ '(begin
+ (use-modules (gnu services herd)
+ (rnrs base))
+
+ (with-shepherd-action 'jami
+ ('disable-account #$username) _
+ (with-shepherd-action 'jami ('list-accounts) results
+ (let ((account (assoc-ref (car results) #$username)))
+ (assert (string= "false"
+ (assoc-ref account "Account.enable"))))))
+
+ (with-shepherd-action 'jami
+ ('enable-account #$username) _
+ (with-shepherd-action 'jami ('list-accounts) results
+ (let ((account (assoc-ref (car results) #$username)))
+ (assert (string= "true"
+ (assoc-ref account "Account.enable")))))))
+ marionette))
+
+ (unless #$provisioning? (test-skip 1))
+ (test-assert "jami account parameters"
+ (marionette-eval
+ '(begin
+ (use-modules (gnu services herd)
+ (rnrs base)
+ (srfi srfi-1))
+
+ (with-shepherd-action 'jami ('list-account-details) results
+ (let ((account-details (assoc-ref (car results)
+ #$username)))
+ (assert (lset<=
+ equal?
+ '(("Account.hostname" .
+ "bootstrap.me;fallback.another.host")
+ ("Account.peerDiscovery" . "false")
+ ("Account.rendezVous" . "true")
+ ("RingNS.uri" . "https://my.name.server"))
+ account-details)))))
+ marionette))
+
+ (test-end)
+ (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
+
+ (gexp->derivation (if provisioning?
+ "jami-provisioning-test"
+ "jami-test")
+ test))
+
+(define %test-jami
+ (system-test
+ (name "jami")
+ (description "Basic tests for the jami service.")
+ (value (run-jami-test))))
+
+(define %test-jami-provisioning
+ (system-test
+ (name "jami-provisioning")
+ (description "Provisioning test for the jami service.")
+ (value (run-jami-test #:provisioning? #t))))
+
+;; Local Variables:
+;; eval: (put 'with-retries 'scheme-indent-function 2)
+;; End: