diff options
author | Marius Bakke <marius@gnu.org> | 2021-08-12 00:30:27 +0200 |
---|---|---|
committer | Marius Bakke <marius@gnu.org> | 2021-08-12 00:30:27 +0200 |
commit | c4133c43c7cfe2476ebfae87f9e4d10d96de9bc7 (patch) | |
tree | 47bd773d2f434384b54e56916c1a287dd8e51511 /gnu | |
parent | ffa01e68859bb7a6daa9fcffdc8d77ca35db4bc0 (diff) | |
parent | 4eb0a5146ae5a195a29c79f586fcc1e58f7fa69b (diff) |
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')
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: |