From eb46c6c5c81695af475f7e1e416d05e51157fe60 Mon Sep 17 00:00:00 2001 From: Pierre Langlois Date: Sat, 10 Jul 2021 14:12:02 +0100 Subject: gnu: u-boot: Update to 2021.07. * gnu/packages/patches/u-boot-sifive-prevent-reloc-initrd-fdt.patch: New patch. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/bootloaders.scm (%u-boot-sifive-prevent-relocating-initrd-fdt): New variable. (u-boot): Update to 2021.07. [native-inputs]: Add python-pycryptodomex. (u-boot-2021.07): Delete variable. (u-boot-tools)[arguments]: Adapt 'patch phase, disable failing test_spl test. (u-boot-sifive-unmatched): Use default u-boot package. (u-boot-pinebook-pro-rk3328): Use default u-boot package. --- gnu/local.mk | 1 + gnu/packages/bootloaders.scm | 47 +++++++++------------- .../u-boot-sifive-prevent-reloc-initrd-fdt.patch | 16 ++++++++ 3 files changed, 36 insertions(+), 28 deletions(-) create mode 100644 gnu/packages/patches/u-boot-sifive-prevent-reloc-initrd-fdt.patch (limited to 'gnu') diff --git a/gnu/local.mk b/gnu/local.mk index c530507b1a..4c6aa6945e 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1780,6 +1780,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/bootloaders.scm b/gnu/packages/bootloaders.scm index 261184ff24..504b89f122 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -56,6 +56,7 @@ (define-module (gnu packages bootloaders) #: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) @@ -493,20 +494,26 @@ (define %u-boot-rockchip-inno-usb-patch ;; 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) @@ -516,6 +523,7 @@ (define u-boot ("perl" ,perl) ("python" ,python) ("python-coverage" ,python-coverage) + ("python-pycryptodomex" ,python-pycryptodomex) ("python-pytest" ,python-pytest) ("swig" ,swig))) (build-system gnu-build-system) @@ -525,21 +533,6 @@ (define u-boot 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) @@ -568,9 +561,13 @@ (define-public u-boot-tools ;; 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" @@ -879,11 +876,7 @@ (define-public u-boot-sifive-fu540 (make-u-boot-package "sifive_fu540" "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"))) @@ -946,9 +939,7 @@ (define-public u-boot-rockpro64-rk3399 (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/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" \ -- cgit v1.2.3 From cff43aa2fd62b64afaa3b4e8c5f7d0c8173e0bcf Mon Sep 17 00:00:00 2001 From: raid5atemyhomework via Bug reports for GNU Guix Date: Fri, 23 Jul 2021 16:54:13 +0000 Subject: gnu: zfs: Update 2.1.0. * gnu/packages/file-systems.scm (zfs): Update to 2.1.0. [arguments]: Adjust 'patch-source phase to add support for new compatibility feature. Signed-off-by: Efraim Flashner --- gnu/packages/file-systems.scm | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm index b6d0bcbc55..36efe1a2c1 100644 --- a/gnu/packages/file-systems.scm +++ b/gnu/packages/file-systems.scm @@ -1171,7 +1171,7 @@ (define args (define-public zfs (package (name "zfs") - (version "2.0.5") + (version "2.1.0") (outputs '("out" "module" "src")) (source (origin @@ -1180,7 +1180,7 @@ (define-public zfs "/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 @@ -1211,6 +1211,25 @@ (define-public zfs (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 -- cgit v1.2.3 From bcde6cdaf24d258a917669299957b9fb2c84e1df Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Mon, 2 Aug 2021 18:54:13 +0300 Subject: gnu: zfs: Update source URI. * gnu/packages/file-systems.scm (zfs)[source]: Update to new upstream URI. --- gnu/packages/file-systems.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm index 36efe1a2c1..8da2714cfd 100644 --- a/gnu/packages/file-systems.scm +++ b/gnu/packages/file-systems.scm @@ -1176,7 +1176,7 @@ (define-public zfs (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 -- cgit v1.2.3 From 6da2b35b60aee8086c7ad1ee1c1492ed5e730a92 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 2 Aug 2021 12:17:38 +0200 Subject: gnu: Add onnx-optimizer. * gnu/packages/machine-learning.scm (onnx-optimizer): New variable. * gnu/packages/patches/onnx-optimizer-system-library.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. --- gnu/local.mk | 1 + gnu/packages/machine-learning.scm | 44 ++++++++++++++++++ .../patches/onnx-optimizer-system-library.patch | 53 ++++++++++++++++++++++ 3 files changed, 98 insertions(+) create mode 100644 gnu/packages/patches/onnx-optimizer-system-library.patch (limited to 'gnu') diff --git a/gnu/local.mk b/gnu/local.mk index 4c6aa6945e..9e8f2d702d 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1512,6 +1512,7 @@ dist_patch_DATA = \ %D%/packages/patches/ocaml-dose3-Install-mli-cmx-etc.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 \ diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 177d1aaa4f..b32e5ef289 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -675,6 +675,50 @@ (define-public python-onnx ;; 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") 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 + $ + $ + ) + ++# 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 $) + else() + # Assume everything else is like gcc +- target_link_libraries(onnx_opt_cpp2py_export +- PRIVATE "-Wl,--whole-archive" $ +- "-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) -- cgit v1.2.3 From f12a35cfa22092a7e3157c94abfef8335f86ac1c Mon Sep 17 00:00:00 2001 From: Morgan Smith Date: Wed, 28 Jul 2021 10:22:54 -0400 Subject: gnu: qutebrowser: Update to 2.3.1. * gnu/packages/web-browsers.scm (qutebrowser): Update to 2.3.1. Signed-off-by: Efraim Flashner --- gnu/packages/web-browsers.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm index a0c0d0d84a..bd5ed1b5ac 100644 --- a/gnu/packages/web-browsers.scm +++ b/gnu/packages/web-browsers.scm @@ -490,7 +490,7 @@ (define-public kristall (define-public qutebrowser (package (name "qutebrowser") - (version "2.2.2") + (version "2.3.1") (source (origin (method url-fetch) @@ -498,7 +498,7 @@ (define-public qutebrowser "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 -- cgit v1.2.3 From 5b2b834269f74865c8ca6ab5e81f6834228490d4 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Tue, 27 Jul 2021 23:24:23 -0400 Subject: build: shepherd: Use autoload to lazily bind Shepherd modules. Instead of imperative module-autoload! directives. * gnu/build/shepherd.scm: Replace module-autoload! directives by autoload arguments for define-module. --- gnu/build/shepherd.scm | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'gnu') 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 @@ (define-module (gnu build shepherd) #: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 @@ (define accounts (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. " -- cgit v1.2.3 From ad945029a2dbd1fb741be573f13e42c061e72d0f Mon Sep 17 00:00:00 2001 From: Xinglu Chen Date: Wed, 9 Jun 2021 15:06:26 +0200 Subject: services: configuration: Uniformize the generated documentation. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Make the formatting of the generated docs more consistent with the rest of the docs in the “Services” section of the manual. * gnu/services/configuration (generate-documentation): Represent the data type documentation of a field using a DEFTP table rather than DEFTYPEVR elements. Modified-by: Maxim Cournoyer Signed-off-by: Maxim Cournoyer --- gnu/services/configuration.scm | 57 +++++++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 26 deletions(-) (limited to 'gnu') diff --git a/gnu/services/configuration.scm b/gnu/services/configuration.scm index fd07b6fa49..3974fba92d 100644 --- a/gnu/services/configuration.scm +++ b/gnu/services/configuration.scm @@ -255,32 +255,37 @@ (define (str x) (object->string x)) (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) + (and (symbol? val) (not (eq? val '%invalid))) + (and (list? val) (and-map show-default? val)))) + + `(entry (% (heading + (code ,(str field-name)) + ,@(if (show-default? default) + `(" (default: " + (code ,(str 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) -- cgit v1.2.3 From 8e1f94421873777c6bb0b83daa4f81cbacc8b3ff Mon Sep 17 00:00:00 2001 From: Xinglu Chen Date: Wed, 9 Jun 2021 15:06:27 +0200 Subject: services: configuration: Derive the default value from the package variable. If the type of a configuration field is a package, show the name of its package *variable* as the default value. * gnu/services/configuration.scm (generate-documentation){show-default} {package->symbol}: New nested procedures. Use them to format the field entries. Co-authored-by: Maxim Cournoyer Signed-off-by: Maxim Cournoyer --- gnu/services/configuration.scm | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/services/configuration.scm b/gnu/services/configuration.scm index 3974fba92d..df3d3b6f9b 100644 --- a/gnu/services/configuration.scm +++ b/gnu/services/configuration.scm @@ -25,10 +25,12 @@ (define-module (gnu services configuration) #: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,6 +254,21 @@ (define serialize-package empty-serializer) ;; 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) @@ -270,14 +287,21 @@ (define (generate configuration-name) (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 ,(str default)) ")") + (code ,(show-default default)) ")") '()) " (type: " ,(str field-type) ")")) (para ,@field-docs) -- cgit v1.2.3 From 69dcc24c9f0cdfea674eb690e7755d26a25ced2b Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Thu, 15 Apr 2021 01:18:24 -0400 Subject: services: Add a service for Jami. * gnu/services/telephony.scm (string-or-computed-file?) (string-list?, account-fingerprint-list?): New procedures. (maybe-string-list, maybe-account-fingerprint-list) (maybe-boolean, maybe-string, jami-account-list): New configuration field types. (serialize-string-list, serialize-boolean, serialize-string) (jami-account, jami-account->alist, jami-configuration) (jami-account-list?, jami-account-list-maybe): New procedures. (%jami-accounts): New variable. (jami-configuration->command-line-arguments): New procedure. (jami-dbus-session-activation, jami-shepherd-services): New procedures. (jami-service-type): New variable. * gnu/build/jami-service.scm: New file. * gnu/tests/data/jami-dummy-account.dat: Likewise. * gnu/tests/telephony.scm: Likewise. * gnu/local.mk (GNU_SYSTEM_MODULES): Register them. * Makefile.am (SCM_TESTS): Register the test file. (dist_patch_DATA): Register the new data file. * doc/guix.texi (Telephony Services): Document it. --- Makefile.am | 1 + doc/guix.texi | 228 ++++++++++++ gnu/build/jami-service.scm | 587 +++++++++++++++++++++++++++++ gnu/local.mk | 5 +- gnu/services/telephony.scm | 684 +++++++++++++++++++++++++++++++++- gnu/tests/data/jami-dummy-account.dat | 392 +++++++++++++++++++ gnu/tests/telephony.scm | 366 ++++++++++++++++++ tests/services/telephony.scm | 446 ++++++++++++++++++++++ 8 files changed, 2706 insertions(+), 3 deletions(-) create mode 100644 gnu/build/jami-service.scm create mode 100644 gnu/tests/data/jami-dummy-account.dat create mode 100644 gnu/tests/telephony.scm create mode 100644 tests/services/telephony.scm (limited to 'gnu') diff --git a/Makefile.am b/Makefile.am index d5ec909213..5542aa1c56 100644 --- a/Makefile.am +++ b/Makefile.am @@ -489,6 +489,7 @@ SCM_TESTS = \ tests/services/file-sharing.scm \ tests/services/configuration.scm \ tests/services/linux.scm \ + tests/services/telephony.scm \ tests/sets.scm \ tests/size.scm \ tests/status.scm \ diff --git a/doc/guix.texi b/doc/guix.texi index 2298d512a1..9a9c85678c 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -22526,6 +22526,234 @@ and Error. @node Telephony Services @subsection Telephony Services +@cindex telephony, services +The @code{(gnu services telephony)} module contains Guix service +definitions for telephony services. Currently it provides the following +services: + +@subsubheading Jami + +@cindex jami, service + +This section describes how to configure a Jami server that can be used +to host video (or audio) conferences, among other uses. The following +example demonstrates how to specify Jami account archives (backups) to +be provisioned automatically: + +@lisp +(service jami-service-type + (jami-configuration + (accounts + (list (jami-account + (archive "/etc/jami/unencrypted-account-1.gz")) + (jami-account + (archive "/etc/jami/unencrypted-account-2.gz")))))) +@end lisp + +When the accounts field is specified, the Jami account files of the +service found under @file{/var/lib/jami} are recreated every time the +service starts. + +Jami accounts and their corresponding backup archives can be generated +using either the @code{jami-qt} or @code{jami-gnome} Jami clients. The +accounts should not be password-protected, but it is wise to ensure +their files are only readable by @samp{root}. + +The next example shows how to declare that only some contacts should be +allowed to communicate with a given account: + +@lisp +(service jami-service-type + (jami-configuration + (accounts + (list (jami-account + (archive "/etc/jami/unencrypted-account-1.gz") + (peer-discovery? #t) + (rendezvous-point? #t) + (allowed-contacts + '("1dbcb0f5f37324228235564b79f2b9737e9a008f" + "2dbcb0f5f37324228235564b79f2b9737e9a008f"))))))) +@end lisp + +In this mode, only the declared @code{allowed-contacts} can initiate +communication with the Jami account. This can be used, for example, +with rendezvous point accounts to create a private video conferencing +space. + +To put the system administrator in full control of the conferences +hosted on their system, the Jami service supports the following actions: + +@example sh +# herd doc jami list-actions jami +(list-accounts + list-account-details + list-banned-contacts + list-contacts + list-moderators + add-moderator + ban-contact + enable-account + disable-account) +@end example + +The above actions aim to provide the most valuable actions for +moderation purposes, not to cover the whole Jami API. Users wanting to +interact with the Jami daemon from Guile may be interested in +experimenting with the @code{(gnu build jami-service)} module, which +powers the above Shepherd actions. + +@c TODO: This should be auto-generated from the doc already defined on +@c the shepherd-actions themselves in (gnu services telephony). +The @code{add-moderator} and @code{ban-contact} actions accept a contact +@emph{fingerprint} (40 characters long hash) as first argument and an +account fingerprint or username as second argument: + +@example sh +# herd add-moderator jami 1dbcb0f5f37324228235564b79f2b9737e9a008f \ + f3345f2775ddfe07a4b0d95daea111d15fbc1199 + +# herd list-moderators jami +Moderators for account f3345f2775ddfe07a4b0d95daea111d15fbc1199: + - 1dbcb0f5f37324228235564b79f2b9737e9a008f + +@end example + +In the case of @code{ban-contact}, the second username argument is +optional; when omitted, the account is banned from all Jami accounts: + +@example sh +# herd ban-contact jami 1dbcb0f5f37324228235564b79f2b9737e9a008f + +# herd list-banned-contacts jami +Banned contacts for account f3345f2775ddfe07a4b0d95daea111d15fbc1199: + - 1dbcb0f5f37324228235564b79f2b9737e9a008f + +@end example + +Banned contacts are also stripped from their moderation privileges. + +The @code{disable-account} action allows to completely disconnect an +account from the network, making it unreachable, while +@code{enable-account} does the inverse. They accept a single account +username or fingerprint as first argument: + +@example sh +# herd disable-account jami f3345f2775ddfe07a4b0d95daea111d15fbc1199 + +# herd list-accounts jami +The following Jami accounts are available: + - f3345f2775ddfe07a4b0d95daea111d15fbc1199 (dummy) [disabled] + +@end example + +The @code{list-account-details} action prints the detailed parameters of +each accounts in the Recutils format, which means the @command{recsel} +command can be used to select accounts of interest (@pxref{Selection +Expressions,,,recutils, GNU recutils manual}). Note that period +characters (@samp{.}) found in the account parameter keys are mapped to +underscores (@samp{_}) in the output, to meet the requirements of the +Recutils format. The following example shows how to print the account +fingerprints for all accounts operating in the rendezvous point mode: + +@example sh +# herd list-account-details jami | \ + recsel -p Account.username -e 'Account.rendezVous ~ "true"' +Account_username: f3345f2775ddfe07a4b0d95daea111d15fbc1199 +@end example + +The remaining actions should be self-explanatory. + +The complete set of available configuration options is detailed below. + +@c TODO: Ideally, the following fragments would be auto-generated at +@c build time, so that they needn't be manually duplicated. +@c Auto-generated via (configuration->documentation 'jami-configuration) +@deftp {Data Type} jami-configuration +Available @code{jami-configuration} fields are: + +@table @asis +@item @code{jamid} (default: @code{libring}) (type: package) +The Jami daemon package to use. + +@item @code{dbus} (default: @code{dbus}) (type: package) +The D-Bus package to use to start the required D-Bus session. + +@item @code{nss-certs} (default: @code{nss-certs}) (type: package) +The nss-certs package to use to provide TLS certificates. + +@item @code{enable-logging?} (default: @code{#t}) (type: boolean) +Whether to enable logging to syslog. + +@item @code{debug?} (default: @code{#f}) (type: boolean) +Whether to enable debug level messages. + +@item @code{auto-answer?} (default: @code{#f}) (type: boolean) +Whether to force automatic answer to incoming calls. + +@item @code{accounts} (default: @code{disabled}) (type: maybe-jami-account-list) +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. + +@end table + +@end deftp + +@c Auto-generated via (configuration->documentation 'jami-account) +@deftp {Data Type} jami-account +Available @code{jami-account} fields are: + +@table @asis +@item @code{archive} (type: 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. + +@item @code{allowed-contacts} (default: @code{disabled}) (type: maybe-account-fingerprint-list) +The list of allowed contacts for the account, entered as their 40 +characters long fingerprint. Messages or calls from accounts not in +that list will be rejected. When unspecified, the configuration of the +account archive is used as-is with respect to contacts and public +inbound calls/messaging allowance, which typically defaults to allow any +contact to communicate with the account. + +@item @code{moderators} (default: @code{disabled}) (type: maybe-account-fingerprint-list) +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. + +@item @code{rendezvous-point?} (default: @code{disabled}) (type: maybe-boolean) +Whether the account should operate in the rendezvous mode. In this +mode, all the incoming audio/video calls are mixed into a conference. +When left unspecified, the value from the account archive prevails. + +@item @code{peer-discovery?} (default: @code{disabled}) (type: maybe-boolean) +Whether peer discovery should be enabled. Peer discovery is used to +discover other OpenDHT nodes on the local network, which can be useful +to maintain communication between devices on such network even when the +connection to the the Internet has been lost. When left unspecified, +the value from the account archive prevails. + +@item @code{bootstrap-hostnames} (default: @code{disabled}) (type: maybe-string-list) +A list of hostnames or IPs pointing to OpenDHT nodes, that should be +used to initially join the OpenDHT network. When left unspecified, the +value from the account archive prevails. + +@item @code{name-server-uri} (default: @code{disabled}) (type: maybe-string) +The URI of the name server to use, that can be used to retrieve the +account fingerprint for a registered username. + +@end table + +@end deftp + +@subsubheading Murmur (VoIP server) + @cindex Murmur (VoIP server) @cindex VoIP server This section describes how to set up and run a Murmur server. Murmur is 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 +;;; +;;; 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 . + +;;; 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/local.mk b/gnu/local.mk index 9e8f2d702d..66a2ba52bc 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -685,6 +685,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 \ @@ -722,6 +723,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 @@ -1881,7 +1883,8 @@ dist_patch_DATA = \ %D%/packages/patches/ytnef-CVE-2021-3403.patch \ %D%/packages/patches/ytnef-CVE-2021-3404.patch \ %D%/packages/patches/zstd-CVE-2021-24031_CVE-2021-24032.patch \ - %D%/packages/patches/zziplib-CVE-2018-16548.patch + %D%/packages/patches/zziplib-CVE-2018-16548.patch \ + %D%/tests/data/jami-dummy-account.dat MISC_DISTRO_FILES = \ %D%/packages/ld-wrapper.in 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 +;;; Copyright © 2021 Maxim Cournoyer ;;; ;;; This file is part of GNU Guix. ;;; @@ -17,16 +18,45 @@ ;;; along with GNU Guix. If not, see . (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 @@ (define-module (gnu services telephony) 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 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 object." + (match-record config + (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 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 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 @@ -305,3 +981,7 @@ (define murmur-service-type (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 . +;;; +;;; 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 . + +(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: diff --git a/tests/services/telephony.scm b/tests/services/telephony.scm new file mode 100644 index 0000000000..b4a0f120d4 --- /dev/null +++ b/tests/services/telephony.scm @@ -0,0 +1,446 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2021 Maxim Cournoyer +;;; +;;; 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 . + +(define-module (tests services telephony) + #:use-module (gnu build jami-service) + #:use-module (gnu services telephony) + #:use-module (srfi srfi-64)) + +;;; Tests for the (gnu services telephony) and related modules. + +(test-begin "jami-service") + +(define parse-dbus-reply + (@@ (gnu build jami-service) parse-dbus-reply)) + +(define parse-account-ids + (@@ (gnu build jami-service) parse-account-ids)) + +(define parse-account-details + (@@ (gnu build jami-service) parse-account-details)) + +(define parse-contacts + (@@ (gnu build jami-service) parse-contacts)) + +(define jami-account->alist + (@@ (gnu services telephony) jami-account->alist)) + +;; $ dbus-send --print-reply --dest="cx.ring.Ring" \ +;; "/cx/ring/Ring/ConfigurationManager" \ +;; "cx.ring.Ring.ConfigurationManager.getAccountList" +(define getAccountList-reply "\ +method return time=1622217253.386711 sender=:1.7 -> destination=:1.14 serial=140 reply_serial=2 + array [ + string \"addf37fbb558d6a0\" + string \"d5cbeb7d08c98a65\" + string \"398af0c6b74ce101\" + ] +") + +(test-equal "parse-account-ids" + '("addf37fbb558d6a0" "d5cbeb7d08c98a65" "398af0c6b74ce101") + (parse-account-ids getAccountList-reply)) + +;; $ dbus-send --print-reply --dest="cx.ring.Ring" \ +;; "/cx/ring/Ring/ConfigurationManager" \ +;; "cx.ring.Ring.ConfigurationManager.getAccountDetails" \ +;; 'string:398af0c6b74ce101' +(define getAccountDetails-reply "\ +method return time=1622254991.789588 sender=:1.7 -> destination=:1.19 serial=145 reply_serial=2 + array [ + dict entry( + string \"Account.accountDiscovery\" + string \"false\" + ) + dict entry( + string \"Account.accountPublish\" + string \"false\" + ) + dict entry( + string \"Account.activeCallLimit\" + string \"-1\" + ) + dict entry( + string \"Account.alias\" + string \"some-rendezvous-point-name\" + ) + dict entry( + string \"Account.allModeratorEnabled\" + string \"true\" + ) + dict entry( + string \"Account.allowCertFromContact\" + string \"true\" + ) + dict entry( + string \"Account.allowCertFromHistory\" + string \"true\" + ) + dict entry( + string \"Account.allowCertFromTrusted\" + string \"true\" + ) + dict entry( + string \"Account.archiveHasPassword\" + string \"false\" + ) + dict entry( + string \"Account.audioPortMax\" + string \"32766\" + ) + dict entry( + string \"Account.audioPortMin\" + string \"16384\" + ) + dict entry( + string \"Account.autoAnswer\" + string \"false\" + ) + dict entry( + string \"Account.defaultModerators\" + string \"\" + ) + dict entry( + string \"Account.deviceID\" + string \"94b4070fc7a8afa8482c777a9822c52e6af2e1bd\" + ) + dict entry( + string \"Account.deviceName\" + string \"some-device\" + ) + dict entry( + string \"Account.dhtProxyListUrl\" + string \"https://config.jami.net/proxyList\" + ) + dict entry( + string \"Account.displayName\" + string \"some-rendezvous-point-name\" + ) + dict entry( + string \"Account.dtmfType\" + string \"overrtp\" + ) + dict entry( + string \"Account.enable\" + string \"true\" + ) + dict entry( + string \"Account.hasCustomUserAgent\" + string \"false\" + ) + dict entry( + string \"Account.hostname\" + string \"bootstrap.jami.net\" + ) + dict entry( + string \"Account.localInterface\" + string \"default\" + ) + dict entry( + string \"Account.localModeratorsEnabled\" + string \"true\" + ) + dict entry( + string \"Account.mailbox\" + string \"\" + ) + dict entry( + string \"Account.managerUri\" + string \"\" + ) + dict entry( + string \"Account.managerUsername\" + string \"\" + ) + dict entry( + string \"Account.peerDiscovery\" + string \"false\" + ) + dict entry( + string \"Account.presenceSubscribeSupported\" + string \"true\" + ) + dict entry( + string \"Account.proxyEnabled\" + string \"false\" + ) + dict entry( + string \"Account.proxyPushToken\" + string \"\" + ) + dict entry( + string \"Account.proxyServer\" + string \"dhtproxy.jami.net:[80-95]\" + ) + dict entry( + string \"Account.publishedAddress\" + string \"\" + ) + dict entry( + string \"Account.publishedPort\" + string \"5060\" + ) + dict entry( + string \"Account.publishedSameAsLocal\" + string \"true\" + ) + dict entry( + string \"Account.rendezVous\" + string \"true\" + ) + dict entry( + string \"Account.ringtoneEnabled\" + string \"true\" + ) + dict entry( + string \"Account.ringtonePath\" + string \"/usr/share/ring/ringtones/default.opus\" + ) + dict entry( + string \"Account.type\" + string \"RING\" + ) + dict entry( + string \"Account.upnpEnabled\" + string \"true\" + ) + dict entry( + string \"Account.useragent\" + string \"\" + ) + dict entry( + string \"Account.username\" + string \"ccb8bbe2382343f7feb140710ab48aaf1b55634e\" + ) + dict entry( + string \"Account.videoEnabled\" + string \"true\" + ) + dict entry( + string \"Account.videoPortMax\" + string \"65534\" + ) + dict entry( + string \"Account.videoPortMin\" + string \"49152\" + ) + dict entry( + string \"DHT.PublicInCalls\" + string \"true\" + ) + dict entry( + string \"DHT.port\" + string \"7766\" + ) + dict entry( + string \"RingNS.account\" + string \"3989b55313a911b6f0c004748b49b254f35c9ef6\" + ) + dict entry( + string \"RingNS.uri\" + string \"\" + ) + dict entry( + string \"SRTP.enable\" + string \"true\" + ) + dict entry( + string \"SRTP.keyExchange\" + string \"sdes\" + ) + dict entry( + string \"SRTP.rtpFallback\" + string \"false\" + ) + dict entry( + string \"STUN.enable\" + string \"false\" + ) + dict entry( + string \"STUN.server\" + string \"\" + ) + dict entry( + string \"TLS.certificateFile\" + string \"/var/lib/jami/.local/share/jami/398af0c6b74ce101/ring_device.crt\" + ) + dict entry( + string \"TLS.certificateListFile\" + string \"\" + ) + dict entry( + string \"TLS.ciphers\" + string \"\" + ) + dict entry( + string \"TLS.method\" + string \"Automatic\" + ) + dict entry( + string \"TLS.negotiationTimeoutSec\" + string \"-1\" + ) + dict entry( + string \"TLS.password\" + string \"\" + ) + dict entry( + string \"TLS.privateKeyFile\" + string \"/var/lib/jami/.local/share/jami/398af0c6b74ce101/ring_device.key\" + ) + dict entry( + string \"TLS.requireClientCertificate\" + string \"true\" + ) + dict entry( + string \"TLS.serverName\" + string \"\" + ) + dict entry( + string \"TLS.verifyClient\" + string \"true\" + ) + dict entry( + string \"TLS.verifyServer\" + string \"true\" + ) + dict entry( + string \"TURN.enable\" + string \"true\" + ) + dict entry( + string \"TURN.password\" + string \"ring\" + ) + dict entry( + string \"TURN.realm\" + string \"ring\" + ) + dict entry( + string \"TURN.server\" + string \"turn.jami.net\" + ) + dict entry( + string \"TURN.username\" + string \"ring\" + ) + ] +") + +(test-equal "parse-account-details; username, alias and display name" + '("ccb8bbe2382343f7feb140710ab48aaf1b55634e" ;username + "some-rendezvous-point-name" ;alias + "some-rendezvous-point-name") ;displayName + (let ((account-details (parse-account-details getAccountDetails-reply))) + (list (assoc-ref account-details "Account.username") + (assoc-ref account-details "Account.alias") + (assoc-ref account-details "Account.displayName")))) + +(define getContacts-reply "\ +method return time=1627014042.752673 sender=:1.113 -> destination=:1.186 serial=220 reply_serial=2 + array [ + array [ + dict entry( + string \"added\" + string \"1578883327\" + ) + dict entry( + string \"confirmed\" + string \"true\" + ) + dict entry( + string \"id\" + string \"1c7d5a09464223442549fef172a3cf6f4de9b01c\" + ) + ] + array [ + dict entry( + string \"added\" + string \"1623107941\" + ) + dict entry( + string \"confirmed\" + string \"true\" + ) + dict entry( + string \"id\" + string \"5903c6c9ac5cb863c64e559add3d5d1c8c563449\" + ) + ] + array [ + dict entry( + string \"added\" + string \"1595996256\" + ) + dict entry( + string \"confirmed\" + string \"true\" + ) + dict entry( + string \"id\" + string \"ff2d72a548693214fb3a0f0f7a943b5e2bb9be03\" + ) + ] + ]") + +(test-equal "parse-account-contacts" + '((("added" . "1578883327") + ("confirmed" . "true") + ("id" . "1c7d5a09464223442549fef172a3cf6f4de9b01c")) + (("added" . "1623107941") + ("confirmed" . "true") + ("id" . "5903c6c9ac5cb863c64e559add3d5d1c8c563449")) + (("added" . "1595996256") + ("confirmed" . "true") + ("id" . "ff2d72a548693214fb3a0f0f7a943b5e2bb9be03"))) + (parse-contacts getContacts-reply)) + +(define getContacts-empty-reply "\ +method return time=1627400787.873988 sender=:1.1197 -> destination=:1.1463 serial=2127 reply_serial=2 + array [ + ]") + +(test-equal "parse-account-contacts, empty array" + '() + (parse-contacts getContacts-empty-reply)) + +(define %dummy-jami-account (jami-account + (archive "/tmp/dummy.gz"))) + +(define %dummy-jami-account-2 (jami-account + (archive "/tmp/dummy.gz") + (rendezvous-point? #t) + (peer-discovery? #f) + (bootstrap-hostnames '("bootstrap.me" + "fallback.another.host")) + (name-server-uri "https://my.name.server"))) + +(test-equal "jami-account->alist, no account detail value set" + '() + (jami-account->alist %dummy-jami-account)) + +(test-equal "jami-account->alist, with account detail values" + '(("Account.hostname" . "bootstrap.me;fallback.another.host") + ("Account.peerDiscovery" . "false") + ("Account.rendezVous" . "true") + ("RingNS.uri" . "https://my.name.server")) + (sort (jami-account->alist %dummy-jami-account-2) + (lambda (x y) + (string<=? (car x) (car y))))) + +(test-end) -- cgit v1.2.3 From 4673f817938d9d2b1b40a072ab2e0c44a32ccc97 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Mon, 2 Aug 2021 15:48:59 -0400 Subject: Revert "services: Add a service for Jami." This reverts commit 69dcc24c9f0cdfea674eb690e7755d26a25ced2b. It broke 'guix pull'. --- Makefile.am | 1 - doc/guix.texi | 228 ------------ gnu/build/jami-service.scm | 587 ----------------------------- gnu/local.mk | 5 +- gnu/services/telephony.scm | 684 +--------------------------------- gnu/tests/data/jami-dummy-account.dat | 392 ------------------- gnu/tests/telephony.scm | 366 ------------------ tests/services/telephony.scm | 446 ---------------------- 8 files changed, 3 insertions(+), 2706 deletions(-) delete mode 100644 gnu/build/jami-service.scm delete mode 100644 gnu/tests/data/jami-dummy-account.dat delete mode 100644 gnu/tests/telephony.scm delete mode 100644 tests/services/telephony.scm (limited to 'gnu') diff --git a/Makefile.am b/Makefile.am index 5542aa1c56..d5ec909213 100644 --- a/Makefile.am +++ b/Makefile.am @@ -489,7 +489,6 @@ SCM_TESTS = \ tests/services/file-sharing.scm \ tests/services/configuration.scm \ tests/services/linux.scm \ - tests/services/telephony.scm \ tests/sets.scm \ tests/size.scm \ tests/status.scm \ diff --git a/doc/guix.texi b/doc/guix.texi index 9a9c85678c..2298d512a1 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -22526,234 +22526,6 @@ and Error. @node Telephony Services @subsection Telephony Services -@cindex telephony, services -The @code{(gnu services telephony)} module contains Guix service -definitions for telephony services. Currently it provides the following -services: - -@subsubheading Jami - -@cindex jami, service - -This section describes how to configure a Jami server that can be used -to host video (or audio) conferences, among other uses. The following -example demonstrates how to specify Jami account archives (backups) to -be provisioned automatically: - -@lisp -(service jami-service-type - (jami-configuration - (accounts - (list (jami-account - (archive "/etc/jami/unencrypted-account-1.gz")) - (jami-account - (archive "/etc/jami/unencrypted-account-2.gz")))))) -@end lisp - -When the accounts field is specified, the Jami account files of the -service found under @file{/var/lib/jami} are recreated every time the -service starts. - -Jami accounts and their corresponding backup archives can be generated -using either the @code{jami-qt} or @code{jami-gnome} Jami clients. The -accounts should not be password-protected, but it is wise to ensure -their files are only readable by @samp{root}. - -The next example shows how to declare that only some contacts should be -allowed to communicate with a given account: - -@lisp -(service jami-service-type - (jami-configuration - (accounts - (list (jami-account - (archive "/etc/jami/unencrypted-account-1.gz") - (peer-discovery? #t) - (rendezvous-point? #t) - (allowed-contacts - '("1dbcb0f5f37324228235564b79f2b9737e9a008f" - "2dbcb0f5f37324228235564b79f2b9737e9a008f"))))))) -@end lisp - -In this mode, only the declared @code{allowed-contacts} can initiate -communication with the Jami account. This can be used, for example, -with rendezvous point accounts to create a private video conferencing -space. - -To put the system administrator in full control of the conferences -hosted on their system, the Jami service supports the following actions: - -@example sh -# herd doc jami list-actions jami -(list-accounts - list-account-details - list-banned-contacts - list-contacts - list-moderators - add-moderator - ban-contact - enable-account - disable-account) -@end example - -The above actions aim to provide the most valuable actions for -moderation purposes, not to cover the whole Jami API. Users wanting to -interact with the Jami daemon from Guile may be interested in -experimenting with the @code{(gnu build jami-service)} module, which -powers the above Shepherd actions. - -@c TODO: This should be auto-generated from the doc already defined on -@c the shepherd-actions themselves in (gnu services telephony). -The @code{add-moderator} and @code{ban-contact} actions accept a contact -@emph{fingerprint} (40 characters long hash) as first argument and an -account fingerprint or username as second argument: - -@example sh -# herd add-moderator jami 1dbcb0f5f37324228235564b79f2b9737e9a008f \ - f3345f2775ddfe07a4b0d95daea111d15fbc1199 - -# herd list-moderators jami -Moderators for account f3345f2775ddfe07a4b0d95daea111d15fbc1199: - - 1dbcb0f5f37324228235564b79f2b9737e9a008f - -@end example - -In the case of @code{ban-contact}, the second username argument is -optional; when omitted, the account is banned from all Jami accounts: - -@example sh -# herd ban-contact jami 1dbcb0f5f37324228235564b79f2b9737e9a008f - -# herd list-banned-contacts jami -Banned contacts for account f3345f2775ddfe07a4b0d95daea111d15fbc1199: - - 1dbcb0f5f37324228235564b79f2b9737e9a008f - -@end example - -Banned contacts are also stripped from their moderation privileges. - -The @code{disable-account} action allows to completely disconnect an -account from the network, making it unreachable, while -@code{enable-account} does the inverse. They accept a single account -username or fingerprint as first argument: - -@example sh -# herd disable-account jami f3345f2775ddfe07a4b0d95daea111d15fbc1199 - -# herd list-accounts jami -The following Jami accounts are available: - - f3345f2775ddfe07a4b0d95daea111d15fbc1199 (dummy) [disabled] - -@end example - -The @code{list-account-details} action prints the detailed parameters of -each accounts in the Recutils format, which means the @command{recsel} -command can be used to select accounts of interest (@pxref{Selection -Expressions,,,recutils, GNU recutils manual}). Note that period -characters (@samp{.}) found in the account parameter keys are mapped to -underscores (@samp{_}) in the output, to meet the requirements of the -Recutils format. The following example shows how to print the account -fingerprints for all accounts operating in the rendezvous point mode: - -@example sh -# herd list-account-details jami | \ - recsel -p Account.username -e 'Account.rendezVous ~ "true"' -Account_username: f3345f2775ddfe07a4b0d95daea111d15fbc1199 -@end example - -The remaining actions should be self-explanatory. - -The complete set of available configuration options is detailed below. - -@c TODO: Ideally, the following fragments would be auto-generated at -@c build time, so that they needn't be manually duplicated. -@c Auto-generated via (configuration->documentation 'jami-configuration) -@deftp {Data Type} jami-configuration -Available @code{jami-configuration} fields are: - -@table @asis -@item @code{jamid} (default: @code{libring}) (type: package) -The Jami daemon package to use. - -@item @code{dbus} (default: @code{dbus}) (type: package) -The D-Bus package to use to start the required D-Bus session. - -@item @code{nss-certs} (default: @code{nss-certs}) (type: package) -The nss-certs package to use to provide TLS certificates. - -@item @code{enable-logging?} (default: @code{#t}) (type: boolean) -Whether to enable logging to syslog. - -@item @code{debug?} (default: @code{#f}) (type: boolean) -Whether to enable debug level messages. - -@item @code{auto-answer?} (default: @code{#f}) (type: boolean) -Whether to force automatic answer to incoming calls. - -@item @code{accounts} (default: @code{disabled}) (type: maybe-jami-account-list) -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. - -@end table - -@end deftp - -@c Auto-generated via (configuration->documentation 'jami-account) -@deftp {Data Type} jami-account -Available @code{jami-account} fields are: - -@table @asis -@item @code{archive} (type: 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. - -@item @code{allowed-contacts} (default: @code{disabled}) (type: maybe-account-fingerprint-list) -The list of allowed contacts for the account, entered as their 40 -characters long fingerprint. Messages or calls from accounts not in -that list will be rejected. When unspecified, the configuration of the -account archive is used as-is with respect to contacts and public -inbound calls/messaging allowance, which typically defaults to allow any -contact to communicate with the account. - -@item @code{moderators} (default: @code{disabled}) (type: maybe-account-fingerprint-list) -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. - -@item @code{rendezvous-point?} (default: @code{disabled}) (type: maybe-boolean) -Whether the account should operate in the rendezvous mode. In this -mode, all the incoming audio/video calls are mixed into a conference. -When left unspecified, the value from the account archive prevails. - -@item @code{peer-discovery?} (default: @code{disabled}) (type: maybe-boolean) -Whether peer discovery should be enabled. Peer discovery is used to -discover other OpenDHT nodes on the local network, which can be useful -to maintain communication between devices on such network even when the -connection to the the Internet has been lost. When left unspecified, -the value from the account archive prevails. - -@item @code{bootstrap-hostnames} (default: @code{disabled}) (type: maybe-string-list) -A list of hostnames or IPs pointing to OpenDHT nodes, that should be -used to initially join the OpenDHT network. When left unspecified, the -value from the account archive prevails. - -@item @code{name-server-uri} (default: @code{disabled}) (type: maybe-string) -The URI of the name server to use, that can be used to retrieve the -account fingerprint for a registered username. - -@end table - -@end deftp - -@subsubheading Murmur (VoIP server) - @cindex Murmur (VoIP server) @cindex VoIP server This section describes how to set up and run a Murmur server. Murmur is diff --git a/gnu/build/jami-service.scm b/gnu/build/jami-service.scm deleted file mode 100644 index d44e87387d..0000000000 --- a/gnu/build/jami-service.scm +++ /dev/null @@ -1,587 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2021 Maxim Cournoyer -;;; -;;; 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 . - -;;; 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/local.mk b/gnu/local.mk index 66a2ba52bc..9e8f2d702d 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -685,7 +685,6 @@ 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 \ @@ -723,7 +722,6 @@ 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 @@ -1883,8 +1881,7 @@ dist_patch_DATA = \ %D%/packages/patches/ytnef-CVE-2021-3403.patch \ %D%/packages/patches/ytnef-CVE-2021-3404.patch \ %D%/packages/patches/zstd-CVE-2021-24031_CVE-2021-24032.patch \ - %D%/packages/patches/zziplib-CVE-2018-16548.patch \ - %D%/tests/data/jami-dummy-account.dat + %D%/packages/patches/zziplib-CVE-2018-16548.patch MISC_DISTRO_FILES = \ %D%/packages/ld-wrapper.in diff --git a/gnu/services/telephony.scm b/gnu/services/telephony.scm index fd90840324..e1259cc2df 100644 --- a/gnu/services/telephony.scm +++ b/gnu/services/telephony.scm @@ -1,6 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 nee -;;; Copyright © 2021 Maxim Cournoyer ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,45 +17,16 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu services telephony) - #:use-module ((gnu build jami-service) #:select (account-fingerprint?)) - #:use-module ((gnu services) #:hide (delete)) - #:use-module (gnu services configuration) + #:use-module (gnu services) #: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 (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 + #:export (murmur-configuration make-murmur-configuration murmur-configuration? murmur-configuration-package @@ -104,652 +74,6 @@ (define-module (gnu services telephony) 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 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 object." - (match-record config - (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 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 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 @@ -981,7 +305,3 @@ (define murmur-service-type (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 deleted file mode 100644 index 0e908396ca..0000000000 --- a/gnu/tests/data/jami-dummy-account.dat +++ /dev/null @@ -1,392 +0,0 @@ -;;; -*- 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 deleted file mode 100644 index 1155a9dbc2..0000000000 --- a/gnu/tests/telephony.scm +++ /dev/null @@ -1,366 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2021 Maxim Cournoyer . -;;; -;;; 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 . - -(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: diff --git a/tests/services/telephony.scm b/tests/services/telephony.scm deleted file mode 100644 index b4a0f120d4..0000000000 --- a/tests/services/telephony.scm +++ /dev/null @@ -1,446 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2021 Maxim Cournoyer -;;; -;;; 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 . - -(define-module (tests services telephony) - #:use-module (gnu build jami-service) - #:use-module (gnu services telephony) - #:use-module (srfi srfi-64)) - -;;; Tests for the (gnu services telephony) and related modules. - -(test-begin "jami-service") - -(define parse-dbus-reply - (@@ (gnu build jami-service) parse-dbus-reply)) - -(define parse-account-ids - (@@ (gnu build jami-service) parse-account-ids)) - -(define parse-account-details - (@@ (gnu build jami-service) parse-account-details)) - -(define parse-contacts - (@@ (gnu build jami-service) parse-contacts)) - -(define jami-account->alist - (@@ (gnu services telephony) jami-account->alist)) - -;; $ dbus-send --print-reply --dest="cx.ring.Ring" \ -;; "/cx/ring/Ring/ConfigurationManager" \ -;; "cx.ring.Ring.ConfigurationManager.getAccountList" -(define getAccountList-reply "\ -method return time=1622217253.386711 sender=:1.7 -> destination=:1.14 serial=140 reply_serial=2 - array [ - string \"addf37fbb558d6a0\" - string \"d5cbeb7d08c98a65\" - string \"398af0c6b74ce101\" - ] -") - -(test-equal "parse-account-ids" - '("addf37fbb558d6a0" "d5cbeb7d08c98a65" "398af0c6b74ce101") - (parse-account-ids getAccountList-reply)) - -;; $ dbus-send --print-reply --dest="cx.ring.Ring" \ -;; "/cx/ring/Ring/ConfigurationManager" \ -;; "cx.ring.Ring.ConfigurationManager.getAccountDetails" \ -;; 'string:398af0c6b74ce101' -(define getAccountDetails-reply "\ -method return time=1622254991.789588 sender=:1.7 -> destination=:1.19 serial=145 reply_serial=2 - array [ - dict entry( - string \"Account.accountDiscovery\" - string \"false\" - ) - dict entry( - string \"Account.accountPublish\" - string \"false\" - ) - dict entry( - string \"Account.activeCallLimit\" - string \"-1\" - ) - dict entry( - string \"Account.alias\" - string \"some-rendezvous-point-name\" - ) - dict entry( - string \"Account.allModeratorEnabled\" - string \"true\" - ) - dict entry( - string \"Account.allowCertFromContact\" - string \"true\" - ) - dict entry( - string \"Account.allowCertFromHistory\" - string \"true\" - ) - dict entry( - string \"Account.allowCertFromTrusted\" - string \"true\" - ) - dict entry( - string \"Account.archiveHasPassword\" - string \"false\" - ) - dict entry( - string \"Account.audioPortMax\" - string \"32766\" - ) - dict entry( - string \"Account.audioPortMin\" - string \"16384\" - ) - dict entry( - string \"Account.autoAnswer\" - string \"false\" - ) - dict entry( - string \"Account.defaultModerators\" - string \"\" - ) - dict entry( - string \"Account.deviceID\" - string \"94b4070fc7a8afa8482c777a9822c52e6af2e1bd\" - ) - dict entry( - string \"Account.deviceName\" - string \"some-device\" - ) - dict entry( - string \"Account.dhtProxyListUrl\" - string \"https://config.jami.net/proxyList\" - ) - dict entry( - string \"Account.displayName\" - string \"some-rendezvous-point-name\" - ) - dict entry( - string \"Account.dtmfType\" - string \"overrtp\" - ) - dict entry( - string \"Account.enable\" - string \"true\" - ) - dict entry( - string \"Account.hasCustomUserAgent\" - string \"false\" - ) - dict entry( - string \"Account.hostname\" - string \"bootstrap.jami.net\" - ) - dict entry( - string \"Account.localInterface\" - string \"default\" - ) - dict entry( - string \"Account.localModeratorsEnabled\" - string \"true\" - ) - dict entry( - string \"Account.mailbox\" - string \"\" - ) - dict entry( - string \"Account.managerUri\" - string \"\" - ) - dict entry( - string \"Account.managerUsername\" - string \"\" - ) - dict entry( - string \"Account.peerDiscovery\" - string \"false\" - ) - dict entry( - string \"Account.presenceSubscribeSupported\" - string \"true\" - ) - dict entry( - string \"Account.proxyEnabled\" - string \"false\" - ) - dict entry( - string \"Account.proxyPushToken\" - string \"\" - ) - dict entry( - string \"Account.proxyServer\" - string \"dhtproxy.jami.net:[80-95]\" - ) - dict entry( - string \"Account.publishedAddress\" - string \"\" - ) - dict entry( - string \"Account.publishedPort\" - string \"5060\" - ) - dict entry( - string \"Account.publishedSameAsLocal\" - string \"true\" - ) - dict entry( - string \"Account.rendezVous\" - string \"true\" - ) - dict entry( - string \"Account.ringtoneEnabled\" - string \"true\" - ) - dict entry( - string \"Account.ringtonePath\" - string \"/usr/share/ring/ringtones/default.opus\" - ) - dict entry( - string \"Account.type\" - string \"RING\" - ) - dict entry( - string \"Account.upnpEnabled\" - string \"true\" - ) - dict entry( - string \"Account.useragent\" - string \"\" - ) - dict entry( - string \"Account.username\" - string \"ccb8bbe2382343f7feb140710ab48aaf1b55634e\" - ) - dict entry( - string \"Account.videoEnabled\" - string \"true\" - ) - dict entry( - string \"Account.videoPortMax\" - string \"65534\" - ) - dict entry( - string \"Account.videoPortMin\" - string \"49152\" - ) - dict entry( - string \"DHT.PublicInCalls\" - string \"true\" - ) - dict entry( - string \"DHT.port\" - string \"7766\" - ) - dict entry( - string \"RingNS.account\" - string \"3989b55313a911b6f0c004748b49b254f35c9ef6\" - ) - dict entry( - string \"RingNS.uri\" - string \"\" - ) - dict entry( - string \"SRTP.enable\" - string \"true\" - ) - dict entry( - string \"SRTP.keyExchange\" - string \"sdes\" - ) - dict entry( - string \"SRTP.rtpFallback\" - string \"false\" - ) - dict entry( - string \"STUN.enable\" - string \"false\" - ) - dict entry( - string \"STUN.server\" - string \"\" - ) - dict entry( - string \"TLS.certificateFile\" - string \"/var/lib/jami/.local/share/jami/398af0c6b74ce101/ring_device.crt\" - ) - dict entry( - string \"TLS.certificateListFile\" - string \"\" - ) - dict entry( - string \"TLS.ciphers\" - string \"\" - ) - dict entry( - string \"TLS.method\" - string \"Automatic\" - ) - dict entry( - string \"TLS.negotiationTimeoutSec\" - string \"-1\" - ) - dict entry( - string \"TLS.password\" - string \"\" - ) - dict entry( - string \"TLS.privateKeyFile\" - string \"/var/lib/jami/.local/share/jami/398af0c6b74ce101/ring_device.key\" - ) - dict entry( - string \"TLS.requireClientCertificate\" - string \"true\" - ) - dict entry( - string \"TLS.serverName\" - string \"\" - ) - dict entry( - string \"TLS.verifyClient\" - string \"true\" - ) - dict entry( - string \"TLS.verifyServer\" - string \"true\" - ) - dict entry( - string \"TURN.enable\" - string \"true\" - ) - dict entry( - string \"TURN.password\" - string \"ring\" - ) - dict entry( - string \"TURN.realm\" - string \"ring\" - ) - dict entry( - string \"TURN.server\" - string \"turn.jami.net\" - ) - dict entry( - string \"TURN.username\" - string \"ring\" - ) - ] -") - -(test-equal "parse-account-details; username, alias and display name" - '("ccb8bbe2382343f7feb140710ab48aaf1b55634e" ;username - "some-rendezvous-point-name" ;alias - "some-rendezvous-point-name") ;displayName - (let ((account-details (parse-account-details getAccountDetails-reply))) - (list (assoc-ref account-details "Account.username") - (assoc-ref account-details "Account.alias") - (assoc-ref account-details "Account.displayName")))) - -(define getContacts-reply "\ -method return time=1627014042.752673 sender=:1.113 -> destination=:1.186 serial=220 reply_serial=2 - array [ - array [ - dict entry( - string \"added\" - string \"1578883327\" - ) - dict entry( - string \"confirmed\" - string \"true\" - ) - dict entry( - string \"id\" - string \"1c7d5a09464223442549fef172a3cf6f4de9b01c\" - ) - ] - array [ - dict entry( - string \"added\" - string \"1623107941\" - ) - dict entry( - string \"confirmed\" - string \"true\" - ) - dict entry( - string \"id\" - string \"5903c6c9ac5cb863c64e559add3d5d1c8c563449\" - ) - ] - array [ - dict entry( - string \"added\" - string \"1595996256\" - ) - dict entry( - string \"confirmed\" - string \"true\" - ) - dict entry( - string \"id\" - string \"ff2d72a548693214fb3a0f0f7a943b5e2bb9be03\" - ) - ] - ]") - -(test-equal "parse-account-contacts" - '((("added" . "1578883327") - ("confirmed" . "true") - ("id" . "1c7d5a09464223442549fef172a3cf6f4de9b01c")) - (("added" . "1623107941") - ("confirmed" . "true") - ("id" . "5903c6c9ac5cb863c64e559add3d5d1c8c563449")) - (("added" . "1595996256") - ("confirmed" . "true") - ("id" . "ff2d72a548693214fb3a0f0f7a943b5e2bb9be03"))) - (parse-contacts getContacts-reply)) - -(define getContacts-empty-reply "\ -method return time=1627400787.873988 sender=:1.1197 -> destination=:1.1463 serial=2127 reply_serial=2 - array [ - ]") - -(test-equal "parse-account-contacts, empty array" - '() - (parse-contacts getContacts-empty-reply)) - -(define %dummy-jami-account (jami-account - (archive "/tmp/dummy.gz"))) - -(define %dummy-jami-account-2 (jami-account - (archive "/tmp/dummy.gz") - (rendezvous-point? #t) - (peer-discovery? #f) - (bootstrap-hostnames '("bootstrap.me" - "fallback.another.host")) - (name-server-uri "https://my.name.server"))) - -(test-equal "jami-account->alist, no account detail value set" - '() - (jami-account->alist %dummy-jami-account)) - -(test-equal "jami-account->alist, with account detail values" - '(("Account.hostname" . "bootstrap.me;fallback.another.host") - ("Account.peerDiscovery" . "false") - ("Account.rendezVous" . "true") - ("RingNS.uri" . "https://my.name.server")) - (sort (jami-account->alist %dummy-jami-account-2) - (lambda (x y) - (string<=? (car x) (car y))))) - -(test-end) -- cgit v1.2.3 From 0ae0d8b4ce006797967b602ab2b2e61c24594f2f Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Mon, 2 Aug 2021 16:50:54 -0400 Subject: gnu: RawTherapee: Use HTTPS URLs. * gnu/packages/photo.scm (rawtherapee)[source, home-page]: Use HTTPS URLs. --- gnu/packages/photo.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm index 673989e06b..3ef0fbf7f5 100644 --- a/gnu/packages/photo.scm +++ b/gnu/packages/photo.scm @@ -769,7 +769,7 @@ (define-public rawtherapee (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 +809,7 @@ (define-public rawtherapee ("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 -- cgit v1.2.3 From 10f554700c417b84c22c56fdd007567a52c45d75 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Mon, 2 Aug 2021 16:06:04 -0400 Subject: Reinstate "services: Add a service for Jami." This reverts commit 4673f817938d9d2b1b40a072ab2e0c44a32ccc97, which reverted commit 69dcc24c9f0cdfea674eb690e7755d26a25ced2b with the fix detailed below. Thanks to Christopher Baines for reporting the failure and proposing a fix. * guix/self.scm (compiled-guix) [*system-test-modules*]: Add the test data files via the 'extra-files' argument. * gnu/local.mk (dist_patch_DATA): Move the tests/data/jami-dummy-account.dat file to... * gnu/local.mk (MODULES_NOT_COMPILED): ... here. --- Makefile.am | 1 + doc/guix.texi | 228 ++++++++++++ gnu/build/jami-service.scm | 587 +++++++++++++++++++++++++++++ gnu/local.mk | 5 +- gnu/services/telephony.scm | 684 +++++++++++++++++++++++++++++++++- gnu/tests/data/jami-dummy-account.dat | 392 +++++++++++++++++++ gnu/tests/telephony.scm | 366 ++++++++++++++++++ guix/self.scm | 2 + tests/services/telephony.scm | 446 ++++++++++++++++++++++ 9 files changed, 2708 insertions(+), 3 deletions(-) create mode 100644 gnu/build/jami-service.scm create mode 100644 gnu/tests/data/jami-dummy-account.dat create mode 100644 gnu/tests/telephony.scm create mode 100644 tests/services/telephony.scm (limited to 'gnu') diff --git a/Makefile.am b/Makefile.am index d5ec909213..5542aa1c56 100644 --- a/Makefile.am +++ b/Makefile.am @@ -489,6 +489,7 @@ SCM_TESTS = \ tests/services/file-sharing.scm \ tests/services/configuration.scm \ tests/services/linux.scm \ + tests/services/telephony.scm \ tests/sets.scm \ tests/size.scm \ tests/status.scm \ diff --git a/doc/guix.texi b/doc/guix.texi index 2298d512a1..9a9c85678c 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -22526,6 +22526,234 @@ and Error. @node Telephony Services @subsection Telephony Services +@cindex telephony, services +The @code{(gnu services telephony)} module contains Guix service +definitions for telephony services. Currently it provides the following +services: + +@subsubheading Jami + +@cindex jami, service + +This section describes how to configure a Jami server that can be used +to host video (or audio) conferences, among other uses. The following +example demonstrates how to specify Jami account archives (backups) to +be provisioned automatically: + +@lisp +(service jami-service-type + (jami-configuration + (accounts + (list (jami-account + (archive "/etc/jami/unencrypted-account-1.gz")) + (jami-account + (archive "/etc/jami/unencrypted-account-2.gz")))))) +@end lisp + +When the accounts field is specified, the Jami account files of the +service found under @file{/var/lib/jami} are recreated every time the +service starts. + +Jami accounts and their corresponding backup archives can be generated +using either the @code{jami-qt} or @code{jami-gnome} Jami clients. The +accounts should not be password-protected, but it is wise to ensure +their files are only readable by @samp{root}. + +The next example shows how to declare that only some contacts should be +allowed to communicate with a given account: + +@lisp +(service jami-service-type + (jami-configuration + (accounts + (list (jami-account + (archive "/etc/jami/unencrypted-account-1.gz") + (peer-discovery? #t) + (rendezvous-point? #t) + (allowed-contacts + '("1dbcb0f5f37324228235564b79f2b9737e9a008f" + "2dbcb0f5f37324228235564b79f2b9737e9a008f"))))))) +@end lisp + +In this mode, only the declared @code{allowed-contacts} can initiate +communication with the Jami account. This can be used, for example, +with rendezvous point accounts to create a private video conferencing +space. + +To put the system administrator in full control of the conferences +hosted on their system, the Jami service supports the following actions: + +@example sh +# herd doc jami list-actions jami +(list-accounts + list-account-details + list-banned-contacts + list-contacts + list-moderators + add-moderator + ban-contact + enable-account + disable-account) +@end example + +The above actions aim to provide the most valuable actions for +moderation purposes, not to cover the whole Jami API. Users wanting to +interact with the Jami daemon from Guile may be interested in +experimenting with the @code{(gnu build jami-service)} module, which +powers the above Shepherd actions. + +@c TODO: This should be auto-generated from the doc already defined on +@c the shepherd-actions themselves in (gnu services telephony). +The @code{add-moderator} and @code{ban-contact} actions accept a contact +@emph{fingerprint} (40 characters long hash) as first argument and an +account fingerprint or username as second argument: + +@example sh +# herd add-moderator jami 1dbcb0f5f37324228235564b79f2b9737e9a008f \ + f3345f2775ddfe07a4b0d95daea111d15fbc1199 + +# herd list-moderators jami +Moderators for account f3345f2775ddfe07a4b0d95daea111d15fbc1199: + - 1dbcb0f5f37324228235564b79f2b9737e9a008f + +@end example + +In the case of @code{ban-contact}, the second username argument is +optional; when omitted, the account is banned from all Jami accounts: + +@example sh +# herd ban-contact jami 1dbcb0f5f37324228235564b79f2b9737e9a008f + +# herd list-banned-contacts jami +Banned contacts for account f3345f2775ddfe07a4b0d95daea111d15fbc1199: + - 1dbcb0f5f37324228235564b79f2b9737e9a008f + +@end example + +Banned contacts are also stripped from their moderation privileges. + +The @code{disable-account} action allows to completely disconnect an +account from the network, making it unreachable, while +@code{enable-account} does the inverse. They accept a single account +username or fingerprint as first argument: + +@example sh +# herd disable-account jami f3345f2775ddfe07a4b0d95daea111d15fbc1199 + +# herd list-accounts jami +The following Jami accounts are available: + - f3345f2775ddfe07a4b0d95daea111d15fbc1199 (dummy) [disabled] + +@end example + +The @code{list-account-details} action prints the detailed parameters of +each accounts in the Recutils format, which means the @command{recsel} +command can be used to select accounts of interest (@pxref{Selection +Expressions,,,recutils, GNU recutils manual}). Note that period +characters (@samp{.}) found in the account parameter keys are mapped to +underscores (@samp{_}) in the output, to meet the requirements of the +Recutils format. The following example shows how to print the account +fingerprints for all accounts operating in the rendezvous point mode: + +@example sh +# herd list-account-details jami | \ + recsel -p Account.username -e 'Account.rendezVous ~ "true"' +Account_username: f3345f2775ddfe07a4b0d95daea111d15fbc1199 +@end example + +The remaining actions should be self-explanatory. + +The complete set of available configuration options is detailed below. + +@c TODO: Ideally, the following fragments would be auto-generated at +@c build time, so that they needn't be manually duplicated. +@c Auto-generated via (configuration->documentation 'jami-configuration) +@deftp {Data Type} jami-configuration +Available @code{jami-configuration} fields are: + +@table @asis +@item @code{jamid} (default: @code{libring}) (type: package) +The Jami daemon package to use. + +@item @code{dbus} (default: @code{dbus}) (type: package) +The D-Bus package to use to start the required D-Bus session. + +@item @code{nss-certs} (default: @code{nss-certs}) (type: package) +The nss-certs package to use to provide TLS certificates. + +@item @code{enable-logging?} (default: @code{#t}) (type: boolean) +Whether to enable logging to syslog. + +@item @code{debug?} (default: @code{#f}) (type: boolean) +Whether to enable debug level messages. + +@item @code{auto-answer?} (default: @code{#f}) (type: boolean) +Whether to force automatic answer to incoming calls. + +@item @code{accounts} (default: @code{disabled}) (type: maybe-jami-account-list) +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. + +@end table + +@end deftp + +@c Auto-generated via (configuration->documentation 'jami-account) +@deftp {Data Type} jami-account +Available @code{jami-account} fields are: + +@table @asis +@item @code{archive} (type: 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. + +@item @code{allowed-contacts} (default: @code{disabled}) (type: maybe-account-fingerprint-list) +The list of allowed contacts for the account, entered as their 40 +characters long fingerprint. Messages or calls from accounts not in +that list will be rejected. When unspecified, the configuration of the +account archive is used as-is with respect to contacts and public +inbound calls/messaging allowance, which typically defaults to allow any +contact to communicate with the account. + +@item @code{moderators} (default: @code{disabled}) (type: maybe-account-fingerprint-list) +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. + +@item @code{rendezvous-point?} (default: @code{disabled}) (type: maybe-boolean) +Whether the account should operate in the rendezvous mode. In this +mode, all the incoming audio/video calls are mixed into a conference. +When left unspecified, the value from the account archive prevails. + +@item @code{peer-discovery?} (default: @code{disabled}) (type: maybe-boolean) +Whether peer discovery should be enabled. Peer discovery is used to +discover other OpenDHT nodes on the local network, which can be useful +to maintain communication between devices on such network even when the +connection to the the Internet has been lost. When left unspecified, +the value from the account archive prevails. + +@item @code{bootstrap-hostnames} (default: @code{disabled}) (type: maybe-string-list) +A list of hostnames or IPs pointing to OpenDHT nodes, that should be +used to initially join the OpenDHT network. When left unspecified, the +value from the account archive prevails. + +@item @code{name-server-uri} (default: @code{disabled}) (type: maybe-string) +The URI of the name server to use, that can be used to retrieve the +account fingerprint for a registered username. + +@end table + +@end deftp + +@subsubheading Murmur (VoIP server) + @cindex Murmur (VoIP server) @cindex VoIP server This section describes how to set up and run a Murmur server. Murmur is 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 +;;; +;;; 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 . + +;;; 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/local.mk b/gnu/local.mk index 9e8f2d702d..e8494806fd 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -685,6 +685,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 \ @@ -722,6 +723,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 @@ -787,7 +789,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 = \ 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 +;;; Copyright © 2021 Maxim Cournoyer ;;; ;;; This file is part of GNU Guix. ;;; @@ -17,16 +18,45 @@ ;;; along with GNU Guix. If not, see . (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 @@ (define-module (gnu services telephony) 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 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 object." + (match-record config + (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 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 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 @@ -305,3 +981,7 @@ (define murmur-service-type (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 . +;;; +;;; 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 . + +(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: diff --git a/guix/self.scm b/guix/self.scm index 530632db7d..130f5d3492 100644 --- a/guix/self.scm +++ b/guix/self.scm @@ -974,6 +974,8 @@ (define *system-test-modules* (list *core-package-modules* *package-modules* *extra-modules* *system-modules* *core-modules* *cli-modules*) ;for (guix scripts pack), etc. + #:extra-files (file-imports source "gnu/tests/data" + (const #t)) #:extensions dependencies #:guile-for-build guile-for-build)) diff --git a/tests/services/telephony.scm b/tests/services/telephony.scm new file mode 100644 index 0000000000..b4a0f120d4 --- /dev/null +++ b/tests/services/telephony.scm @@ -0,0 +1,446 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2021 Maxim Cournoyer +;;; +;;; 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 . + +(define-module (tests services telephony) + #:use-module (gnu build jami-service) + #:use-module (gnu services telephony) + #:use-module (srfi srfi-64)) + +;;; Tests for the (gnu services telephony) and related modules. + +(test-begin "jami-service") + +(define parse-dbus-reply + (@@ (gnu build jami-service) parse-dbus-reply)) + +(define parse-account-ids + (@@ (gnu build jami-service) parse-account-ids)) + +(define parse-account-details + (@@ (gnu build jami-service) parse-account-details)) + +(define parse-contacts + (@@ (gnu build jami-service) parse-contacts)) + +(define jami-account->alist + (@@ (gnu services telephony) jami-account->alist)) + +;; $ dbus-send --print-reply --dest="cx.ring.Ring" \ +;; "/cx/ring/Ring/ConfigurationManager" \ +;; "cx.ring.Ring.ConfigurationManager.getAccountList" +(define getAccountList-reply "\ +method return time=1622217253.386711 sender=:1.7 -> destination=:1.14 serial=140 reply_serial=2 + array [ + string \"addf37fbb558d6a0\" + string \"d5cbeb7d08c98a65\" + string \"398af0c6b74ce101\" + ] +") + +(test-equal "parse-account-ids" + '("addf37fbb558d6a0" "d5cbeb7d08c98a65" "398af0c6b74ce101") + (parse-account-ids getAccountList-reply)) + +;; $ dbus-send --print-reply --dest="cx.ring.Ring" \ +;; "/cx/ring/Ring/ConfigurationManager" \ +;; "cx.ring.Ring.ConfigurationManager.getAccountDetails" \ +;; 'string:398af0c6b74ce101' +(define getAccountDetails-reply "\ +method return time=1622254991.789588 sender=:1.7 -> destination=:1.19 serial=145 reply_serial=2 + array [ + dict entry( + string \"Account.accountDiscovery\" + string \"false\" + ) + dict entry( + string \"Account.accountPublish\" + string \"false\" + ) + dict entry( + string \"Account.activeCallLimit\" + string \"-1\" + ) + dict entry( + string \"Account.alias\" + string \"some-rendezvous-point-name\" + ) + dict entry( + string \"Account.allModeratorEnabled\" + string \"true\" + ) + dict entry( + string \"Account.allowCertFromContact\" + string \"true\" + ) + dict entry( + string \"Account.allowCertFromHistory\" + string \"true\" + ) + dict entry( + string \"Account.allowCertFromTrusted\" + string \"true\" + ) + dict entry( + string \"Account.archiveHasPassword\" + string \"false\" + ) + dict entry( + string \"Account.audioPortMax\" + string \"32766\" + ) + dict entry( + string \"Account.audioPortMin\" + string \"16384\" + ) + dict entry( + string \"Account.autoAnswer\" + string \"false\" + ) + dict entry( + string \"Account.defaultModerators\" + string \"\" + ) + dict entry( + string \"Account.deviceID\" + string \"94b4070fc7a8afa8482c777a9822c52e6af2e1bd\" + ) + dict entry( + string \"Account.deviceName\" + string \"some-device\" + ) + dict entry( + string \"Account.dhtProxyListUrl\" + string \"https://config.jami.net/proxyList\" + ) + dict entry( + string \"Account.displayName\" + string \"some-rendezvous-point-name\" + ) + dict entry( + string \"Account.dtmfType\" + string \"overrtp\" + ) + dict entry( + string \"Account.enable\" + string \"true\" + ) + dict entry( + string \"Account.hasCustomUserAgent\" + string \"false\" + ) + dict entry( + string \"Account.hostname\" + string \"bootstrap.jami.net\" + ) + dict entry( + string \"Account.localInterface\" + string \"default\" + ) + dict entry( + string \"Account.localModeratorsEnabled\" + string \"true\" + ) + dict entry( + string \"Account.mailbox\" + string \"\" + ) + dict entry( + string \"Account.managerUri\" + string \"\" + ) + dict entry( + string \"Account.managerUsername\" + string \"\" + ) + dict entry( + string \"Account.peerDiscovery\" + string \"false\" + ) + dict entry( + string \"Account.presenceSubscribeSupported\" + string \"true\" + ) + dict entry( + string \"Account.proxyEnabled\" + string \"false\" + ) + dict entry( + string \"Account.proxyPushToken\" + string \"\" + ) + dict entry( + string \"Account.proxyServer\" + string \"dhtproxy.jami.net:[80-95]\" + ) + dict entry( + string \"Account.publishedAddress\" + string \"\" + ) + dict entry( + string \"Account.publishedPort\" + string \"5060\" + ) + dict entry( + string \"Account.publishedSameAsLocal\" + string \"true\" + ) + dict entry( + string \"Account.rendezVous\" + string \"true\" + ) + dict entry( + string \"Account.ringtoneEnabled\" + string \"true\" + ) + dict entry( + string \"Account.ringtonePath\" + string \"/usr/share/ring/ringtones/default.opus\" + ) + dict entry( + string \"Account.type\" + string \"RING\" + ) + dict entry( + string \"Account.upnpEnabled\" + string \"true\" + ) + dict entry( + string \"Account.useragent\" + string \"\" + ) + dict entry( + string \"Account.username\" + string \"ccb8bbe2382343f7feb140710ab48aaf1b55634e\" + ) + dict entry( + string \"Account.videoEnabled\" + string \"true\" + ) + dict entry( + string \"Account.videoPortMax\" + string \"65534\" + ) + dict entry( + string \"Account.videoPortMin\" + string \"49152\" + ) + dict entry( + string \"DHT.PublicInCalls\" + string \"true\" + ) + dict entry( + string \"DHT.port\" + string \"7766\" + ) + dict entry( + string \"RingNS.account\" + string \"3989b55313a911b6f0c004748b49b254f35c9ef6\" + ) + dict entry( + string \"RingNS.uri\" + string \"\" + ) + dict entry( + string \"SRTP.enable\" + string \"true\" + ) + dict entry( + string \"SRTP.keyExchange\" + string \"sdes\" + ) + dict entry( + string \"SRTP.rtpFallback\" + string \"false\" + ) + dict entry( + string \"STUN.enable\" + string \"false\" + ) + dict entry( + string \"STUN.server\" + string \"\" + ) + dict entry( + string \"TLS.certificateFile\" + string \"/var/lib/jami/.local/share/jami/398af0c6b74ce101/ring_device.crt\" + ) + dict entry( + string \"TLS.certificateListFile\" + string \"\" + ) + dict entry( + string \"TLS.ciphers\" + string \"\" + ) + dict entry( + string \"TLS.method\" + string \"Automatic\" + ) + dict entry( + string \"TLS.negotiationTimeoutSec\" + string \"-1\" + ) + dict entry( + string \"TLS.password\" + string \"\" + ) + dict entry( + string \"TLS.privateKeyFile\" + string \"/var/lib/jami/.local/share/jami/398af0c6b74ce101/ring_device.key\" + ) + dict entry( + string \"TLS.requireClientCertificate\" + string \"true\" + ) + dict entry( + string \"TLS.serverName\" + string \"\" + ) + dict entry( + string \"TLS.verifyClient\" + string \"true\" + ) + dict entry( + string \"TLS.verifyServer\" + string \"true\" + ) + dict entry( + string \"TURN.enable\" + string \"true\" + ) + dict entry( + string \"TURN.password\" + string \"ring\" + ) + dict entry( + string \"TURN.realm\" + string \"ring\" + ) + dict entry( + string \"TURN.server\" + string \"turn.jami.net\" + ) + dict entry( + string \"TURN.username\" + string \"ring\" + ) + ] +") + +(test-equal "parse-account-details; username, alias and display name" + '("ccb8bbe2382343f7feb140710ab48aaf1b55634e" ;username + "some-rendezvous-point-name" ;alias + "some-rendezvous-point-name") ;displayName + (let ((account-details (parse-account-details getAccountDetails-reply))) + (list (assoc-ref account-details "Account.username") + (assoc-ref account-details "Account.alias") + (assoc-ref account-details "Account.displayName")))) + +(define getContacts-reply "\ +method return time=1627014042.752673 sender=:1.113 -> destination=:1.186 serial=220 reply_serial=2 + array [ + array [ + dict entry( + string \"added\" + string \"1578883327\" + ) + dict entry( + string \"confirmed\" + string \"true\" + ) + dict entry( + string \"id\" + string \"1c7d5a09464223442549fef172a3cf6f4de9b01c\" + ) + ] + array [ + dict entry( + string \"added\" + string \"1623107941\" + ) + dict entry( + string \"confirmed\" + string \"true\" + ) + dict entry( + string \"id\" + string \"5903c6c9ac5cb863c64e559add3d5d1c8c563449\" + ) + ] + array [ + dict entry( + string \"added\" + string \"1595996256\" + ) + dict entry( + string \"confirmed\" + string \"true\" + ) + dict entry( + string \"id\" + string \"ff2d72a548693214fb3a0f0f7a943b5e2bb9be03\" + ) + ] + ]") + +(test-equal "parse-account-contacts" + '((("added" . "1578883327") + ("confirmed" . "true") + ("id" . "1c7d5a09464223442549fef172a3cf6f4de9b01c")) + (("added" . "1623107941") + ("confirmed" . "true") + ("id" . "5903c6c9ac5cb863c64e559add3d5d1c8c563449")) + (("added" . "1595996256") + ("confirmed" . "true") + ("id" . "ff2d72a548693214fb3a0f0f7a943b5e2bb9be03"))) + (parse-contacts getContacts-reply)) + +(define getContacts-empty-reply "\ +method return time=1627400787.873988 sender=:1.1197 -> destination=:1.1463 serial=2127 reply_serial=2 + array [ + ]") + +(test-equal "parse-account-contacts, empty array" + '() + (parse-contacts getContacts-empty-reply)) + +(define %dummy-jami-account (jami-account + (archive "/tmp/dummy.gz"))) + +(define %dummy-jami-account-2 (jami-account + (archive "/tmp/dummy.gz") + (rendezvous-point? #t) + (peer-discovery? #f) + (bootstrap-hostnames '("bootstrap.me" + "fallback.another.host")) + (name-server-uri "https://my.name.server"))) + +(test-equal "jami-account->alist, no account detail value set" + '() + (jami-account->alist %dummy-jami-account)) + +(test-equal "jami-account->alist, with account detail values" + '(("Account.hostname" . "bootstrap.me;fallback.another.host") + ("Account.peerDiscovery" . "false") + ("Account.rendezVous" . "true") + ("RingNS.uri" . "https://my.name.server")) + (sort (jami-account->alist %dummy-jami-account-2) + (lambda (x y) + (string<=? (car x) (car y))))) + +(test-end) -- cgit v1.2.3 From eb632a28db27ea4a46301229ca330c56267ffe0a Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 3 Aug 2021 10:39:31 +0200 Subject: gnu: Add r-exactextractr. * gnu/packages/cran.scm (r-exactextractr): New variable. --- gnu/packages/cran.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index 25a6f71ca4..8bc6acdd02 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -29958,3 +29958,31 @@ (define-public r-opencpu 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))) -- cgit v1.2.3 From 419315d4e6445c97a2578df4fbaa2e7594e11cf0 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 3 Aug 2021 10:39:46 +0200 Subject: gnu: Add r-stringfish. * gnu/packages/cran.scm (r-stringfish): New variable. --- gnu/packages/cran.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index 8bc6acdd02..fb6c28faa6 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -29986,3 +29986,29 @@ (define-public r-exactextractr 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))) -- cgit v1.2.3 From e19a9eda25e8a03fa2159927f405031651f750e1 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 3 Aug 2021 10:39:52 +0200 Subject: gnu: Add r-rapiserialize. * gnu/packages/cran.scm (r-rapiserialize): New variable. --- gnu/packages/cran.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index fb6c28faa6..bbedaa2864 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -30012,3 +30012,27 @@ (define-public r-stringfish "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+))) -- cgit v1.2.3 From 424515f9d04fed12cf525746ff039884ea9cd962 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 3 Aug 2021 10:39:58 +0200 Subject: gnu: Add r-qs. * gnu/packages/cran.scm (r-qs): New variable. --- gnu/packages/cran.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index bbedaa2864..d022dfc907 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -30036,3 +30036,31 @@ (define-public r-rapiserialize 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))) -- cgit v1.2.3 From 138a0f8ed6e0abd29c8bc59d36377f5120ce9bfe Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 3 Aug 2021 10:40:03 +0200 Subject: gnu: Add r-rgeos. * gnu/packages/cran.scm (r-rgeos): New variable. --- gnu/packages/cran.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index d022dfc907..a3d40b4b81 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -30064,3 +30064,27 @@ (define-public r-qs "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+))) -- cgit v1.2.3 From 2ab5d08fbe084f6dc9543545fb13f0791a7be74a Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 3 Aug 2021 10:40:47 +0200 Subject: gnu: Add r-spectre. * gnu/packages/bioinformatics.scm (r-spectre): New variable. --- gnu/packages/bioinformatics.scm | 72 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 742b02cb5b..910a79c3e3 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -14806,3 +14806,75 @@ (define-public r-battenberg 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)))) -- cgit v1.2.3 From 69a4494af9eb619fc3d1c0be73b673446061d63f Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 3 Aug 2021 10:42:25 +0200 Subject: gnu: Add python-xxhash. * gnu/packages/digest.scm (python-xxhash): New variable. --- gnu/packages/digest.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'gnu') 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 ;;; Copyright © 2021 Ryan Prior +;;; Copyright © 2021 Ricardo Wurmus ;;; ;;; 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 @@ (define-public xxhash 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))) -- cgit v1.2.3 From 448de3966eef81fe62999c7d728f7a458ab7bf86 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Tue, 3 Aug 2021 14:28:24 -0400 Subject: gnu: zchunk: Patch references to the 'zstd' command line tool. Fixes https://issues.guix.gnu.org/49795. * gnu/packages/compression.scm (zchunk) [phases]{patch-paths}: New phase. [inputs]: Add zstd. [propagated-inputs]: Relabel the zstd "lib" as "zstd:lib". Reported-by: Christopher Howard --- gnu/packages/compression.scm | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index 26cddb12fa..ecc767a3bf 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -2361,12 +2361,21 @@ (define-public zchunk (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 -- cgit v1.2.3 From c40516a567d21301399891d9a67924a1da606c71 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Sun, 24 Nov 2019 01:42:19 +0100 Subject: gnu: Add scanbd. * gnu/packages/scanner.scm (scanbd): New public variable. Modified-by: Maxim Cournoyer Signed-off-by: Maxim Cournoyer --- gnu/packages/scanner.scm | 64 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) (limited to 'gnu') 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 @@ (define out (string-append (assoc-ref outputs "out") 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") -- cgit v1.2.3 From 77e2df870bdd3605925b78642661e252a83b2369 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Sun, 15 Mar 2020 01:25:56 +0100 Subject: gnu: dehydrated: Declare cURL's native search paths. * gnu/packages/tls.scm (dehydrated)[native-search-paths]: Use curl's. Signed-off-by: Maxim Cournoyer --- gnu/packages/tls.scm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index 3e202a901b..6b74d55a7d 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -10,7 +10,7 @@ ;;; Copyright © 2016 Hartmut Goebel ;;; Copyright © 2017 Ricardo Wurmus ;;; Copyright © 2017, 2018, 2019, 2020, 2021 Marius Bakke -;;; Copyright © 2017–2019, 2021 Tobias Geerinckx-Rice +;;; Copyright © 2017–2021 Tobias Geerinckx-Rice ;;; Copyright © 2017 Rutger Helling ;;; Copyright © 2018 Clément Lassieur ;;; Copyright © 2019 Mathieu Othacehe @@ -1085,6 +1085,15 @@ (define-public dehydrated (native-inputs `(("gzip" ,gzip) ("tar" ,tar))) + (native-search-paths + ;; 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 -- cgit v1.2.3 From d0cc63ccc53cb2ad4d33d0a54f079089d5b6cd46 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Tue, 3 Aug 2021 16:12:59 -0400 Subject: gnu: dehydrated: Follow up commit to 77e2df870b. * gnu/packages/tls.scm (dehydrated): Remove bogus, nested native-search-paths. --- gnu/packages/tls.scm | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index 6b74d55a7d..d98a724b5f 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -1085,15 +1085,14 @@ (define-public dehydrated (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 - ;; 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")))))) + (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 -- cgit v1.2.3 From 92605326ae909471d17b0db51504e810989989f8 Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Sat, 17 Jul 2021 14:39:56 +0200 Subject: services: guix: Use "match-record" in activation. It's more explicit to specify used fields instead of depending on their position. * gnu/services/base.scm (guix-activation): Replace "match" with "match-record". --- gnu/services/base.scm | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'gnu') diff --git a/gnu/services/base.scm b/gnu/services/base.scm index ab3e441a7b..e206bea5f0 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -12,7 +12,7 @@ ;;; Copyright © 2019 John Soo ;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen ;;; Copyright © 2020 Florian Pelz -;;; Copyright © 2020 Brice Waegeneire +;;; Copyright © 2020, 2021 Brice Waegeneire ;;; Copyright © 2021 qblade ;;; Copyright © 2021 Hui Lu ;;; @@ -1700,21 +1700,21 @@ (define (guix-accounts config) (define (guix-activation config) "Return the activation gexp for CONFIG." - (match config - (($ 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 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." -- cgit v1.2.3 From 5bf675cdaf16cca96fd26d80a099f6043fe9d7f8 Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Fri, 9 Jul 2021 21:15:06 +0530 Subject: gnu: Add nncp. * gnu/packages/uucp.scm (nncp): New variable. --- gnu/packages/uucp.scm | 118 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 117 insertions(+), 1 deletion(-) (limited to 'gnu') 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 +;;; Copyright © 2021 Arun Isaac ;;; ;;; This file is part of GNU Guix. ;;; @@ -17,10 +18,13 @@ ;;; along with GNU Guix. If not, see . (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 @@ (define-public uucp 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))) -- cgit v1.2.3 From 1914d24b452ca6dad30fad6f1faa5f611fa740b0 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 4 Aug 2021 10:26:06 +0300 Subject: gnu: gprolog: Update to 1.5.0. * gnu/packages/prolog.scm (gprolog): Update to 1.5.0. [arguments]: Rename custom 'change-dir-n-fix-shells to 'change-dir and remove substitution. --- gnu/packages/prolog.scm | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'gnu') 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 ;;; Copyright © 2013 Mark H Weaver ;;; Copyright © 2020 Brett Gilio +;;; Copyright © 2021 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -42,7 +43,7 @@ (define-module (gnu packages prolog) (define-public gprolog (package (name "gprolog") - (version "1.4.5") + (version "1.5.0") (source (origin (method url-fetch) @@ -53,7 +54,7 @@ (define-public gprolog ".tar.gz"))) (sha256 (base32 - "0z4cc42n3k6i35b8mr816iwsvrpxshw6d7dgz6s2h1hy0l7g1p5z")))) + "009ca4wn2q6xdmb0js0vz647cw5ygsqyyqc9svmjgahg7js441k7")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -61,13 +62,9 @@ (define-public gprolog "--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 -- cgit v1.2.3 From e7d32b4bccc2f0f390cd4efbdc86556ffe6a63d5 Mon Sep 17 00:00:00 2001 From: Xinglu Chen Date: Sat, 31 Jul 2021 13:52:21 +0200 Subject: gnu: fetchmail: Update to 6.4.20 [fixes CVE-2021-38386]. * gnu/packages/mail.scm (fetchmail): Update to 6.4.20. Signed-off-by: Efraim Flashner --- gnu/packages/mail.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index f75cd910e5..2a3a5834f8 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -498,7 +498,7 @@ (define-public nullmailer (define-public fetchmail (package (name "fetchmail") - (version "6.4.19") + (version "6.4.20") (source (origin (method url-fetch) @@ -506,7 +506,7 @@ (define-public fetchmail (version-major+minor version) "/" "fetchmail-" version ".tar.xz")) (sha256 - (base32 "0pvbknpimf38ws4gskad79wd1cvy62kcsjy65sm0rr83s6ii33fd")))) + (base32 "0xk171sbxcwjh1ibpipryw5sv4sy7jjfvhn5n373j04g5sp428f8")))) (build-system gnu-build-system) (inputs `(("openssl" ,openssl))) -- cgit v1.2.3 From d3ede451cf1043ef2131813a0479775ef80c808c Mon Sep 17 00:00:00 2001 From: Guix Together Date: Sat, 31 Jul 2021 20:29:07 -0400 Subject: gnu: Add bitwise. * gnu/packages/maths.scm (bitwise): New variable. Co-authored-by: jgart Co-authored-by: Julien Lepiller Co-authored-by: Ryan Prior Signed-off-by: Efraim Flashner --- gnu/packages/maths.scm | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 1afe72659a..b2b3150ca2 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -124,6 +124,7 @@ (define-module (gnu packages maths) #: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) @@ -175,6 +176,39 @@ (define-public aris (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") -- cgit v1.2.3 From 3b4366566672a3a2af7d827ee025f62f4c0a86d3 Mon Sep 17 00:00:00 2001 From: Kyle Meyer Date: Tue, 3 Aug 2021 23:25:58 -0400 Subject: gnu: git-annex: Update to 8.20210803. * gnu/packages/haskell-apps.scm (git-annex): Update to 8.20210803. Signed-off-by: Efraim Flashner --- gnu/packages/haskell-apps.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') 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 @@ (define-public ghcid (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 -- cgit v1.2.3 From 0cb26784fa46f0b7981c35bb40ead5331ed06381 Mon Sep 17 00:00:00 2001 From: Xinglu Chen Date: Sat, 31 Jul 2021 15:47:37 +0200 Subject: gnu: mercurial: Update to 5.8.1. * gnu/packages/version-control (mercurial): Update to 5.8.1. Signed-off-by: Efraim Flashner --- gnu/packages/version-control.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 7c1dbe8b26..ac61b97f59 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -1608,7 +1608,7 @@ (define-public pre-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/" @@ -1616,7 +1616,7 @@ (define-public mercurial (patches (search-patches "mercurial-hg-extension-path.patch")) (sha256 (base32 - "17rhlmmkqz5ll3k68jfzpcifg3nndbcbc2nx7kw8xn3qcj7nlpgw")))) + "16xi4bmjqzi7ig8sfa5mnypfpbbbiyafmmqrs4nxmgc743za7fl1")))) (build-system gnu-build-system) (arguments `(#:make-flags -- cgit v1.2.3 From eaf2111dbc3cd462b804c872dfb17558c6147c36 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 3 Aug 2021 17:28:20 +0200 Subject: gnu: Add eigen-for-tensorflow-lite. * gnu/packages/algebra.scm (eigen-for-tensorflow-lite): New variable. --- gnu/packages/algebra.scm | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm index 5f1181640e..26c66a7558 100644 --- a/gnu/packages/algebra.scm +++ b/gnu/packages/algebra.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2013, 2015, 2017, 2018, 2021 Ludovic Courtès ;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Nicolas Goaziou ;;; Copyright © 2014, 2018 Mark H Weaver -;;; Copyright © 2016, 2018, 2019 Ricardo Wurmus +;;; Copyright © 2016, 2018, 2019, 2021 Ricardo Wurmus ;;; Copyright © 2017, 2020 Efraim Flashner ;;; Copyright © 2017–2021 Tobias Geerinckx-Rice ;;; Copyright © 2017 Marius Bakke @@ -1069,6 +1069,33 @@ (define-public eigen-for-tensorflow "# 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") -- cgit v1.2.3 From aaae45b1f4d4d4b1543cda42472db6e4465d6398 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 4 Aug 2021 10:56:00 +0200 Subject: gnu: flatbuffers: Update to 2.0.0. * gnu/packages/serialization.scm (flatbuffers): Update to 2.0.0. [source]: Fetch sources from git. [arguments]: Make git checkout writable; Enable building shared library. --- gnu/packages/serialization.scm | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm index 19fbafa338..0e79b7c89c 100644 --- a/gnu/packages/serialization.scm +++ b/gnu/packages/serialization.scm @@ -584,22 +584,28 @@ (define-public python-cbor (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++, -- cgit v1.2.3 From c1e4110971d7f49fd312e50b9122d7475293bc86 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 4 Aug 2021 10:56:58 +0200 Subject: gnu: Add tensorflow-lite. * gnu/packages/machine-learning.scm (tensorflow-lite): New variable. --- gnu/packages/machine-learning.scm | 170 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index b32e5ef289..618f2613d0 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -56,6 +56,7 @@ (define-module (gnu packages machine-learning) #: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) @@ -2102,6 +2103,175 @@ (define-public tensorflow 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") -- cgit v1.2.3 From 06e679a964798894e845f9100e3aace68e67e4dd Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 4 Aug 2021 12:09:04 +0300 Subject: gnu: Add rust-gfa-0.10. * gnu/packages/crates-io.scm (rust-gfa-0.10): New variable. (rust-gfa-0.6): Inherit from rust-gfa-0.10. --- gnu/packages/crates-io.scm | 39 ++++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index d5e2347e8b..3099612d4b 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -18585,10 +18585,10 @@ (define-public rust-gettext-sys-0.19 `(#: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) @@ -18597,16 +18597,20 @@ (define-public rust-gfa-0.6 (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") @@ -18616,6 +18620,31 @@ (define-public rust-gfa-0.6 @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") -- cgit v1.2.3 From 951a4f99806fb3cf9a6c9c1bedca262dd1af4031 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 4 Aug 2021 12:12:56 +0300 Subject: gnu: Add rust-quick-csv-0.1. * gnu/packages/crates-io.scm (rust-quick-csv-0.1): New variable. --- gnu/packages/crates-io.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 3099612d4b..167db54cb3 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -34863,6 +34863,27 @@ (define-public rust-query-interface-0.3 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") -- cgit v1.2.3 From 9df10aaf3a920909bd4be1d2f70baac6e6a8494c Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 4 Aug 2021 12:14:09 +0300 Subject: gnu: Add rust-succinct-0.5. * gnu/packages/crates-io.scm (rust-succinct-0.5): New variable. --- gnu/packages/crates-io.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 167db54cb3..2a23754f4c 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -45559,6 +45559,30 @@ (define-public rust-subtle-1 (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") -- cgit v1.2.3 From 3bb2afefb648e5533f09297d357b03a1104972d5 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 4 Aug 2021 12:14:51 +0300 Subject: gnu: Add rust-wyhash-0.5. * gnu/packages/crates-io.scm (rust-wyhash-0.5): New variable. --- gnu/packages/crates-io.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 2a23754f4c..b5d97709e5 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -55693,6 +55693,29 @@ (define-public rust-ws2-32-sys-0.2 "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") -- cgit v1.2.3 From dc4c830a37905046ce71a3723be19ef3194f8b8a Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 4 Aug 2021 12:16:02 +0300 Subject: gnu: Add rust-boomphf-0.5. * gnu/packages/crates-io.scm (rust-boomphf-0.5): New variable. --- gnu/packages/crates-io.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index b5d97709e5..9b00e6762d 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -5715,6 +5715,37 @@ (define-public rust-blocking-0.4 ("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") -- cgit v1.2.3 From 8a9ded775ea4c66d1f9f7b151c941ef9f85534b2 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Wed, 4 Aug 2021 12:14:53 +0200 Subject: gnu: emacs-znc: Update to 0.4. * gnu/packages/emacs-xyz.scm (emacs-znc): Update to 0.4. [source]: Use Github source location instead of Marmalade. --- gnu/packages/emacs-xyz.scm | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index e3b94228e1..dc0c1a9138 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -4515,15 +4515,16 @@ (define-public emacs-inf-ruby (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") -- cgit v1.2.3 From d84b2cce5d9ced9ff4b04df16b661bc6f6b66741 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Wed, 4 Aug 2021 12:18:11 +0200 Subject: gnu: emacs-pyim: Update to 3.9.4. * gnu/packages/emacs-xyz.scm (emacs-pyim): Update to 3.9.4. --- gnu/packages/emacs-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index dc0c1a9138..02d4289274 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -13567,13 +13567,13 @@ (define-public emacs-pyim-basedict (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) -- cgit v1.2.3 From 567922b9b5d461ad8f8f7aebc11ec504ec7eccaf Mon Sep 17 00:00:00 2001 From: Simon South Date: Mon, 2 Aug 2021 19:00:38 -0400 Subject: gnu: emacs-elpher: Update to 3.2.1. * gnu/packages/emacs-xyz.scm (emacs-elpher): Update to 3.2.1. Signed-off-by: Nicolas Goaziou --- gnu/packages/emacs-xyz.scm | 53 ++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 28 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 02d4289274..47ace455c9 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -25415,40 +25415,37 @@ (define-public emacs-multi-term (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.1") + (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 "1k0nv5afsf4lh71yvqpg2zcmlbsgwcim1s161c2h4gh4p05vjwyq")))) + (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 -- cgit v1.2.3 From 75ec0fa243c5d97ee51deadf3703e10f6f8459fe Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 4 Aug 2021 13:03:16 +0200 Subject: gnu: Add r-tximeta. * gnu/packages/bioconductor.scm (r-tximeta): New variable. --- gnu/packages/bioconductor.scm | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm index b3bd174764..e6adb2a652 100644 --- a/gnu/packages/bioconductor.scm +++ b/gnu/packages/bioconductor.scm @@ -13661,3 +13661,44 @@ (define-public r-sushi "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))) -- cgit v1.2.3 From a715e93a095a413a7f09d41ae5b315be39a9abda Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 4 Aug 2021 15:15:57 +0300 Subject: gnu: tuir: Respect #:tests?. * gnu/packages/syndication.scm (tuir)[arguments]: Adjust custom 'check phase to skip tests when requested. --- gnu/packages/syndication.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/syndication.scm b/gnu/packages/syndication.scm index f3690a1a29..2f3f191a47 100644 --- a/gnu/packages/syndication.scm +++ b/gnu/packages/syndication.scm @@ -475,9 +475,10 @@ (define-public tuir `(#: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) -- cgit v1.2.3 From bc38598c8eb8b7df125c16a38ae4c1180e1f6979 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 4 Aug 2021 16:03:39 +0300 Subject: gnu: mpg123: Update to 1.28.2. * gnu/packages/mp3.scm (mpg123): Update to 1.28.2. --- gnu/packages/mp3.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm index ff67d9e9e5..9de9055e51 100644 --- a/gnu/packages/mp3.scm +++ b/gnu/packages/mp3.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2013 Andreas Enge ;;; Copyright © 2014, 2015, 2017, 2020, 2021 Ludovic Courtès ;;; Copyright © 2015 Mark H Weaver -;;; Copyright © 2016 Efraim Flashner +;;; Copyright © 2016, 2021 Efraim Flashner ;;; Copyright © 2017 Thomas Danckaert ;;; Copyright © 2017, 2019, 2020 Pierre Langlois ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice @@ -372,7 +372,7 @@ (define-public mp3splt (define-public mpg123 (package (name "mpg123") - (version "1.26.5") + (version "1.28.2") (source (origin (method url-fetch) @@ -382,7 +382,7 @@ (define-public mpg123 "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 -- cgit v1.2.3 From 7aad3dea66ccaf671f19167c350b10ddc68bba27 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 4 Aug 2021 16:07:13 +0300 Subject: gnu: tevent: Update to 0.11.0. * gnu/packages/samba.scm (tevent): Update to 0.11.0. [native-inputs]: Add cmocka. --- gnu/packages/samba.scm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm index fd67e4b8ba..f9b20ccd47 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 ;;; Copyright © 2015 Mark H Weaver -;;; Copyright © 2016, 2017, 2019 Efraim Flashner +;;; Copyright © 2016, 2017, 2019, 2021 Efraim Flashner ;;; Copyright © 2016 Adonay "adfeno" Felipe Nogueira ;;; Copyright © 2017 Thomas Danckaert ;;; Copyright © 2017, 2018, 2020 Marius Bakke @@ -348,14 +348,14 @@ (define-public talloc/static (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 +368,8 @@ (define-public tevent (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 -- cgit v1.2.3 From f71b381d1f467fe7a1b999663ee15ce93fadfa1c Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 4 Aug 2021 16:23:37 +0300 Subject: gnu: samba: Update to 4.13.10. * gnu/packages/samba.scm (samba): Update to 4.13.10. [source]: Remove patch. * gnu/packages/patches/samba-fix-fcntl-hint-detection.patch: Remove file. * gnu/local.mk (dist_patch_DATA): Remove it. --- gnu/local.mk | 1 - .../patches/samba-fix-fcntl-hint-detection.patch | 55 ---------------------- gnu/packages/samba.scm | 5 +- 3 files changed, 2 insertions(+), 59 deletions(-) delete mode 100644 gnu/packages/patches/samba-fix-fcntl-hint-detection.patch (limited to 'gnu') diff --git a/gnu/local.mk b/gnu/local.mk index e8494806fd..e6a2f735f9 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1548,7 +1548,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 \ 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 -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 -Reviewed-by: Volker Lendecke - -Autobuild-User(master): Volker Lendecke -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/samba.scm b/gnu/packages/samba.scm index f9b20ccd47..6a1322b4b3 100644 --- a/gnu/packages/samba.scm +++ b/gnu/packages/samba.scm @@ -172,15 +172,14 @@ (define (install dir) (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 -- cgit v1.2.3 From ff477f65713b646672973dde01e322820e038390 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 4 Aug 2021 16:29:51 +0300 Subject: gnu: tdb: Update to 1.4.5. * gnu/packages/databases.scm (tdb): Update to 1.4.5. --- gnu/packages/databases.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 76099ab3c5..ca7075a089 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -1627,14 +1627,14 @@ (define-public sqlcrush (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 -- cgit v1.2.3 From a34f36b06c96ec38ebb7aa6eece33cbe6dfa16d4 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 4 Aug 2021 16:29:52 +0300 Subject: gnu: talloc: Update to 2.3.3. * gnu/packages/samba.scm (talloc): Update to 2.3.3. --- gnu/packages/samba.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm index 6a1322b4b3..cb93dbf714 100644 --- a/gnu/packages/samba.scm +++ b/gnu/packages/samba.scm @@ -280,14 +280,14 @@ (define-public samba (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 -- cgit v1.2.3 From a4c456c80c231696a2b020bf8c1977a90e5997d3 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 4 Aug 2021 16:29:52 +0300 Subject: gnu: ldb: Update to 2.4.0. * gnu/packages/samba.scm (ldb): Update to 2.4.0. --- gnu/packages/samba.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm index cb93dbf714..359a345029 100644 --- a/gnu/packages/samba.scm +++ b/gnu/packages/samba.scm @@ -384,14 +384,14 @@ (define-public tevent (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 -- cgit v1.2.3 From 2e0ddc74f6641ec1e286f7f81eaf5bf6644eed52 Mon Sep 17 00:00:00 2001 From: Dmitry Polyakov Date: Wed, 4 Aug 2021 17:29:12 +0500 Subject: gnu: Add instead. * gnu/packages/game-development.scm (instead): New variable. * gnu/packages/patches/instead-use-games-path.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it here. --- gnu/local.mk | 2 + gnu/packages/game-development.scm | 51 +++++++++++++++++++++++ gnu/packages/patches/instead-use-games-path.patch | 32 ++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 gnu/packages/patches/instead-use-games-path.patch (limited to 'gnu') diff --git a/gnu/local.mk b/gnu/local.mk index e6a2f735f9..82e5fbc88f 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -43,6 +43,7 @@ # Copyright © 2021 Philip McGrath # Copyright © 2021 Arun Isaac # Copyright © 2021 Sharlatan Hellseher +# Copyright © 2021 Dmitry Polyakov # # This file is part of GNU Guix. # @@ -1261,6 +1262,7 @@ dist_patch_DATA = \ %D%/packages/patches/imagemagick-WriteTHUMBNAILImage-fix.patch \ %D%/packages/patches/inetutils-hurd.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 \ diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index e1593c0f82..dbe5ac6739 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -21,6 +21,7 @@ ;;; Copyright © 2020 Timotej Lazar ;;; Copyright © 2020 Giacomo Leidi ;;; Copyright © 2021 Alexandru-Sergiu Marton +;;; Copyright © 2021 Dmitry Polyakov ;;; ;;; This file is part of GNU Guix. ;;; @@ -2115,6 +2116,56 @@ (define-public ioquake3 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/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 +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 + -- cgit v1.2.3 From 6c2d39a0fc55bcbc6c7bd18a8ab22ea46150971f Mon Sep 17 00:00:00 2001 From: Leo Prikler Date: Wed, 4 Aug 2021 15:12:47 +0200 Subject: gnu: python-pygame-sdl2: Update to renpy-version 7.4.8. * gnu/packages/game-development.scm (python-pygame-sdl2): Update to renpy-version 7.4.8. --- gnu/packages/game-development.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index dbe5ac6739..478293abde 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -1109,7 +1109,7 @@ (define-public python2-pygame (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") @@ -1119,7 +1119,7 @@ (define-public python-pygame-sdl2 (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 -- cgit v1.2.3 From 047d792d14813340cba4baa49ecfa951992bb4b4 Mon Sep 17 00:00:00 2001 From: Leo Prikler Date: Wed, 4 Aug 2021 15:13:56 +0200 Subject: gnu: python2-renpy: Update to 7.4.8. * gnu/packages/game-development.scm (python2-renpy): Update to 7.4.8. --- gnu/packages/game-development.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index 478293abde..2a58848dce 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -1165,13 +1165,13 @@ (define-public python2-pygame-sdl2 (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 -- cgit v1.2.3 From e9357f126fa030b89c475f304ce91d259fb18a27 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 4 Aug 2021 15:34:28 +0200 Subject: gnu: Add r-tfruns. * gnu/packages/cran.scm (r-tfruns): New variable. --- gnu/packages/cran.scm | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index a3d40b4b81..0320fe681f 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -30088,3 +30088,37 @@ (define-public r-rgeos "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))) -- cgit v1.2.3 From 3a104c5f9d5e5b22dde9fcd31e3fa39537984667 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 4 Aug 2021 15:34:43 +0200 Subject: gnu: Add r-tensorflow. * gnu/packages/cran.scm (r-tensorflow): New variable. --- gnu/packages/cran.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index 0320fe681f..ad1427d388 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -30122,3 +30122,34 @@ (define-public r-tfruns 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))) -- cgit v1.2.3 From 2f2ef63141c37c72e2c52aac8d5807f356ddec43 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 4 Aug 2021 15:35:03 +0200 Subject: gnu: Add r-keras. * gnu/packages/cran.scm (r-keras): New variable. --- gnu/packages/cran.scm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index ad1427d388..3262ee9ef4 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -30153,3 +30153,36 @@ (define-public r-tensorflow 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))) -- cgit v1.2.3 From 851fa07575f715da014088e860dd0e61807410e9 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 4 Aug 2021 15:35:38 +0200 Subject: gnu: r-ggpp: Update to 0.4.2. * gnu/packages/cran.scm (r-ggpp): Update to 0.4.2. --- gnu/packages/cran.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index 3262ee9ef4..0770250452 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -591,14 +591,14 @@ (define-public r-ggalluvial (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 -- cgit v1.2.3 From 2705572eb53b44d4a15003d67bf983f04b987c46 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 4 Aug 2021 15:35:38 +0200 Subject: gnu: r-ggpmisc: Update to 0.4.2. * gnu/packages/cran.scm (r-ggpmisc): Update to 0.4.2. [propagated-inputs]: Remove r-glue, r-gridextra, r-stringr, r-xts, and r-zoo. --- gnu/packages/cran.scm | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index 0770250452..b4d9f62003 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -638,21 +638,19 @@ (define-public r-ggpp (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 @@ (define-public r-ggpmisc ("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/") -- cgit v1.2.3 From e3f766324c089d497630d18bf12f96ad29a2c028 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 4 Aug 2021 15:35:38 +0200 Subject: gnu: r-haven: Update to 2.4.3. * gnu/packages/cran.scm (r-haven): Update to 2.4.3. [source]: Simplify snippet. [synopsis]: Remove quotes. [description]: Fix typo and remove one word. --- gnu/packages/cran.scm | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index b4d9f62003..7c00410c6b 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -2769,20 +2769,18 @@ (define-public r-ggmap (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 @@ -2791,8 +2789,7 @@ (define-public r-haven (lambda _ ;; Not required, since we’re not building readstat. (substitute* "src/Makevars" - (("-lz") "-lreadstat")) - #t))))) + (("-lz") "-lreadstat"))))))) (inputs `(("readstat" ,readstat))) (native-inputs @@ -2807,10 +2804,10 @@ (define-public r-haven ("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 -- cgit v1.2.3 From dd3ec26daab9ff07a22a56a1c62a69eb4f4d5177 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 4 Aug 2021 15:35:38 +0200 Subject: gnu: r-rbibutils: Update to 2.2.2. * gnu/packages/cran.scm (r-rbibutils): Update to 2.2.2. --- gnu/packages/cran.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index 7c00410c6b..599196e919 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -8419,14 +8419,14 @@ (define-public r-rjags (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/") -- cgit v1.2.3 From b28d6cb7739a656fd787fcd6b5c4a5a5dba59369 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 4 Aug 2021 15:35:39 +0200 Subject: gnu: r-tab: Update to 5.1.1. * gnu/packages/cran.scm (r-tab): Update to 5.1.1. [propagated-inputs]: Remove r-gee, r-survival, and r-xtable; add r-kableextra. [native-inputs]: Add r-knitr. --- gnu/packages/cran.scm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index 599196e919..a11c7a86b1 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -10288,24 +10288,24 @@ (define-public r-gee (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 -- cgit v1.2.3 From ab14e917fe4bcee04b0f299b4ee0cf9d25a2ee46 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 4 Aug 2021 15:35:39 +0200 Subject: gnu: r-rcppannoy: Update to 0.0.19. * gnu/packages/cran.scm (r-rcppannoy): Update to 0.0.19. --- gnu/packages/cran.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index a11c7a86b1..948eae9b14 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -11715,14 +11715,14 @@ (define-public r-weights (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 -- cgit v1.2.3 From 36d82a325ee52b14d948a0ddd278e6f8fdcc217d Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 4 Aug 2021 15:35:39 +0200 Subject: gnu: r-ggplotify: Update to 0.0.8. * gnu/packages/cran.scm (r-ggplotify): Update to 0.0.8. --- gnu/packages/cran.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index 948eae9b14..f6555ea695 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -16982,14 +16982,14 @@ (define-public r-farver (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) -- cgit v1.2.3 From a21fd29763afcc4bff29a7ff98dbd8b4bd68553c Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 4 Aug 2021 15:35:39 +0200 Subject: gnu: r-tuner: Update to 1.3.3.1. * gnu/packages/cran.scm (r-tuner): Update to 1.3.3.1. --- gnu/packages/cran.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index f6555ea695..53e0a4960f 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -20995,14 +20995,14 @@ (define-public r-acopula (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))) -- cgit v1.2.3 From 9139a5cbb2778431a5ebbe98ec3fa9cd2d608c71 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 4 Aug 2021 15:35:40 +0200 Subject: gnu: r-iml: Update to 0.10.1. * gnu/packages/cran.scm (r-iml): Update to 0.10.1. [propagated-inputs]: Remove r-gridextra; add r-keras. --- gnu/packages/cran.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index 53e0a4960f..9ff431475e 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -25808,14 +25808,14 @@ (define-public r-metrics (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 @@ -25825,7 +25825,7 @@ (define-public r-iml ("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))) -- cgit v1.2.3 From 00cdff9e6e6a708d0984d53e455fa155f5cc0aa3 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 4 Aug 2021 15:35:40 +0200 Subject: gnu: r-maldiquant: Update to 1.20. * gnu/packages/cran.scm (r-maldiquant): Update to 1.20. [native-inputs]: Add r-knitr. --- gnu/packages/cran.scm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index 9ff431475e..fab433b2f7 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -27709,16 +27709,18 @@ (define-public r-seqminer (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 -- cgit v1.2.3 From 6da8e99c9c09650449d06fcea1cc76f3cd6ff891 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 4 Aug 2021 16:21:12 +0200 Subject: gnu: r-gosemsim: Update to 2.18.1. * gnu/packages/bioconductor.scm (r-gosemsim): Update to 2.18.1. --- gnu/packages/bioconductor.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm index e6adb2a652..f8b55fe7d3 100644 --- a/gnu/packages/bioconductor.scm +++ b/gnu/packages/bioconductor.scm @@ -7128,14 +7128,14 @@ (define-public r-heatplus (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 -- cgit v1.2.3 From b94c750e01dbe823b500577688265f08ca14322b Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 4 Aug 2021 16:21:16 +0200 Subject: gnu: r-mixomics: Update to 6.16.3. * gnu/packages/bioconductor.scm (r-mixomics): Update to 6.16.3. --- gnu/packages/bioconductor.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm index f8b55fe7d3..ce70a98538 100644 --- a/gnu/packages/bioconductor.scm +++ b/gnu/packages/bioconductor.scm @@ -9932,14 +9932,14 @@ (define-public r-flowsom (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 -- cgit v1.2.3 From 5909dd9e8ef44ffa3a1cff151b8f50d1ca5711e4 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 4 Aug 2021 16:21:16 +0200 Subject: gnu: r-roc: Update to 1.68.1. * gnu/packages/bioconductor.scm (r-roc): Update to 1.68.1. --- gnu/packages/bioconductor.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm index ce70a98538..abf254f131 100644 --- a/gnu/packages/bioconductor.scm +++ b/gnu/packages/bioconductor.scm @@ -10319,14 +10319,14 @@ (define-public r-genie3 (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 -- cgit v1.2.3 From 1aceb93a6f1f7f1e76e23ec2a2d033871f764272 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 4 Aug 2021 16:21:17 +0200 Subject: gnu: r-ldblock: Update to 1.22.1. * gnu/packages/bioconductor.scm (r-ldblock): Update to 1.22.1. --- gnu/packages/bioconductor.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm index abf254f131..a85cf904f7 100644 --- a/gnu/packages/bioconductor.scm +++ b/gnu/packages/bioconductor.scm @@ -13386,14 +13386,14 @@ (define-public r-kegggraph (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) -- cgit v1.2.3 From d648037edc2c9355a99becd6f5b71f9ae392ac4f Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 4 Aug 2021 17:08:31 +0200 Subject: gnu: ocaml-biniou: Simplify "make-writable" phase. * gnu/packages/ocaml.scm (ocaml-biniou)[arguments]: Simplify phase. --- gnu/packages/ocaml.scm | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index bf9242410d..bb42003de2 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -4477,12 +4477,7 @@ (define-public ocaml-biniou `(#: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 -- cgit v1.2.3 From 1c3d7000a75014e80cd292a507035da860160005 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 4 Aug 2021 17:11:45 +0200 Subject: gnu: Add python-azure-nspkg. * gnu/packages/python-web.scm (python-azure-nspkg): New variable. --- gnu/packages/python-web.scm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index b4798ca8c2..3dcacef6b4 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -6153,3 +6153,22 @@ (define-public python-socks "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))) -- cgit v1.2.3 From 48542e03cfa6eb41de22f723f73bbfbde8329978 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 4 Aug 2021 17:11:52 +0200 Subject: gnu: Add python-azure-storage-nspkg. * gnu/packages/python-web.scm (python-azure-storage-nspkg): New variable. --- gnu/packages/python-web.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index 3dcacef6b4..5df134ddff 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -6172,3 +6172,24 @@ (define-public python-azure-nspkg (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))) -- cgit v1.2.3 From 14428aa07fe830b2d61fee1a5d7c19c182a169e9 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 2 Aug 2021 19:36:58 +0200 Subject: gnu: Add python-opcodes. * gnu/packages/python-xyz.scm (python-opcodes): New variable. --- gnu/packages/python-xyz.scm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 61db9febb8..11c2e5fd33 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -26191,3 +26191,36 @@ (define-public python-pyhull 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)))) -- cgit v1.2.3 From 9b80df58d03093d681fd24134edcca372586556b Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 3 Aug 2021 00:13:28 +0200 Subject: gnu: Add python-peachpy. * gnu/packages/python-xyz.scm (python-peachpy): New variable. --- gnu/packages/python-xyz.scm | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 11c2e5fd33..396ce3183d 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -26224,3 +26224,44 @@ (define-public python-opcodes 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)))) -- cgit v1.2.3 From 36f7e1d78389f1d8d68fabda729b1ca95369bda3 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 3 Aug 2021 15:52:48 +0200 Subject: gnu: gloo: Update to c22a5cf. * gnu/packages/machine-learning.scm (gloo): Update to c22a5cf. [inputs]: New field. --- gnu/packages/machine-learning.scm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 618f2613d0..89bde8396c 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -87,6 +87,7 @@ (define-module (gnu packages machine-learning) #: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) @@ -2436,8 +2437,8 @@ (define-public python-keras (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)) @@ -2450,10 +2451,12 @@ (define-public gloo (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 -- cgit v1.2.3 From c83d7d68f324e5c70c0b7ec8de4fff2deee792ca Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 3 Aug 2021 15:54:26 +0200 Subject: gnu: gloo: Honor #:tests? in 'check' phase. * gnu/packages/machine-learning.scm (gloo)[arguments]: In 'check' phase, honor #:tests?. --- gnu/packages/machine-learning.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 89bde8396c..857a71ce15 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -2462,9 +2462,9 @@ (define-public gloo #: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 -- cgit v1.2.3 From 38d319d38aeb501490e5e803da92e2255e1d8a8f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 3 Aug 2021 18:09:07 +0200 Subject: gnu: gemmlowp: Add "generic" variant. * gnu/packages/machine-learning.scm (gemmlowp): New variable, based on 'gemmlowp-for-tensorflow'. (gemmlowp-for-tensorflow): Rewrite to inherit from GEMMLOWP. [properties]: New field. --- gnu/packages/machine-learning.scm | 74 +++++++++++++++++++++++++++++---------- 1 file changed, 55 insertions(+), 19 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 857a71ce15..c3480d6523 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -762,23 +762,22 @@ (define-public rxcpp 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) @@ -798,18 +797,15 @@ (define-public gemmlowp-for-tensorflow (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 @@ -819,6 +815,46 @@ (define-public gemmlowp-for-tensorflow 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") -- cgit v1.2.3 From dd55ad7ff896a0a099c669ef0b420ae2bcdb4498 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 4 Aug 2021 16:15:17 +0200 Subject: gnu: Add python-pytorch. * gnu/packages/machine-learning.scm (python-pytorch): New variable. * gnu/packages/patches/python-pytorch-runpath.patch, gnu/packages/patches/python-pytorch-system-libraries.patch: New files. * gnu/local.mk (dist_patch_DATA): Add them. --- gnu/local.mk | 2 + gnu/packages/machine-learning.scm | 143 ++++++++++++++++++++- gnu/packages/patches/python-pytorch-runpath.patch | 25 ++++ .../patches/python-pytorch-system-libraries.patch | 131 +++++++++++++++++++ 4 files changed, 300 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/python-pytorch-runpath.patch create mode 100644 gnu/packages/patches/python-pytorch-system-libraries.patch (limited to 'gnu') diff --git a/gnu/local.mk b/gnu/local.mk index 82e5fbc88f..51a76e3638 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1649,6 +1649,8 @@ 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 \ diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index c3480d6523..4149defc47 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -65,10 +65,12 @@ (define-module (gnu packages machine-learning) #: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) @@ -2546,7 +2548,7 @@ (define-public xnnpack (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))) @@ -2586,3 +2588,142 @@ (define-public xnnpack 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") + + ;; Set 'OUT/lib' rather than '$ORIGIN' as the RUNPATH on + ;; binaries that go to 'lib/python3.8/torch/bin' & co. + #;(substitute* "cmake/Dependencies.cmake" + (("^set\\(CMAKE_INSTALL_RPATH .*") + (string-append "set(CMAKE_INSTALL_RPATH \"" + (assoc-ref outputs "out") + "/lib\")\n"))))) + (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 + ;; . + #: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/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 $) + target_include_directories(${test_name} PRIVATE $) + 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 $) + target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE}) + add_test(NAME ${test_name} COMMAND $) +@@ -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 $) + target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE}) + add_test(NAME ${test_name} COMMAND $) +@@ -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 $) + 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 $) + 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}" -- cgit v1.2.3 From f44fe1d5bf232792d32a6d70f4b4d6e89d4c4499 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 4 Aug 2021 16:44:56 +0200 Subject: gnu: Add python-clang. * gnu/packages/llvm.scm (clang-python-bindings): New procedure. (python-clang-10, python-clang-11, python-clang-12): New variables. --- gnu/packages/llvm.scm | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index 575c63c713..4394194939 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2016, 2018 Eric Bavier ;;; Copyright © 2015 Mark H Weaver -;;; Copyright © 2015, 2017, 2018, 2019, 2020 Ludovic Courtès +;;; Copyright © 2015, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès ;;; Copyright © 2016 Dennis Mungai ;;; Copyright © 2016, 2018, 2019, 2020, 2021 Ricardo Wurmus ;;; Copyright © 2017 Roel Janssen @@ -1258,6 +1258,45 @@ (define-public python-llvmlite "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) -- cgit v1.2.3 From 62722229c20daf2e6b15ccbb5e2e85f27ab8eebe Mon Sep 17 00:00:00 2001 From: Milkey Mouse Date: Mon, 19 Jul 2021 21:02:01 -0700 Subject: gnu: Fix broken links to Arch Linux git repositories MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/crypto.scm (libsecp256k1): Update comment patch link. * gnu/packages/engineering.scm (freehdl): Update patch link. * gnu/packages/tex.scm (texlive-bin): Update arch-patch base URL. Signed-off-by: Ludovic Courtès --- gnu/packages/crypto.scm | 2 +- gnu/packages/engineering.scm | 9 +++++---- gnu/packages/tex.scm | 6 +++--- 3 files changed, 9 insertions(+), 8 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm index fe2cec045d..c545f47fcf 100644 --- a/gnu/packages/crypto.scm +++ b/gnu/packages/crypto.scm @@ -1118,7 +1118,7 @@ (define-public libsecp256k1 ("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/engineering.scm b/gnu/packages/engineering.scm index fc932ddb28..33c124a2ea 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm @@ -1949,11 +1949,12 @@ (define-public freehdl (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/tex.scm b/gnu/packages/tex.scm index b404ca8ff1..3013b1e8b5 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -252,9 +252,9 @@ (define-public texlive-bin (lambda (name revision hash) (origin (method url-fetch) - (uri (string-append "https://git.archlinux.org/svntogit/packages.git" - "/plain/trunk/" name "?h=packages/texlive-bin" - "&id=" revision)) + (uri (string-append "https://raw.githubusercontent.com" + "/archlinux/svntogit-packages/" revision + "/repos/extra-x86_64/" name)) (file-name (string-append "texlive-bin-" name)) (sha256 (base32 hash))))) (arch-revision "49d7fe25e5ea63f136ebc20270c1d8fc9b00041c")) -- cgit v1.2.3 From dfb154e6d0e5cc1170f76a8dde90471a4a19eedf Mon Sep 17 00:00:00 2001 From: Xinglu Chen Date: Wed, 4 Aug 2021 10:17:55 +0200 Subject: gnu: Add emacs-geiser-chez. * gnu/packages/emacs-xyz.scm (emacs-geiser-chez): New variable. Signed-off-by: Maxim Cournoyer --- gnu/packages/emacs-xyz.scm | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 47ace455c9..00dfce0aec 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -138,6 +138,7 @@ (define-module (gnu packages emacs-xyz) #: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) @@ -408,6 +409,49 @@ (define-public emacs-geiser-racket 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 . + (("\\(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") -- cgit v1.2.3 From a537ef5e0ceca76de0073541c98999bb206052b3 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 4 Aug 2021 18:02:55 +0200 Subject: gnu: python-pytorch: Remove leftover comment. * gnu/packages/machine-learning.scm (python-pytorch)[arguments]: Remove leftover comment. --- gnu/packages/machine-learning.scm | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 4149defc47..fd06582e50 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -2638,15 +2638,7 @@ (define-public python-pytorch (setenv "USE_SYSTEM_LIBS" "1") ;; XXX: Disable that for simplicity for now. - (setenv "USE_FBGEMM" "0") - - ;; Set 'OUT/lib' rather than '$ORIGIN' as the RUNPATH on - ;; binaries that go to 'lib/python3.8/torch/bin' & co. - #;(substitute* "cmake/Dependencies.cmake" - (("^set\\(CMAKE_INSTALL_RPATH .*") - (string-append "set(CMAKE_INSTALL_RPATH \"" - (assoc-ref outputs "out") - "/lib\")\n"))))) + (setenv "USE_FBGEMM" "0"))) (add-before 'build 'make-things-writable (lambda _ ;; The 'build_caffe2' function in -- cgit v1.2.3 From 142a02988e4ab5a578598c5b4d53c72f7e9f6b8f Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Wed, 4 Aug 2021 12:43:04 +0200 Subject: gnu: Add rust-chrono-humanize-0.2. * gnu/packages/crates-io.scm (rust-chrono-humanize-0.2): New variable. --- gnu/packages/crates-io.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 9b00e6762d..aff966dcb4 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -7776,6 +7776,30 @@ (define-public rust-chrono-0.4 (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") -- cgit v1.2.3 From 3f3d84616cd8a96775cde6c3343181d5d3caaea8 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Wed, 4 Aug 2021 12:45:52 +0200 Subject: gnu: rust-md-5-0.9: Update to 0.9.1. * gnu/packages/crates-io.scm (rust-md-5-0.9): Update to 0.9.1. --- gnu/packages/crates-io.scm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index aff966dcb4..2bbeb35c99 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -25871,7 +25871,7 @@ (define-public rust-maybe-uninit-2 (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) @@ -25880,14 +25880,14 @@ (define-public rust-md-5-0.9 (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)))) -- cgit v1.2.3 From 5d8c2b742c7bc105536af56b08edb5d3349412a8 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Wed, 4 Aug 2021 20:43:02 +0200 Subject: gnu: nushell: Update to 0.35.0. * gnu/packages/shells.scm (nushell): (rust-nu-ansi-term-0.35): (rust-nu-cli-0.35): (rust-nu-command-0.35): (rust-nu-completion-0.35): (rust-nu-data-0.35): (rust-nu-engine-0.35): (rust-nu-errors-0.35): (rust-nu-json-0.35): (rust-nu-parser-0.35): (rust-nu-path-0.35): (rust-nu-plugin-0.35): (rust-nu-plugin-binaryview-0.35): (rust-nu-plugin-chart-0.35): (rust-nu-plugin-fetch-0.35): (rust-nu-plugin-from-bson-0.35): (rust-nu-plugin-from-sqlite-0.35): (rust-nu-plugin-inc-0.35): (rust-nu-plugin-match-0.35): (rust-nu-plugin-post-0.35): (rust-nu-plugin-ps-0.35): (rust-nu-plugin-query-json-0.35): (rust-nu-plugin-s3-0.35): (rust-nu-plugin-selector-0.35): (rust-nu-plugin-start-0.35): (rust-nu-plugin-sys-0.35): (rust-nu-plugin-textview-0.35): (rust-nu-plugin-to-bson-0.35): (rust-nu-plugin-to-sqlite-0.35): (rust-nu-plugin-tree-0.35): (rust-nu-plugin-xpath-0.35): (rust-nu-pretty-hex-0.35): (rust-nu-protocol-0.35): (rust-nu-source-0.35): (rust-nu-stream-0.35): (rust-nu-table-0.35): (rust-nu-test-support-0.35): (rust-nu-value-ext-0.35): Update to 0.35.0. --- gnu/packages/shells.scm | 636 ++++++++++++++++++++++++------------------------ 1 file changed, 320 insertions(+), 316 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm index f2d5834faa..21754f8edc 100644 --- a/gnu/packages/shells.scm +++ b/gnu/packages/shells.scm @@ -946,7 +946,7 @@ (define-public gash-utils (define-public nushell (package (name "nushell") - (version "0.34.0") + (version "0.35.0") (source (origin (method git-fetch) @@ -955,7 +955,7 @@ (define-public nushell (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0cacc3pply9bly82kklphps2haajdzz6zgcc3nj419dp096fj3dz")))) + (base32 "0p5whwx6wk9k7mrxhr7azrppbj9mv53hd4bl1cgygxz231aq8337")))) (build-system cargo-build-system) (arguments `(#:rust ,rust-1.52 @@ -964,43 +964,44 @@ (define-public nushell #: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 @@ -1025,17 +1026,17 @@ (define-public nushell 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 @@ -1051,34 +1052,35 @@ (define-public rust-nu-ansi-term-0.34 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) @@ -1093,17 +1095,17 @@ (define-public rust-nu-cli-0.34 (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 @@ -1122,6 +1124,7 @@ (define-public rust-nu-command-0.34 ("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) @@ -1141,25 +1144,27 @@ (define-public rust-nu-command-0.34 ("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) @@ -1169,8 +1174,6 @@ (define-public rust-nu-command-0.34 ("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) @@ -1211,10 +1214,10 @@ (define-public rust-nu-command-0.34 (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) @@ -1223,7 +1226,7 @@ (define-public rust-nu-completion-0.34 (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0h8z34ir5f1l6whkzhyj9p3zlxg62hqnp2f9df7hn1cv2yg06f26")))) + "0x264c7rsmsrm39fhka11cdp04iiclmjsycjq2nn80v9wkdmpmkm")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t @@ -1231,31 +1234,31 @@ (define-public rust-nu-completion-0.34 (("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 @@ -1271,18 +1274,17 @@ (define-public rust-nu-data-0.34 ("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) @@ -1295,17 +1297,17 @@ (define-public rust-nu-data-0.34 (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 @@ -1335,18 +1337,18 @@ (define-public rust-nu-engine-0.34 ("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) @@ -1366,17 +1368,17 @@ (define-public rust-nu-engine-0.34 (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 @@ -1387,8 +1389,8 @@ (define-public rust-nu-errors-0.34 ("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) @@ -1400,17 +1402,17 @@ (define-public rust-nu-errors-0.34 (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 @@ -1426,17 +1428,17 @@ (define-public rust-nu-json-0.34 (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 @@ -1451,12 +1453,12 @@ (define-public rust-nu-parser-0.34 ("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) @@ -1466,17 +1468,17 @@ (define-public rust-nu-parser-0.34 (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 @@ -1488,10 +1490,10 @@ (define-public rust-nu-path-0.34 (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) @@ -1499,19 +1501,19 @@ (define-public rust-nu-plugin-0.34 (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)))) @@ -1520,17 +1522,17 @@ (define-public rust-nu-plugin-0.34 (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 @@ -1538,12 +1540,12 @@ (define-public rust-nu-plugin-binaryview-0.34 (("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") @@ -1551,28 +1553,28 @@ (define-public rust-nu-plugin-binaryview-0.34 "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") @@ -1580,17 +1582,17 @@ (define-public rust-nu-plugin-chart-0.34 "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 @@ -1598,10 +1600,10 @@ (define-public rust-nu-plugin-fetch-0.34 (("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") @@ -1609,28 +1611,28 @@ (define-public rust-nu-plugin-fetch-0.34 (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") @@ -1639,27 +1641,27 @@ (define-public rust-nu-plugin-from-bson-0.34 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)))) @@ -1670,28 +1672,28 @@ (define-public rust-nu-plugin-from-sqlite-0.34 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") @@ -1700,25 +1702,25 @@ (define-public rust-nu-plugin-inc-0.34 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") @@ -1726,17 +1728,17 @@ (define-public rust-nu-plugin-match-0.34 "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 @@ -1744,10 +1746,10 @@ (define-public rust-nu-plugin-post-0.34 (("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) @@ -1757,27 +1759,27 @@ (define-public rust-nu-plugin-post-0.34 (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") @@ -1786,105 +1788,105 @@ (define-public rust-nu-plugin-ps-0.34 "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)))) @@ -1895,10 +1897,10 @@ (define-public rust-nu-plugin-start-0.34 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) @@ -1906,17 +1908,17 @@ (define-public rust-nu-plugin-sys-0.34 (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") @@ -1924,28 +1926,28 @@ (define-public rust-nu-plugin-sys-0.34 (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") @@ -1954,27 +1956,27 @@ (define-public rust-nu-plugin-textview-0.34 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") @@ -1983,27 +1985,27 @@ (define-public rust-nu-plugin-to-bson-0.34 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)))) @@ -2014,26 +2016,26 @@ (define-public rust-nu-plugin-to-sqlite-0.34 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") @@ -2041,27 +2043,27 @@ (define-public rust-nu-plugin-tree-0.34 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") @@ -2069,23 +2071,23 @@ (define-public rust-nu-plugin-xpath-0.34 (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") @@ -2094,17 +2096,17 @@ (define-public rust-nu-pretty-hex-0.34 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 @@ -2112,12 +2114,14 @@ (define-public rust-nu-protocol-0.34 (("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) @@ -2132,17 +2136,17 @@ (define-public rust-nu-protocol-0.34 (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 @@ -2159,46 +2163,46 @@ (define-public rust-nu-source-0.34 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") @@ -2206,17 +2210,17 @@ (define-public rust-nu-table-0.34 (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 @@ -2228,10 +2232,10 @@ (define-public rust-nu-test-support-0.34 ("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") @@ -2240,10 +2244,10 @@ (define-public rust-nu-test-support-0.34 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) @@ -2251,16 +2255,16 @@ (define-public rust-nu-value-ext-0.34 (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") -- cgit v1.2.3 From 47a7b9d5e4d2bd7d4f063e02cf3a95d76632718d Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Thu, 5 Aug 2021 00:36:11 +0200 Subject: gnu: flare-game: Update to 1.12. * gnu/packages/games.scm (flare-game): Update to 1.12. (flare-engine): Update to 1.12. --- gnu/packages/games.scm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index ad48c49566..768a08a238 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -9017,7 +9017,7 @@ (define-public openclonk (define-public flare-engine (package (name "flare-engine") - (version "1.11") + (version "1.12") (source (origin (method git-fetch) (uri (git-reference @@ -9026,7 +9026,7 @@ (define-public flare-engine (file-name (git-file-name name version)) (sha256 (base32 - "1mqr1s72p5bdh4kq2a8hg72dk8lwnddicjnd2cdp1sbfa9lmjym8")))) + "0h4xxj6r194pw68m3ngrnzkh6xgiblyrsc54z8abwba8m0mqbvmk")))) (build-system cmake-build-system) (arguments `(#:tests? #f ;no test @@ -9045,7 +9045,7 @@ (define-public flare-engine (define-public flare-game (package (name "flare-game") - (version "1.11") + (version "1.12") (source (origin (method git-fetch) (uri (git-reference @@ -9054,7 +9054,7 @@ (define-public flare-game (file-name (git-file-name name version)) (sha256 (base32 - "0bd5g7sd89a9176ilr408hdqzdfv4j7wj0idd685c1n6s01c3h6p")))) + "0h9i128kq6disppbrplkf13zdmsg4cq23nim53mgwpawc4mqz7ga")))) (build-system cmake-build-system) (arguments `(#:tests? #f ;no test -- cgit v1.2.3 From 0dcdc829814cab6577ab084252db610baea8709e Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Thu, 5 Aug 2021 00:40:26 +0200 Subject: gnu: emacs-so-long: Update to 1.1. * gnu/packages/emacs-xyz.scm (emacs-so-long): Update to 1.1. --- gnu/packages/emacs-xyz.scm | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 00dfce0aec..c123079d31 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -20939,28 +20939,26 @@ (define-public emacs-pinentry (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") -- cgit v1.2.3 From b4e73c691cb73d3fcec290d60f16f2318e891215 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Thu, 5 Aug 2021 00:42:23 +0200 Subject: gnu: emacs-lua-mode: Update to 20210802. * gnu/packages/emacs-xyz.scm (emacs-lua-mode): Update to 20210802. --- gnu/packages/emacs-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index c123079d31..7562f21602 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -11360,7 +11360,7 @@ (define-public emacs-sly-package-inferred (define-public emacs-lua-mode (package (name "emacs-lua-mode") - (version "20201010") + (version "20210802") (home-page "https://github.com/immerrr/lua-mode/") (source (origin @@ -11370,7 +11370,7 @@ (define-public emacs-lua-mode (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 -- cgit v1.2.3 From 454ce9e0dcb87ba32eb22a0674115210861abfeb Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Thu, 5 Aug 2021 00:43:29 +0200 Subject: gnu: emacs-elpher: Update to 3.2.2. * gnu/packages/emacs-xyz.scm (emacs-elpher): Update to 3.2.2. --- gnu/packages/emacs-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 7562f21602..9cbd99b7b1 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -25459,7 +25459,7 @@ (define-public emacs-multi-term (define-public emacs-elpher (package (name "emacs-elpher") - (version "3.2.1") + (version "3.2.2") (source (origin (method git-fetch) @@ -25468,7 +25468,7 @@ (define-public emacs-elpher (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1k0nv5afsf4lh71yvqpg2zcmlbsgwcim1s161c2h4gh4p05vjwyq")))) + (base32 "0fzqm5gpadqzsl71r1bq72ki8dw8125v4nmhdd3b4rz9jy1rqm2g")))) (build-system emacs-build-system) (native-inputs `(("texinfo" ,texinfo))) -- cgit v1.2.3 From 9a8f0ff6832f001911343580335c098e037b16fa Mon Sep 17 00:00:00 2001 From: Michael Rohleder Date: Thu, 5 Aug 2021 01:42:45 +0200 Subject: gnu: mousepad: Update to 0.5.6. * gnu/packages/xfce.scm (mousepad): Update to 0.5.6. Signed-off-by: Leo Famulari --- gnu/packages/xfce.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm index 24091f3bce..c506f5e463 100644 --- a/gnu/packages/xfce.scm +++ b/gnu/packages/xfce.scm @@ -1244,7 +1244,7 @@ (define-public xfburn (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/" @@ -1252,7 +1252,7 @@ (define-public mousepad version ".tar.bz2")) (sha256 (base32 - "1qdbch7g8ppwn1rsm8nq9rbvabvx02lvn3dxb45ga3g1w005zhs0")))) + "03rmjraxb6a3w7gknmf6mdzkfc0m8shs1vkb2chvv28xn1irhma2")))) (build-system gnu-build-system) (arguments '(#:configure-flags '(;; Use the GSettings keyfile backend rather than -- cgit v1.2.3 From 9d5ddf5f3736ea6a774c68eced1e2dfc94eb94e6 Mon Sep 17 00:00:00 2001 From: Michael Rohleder Date: Thu, 5 Aug 2021 02:02:13 +0200 Subject: gnu: lesspipe: Update to 1.86. * gnu/packages/less.scm (lesspipe): Update to 1.86. Signed-off-by: Leo Famulari --- gnu/packages/less.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/less.scm b/gnu/packages/less.scm index 32133943ae..81d7918b36 100644 --- a/gnu/packages/less.scm +++ b/gnu/packages/less.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2012 Nikita Karetnikov ;;; Copyright © 2019–2021 Tobias Geerinckx-Rice ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen -;;; Copyright © 2020 Michael Rohleder +;;; Copyright © 2020, 2021 Michael Rohleder ;;; ;;; This file is part of GNU Guix. ;;; @@ -59,7 +59,7 @@ (define-public less (define-public lesspipe (package (name "lesspipe") - (version "1.85") + (version "1.86") (source (origin (method git-fetch) (uri (git-reference @@ -68,7 +68,7 @@ (define-public lesspipe (file-name (git-file-name name version)) (sha256 (base32 - "1v1jdkdq1phc93gdr6mjlk98gipxrkkq4bj8kks0kfdvjgdwkdaa")))) + "14qsfwvsqn6r0najpfh5p68by4jwlg2hj4250cfi1hx3j9i5nhgn")))) (build-system gnu-build-system) (arguments '(#:tests? #f ; no tests -- cgit v1.2.3 From 8b4a654ab914a08a53dfc81eff1be738ce6e58b2 Mon Sep 17 00:00:00 2001 From: Simon South Date: Wed, 4 Aug 2021 20:20:10 -0400 Subject: gnu: knot-resolver: Update to 5.4.0. * gnu/packages/dns.scm (knot-resolver): Update to 5.4.0. Signed-off-by: Leo Famulari --- gnu/packages/dns.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') 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 @@ (define-public knot (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 -- cgit v1.2.3 From 79eb05f84f41ef777d1afa595a9044b36cf93896 Mon Sep 17 00:00:00 2001 From: Timotej Lazar Date: Wed, 4 Aug 2021 12:49:30 +0200 Subject: gnu: endless-sky: Update to 0.9.14. * gnu/packages/games.scm (endless-sky): Update to 0.9.14. [arguments]: Add 'use-gcc-ar phase to support LTO used by the new version. Signed-off-by: Nicolas Goaziou --- gnu/packages/games.scm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 768a08a238..e46d9402e5 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -8351,7 +8351,7 @@ (define-public quadrapassel (define-public endless-sky (package (name "endless-sky") - (version "0.9.12") + (version "0.9.14") (source (origin (method git-fetch) @@ -8360,7 +8360,7 @@ (define-public endless-sky (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "18nkl4s3r5sy3sd9lhbdg9160c7fggklklprx0d5azifc8g6k0wj")))) + (base32 "12iganf8dxiyrjznnabsarxjsr0h717j3k4mz15p0k67wxyahhmf")))) (build-system scons-build-system) (arguments `(#:scons ,scons-python2 @@ -8382,7 +8382,10 @@ (define-public endless-sky "Environment(ENV = os.environ)") ;; Install into %out/bin (("games\"") "bin\"")) - #t))))) + #t)) + (add-before 'build 'use-gcc-ar + ;; Use gcc-ar to support LTO. + (lambda _ (setenv "AR" "gcc-ar")))))) (inputs `(("glew" ,glew) ("libjpeg" ,libjpeg-turbo) -- cgit v1.2.3 From fd85c59d1e7e6111e9c625930c633994c66075eb Mon Sep 17 00:00:00 2001 From: Timotej Lazar Date: Wed, 4 Aug 2021 12:49:31 +0200 Subject: gnu: endless-sky: Clean up phases. * gnu/packages/games.scm (endless-sky)[arguments]: Drop unused substitution and merge existing phases into 'fix-paths. Signed-off-by: Nicolas Goaziou --- gnu/packages/games.scm | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index e46d9402e5..8d9550ac0d 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -8368,19 +8368,13 @@ (define-public endless-sky #: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)) (add-before 'build 'use-gcc-ar -- cgit v1.2.3 From 6f248b947fa43d600168c73ecd542aad5a54e506 Mon Sep 17 00:00:00 2001 From: Timotej Lazar Date: Wed, 4 Aug 2021 12:49:32 +0200 Subject: gnu: endless-sky: Enable tests. * gnu/packages/games.scm (endless-sky)[arguments]: Enable tests. Signed-off-by: Nicolas Goaziou --- gnu/packages/games.scm | 1 - 1 file changed, 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 8d9550ac0d..a3ba02477a 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -8365,7 +8365,6 @@ (define-public endless-sky (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 'fix-paths -- cgit v1.2.3 From 12aedf001533aaf96e0bc3afb69e1229793dcef0 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Thu, 5 Aug 2021 09:03:36 +0200 Subject: gnu: endless-sky: Remove #t at the end of phase. * gnu/packages/games.scm (endless-sky): Remove #t at the end of phase. Fix indentation. --- gnu/packages/games.scm | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index a3ba02477a..695bcb36e8 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -8353,14 +8353,14 @@ (define-public endless-sky (name "endless-sky") (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 "12iganf8dxiyrjznnabsarxjsr0h717j3k4mz15p0k67wxyahhmf")))) + (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 @@ -8374,8 +8374,7 @@ (define-public endless-sky (("/usr/local") (assoc-ref outputs "out"))) ;; Install game binary into %out/bin. (substitute* "SConstruct" - (("games\"") "bin\"")) - #t)) + (("games\"") "bin\"")))) (add-before 'build 'use-gcc-ar ;; Use gcc-ar to support LTO. (lambda _ (setenv "AR" "gcc-ar")))))) -- cgit v1.2.3 From 517dacdb99e15f35c0ead462c9156896b5728be4 Mon Sep 17 00:00:00 2001 From: Xinglu Chen Date: Sun, 1 Aug 2021 16:36:51 +0200 Subject: gnu: mit-scheme: Update to 11.2. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/scheme.scm (mit-scheme): Update to 11.2. [native-inputs]: Add ‘texlive-epsf’ to ‘telive-union’, and add ‘ghostscript’. [inputs]: Add ‘ncurses’. Replace the URL for i686 with the URL for aarch64. Signed-off-by: Nicolas Goaziou --- gnu/packages/scheme.scm | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm index fa17b9d566..c43d17219e 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm @@ -90,7 +90,7 @@ (define (mit-scheme-source-directory system version) (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) @@ -177,11 +177,14 @@ (define-public mit-scheme ("autoconf" ,autoconf) ("automake" ,automake) ("libtool" ,libtool) - ("texlive" ,(texlive-union (list texlive-tex-texinfo))) + ("texlive" ,(texlive-union (list texlive-tex-texinfo + texlive-epsf))) ("texinfo" ,texinfo) + ("ghostscript" ,ghostscript) ("m4" ,m4))) (inputs `(("libx11" ,libx11) + ("ncurses" ,ncurses) ("source" @@ -197,8 +200,8 @@ (define-public mit-scheme (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")) @@ -206,10 +209,10 @@ (define-public mit-scheme (match (%current-system) ("x86_64-linux" (base32 - "03m7cc035w3avs91j2pcz9f15ssgvgp3rm045d1vbydqrkzfyw8k")) - ("i686-linux" + "17822hs9y07vcviv2af17p3va7qh79dird49nj50bwi9rz64ia3w")) + ("aarch64-linux" (base32 - "05sjyz90xxfnmi87qv8x0yx0fcallnzl1dciygdafp317pn489is")) + "11maixldk20wqb5js5p4imq221zz9nf27649v9pqkdf8fv7rnrs9")) (_ (base32 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")))))))) -- cgit v1.2.3 From c6a80baf017496bd28c2940e8301ab7b1a232d66 Mon Sep 17 00:00:00 2001 From: Ben Sturmfels Date: Wed, 4 Aug 2021 22:29:30 +1000 Subject: gnu: Remove fabric. Remove obsolete Python 2 package that fails to build. * gnu/packages/admin.scm (fabric): Remove variable. Signed-off-by: Efraim Flashner --- gnu/packages/admin.scm | 46 ---------------------------------------------- 1 file changed, 46 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index ecea149f0e..eda269f148 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -3425,52 +3425,6 @@ (define-public igt-gpu-tools (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") -- cgit v1.2.3 From de83a236b96f19467f2d7312f6365ae56099e740 Mon Sep 17 00:00:00 2001 From: Ben Sturmfels Date: Wed, 4 Aug 2021 22:29:31 +1000 Subject: gnu: Remove python2-bcrypt. Remove unused dependency of previously removed fabric package. * gnu/packages/python-crypto.scm (python2-bcrypt): Remove variable. Signed-off-by: Efraim Flashner --- gnu/packages/python-crypto.scm | 3 --- 1 file changed, 3 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm index d9102adcc9..6176866aac 100644 --- a/gnu/packages/python-crypto.scm +++ b/gnu/packages/python-crypto.scm @@ -138,9 +138,6 @@ (define-public python-bcrypt 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") -- cgit v1.2.3 From 1ee6166bd72c45466cad8f8b9b35b35baa425ae0 Mon Sep 17 00:00:00 2001 From: Ben Sturmfels Date: Wed, 4 Aug 2021 22:29:32 +1000 Subject: gnu: Remove python2-pynacl. Remove unused dependency of previously removed fabric package. * gnu/packages/python-crypto.scm (python2-pynacl): Remove variable. Signed-off-by: Efraim Flashner --- gnu/packages/python-crypto.scm | 3 --- 1 file changed, 3 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm index 6176866aac..bc3d317ad7 100644 --- a/gnu/packages/python-crypto.scm +++ b/gnu/packages/python-crypto.scm @@ -847,9 +847,6 @@ (define-public python-pynacl 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") -- cgit v1.2.3 From 28b6f9cadd8c8bda0301f963c6c360465443067d Mon Sep 17 00:00:00 2001 From: Ben Sturmfels Date: Wed, 4 Aug 2021 22:29:33 +1000 Subject: gnu: Remove python2-paramiko. Remove unused dependency of previously removed fabric package. * gnu/packages/python-crypto.scm (python2-paramiko): Remove variable. Signed-off-by: Efraim Flashner --- gnu/packages/python-crypto.scm | 3 --- 1 file changed, 3 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm index bc3d317ad7..6c25e0dd36 100644 --- a/gnu/packages/python-crypto.scm +++ b/gnu/packages/python-crypto.scm @@ -257,9 +257,6 @@ (define-public python-paramiko 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") -- cgit v1.2.3 From 79fa1fbe23b7a78485b5483bd28e8771d6ed59ce Mon Sep 17 00:00:00 2001 From: Ben Sturmfels Date: Wed, 4 Aug 2021 22:29:34 +1000 Subject: gnu: Remove python-fudge. Remove unused dependency of previously removed fabric package. * gnu/packages/python-xyz.scm (python-fudge): Remove variable. Signed-off-by: Efraim Flashner --- gnu/packages/python-xyz.scm | 33 --------------------------------- 1 file changed, 33 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 396ce3183d..ddcc96dbe2 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -17492,39 +17492,6 @@ (define-public python2-argparse 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") -- cgit v1.2.3 From 64d4bc089e44cec701b86720ee091331094677f9 Mon Sep 17 00:00:00 2001 From: Paul Garlick Date: Thu, 5 Aug 2021 09:02:20 +0100 Subject: gnu: Add optizelle. * gnu/packages/maths.scm (optizelle): New variable. --- gnu/packages/maths.scm | 101 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index b2b3150ca2..a179413fd8 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -142,6 +142,7 @@ (define-module (gnu packages maths) #: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 tcl) #:use-module (gnu packages texinfo) @@ -6752,3 +6753,103 @@ (define-public fp16 "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)))) -- cgit v1.2.3 From 781123518e7c246bb91640166c1823a31574e27f Mon Sep 17 00:00:00 2001 From: Pierre Langlois Date: Mon, 2 Aug 2021 15:05:49 +0100 Subject: gnu: u-boot-vexpress: Remove package. Upstream no longer supports the platform and we don't expect any users out there, see . * gnu/packages/bootloaders.scm (u-boot-vexpress): Remove variable. --- gnu/packages/bootloaders.scm | 3 --- 1 file changed, 3 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index 504b89f122..7d783d621e 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -713,9 +713,6 @@ (define-public (make-u-boot-package board triplet) 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")) -- cgit v1.2.3 From e914fc5913085aa7bf768490b093a6313d750bfc Mon Sep 17 00:00:00 2001 From: Pierre Langlois Date: Mon, 2 Aug 2021 15:13:11 +0100 Subject: gnu: Rename u-boot-sifive-fu540 to sifive-unleashed. * gnu/packages/bootloaders.scm (u-boot-sifive-fu540): Rename to ... (u-boot-sifive-unleashed): ... this. Change board name from sifive_fu540 to sifive_unleashed. * gnu/packages/patches/u-boot-riscv64-fix-extlinux.patch: Rename sifive_fu540 to sifive_unleashed. --- gnu/packages/bootloaders.scm | 4 ++-- gnu/packages/patches/u-boot-riscv64-fix-extlinux.patch | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index 7d783d621e..2889a90d54 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -869,8 +869,8 @@ (define-public u-boot-qemu-riscv64-smode (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 (make-u-boot-package "sifive_unmatched" "riscv64-linux-gnu")) 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 -- cgit v1.2.3 From 7f3ccc5bdbab469351f3ba08903bfe64cece034e Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Aug 2021 13:44:23 +0300 Subject: gnu: julia: Fix building on aarch64-linux. * gnu/packages/julia.scm (julia)[arguments]: Add phase on aarch64-linux to skip linking to nonexistant libquadmath. --- gnu/packages/julia.scm | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm index 6045c16b8f..4d739c8434 100644 --- a/gnu/packages/julia.scm +++ b/gnu/packages/julia.scm @@ -341,6 +341,19 @@ (define-public julia (("\\$\\$\\(build_depsbindir\\)/libwhich") (string-append (assoc-ref inputs "libwhich") "/bin/libwhich"))) #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)) -- cgit v1.2.3 From 729cc1115756709bae58eb5e0066f67f7fb0ee6c Mon Sep 17 00:00:00 2001 From: Peng Mei Yu Date: Tue, 3 Aug 2021 09:27:59 +0800 Subject: gnu: librime: Update to 1.7.3. * gnu/packages/ibus.scm (librime): Update to 1.7.3. Signed-off-by: Efraim Flashner --- gnu/packages/ibus.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/ibus.scm b/gnu/packages/ibus.scm index e6001efa7f..44deed2a4f 100644 --- a/gnu/packages/ibus.scm +++ b/gnu/packages/ibus.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2016 Chris Marusich ;;; Copyright © 2017, 2018 Efraim Flashner ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice -;;; Copyright © 2018, 2019, 2020 Peng Mei Yu +;;; Copyright © 2018, 2019, 2020, 2021 Peng Mei Yu ;;; Copyright © 2020 kanichos ;;; Copyright © 2020 Vincent Legoll ;;; @@ -306,7 +306,7 @@ (define-public ibus-anthy (define-public librime (package (name "librime") - (version "1.6.1") + (version "1.7.3") (source (origin (method git-fetch) @@ -316,7 +316,7 @@ (define-public librime (file-name (git-file-name name version)) (sha256 (base32 - "1avmy2yyag22cl2j8085n5czsk93sxv440pdb3a2diwcxwwmzm9v")) + "0pqk0i3zcii3fx5laj9qzbgd58jvq6wn31j76w4zix2i4b1lqcqv")) (modules '((guix build utils))) (snippet '(begin -- cgit v1.2.3 From 9177895618d8ad909da0e1373d372fdc0535f078 Mon Sep 17 00:00:00 2001 From: Peng Mei Yu Date: Tue, 3 Aug 2021 09:28:00 +0800 Subject: gnu: rime-data: Update to 0.38.20210802. * gnu/packages/ibus.scm (rime-data): Update to 0.38.20210802. [arguments]: Delete "no_update=1" from #:make-flags. Adjust 'patch-source phase. Replace 'build phase. [license]: Clarify license for all subpackages. Signed-off-by: Efraim Flashner --- gnu/packages/ibus.scm | 113 +++++++++++++++++++++++++++++++------------------- 1 file changed, 70 insertions(+), 43 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/ibus.scm b/gnu/packages/ibus.scm index 44deed2a4f..9e6a66552f 100644 --- a/gnu/packages/ibus.scm +++ b/gnu/packages/ibus.scm @@ -359,38 +359,29 @@ (define-public librime (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 @@ -405,6 +396,12 @@ (define-public rime-data (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" @@ -412,51 +409,51 @@ (define-public rime-data (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) @@ -472,21 +469,21 @@ (define-public rime-data (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) @@ -502,51 +499,51 @@ (define-public rime-data (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) @@ -602,21 +599,21 @@ (define-public rime-data (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) @@ -631,7 +628,37 @@ (define-public rime-data (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 -- cgit v1.2.3 From 7aab590ddd59158eb783dc532ca17006923f0fa6 Mon Sep 17 00:00:00 2001 From: Peng Mei Yu Date: Tue, 3 Aug 2021 09:28:01 +0800 Subject: gnu: ibus-rime: Update to 1.5.0. * gnu/packages/ibus.scm (ibus-rime): Update to 1.5.0. [build-system]: Change gnu-build-system to cmake-build-system. [arguments]: Delete #:make-flags. Add #:configure-flags. Update 'patch-source phase. Delete 'fix-file-names phase. Revert deletion of 'configure phase. Signed-off-by: Efraim Flashner --- gnu/packages/ibus.scm | 42 ++++++++++++------------------------------ 1 file changed, 12 insertions(+), 30 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/ibus.scm b/gnu/packages/ibus.scm index 9e6a66552f..48a2445c7d 100644 --- a/gnu/packages/ibus.scm +++ b/gnu/packages/ibus.scm @@ -663,7 +663,7 @@ (define-public rime-data (define-public ibus-rime (package (name "ibus-rime") - (version "1.4.0") + (version "1.5.0") (source (origin (method git-fetch) @@ -672,40 +672,22 @@ (define-public ibus-rime (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) -- cgit v1.2.3 From 11c265187d3cf48a7b4ac1af48201c96fead8a75 Mon Sep 17 00:00:00 2001 From: Sarah Morgensen Date: Fri, 25 Jun 2021 00:20:54 -0700 Subject: gnu: go-github-com-puerkitobio-goquery: Update to 1.7.0. * gnu/packages/golang.scm (go-github-com-puerkitobio-goquery): Update to 1.7.0. Signed-off-by: Efraim Flashner --- gnu/packages/golang.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index 0d5993d2c4..57aea50ce1 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -6683,7 +6683,7 @@ (define-public go-github-com-andybalholm-cascadia (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 @@ -6692,7 +6692,7 @@ (define-public go-github-com-puerkitobio-goquery (file-name (git-file-name name version)) (sha256 (base32 - "08nf88cg663slzqr51k2jxlm1krnh86nrzwbk6v41ccq5jkfm7fx")))) + "0gh1d99l5xc9hvwa4j40pfq3y9vfyq52mnrz6bf1kw2r2zr2gbcc")))) (build-system go-build-system) (arguments `(#:import-path "github.com/PuerkitoBio/goquery")) -- cgit v1.2.3 From 174a43b9280219f1a6222ad2a23413123c1a70cf Mon Sep 17 00:00:00 2001 From: Sarah Morgensen Date: Fri, 25 Jun 2021 00:20:55 -0700 Subject: gnu: go-go-uber-org-atomic: Update to 1.8.0. * gnu/packages/golang.scm (go-go-uber-org-atomic): Update to 1.8.0. Signed-off-by: Efraim Flashner --- gnu/packages/golang.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index 57aea50ce1..ef5f032a6f 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -8059,7 +8059,7 @@ (define-public go-github-com-pborman-getopt (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) @@ -8068,7 +8068,7 @@ (define-public go-go-uber-org-atomic (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")) -- cgit v1.2.3 From ddff7c8b1b7b0bc0294b0d944c94f0d5c59300e4 Mon Sep 17 00:00:00 2001 From: Sarah Morgensen Date: Fri, 25 Jun 2021 00:20:56 -0700 Subject: gnu: go-github-com-sergi-go-diff: Update to 1.2.0. * gnu/packages/golang.scm (go-github-com-sergi-go-diff): Update to 1.2.0. Signed-off-by: Efraim Flashner --- gnu/packages/golang.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index ef5f032a6f..dc54ba67c3 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -6567,7 +6567,7 @@ (define-public go-github-com-alecthomas-repr (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 @@ -6576,7 +6576,7 @@ (define-public go-github-com-sergi-go-diff (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" -- cgit v1.2.3 From 26bca253b5b711d5f0e6d36e6876cb2f59c1a545 Mon Sep 17 00:00:00 2001 From: Sarah Morgensen Date: Fri, 25 Jun 2021 00:20:57 -0700 Subject: gnu: go-github-com-pelletier-go-toml: Update to 1.9.3. * gnu/packages/golang.scm (go-github-com-pelletier-go-toml): Update to 1.9.3. Signed-off-by: Efraim Flashner --- gnu/packages/golang.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index dc54ba67c3..6b52d2a051 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -3215,7 +3215,7 @@ (define-public go-github-com-magiconair-properties (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) @@ -3225,7 +3225,7 @@ (define-public go-github-com-pelletier-go-toml (file-name (git-file-name name version)) (sha256 (base32 - "0fxmjm85c9h43lvqz71wr93fcc63bhj82nwby80222xx8ja63g7y")))) + "0cqwnvlgs1wgdgjxlwv8j52f7d6syniadr51sjh2fya99m5wzvsn")))) (build-system go-build-system) (arguments `(#:import-path "github.com/pelletier/go-toml")) -- cgit v1.2.3 From dadb275ff8029e4dc9529ce44e0773c980e6c223 Mon Sep 17 00:00:00 2001 From: Sarah Morgensen Date: Fri, 25 Jun 2021 00:20:58 -0700 Subject: gnu: go-github-com-masterminds-goutils: Update to 1.1.1. * gnu/packages/golang.scm (go-github-com-masterminds-goutils): Update to 1.1.1. Signed-off-by: Efraim Flashner --- gnu/packages/golang.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index 6b52d2a051..983baf90f5 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -6334,7 +6334,7 @@ (define-public go-github-com-surgebase-porter2 (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 @@ -6343,7 +6343,7 @@ (define-public go-github-com-masterminds-goutils (file-name (git-file-name name version)) (sha256 (base32 - "180px47gj936qyk5bkv5mbbgiil9abdjq6kwkf7sq70vyi9mcfiq")))) + "09m4mbcdlv9ng3xcrmjlxi0niavby52y9nl2jhjnbx1xxpjw0jrh")))) (build-system go-build-system) (arguments `(#:import-path "github.com/Masterminds/goutils")) -- cgit v1.2.3 From 422b365e599cbd933e365c63606910a527737954 Mon Sep 17 00:00:00 2001 From: Sarah Morgensen Date: Fri, 25 Jun 2021 00:20:59 -0700 Subject: gnu: go-github-com-magiconair-properties: Update to 1.8.5. * gnu/packages/golang.scm (go-github-com-magiconair-properties): Update to 1.8.5. Signed-off-by: Efraim Flashner --- gnu/packages/golang.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index 983baf90f5..28458d950f 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -3193,7 +3193,7 @@ (define-public go-github-com-fsnotify-fsnotify (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) @@ -3203,7 +3203,7 @@ (define-public go-github-com-magiconair-properties (file-name (git-file-name name version)) (sha256 (base32 - "0q7d55z0v8y55dyy8nhgdnswf5zkgj3i87irbk294nvzhx01bnxd")))) + "0v4agnkhc30fblbmhs0gq2bikhdnnmqmpp4phrnza68m04j5hxbn")))) (build-system go-build-system) (arguments `(#:import-path "github.com/magiconair/properties")) -- cgit v1.2.3 From 759aa3f0629df29b6907f2884e7aa155a6235298 Mon Sep 17 00:00:00 2001 From: Sarah Morgensen Date: Fri, 25 Jun 2021 00:21:00 -0700 Subject: gnu: go-github-com-dlclark-regexp2: Update to 1.4.0. * gnu/packages/golang.scm (go-github-com-dlclark-regexp2): Update to 1.4.0. Signed-off-by: Efraim Flashner --- gnu/packages/golang.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index 28458d950f..e7a1382997 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -6492,7 +6492,7 @@ (define-public go-github-com-bmatcuk-doublestar (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 @@ -6501,7 +6501,7 @@ (define-public go-github-com-dlclark-regexp2 (file-name (git-file-name name version)) (sha256 (base32 - "011l1prsywvhhi0yc7qmpsca1cwavmawyyld5kjzi0ff9ghvj4ng")))) + "1irfv89b7lfkn7k3zgx610ssil6k61qs1wjj31kvqpxb3pdx4kry")))) (build-system go-build-system) (arguments `(#:import-path "github.com/dlclark/regexp2")) -- cgit v1.2.3 From 4a72b9875a2755b2295be3b0a8bae7a70a82a827 Mon Sep 17 00:00:00 2001 From: Sarah Morgensen Date: Fri, 25 Jun 2021 00:21:04 -0700 Subject: gnu: go-gopkg-in-check-v1: Update to 1.0.0-20201130134442-10cb98267c6c. * gnu/packages/golang.scm (go-gopkg-in-check-v1): Update to 1.0.0-20201130134442-10cb98267c6c. [license]: Correct license. Signed-off-by: Efraim Flashner --- gnu/packages/golang.scm | 46 ++++++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 24 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index e7a1382997..46d7c4b391 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -3504,30 +3504,28 @@ (define-public go-github-com-gorhill-cronexpr 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 -- cgit v1.2.3 From 457a472888d3e8171184755d53c318aa3fa99d0c Mon Sep 17 00:00:00 2001 From: Sarah Morgensen Date: Fri, 25 Jun 2021 00:21:05 -0700 Subject: gnu: go-etcd-io-bbolt: Update to 1.3.6. * gnu/packages/golang.scm (go-etcd-io-bbolt): Update to 1.3.6. [propagated-inputs]: Add go-golang-org-x-sys. Signed-off-by: Efraim Flashner --- gnu/packages/golang.scm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index 46d7c4b391..ed8f504aa1 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -7464,7 +7464,7 @@ (define-public go-github-com-zalando-go-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 @@ -7473,10 +7473,12 @@ (define-public go-etcd-io-bbolt (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.") -- cgit v1.2.3 From 8cc36f76bbd96d6b6da96fee62515634d9da0803 Mon Sep 17 00:00:00 2001 From: Sarah Morgensen Date: Fri, 25 Jun 2021 00:21:01 -0700 Subject: gnu: earlyoom: Patch tests for go-1.16. * gnu/packages/linux.scm (earlyoom)[source]: Add snippet to not use modules in test suite. Signed-off-by: Efraim Flashner --- gnu/packages/linux.scm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 4ca2a386e1..762cd03492 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -3531,7 +3531,14 @@ (define-public earlyoom (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 -- cgit v1.2.3 From ead6cc03c66ed31f0ab7300fab11cef3a1e459f0 Mon Sep 17 00:00:00 2001 From: Sarah Morgensen Date: Sat, 17 Jul 2021 21:05:59 -0700 Subject: gnu: go-1.16: Honor #:parallel-build? * gnu/packages/golang.scm (go-1.16)[arguments]<#:phases>{build}: Honor parallel-build? Signed-off-by: Efraim Flashner --- gnu/packages/golang.scm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index ed8f504aa1..89020648f0 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -1514,10 +1514,12 @@ (define-public go-1.16 (substitute* "time/zoneinfo_unix.go" (("/usr/share/zoneinfo/") tzdata-path))))) (replace 'build - (lambda* (#:key inputs outputs #:allow-other-keys) + (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* ((output (assoc-ref outputs "out")) + (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")) @@ -1526,6 +1528,7 @@ (define-public go-1.16 (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) -- cgit v1.2.3 From 49432f6534c900e90017726f08cb37397662a9b8 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Wed, 4 Aug 2021 14:54:09 -0400 Subject: gnu: pypy3: Update to 7.3.5. The patch disabling tests is removed because it only fixes 2 out of 43 test failures. * gnu/packages/patches/pypy3-7.3.1-fix-tests.patch: Delete file. * gnu/local.mk (dist_patch_DATA): De-register it. * gnu/packages/python.scm (pypy3): Update to 7.3.5. [patches]: Remove patch. --- gnu/local.mk | 1 - gnu/packages/patches/pypy3-7.3.1-fix-tests.patch | 278 ----------------------- gnu/packages/python.scm | 11 +- 3 files changed, 5 insertions(+), 285 deletions(-) delete mode 100644 gnu/packages/patches/pypy3-7.3.1-fix-tests.patch (limited to 'gnu') diff --git a/gnu/local.mk b/gnu/local.mk index 51a76e3638..61ac39618a 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1657,7 +1657,6 @@ dist_patch_DATA = \ %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 \ 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 @@ - > (6)test_function() - -> print('pdb %d: %s' % (i, sess._previous_sigint_handler)) - (Pdb) continue -- pdb 1: -+ pdb 1: Handlers.SIG_IGN - > (6)test_function() - -> print('pdb %d: %s' % (i, sess._previous_sigint_handler)) - (Pdb) continue -- pdb 2: -+ 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/python.scm b/gnu/packages/python.scm index e694321e17..5cc02d5ba3 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -716,15 +716,14 @@ (define-public micropython (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) @@ -749,7 +748,7 @@ (define-public pypy3 ("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 -- cgit v1.2.3 From 7e05fda6e8dd72b63009181072a282ad15c25c4f Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Sun, 15 Nov 2020 10:54:26 +0100 Subject: gnu: pypy3: Use gdbm compat library and other small fixes. * gnu/packages/python.scm (pypy3)[inputs]: Remove bash-minimal. [phases]: Remove trailing #t. {patch-source}: Use gdbm compat library. Fix shell with the implicit Bash input. {build}: Use the '--allworkingmodules' argument. {install}: Refactor for clarity. [license]: Re-indent comments. Modified-by: Maxim Cournoyer Signed-off-by: Maxim Cournoyer --- gnu/packages/python.scm | 82 ++++++++++++++++++++++++++----------------------- 1 file changed, 43 insertions(+), 39 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 5cc02d5ba3..4ff3200cc9 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -745,7 +745,6 @@ (define-public pypy3 ("tcl" ,tcl) ("tk" ,tk) ("glibc" ,glibc) - ("bash-minimal" ,bash-minimal) ; Used as /bin/sh ("xz" ,xz))) ; liblzma (arguments `(#:tests? #f ;FIXME: 43 out of 364 tests are failing @@ -777,6 +776,12 @@ (define-public pypy3 (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") @@ -788,12 +793,10 @@ (define-public pypy3 "/lib/libsqlite3.so.0'"))) (substitute* '("lib-python/3/subprocess.py") ;; Fix shell path - (("/bin/sh") - (string-append (assoc-ref inputs "bash-minimal") "/bin/sh"))) + (("/bin/sh") (which "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 @@ -801,8 +804,7 @@ (define-public pypy3 (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" @@ -812,7 +814,8 @@ (define-public pypy3 (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" (unsetenv "PYTHONPATH") ; Do not use the system’s python libs: @@ -834,44 +837,45 @@ (define-public pypy3 "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 -- cgit v1.2.3 From f1b64c435a4510a7d92d01db446d20f6286199a9 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Thu, 5 Aug 2021 16:46:10 +0200 Subject: gnu: pigx-sars-cov2-ww: Update to 0.0.3. * gnu/packages/bioinformatics.scm (pigx-sars-cov2-ww): Update to 0.0.3. --- gnu/packages/bioinformatics.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 910a79c3e3..86f09dfaf4 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -10738,7 +10738,7 @@ (define-public pigx-scrnaseq (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/" @@ -10746,7 +10746,7 @@ (define-public pigx-sars-cov2-ww "/pigx_sars-cov2-ww-" version ".tar.gz")) (sha256 (base32 - "0yrbza7lbzijjc8ifk06b646n959a4k7id94x3ndz795892f64l0")))) + "1hhdbwsnl0d37lrmisw5hr630xr8s41qvxflm05anh11rj8n22yw")))) (build-system gnu-build-system) (inputs `(("bash-minimal" ,bash-minimal) -- cgit v1.2.3 From fd3f1e809234c3e675d2eb8bc17774b0d4a94b0c Mon Sep 17 00:00:00 2001 From: Xinglu Chen Date: Thu, 5 Aug 2021 16:17:36 +0200 Subject: gnu: mcron: Update to 1.2.1. * gnu/packages/guile-xyz.scm (mcron): Update to 1.2.1. Signed-off-by: Maxim Cournoyer --- gnu/packages/guile-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index e91bf88247..f8be5559cb 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -2685,14 +2685,14 @@ (define-public guile3.0-commonmark (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 -- cgit v1.2.3 From 76d68744cc426a4bc336863142687e7aba16ed5d Mon Sep 17 00:00:00 2001 From: Felix Gruber Date: Thu, 5 Aug 2021 17:11:42 +0000 Subject: gnu: audacious: Update to 4.1. * gnu/packages/music.scm (audacious): Update to 4.1. [inputs]: Replace libmodplug with libopenmpt. [arguments]: Add --disable-gtk configure flag as building against GTK, in addition to QT, has otherwise become the default. Signed-off-by: Nicolas Goaziou --- gnu/packages/music.scm | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 9c69204610..b95be813dc 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -40,6 +40,7 @@ ;;; Copyright © 2021 Frank Pursel ;;; Copyright © 2021 Rovanion Luckey ;;; Copyright © 2021 Justin Veilleux +;;; Copyright © 2021 Felix Gruber ;;; ;;; This file is part of GNU Guix. ;;; @@ -177,18 +178,19 @@ (define-module (gnu packages music) (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 @@ (define-public audacious (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 @@ (define-public audacious ("libcddb" ,libcddb) ("libcdio-paranoia" ,libcdio-paranoia) ("libcue" ,libcue) - ("libmodplug" ,libmodplug) ("libnotify" ,libnotify) ("libogg" ,libogg) + ("libopenmpt" ,libopenmpt) ("libsamplerate" ,libsamplerate) ("libsndfile" ,libsndfile) ("libvorbis" ,libvorbis) -- cgit v1.2.3 From 447ce7d57eee04b77df3cb89c636e98ec4806050 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Thu, 5 Aug 2021 22:27:13 +0200 Subject: gnu: tome4: Update to 1.7.4. * gnu/packages/games.scm (tome4): Update to 1.7.4. --- gnu/packages/games.scm | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 695bcb36e8..9209b946bf 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -6935,7 +6935,7 @@ (define-public open-adventure-2.5 (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 @@ -6943,7 +6943,7 @@ (define-public tome4 (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 @@ -6952,8 +6952,7 @@ (define-public tome4 (string-append line " || defined(__GNUC__)"))) (substitute* '("src/tgl.h") - (("#include ") "")) - #t)))) + (("#include ") "")))))) (build-system gnu-build-system) (native-inputs `(("unzip" ,unzip))) @@ -6976,15 +6975,13 @@ (define-public tome4 (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" (string-append (assoc-ref inputs "sdl-union") "/include/SDL2:" - (or (getenv "CPATH") ""))) - #t)) + (or (getenv "CPATH") ""))))) (delete 'check) ;; premake doesn't provide install target (replace 'install @@ -7043,8 +7040,7 @@ (define-public tome4 #: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 -- cgit v1.2.3 From 4be98fbe7e42f8be0db881caf8598a704c56265d Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Thu, 5 Aug 2021 22:38:21 +0200 Subject: gnu: crawl: Update to 0.27.0. * gnu/packages/games.scm (crawl): Update to 0.27.0. --- gnu/packages/games.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 9209b946bf..2e1aed1ee8 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -6548,14 +6548,14 @@ (define-public fillets-ng (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 -- cgit v1.2.3 From 7399e0fde9cea9d9a440f80f32d95f3a798a991f Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Wed, 4 Aug 2021 12:46:21 -0400 Subject: gnu: linux-libre: Update to 5.13.8. * gnu/packages/linux.scm (linux-libre-5.13-version): Update to 5.13.8. (linux-libre-5.13-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 762cd03492..af1817e790 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -356,7 +356,7 @@ (define (%upstream-linux-source version hash) ;; 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.8") (define deblob-scripts-5.13 (linux-libre-deblob-scripts linux-libre-5.13-version @@ -364,7 +364,7 @@ (define deblob-scripts-5.13 (base32 "153jf5l5x4438zgxwggaky2ahjlfl48j438vhpzks6h77lzc51a5"))) (define-public linux-libre-5.13-pristine-source (let ((version linux-libre-5.13-version) - (hash (base32 "0fg41dv62vsnv2hywym15zz0n08rhdzwqvcarspm9r5gac85c7pr"))) + (hash (base32 "0a54r71mcyqvq7c8kff817vh6zfj0bdzmp6ql4az84wq9nwc526h"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.13))) -- cgit v1.2.3 From f4977a336dcdc5af6c2ef42cb901df23ea807a9a Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Wed, 4 Aug 2021 12:46:39 -0400 Subject: gnu: linux-libre 5.10: Update to 5.10.56. * gnu/packages/linux.scm (linux-libre-5.10-version): Update to 5.10.56. (linux-libre-5.10-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index af1817e790..941f678e08 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -372,7 +372,7 @@ (define-public linux-libre-5.13-pristine-source ;; The "longterm" kernels — the older releases with long-term upstream support. ;; Here are the support timelines: ;; -(define-public linux-libre-5.10-version "5.10.55") +(define-public linux-libre-5.10-version "5.10.56") (define deblob-scripts-5.10 (linux-libre-deblob-scripts linux-libre-5.10-version @@ -380,7 +380,7 @@ (define deblob-scripts-5.10 (base32 "0c9x07gplzajm0h5if3fpw2rvfb7psw3yp7i2n6ws7ggq1dvmki2"))) (define-public linux-libre-5.10-pristine-source (let ((version linux-libre-5.10-version) - (hash (base32 "12c8zrbj2c578ysz6j72g4azk0wj39z4aay3bjy9b837mlyi30bm"))) + (hash (base32 "0szcj0lbs33wmphxzvcc8jzfdvzncgxy2q8b1s4l9yjhkighssjd"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.10))) -- cgit v1.2.3 From 2606a33d00a35bf4b52764fba8d0f28e8c5d8295 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Wed, 4 Aug 2021 12:46:55 -0400 Subject: gnu: linux-libre 5.4: Update to 5.4.138. * gnu/packages/linux.scm (linux-libre-5.4-version): Update to 5.4.138. (linux-libre-5.4-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 941f678e08..2f4fe6dfe8 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -385,7 +385,7 @@ (define-public linux-libre-5.10-pristine-source (%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.138") (define deblob-scripts-5.4 (linux-libre-deblob-scripts linux-libre-5.4-version @@ -393,7 +393,7 @@ (define deblob-scripts-5.4 (base32 "1xghbbnaisjd0k1klbyn1p7r6r4x5a1bpmkm56a3gh2zvw4s7mj8"))) (define-public linux-libre-5.4-pristine-source (let ((version linux-libre-5.4-version) - (hash (base32 "0z0zlfm9jkwk3wi059q66xjx33qk2zpjk8ndhzlbvn75dhv5x7ph"))) + (hash (base32 "0mw6k9zrcmv1j4b3han5c0q8xbh38bka2wkkbl1y3ralg9r5ffd4"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.4))) -- cgit v1.2.3 From f02bff795f61d2efe63d65d5081d325c9af1725c Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Wed, 4 Aug 2021 12:47:08 -0400 Subject: gnu: linux-libre 4.19: Update to 4.19.201. * gnu/packages/linux.scm (linux-libre-4.19-version): Update to 4.19.201. (linux-libre-4.19-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 2f4fe6dfe8..98b1a68d12 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -398,7 +398,7 @@ (define-public linux-libre-5.4-pristine-source (%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.201") (define deblob-scripts-4.19 (linux-libre-deblob-scripts linux-libre-4.19-version @@ -406,7 +406,7 @@ (define deblob-scripts-4.19 (base32 "1jiaw0as1ippkrjdpd52657w5mz9qczg3y2hlra7m9k0xawwiqlf"))) (define-public linux-libre-4.19-pristine-source (let ((version linux-libre-4.19-version) - (hash (base32 "06q8ws1lsrvhssp9qwdlq47sbsf7wzzxbp97sdjfnvmlqvchjx1h"))) + (hash (base32 "1l6ww5igjv6r2zl1zyq7mzsmpc884p7hpds7l9jfwil232kxydc2"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.19))) -- cgit v1.2.3 From d4be54a188d3811f4ec85fe2ddf78c1f2fa50a04 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Wed, 4 Aug 2021 12:47:21 -0400 Subject: gnu: linux-libre 4.14: Update to 4.14.242. * gnu/packages/linux.scm (linux-libre-4.14-version): Update to 4.14.242. (linux-libre-4.14-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 98b1a68d12..775cd561af 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -411,7 +411,7 @@ (define-public linux-libre-4.19-pristine-source (%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.242") (define deblob-scripts-4.14 (linux-libre-deblob-scripts linux-libre-4.14-version @@ -419,7 +419,7 @@ (define deblob-scripts-4.14 (base32 "1qij18inijj6c3ma8hv98yjagnzxdxyn134da9fd23ky8q6hbvky"))) (define-public linux-libre-4.14-pristine-source (let ((version linux-libre-4.14-version) - (hash (base32 "0zczi2hv6ib67niycn6s2gaw73y0nxz0c75w11xa4jqmf2xh9fxm"))) + (hash (base32 "0p0s9hd8ks25a2fndzw36rqflw3xbcb3cq8sldlfj8jdli11qg9y"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.14))) -- cgit v1.2.3 From 0d579938e8b5ad059febd14a43a634f5048dde77 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Wed, 4 Aug 2021 12:47:38 -0400 Subject: gnu: linux-libre 4.9: Update to 4.9.278. * gnu/packages/linux.scm (linux-libre-4.9-version): Update to 4.9.278. (linux-libre-4.9-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 775cd561af..cc770244ed 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -424,7 +424,7 @@ (define-public linux-libre-4.14-pristine-source (%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.278") (define deblob-scripts-4.9 (linux-libre-deblob-scripts linux-libre-4.9-version @@ -432,7 +432,7 @@ (define deblob-scripts-4.9 (base32 "0fxajshb75siq39lj5h8xvhdj8lcmddkslwlyj65rhlwk6g2r4b2"))) (define-public linux-libre-4.9-pristine-source (let ((version linux-libre-4.9-version) - (hash (base32 "1pkjcz9llc7hkmzfyjcx20b5njnqbkwlzyy1ncc8na71nn6rvsg6"))) + (hash (base32 "04byav6cbga3jqkppygm5zj73d9v44xyvx6hbrhwr22lsk282dz7"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.9))) -- cgit v1.2.3 From d0d3bcc615f1d521ea60a8b2e085767e0adb05b6 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Wed, 4 Aug 2021 12:47:50 -0400 Subject: gnu: linux-libre 4.4: Update to 4.4.278. * gnu/packages/linux.scm (linux-libre-4.4-version): Update to 4.4.278. (linux-libre-4.4-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index cc770244ed..fed4ad2d14 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -437,7 +437,7 @@ (define-public linux-libre-4.9-pristine-source (%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.278") (define deblob-scripts-4.4 (linux-libre-deblob-scripts linux-libre-4.4-version @@ -445,7 +445,7 @@ (define deblob-scripts-4.4 (base32 "0hhin1jpfkd6nwrb6xqxjzl3hdxy4pn8a15hy2d3d83yw6pflbsf"))) (define-public linux-libre-4.4-pristine-source (let ((version linux-libre-4.4-version) - (hash (base32 "1m5zkssh523f15fvy80rcvfwqzdkldz3jhny6vbaj8q0zvk3w5r5"))) + (hash (base32 "1r2sbxn8finzcg72ds5dyh4578vv2s5zwylq3b3xyw3hzr4swn4f"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.4))) -- cgit v1.2.3 From 733ca63bcd2854757b5b1de0b71f4407f682e15c Mon Sep 17 00:00:00 2001 From: Sarah Morgensen Date: Thu, 5 Aug 2021 13:20:06 -0700 Subject: gnu: go-github-com-bmatcuk-doublestar: Remove test incompatible with go-1.16. * gnu/packages/golang.scm (go-github-com-bmatcuk-doublestar) [phases]{remove-incompatible-test}: New phase. Co-authored-by: Maxim Cournoyer Signed-off-by: Maxim Cournoyer --- gnu/packages/golang.scm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index 89020648f0..c52bf72c8d 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -6483,7 +6483,15 @@ (define-public go-github-com-bmatcuk-doublestar "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 -- cgit v1.2.3 From 1273548f4facefa379ae3607b47891959c42c13d Mon Sep 17 00:00:00 2001 From: Sarah Morgensen Date: Thu, 5 Aug 2021 13:20:07 -0700 Subject: gnu: restic: Patch tests for go-1.16. * gnu/packages/patches/restic-0.9.6-fix-tests-for-go1.15.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/backup.scm (restic): Use it. Signed-off-by: Maxim Cournoyer --- gnu/local.mk | 1 + gnu/packages/backup.scm | 5 ++- .../restic-0.9.6-fix-tests-for-go1.15.patch | 51 ++++++++++++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/restic-0.9.6-fix-tests-for-go1.15.patch (limited to 'gnu') diff --git a/gnu/local.mk b/gnu/local.mk index 61ac39618a..caa9090bbd 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1693,6 +1693,7 @@ 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 \ diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index 9ec4e281d8..d8d8728a14 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -20,6 +20,7 @@ ;;; Copyright © 2020 Michael Rohleder ;;; Copyright © 2021 Timothy Sample ;;; Copyright © 2021 Brice Waegeneire +;;; Copyright © 2021 Sarah Morgensen ;;; ;;; This file is part of GNU Guix. ;;; @@ -928,7 +929,9 @@ (define-public restic (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" 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 +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()) + } + }) + } -- cgit v1.2.3 From 362a1cc3fb50c67ed4249b97827dbffdbdace766 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Thu, 5 Aug 2021 22:54:19 -0400 Subject: gnu: restic: Have the custom check phase honor TESTS?. * gnu/packages/backup.scm (restic)[phases]{check}: Honor TESTS?. --- gnu/packages/backup.scm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index d8d8728a14..b35dbe4b76 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -948,11 +948,12 @@ (define-public restic (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) -- cgit v1.2.3 From f8f096d1e8f930ebeecd98125b9c03d97b3c7f65 Mon Sep 17 00:00:00 2001 From: Pkill -9 Date: Tue, 19 Feb 2019 07:46:29 +0000 Subject: gnu: Add tetrinet. * gnu/packages/games.scm (tetrinet): New variable. Modified-by: Maxim Cournoyer Signed-off-by: Maxim Cournoyer --- gnu/packages/games.scm | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 2e1aed1ee8..f34f3a9ca5 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -63,6 +63,7 @@ ;;; Copyright © 2021 Felix Gruber ;;; Copyright © 2021 Solene Rapenne ;;; Copyright © 2021 Noisytoot +;;; Copyright © 2019 Pkill -9 ;;; ;;; This file is part of GNU Guix. ;;; @@ -552,6 +553,47 @@ (define-public bastet 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") -- cgit v1.2.3 From c64c49b152b7713a5e09ae0cfdc1de86fb215966 Mon Sep 17 00:00:00 2001 From: nee Date: Fri, 15 Mar 2019 20:56:47 +0100 Subject: gnu: yamagi-quake2: Patch dynamically loaded libraries. * gnu/packages/games.scm (yamagi-quake2) [arguments]{make-flags}: Remove the DLOPEN_OPENAL=no make flag, which was not working as intended. [phases]{patch-libraries}: New phase. Modified-by: Maxim Cournoyer Signed-off-by: Maxim Cournoyer --- gnu/packages/games.scm | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index f34f3a9ca5..468b0d58b1 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -7209,15 +7209,26 @@ (define-public yamagi-quake2 `(#: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"))) -- cgit v1.2.3 From 0d72f24ac084acf9d69e147a692e5d8bcb2ea21b Mon Sep 17 00:00:00 2001 From: Katherine Cox-Buday Date: Fri, 6 Aug 2021 00:38:31 -0400 Subject: gnu: emacs-direnv: Patch the reference to direnv. * gnu/packages/emacs-xyz.scm (emacs-direnv) [phases]{patch-in-direnv}: New phase. Modified-by: Maxim Cournoyer Signed-off-by: Maxim Cournoyer --- gnu/packages/emacs-xyz.scm | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 9cbd99b7b1..c7730caf10 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -210,6 +210,7 @@ (define-module (gnu packages emacs-xyz) #: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) @@ -2888,6 +2889,18 @@ (define-public emacs-direnv (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))) -- cgit v1.2.3 From 196f171c556acb1c94d719b261287eaf23e5116c Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Fri, 6 Aug 2021 09:59:27 +0200 Subject: gnu: Add r-datasaurus. * gnu/packages/statistics.scm (r-datasaurus): New variable. --- gnu/packages/statistics.scm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 7b50d287f2..5c744f664a 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -13,6 +13,7 @@ ;;; Copyright © 2018 Alex Branham ;;; Copyright © 2020 Tim Howes ;;; Copyright © 2021 Bonface Munyoki Kilyungi +;;; Copyright © 2021 Lars-Dominik Braun ;;; ;;; This file is part of GNU Guix. ;;; @@ -6310,3 +6311,35 @@ (define-public r-glinternet 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))) -- cgit v1.2.3 From dc151c8fb116e2386b2d4ef0acfdb766b22a5907 Mon Sep 17 00:00:00 2001 From: Sarah Morgensen Date: Thu, 5 Aug 2021 17:05:09 -0700 Subject: gnu: go-1.16: Update to 1.16.7. * gnu/packages/golang.scm (go-1.16): Update to 1.16.7. Signed-off-by: Maxim Cournoyer --- gnu/packages/golang.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index c52bf72c8d..15f3ea46c4 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -1393,7 +1393,7 @@ (define-public go-1.16 (package (inherit go-1.14) (name "go") - (version "1.16.5") + (version "1.16.7") (source (origin (method git-fetch) @@ -1403,7 +1403,7 @@ (define-public go-1.16 (file-name (git-file-name name version)) (sha256 (base32 - "19a93p217h5xi2sgh34qzv24pkd4df0sw4fc5z6k47lspjp3vx2l")))) + "1id6nsavf7gm78bmzsvym135pi2xa0v75ny51xrw93j70clz9w0h")))) (arguments (substitute-keyword-arguments (package-arguments go-1.14) ((#:tests? _) #t) -- cgit v1.2.3 From d26a7a5e4bf345ecd61251458fd78aa4747edaba Mon Sep 17 00:00:00 2001 From: Raghav Gururajan Date: Fri, 6 Aug 2021 06:49:39 -0400 Subject: gnu: Add tabbed. * gnu/packages/suckless.scm (tabbed): New variable. --- gnu/packages/suckless.scm | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm index 65f4fa85a9..28e79e1591 100644 --- a/gnu/packages/suckless.scm +++ b/gnu/packages/suckless.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2016 Eric Bavier ;;; Copyright © 2017 Alex Griffin ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice +;;; Copyright © 2021 Raghav Gururajan ;;; ;;; This file is part of GNU Guix. ;;; @@ -49,6 +50,51 @@ (define-module (gnu packages suckless) #:use-module (guix utils) #:use-module (guix packages)) +(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") -- cgit v1.2.3 From 1711f529312792ed9cfd5656d166d4f466f6d48d Mon Sep 17 00:00:00 2001 From: Raghav Gururajan Date: Fri, 6 Aug 2021 08:21:49 -0400 Subject: gnu: Add slscroll. * gnu/packages/suckless.scm (slscroll): New variable. --- gnu/packages/suckless.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm index 28e79e1591..b24eced379 100644 --- a/gnu/packages/suckless.scm +++ b/gnu/packages/suckless.scm @@ -50,6 +50,33 @@ (define-module (gnu packages suckless) #: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") -- cgit v1.2.3 From 8822ee1775e1d0bf0389ccb7f09ba85bb7535222 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 5 Aug 2021 19:41:14 +0300 Subject: gnu: julia: Update to 1.6.2. * gnu/packages/julia.scm (julia): Update to 1.6.2. [arguments]: Add phase to adjust the expected number of precompile statements. Adjust custom 'disable-broken-tests phase to remove fixed test. [native-inputs]: Remove nss-certs. --- gnu/packages/julia.scm | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm index 4d739c8434..fe31e545c9 100644 --- a/gnu/packages/julia.scm +++ b/gnu/packages/julia.scm @@ -32,7 +32,6 @@ (define-module (gnu packages julia) #: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 @@ (define-public libwhich (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 @@ (define-public julia 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,13 @@ (define-public julia (("\\$\\$\\(build_depsbindir\\)/libwhich") (string-append (assoc-ref inputs "libwhich") "/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?) @@ -499,9 +505,6 @@ (define-public julia "@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") @@ -659,8 +662,7 @@ (define-public julia ("dsfmt" ,dsfmt) ("libwhich" ,libwhich))) (native-inputs - `(("nss-certs" ,nss-certs) - ("openssl" ,openssl) + `(("openssl" ,openssl) ("perl" ,perl) ("patchelf" ,patchelf) ("pkg-config" ,pkg-config) -- cgit v1.2.3 From c8e2be3b32fe784a9db52d8a1a12902ab12ae7cb Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Fri, 6 Aug 2021 18:30:35 +0300 Subject: gnu: julia-lazyarrays: Update to 0.21.14. * gnu/packages/julia-xyz.scm (julia-lazyarrays): Update to 0.21.14. --- gnu/packages/julia-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') 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 @@ (define-public julia-json3 (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 @@ (define-public julia-lazyarrays (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) -- cgit v1.2.3 From 95ead719a35db0d49a609d1274e5615886d0a9e2 Mon Sep 17 00:00:00 2001 From: Leo Prikler Date: Fri, 6 Aug 2021 20:25:11 +0200 Subject: gnu: komikku: Update to 0.30.0. * gnu/packages/gnome.scm (komikku): Update to 0.30.0. [inputs]: Add python-natsort. --- gnu/packages/gnome.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 54ae54dd26..5cf3bf36d1 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -12006,7 +12006,7 @@ (define-public gnome-builder (define-public komikku (package (name "komikku") - (version "0.29.2") + (version "0.30.0") (source (origin (method git-fetch) @@ -12016,7 +12016,7 @@ (define-public komikku (file-name (git-file-name name version)) (sha256 (base32 - "0g1whk0y3k1cy6ix20gz226ww1vzpb9hinn5d24z6j38mdgqqa5l")))) + "1l6iqxa497fisn64mn2qgia4y6zryfa5pbnd8609flfi9qmgrzn7")))) (build-system meson-build-system) (arguments `(#:glib-or-gtk? #t @@ -12054,6 +12054,7 @@ (define-public komikku ("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) -- cgit v1.2.3 From df5096031bc3995bcf2012151b52d6f87f0b6767 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Fri, 6 Aug 2021 20:58:19 +0200 Subject: gnu: emacs-ebdb: Update to 0.7.1. * gnu/packages/emacs-xyz.scm (emacs-ebdb): Update to 0.7.1. --- gnu/packages/emacs-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index c7730caf10..eeb92704e7 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -25735,14 +25735,14 @@ (define-public emacs-mastodon (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") -- cgit v1.2.3 From c314465d744700fed29a898cd74e6bc6d2a27e9e Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Fri, 6 Aug 2021 21:00:35 +0200 Subject: gnu: emacs-olivetti: Update to 2.0.0. * gnu/packages/emacs-xyz.scm (emacs-olivetti): Update to 2.0.0. --- gnu/packages/emacs-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index eeb92704e7..2bf2e2d222 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -3748,7 +3748,7 @@ (define-public emacs-keyfreq (define-public emacs-olivetti (package (name "emacs-olivetti") - (version "1.11.4") + (version "2.0.0") (source (origin (method git-fetch) @@ -3757,7 +3757,7 @@ (define-public emacs-olivetti (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") -- cgit v1.2.3 From f96ba8bd2a29a4ccce6c31b69cca773f85877536 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Fri, 6 Aug 2021 21:06:45 +0200 Subject: gnu: giac: Update to 1.7.0-25. * gnu/packages/algebra.scm (giac): Update to 1.7.0-25. --- gnu/packages/algebra.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm index 26c66a7558..d794f9b99c 100644 --- a/gnu/packages/algebra.scm +++ b/gnu/packages/algebra.scm @@ -343,7 +343,7 @@ (define-public cmh (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 @@ (define-public giac "~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) -- cgit v1.2.3 From fd45f8b0c30f5b3b54694c6ed16bd8ccf6fd113a Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sat, 7 Aug 2021 09:05:30 +0200 Subject: gnu: emacs-fountain-mode: Update to 3.5.1. * gnu/packages/emacs-xyz.scm (emacs-fountain-mode): Update to 3.5.1. --- gnu/packages/emacs-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 2bf2e2d222..547522b843 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -4010,7 +4010,7 @@ (define-public emacs-f (define-public emacs-fountain-mode (package (name "emacs-fountain-mode") - (version "3.5.0") + (version "3.5.1") (source (origin (method git-fetch) @@ -4019,7 +4019,7 @@ (define-public emacs-fountain-mode (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") -- cgit v1.2.3 From 9dce1e2398fc9f36afbbbca9b025d54416d810a8 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sat, 7 Aug 2021 09:08:36 +0200 Subject: gnu: emacs-magit: Update to 3.2.1. * gnu/packages/emacs-xyz.scm (emacs-magit): Update to 3.2.1. --- gnu/packages/emacs-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 547522b843..cdbf213b87 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -781,7 +781,7 @@ (define-public emacs-libgit (define-public emacs-magit (package (name "emacs-magit") - (version "3.2.0") + (version "3.2.1") (source (origin (method git-fetch) @@ -790,7 +790,7 @@ (define-public emacs-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 -- cgit v1.2.3 From a496afd8fcde6f486f2190271dedca496ed42b81 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sat, 7 Aug 2021 11:28:33 +0200 Subject: gnu: Add emacs-valign. * gnu/packages/emacs-xyz.scm (emacs-valign): New variable. --- gnu/packages/emacs-xyz.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index cdbf213b87..940dce301b 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -10531,6 +10531,29 @@ (define-public emacs-ryo-modal 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") -- cgit v1.2.3 From eeb38a3a7bdcd1a1bdaf026ecdfad73631a9f5cd Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 6 Aug 2021 20:02:18 +0200 Subject: gnu: dovecot: Update to 2.3.16. * gnu/packages/mail.scm (dovecot): Update to 2.3.16. --- gnu/packages/mail.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 2a3a5834f8..6cd7cc25fd 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -1874,7 +1874,7 @@ (define-public dovecot (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) @@ -1882,7 +1882,7 @@ (define-public dovecot (version-major+minor version) "/" "dovecot-" version ".tar.gz")) (sha256 - (base32 "141manrh54cy8xizr7f8fsa3vdzc2ccfgdz87l9rjylm8mfxvfr1")))) + (base32 "04ngqv5mml5z0i4p7fkchp4xw2awy7x7mq2mim9frnav0m9iv9q3")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) -- cgit v1.2.3 From dacab2ef4bb4f8aee7c90745fd54d7ecf8cd1616 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 6 Aug 2021 20:02:30 +0200 Subject: gnu: dovecot-pigeonhole: Update to 0.5.16. * gnu/packages/mail.scm (dovecot-pigeonhole): Update to 0.5.16. --- gnu/packages/mail.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 6cd7cc25fd..3e162bd28b 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -1943,7 +1943,7 @@ (define-public dovecot-pigeonhole (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) @@ -1951,7 +1951,7 @@ (define-public dovecot-pigeonhole "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 -- cgit v1.2.3 From ae16fa14d3f5f5c6daebfd29a0bb608aa685b6de Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sat, 7 Aug 2021 16:42:57 +0200 Subject: gnu: emacs-elfeed-score: Update to 0.7.10. * gnu/packages/emacs-xyz.scm (emacs-elfeed-score): Update to 0.7.10. --- gnu/packages/emacs-xyz.scm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 940dce301b..172d620adc 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -10151,7 +10151,7 @@ (define-public emacs-elfeed-protocol (define-public emacs-elfeed-score (package (name "emacs-elfeed-score") - (version "0.7.9") + (version "0.7.10") (source (origin (method git-fetch) @@ -10160,8 +10160,7 @@ (define-public emacs-elfeed-score (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))) -- cgit v1.2.3 From 29883f113087edaf24570fbd7f1113df907f1099 Mon Sep 17 00:00:00 2001 From: muradm Date: Sun, 1 Aug 2021 06:14:00 +0300 Subject: services: pam-limits: fix limits.conf location * gnu/services/base.scm: fix limits.conf location This fixes #49771 Signed-off-by: Julien Lepiller --- gnu/services/base.scm | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) (limited to 'gnu') diff --git a/gnu/services/base.scm b/gnu/services/base.scm index e206bea5f0..c784d312b1 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -1383,14 +1383,8 @@ (define pam-limits-service-type (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 -- cgit v1.2.3 From 178cbc30d4e4f4a5d718ae220894544709483ef7 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Sat, 7 Aug 2021 14:06:38 -0400 Subject: gnu: GPSD: Update to 3.23. Fixes , "GPSD time will jump back 1024 weeks at after week=2180 (23-October-2021)". See also . * gnu/packages/gps.scm (gpsd): Update to 3.23. [arguments]: Set TAR=noop in the 'fix-build' phase. --- gnu/packages/gps.scm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/gps.scm b/gnu/packages/gps.scm index 0eb4362858..8ac16c62aa 100644 --- a/gnu/packages/gps.scm +++ b/gnu/packages/gps.scm @@ -222,14 +222,14 @@ (define-public gpxsee (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 @@ (define-public gpsd (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)) -- cgit v1.2.3 From 3832d66cfd25b29d0adac22f6029f96475a7d5f2 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Sat, 7 Aug 2021 14:30:51 -0400 Subject: gnu: lynx: Update to 2.9.0dev.9 [security fixes]. Fixes . * gnu/packages/web-browsers.scm (lynx): Update to 2.9.0dev.9. --- gnu/packages/web-browsers.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm index bd5ed1b5ac..5a928d9b46 100644 --- a/gnu/packages/web-browsers.scm +++ b/gnu/packages/web-browsers.scm @@ -303,7 +303,7 @@ (define-public luakit (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 @@ (define-public lynx "/lynx" version ".tar.bz2")) (sha256 (base32 - "1cjkpwxc1r8x8q73bgh9a4skaph1bwa0anml6f6lvf7lh5zvxw3q")))) + "06jhv8ibfw1xkf8d8zrnkc2aw4d462s77hlp6f6xa6k8awzxvmkg")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) ("perl" ,perl))) -- cgit v1.2.3 From aa816708b278cafd86b11c3f3ddcdf7b9930713e Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Sun, 8 Aug 2021 01:14:16 -0400 Subject: gnu: MPD: Update to 0.22.10. * gnu/packages/mpd.scm (mpd): Update to 0.22.10. --- gnu/packages/mpd.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm index b97abcafc3..09d02c5add 100644 --- a/gnu/packages/mpd.scm +++ b/gnu/packages/mpd.scm @@ -105,7 +105,7 @@ (define-public libmpdclient (define-public mpd (package (name "mpd") - (version "0.22.9") + (version "0.22.10") (source (origin (method url-fetch) (uri @@ -114,7 +114,7 @@ (define-public mpd "/mpd-" version ".tar.xz")) (sha256 (base32 - "0r5w282klk3d9pgsjjr8lnc77cbsxqvvkx39lpa0n962jwr40dzr")))) + "0576z57rgwmnm5djd7rwbc93aikji0n6b3lx1553v74rx4sjbj07")))) (build-system meson-build-system) (arguments `(#:configure-flags '("-Ddocumentation=enabled"))) -- cgit v1.2.3 From 7fb009b12e67049f11b954fd7afa477ee7713bb9 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 8 Aug 2021 11:21:05 +0300 Subject: gnu: ruby-2.7: Update to 2.7.4. * gnu/packages/ruby.scm (ruby-2.7): Update to 2.7.4. [source]: Remove redundant inherited fields. --- gnu/packages/ruby.scm | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 14197e1eab..356ef2be22 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -154,7 +154,7 @@ (define-public ruby (define-public ruby-2.7 (package (inherit ruby) - (version "2.7.2") + (version "2.7.4") (source (origin (method url-fetch) @@ -163,12 +163,7 @@ (define-public ruby-2.7 "/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 -- cgit v1.2.3 From dc9560028b684ede80d27eed20436b4d35cfd879 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 8 Aug 2021 11:21:05 +0300 Subject: gnu: ruby-3.0: Update to 3.0.2. * gnu/packages/ruby.scm (ruby-3.0): Update to 3.0.2. --- gnu/packages/ruby.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 356ef2be22..3d260cfa9c 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -192,7 +192,7 @@ (define-public ruby-2.7 (define-public ruby-3.0 (package (inherit ruby-2.7) - (version "3.0.0") + (version "3.0.2") (source (origin (method url-fetch) @@ -201,7 +201,7 @@ (define-public ruby-3.0 "/ruby-" version ".tar.xz")) (sha256 (base32 - "1cbcixwnr0y8q0lg67wjgplp06kjd6p6hjjh680csv3v0bpsxgv8")))))) + "0h2w2ms4gx2s96v3lzdr3add94bd2qqkhdjzaycmaqhg21rpf3jp")))))) (define-public ruby-2.5 (package -- cgit v1.2.3 From b138d8b19ab3c861537c8571f477876cc86353d4 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 8 Aug 2021 11:21:06 +0300 Subject: gnu: ruby-2.5: Update to 2.5.9. * gnu/packages/ruby.scm (ruby-2.5): Update to 2.5.9. [source]: Remove redundant inherited fields. --- gnu/packages/ruby.scm | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 3d260cfa9c..73e85a4b6b 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -206,7 +206,7 @@ (define-public ruby-3.0 (define-public ruby-2.5 (package (inherit ruby) - (version "2.5.8") + (version "2.5.9") (source (origin (method url-fetch) @@ -215,12 +215,7 @@ (define-public ruby-2.5 "/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 -- cgit v1.2.3 From b0568808ad986d1597e2cd8d15d8f8d420a3438f Mon Sep 17 00:00:00 2001 From: Guillaume Le Vaillant Date: Sun, 8 Aug 2021 11:04:15 +0200 Subject: gnu: txr: Update to 268. * gnu/packages/lisp.scm (txr): Update to 268. [arguments]: Update 'fix-tests' phase. --- gnu/packages/lisp.scm | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index 838742e1b2..6d78a83dcf 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -907,7 +907,7 @@ (define man-for-txr (define-public txr (package (name "txr") - (version "266") + (version "268") (source (origin (method git-fetch) @@ -916,7 +916,7 @@ (define-public 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. @@ -961,10 +961,7 @@ (define-public 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. -- cgit v1.2.3 From 7334535e9d9e6c5275e0a94cddd2f6a495b830d7 Mon Sep 17 00:00:00 2001 From: Guillaume Le Vaillant Date: Sun, 8 Aug 2021 11:09:33 +0200 Subject: gnu: fldigi: Update to 4.1.20. * gnu/packages/radio.scm (fldigi): Update to 4.1.20. --- gnu/packages/radio.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm index f255764b27..b0c5d960ed 100644 --- a/gnu/packages/radio.scm +++ b/gnu/packages/radio.scm @@ -875,7 +875,7 @@ (define-public gqrx (define-public fldigi (package (name "fldigi") - (version "4.1.19") + (version "4.1.20") (source (origin (method git-fetch) @@ -884,7 +884,7 @@ (define-public fldigi (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) -- cgit v1.2.3 From a88cf96480e85a3df2f92e0a3ae76ea9368674f6 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 8 Aug 2021 13:52:38 +0300 Subject: gnu: python-networkx: Update to 2.6.2. * gnu/packages/python-xyz.scm (python-networkx): Update to 2.6.2. --- gnu/packages/python-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index ddcc96dbe2..295d158bd3 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -8584,13 +8584,13 @@ (define-public python2-netifaces (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 -- cgit v1.2.3 From 5db89b351061b79496a1b7fc93238bfb54b85c4d Mon Sep 17 00:00:00 2001 From: Danny Milosavljevic Date: Sun, 8 Aug 2021 14:37:59 +0200 Subject: gnu: rust-svd-parser: Update to 0.10.2. * gnu/packages/crates-io.scm (rust-svd-parser): Update to 0.10.2. [arguments]<#:cargo-inputs]: Remove rust-either. Add rust-once-cell, rust-rayon, rust-regex. --- gnu/packages/crates-io.scm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 2bbeb35c99..f19906d6a9 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -56627,7 +56627,7 @@ (define-public rust-xmltree-0.8 (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) @@ -56636,12 +56636,14 @@ (define-public rust-svd-parser-0.9 (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)) -- cgit v1.2.3 From 995f7406288b2ad39c12300bc51dca4b884657fb Mon Sep 17 00:00:00 2001 From: Danny Milosavljevic Date: Sun, 8 Aug 2021 14:39:25 +0200 Subject: gnu: rust-svd-parser: Update home-page. * gnu/packages/crates-io.scm (rust-svd-parser)[home-page]: Modify. --- gnu/packages/crates-io.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index f19906d6a9..c4c939f68f 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -56649,7 +56649,7 @@ (define-public rust-svd-parser-0.9 ("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") -- cgit v1.2.3 From f28128626cde46a9c5884cb7155de802827453d2 Mon Sep 17 00:00:00 2001 From: Danny Milosavljevic Date: Sun, 8 Aug 2021 14:40:20 +0200 Subject: gnu: Add rust-clap-conf. * gnu/packages/crates-io.scm (rust-clap-conf-0.1): New variable. --- gnu/packages/crates-io.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index c4c939f68f..d80e6e58d7 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -56909,6 +56909,35 @@ (define-public skim-0.7 (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") -- cgit v1.2.3 From 3e48d8c4819514e4c6adb1467d94ef1de6edfad0 Mon Sep 17 00:00:00 2001 From: Danny Milosavljevic Date: Sun, 8 Aug 2021 14:44:20 +0200 Subject: gnu: svd2rust: Update to 0.19.0. * gnu/packages/crates-io.scm (svd2rust): Update to 0.19.0. [arguments]<#:cargo-inputs]: Add rust-anyhow, rust-clap-conf, rust-thiserror. Remove rust-error-chain. --- gnu/packages/crates-io.scm | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index d80e6e58d7..24cc772ba7 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -56941,7 +56941,7 @@ (define-public rust-clap-conf-0.1 (define-public svd2rust (package (name "svd2rust") - (version "0.17.0") + (version "0.19.0") (source (origin (method url-fetch) @@ -56950,20 +56950,22 @@ (define-public svd2rust (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") -- cgit v1.2.3 From f8b5286d4a685bb3464a31fc6f8acf2f36ed525b Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 8 Aug 2021 16:38:33 +0300 Subject: gnu: stockfish: Update aarch64-linux build target. * gnu/packages/games.scm (stockfish)[arguments]: Build for armv8 on aarch64-linux. --- gnu/packages/games.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 468b0d58b1..b3a6d7bb4d 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -12065,7 +12065,7 @@ (define-public stockfish ,(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")))) -- cgit v1.2.3 From a75cc5f463eb5bfc003cbb4b22bbe86f80f01299 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 8 Aug 2021 16:48:18 +0300 Subject: gnu: gcc-11: Update to 11.2.0. * gnu/packages/gcc.scm (gcc-11): Update to 11.2.0. --- gnu/packages/gcc.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index 2fe30b1321..493ff2659f 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -599,14 +599,14 @@ (define-public gcc-10 (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")))))) -- cgit v1.2.3 From df90cb1d5c82cc83a305f6323f867f14e30ce240 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Thu, 5 Aug 2021 15:33:47 +0200 Subject: gnu: Add rocm-cmake. * gnu/packages/rocm.scm (%rocm-version, rocm-cmake): New variables. --- gnu/packages/rocm.scm | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 gnu/packages/rocm.scm (limited to 'gnu') diff --git a/gnu/packages/rocm.scm b/gnu/packages/rocm.scm new file mode 100644 index 0000000000..b04eb8050e --- /dev/null +++ b/gnu/packages/rocm.scm @@ -0,0 +1,57 @@ +;;; +;;; Copyright © 2021 Lars-Dominik Braun +;;; +;;; 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 . + +(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))) -- cgit v1.2.3 From c5ee2cf72a72624eff4dfbdf4670851c6075191e Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Fri, 6 Aug 2021 08:18:26 +0200 Subject: gnu: Add llvm-for-rocm. * gnu/packages/rocm.scm (llvm-for-rocm): New variable. * gnu/packages/patches/llvm-roc-3.0.0-add_libraries.patch, gnu/packages/patches/llvm-roc-4.0.0-remove-isystem-usr-include.patch, gnu/packages/patches/llvm-roc-4.2.0-add_Object.patch: New files. * gnu/local.mk (dist_patch_DATA): Add them. --- gnu/local.mk | 3 ++ .../patches/llvm-roc-3.0.0-add_libraries.patch | 22 ++++++++++++++ ...llvm-roc-4.0.0-remove-isystem-usr-include.patch | 29 ++++++++++++++++++ .../patches/llvm-roc-4.2.0-add_Object.patch | 13 ++++++++ gnu/packages/rocm.scm | 35 ++++++++++++++++++++++ 5 files changed, 102 insertions(+) create mode 100644 gnu/packages/patches/llvm-roc-3.0.0-add_libraries.patch create mode 100644 gnu/packages/patches/llvm-roc-4.0.0-remove-isystem-usr-include.patch create mode 100644 gnu/packages/patches/llvm-roc-4.2.0-add_Object.patch (limited to 'gnu') diff --git a/gnu/local.mk b/gnu/local.mk index caa9090bbd..59dc7b01b5 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1416,6 +1416,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 \ 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/rocm.scm b/gnu/packages/rocm.scm index b04eb8050e..17685c7bcb 100644 --- a/gnu/packages/rocm.scm +++ b/gnu/packages/rocm.scm @@ -55,3 +55,38 @@ (define-public rocm-cmake (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="))))))) -- cgit v1.2.3 From 884334afecd8094982f1bf4fee568fd60e770713 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Fri, 6 Aug 2021 08:19:34 +0200 Subject: gnu: Add rocm-device-libs. * gnu/packages/rocm.scm (rocm-device-libs): New variable. --- gnu/packages/rocm.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/rocm.scm b/gnu/packages/rocm.scm index 17685c7bcb..48d709969e 100644 --- a/gnu/packages/rocm.scm +++ b/gnu/packages/rocm.scm @@ -90,3 +90,28 @@ (define-public llvm-for-rocm "-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))) -- cgit v1.2.3 From 9c083e706329909d41ab13d0721e726031ab78c7 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Fri, 6 Aug 2021 08:21:20 +0200 Subject: gnu: Add rocm-comgr. * gnu/packages/rocm.scm (rocm-comgr): New variable. * gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. --- gnu/local.mk | 1 + .../patches/rocm-comgr-3.1.0-dependencies.patch | 52 ++++++++++++++++++++++ gnu/packages/rocm.scm | 32 +++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch (limited to 'gnu') diff --git a/gnu/local.mk b/gnu/local.mk index 59dc7b01b5..d545db39dd 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1701,6 +1701,7 @@ dist_patch_DATA = \ %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/ruby-sanitize-system-libxml.patch \ %D%/packages/patches/rust-1.19-mrustc.patch \ %D%/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch \ 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 +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/rocm.scm b/gnu/packages/rocm.scm index 48d709969e..5ecc741d11 100644 --- a/gnu/packages/rocm.scm +++ b/gnu/packages/rocm.scm @@ -115,3 +115,35 @@ (define-public rocm-device-libs (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))) -- cgit v1.2.3 From dc5755c41133bb303f775e2143a0919240f4562c Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Fri, 6 Aug 2021 08:23:53 +0200 Subject: gnu: Add roct-thunk-interface. * gnu/packages/rocm.scm (roct-thunk-interface): New variable. --- gnu/packages/rocm.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/rocm.scm b/gnu/packages/rocm.scm index 5ecc741d11..4ed4d95d60 100644 --- a/gnu/packages/rocm.scm +++ b/gnu/packages/rocm.scm @@ -147,3 +147,25 @@ (define-public rocm-comgr (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))) -- cgit v1.2.3 From a85eff8171966ecba5b6c5bb66d7ff1f9fda7fb7 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Fri, 6 Aug 2021 08:24:44 +0200 Subject: gnu: Add rocr-runtime. * gnu/packages/rocm.scm (rocr-runtime): New variable. --- gnu/packages/rocm.scm | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/rocm.scm b/gnu/packages/rocm.scm index 4ed4d95d60..2155ea2e49 100644 --- a/gnu/packages/rocm.scm +++ b/gnu/packages/rocm.scm @@ -169,3 +169,42 @@ (define-public roct-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))) -- cgit v1.2.3 From 7221722dd53e466846ba6467373f7a71b28091e9 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Fri, 6 Aug 2021 08:25:38 +0200 Subject: gnu: Add rocclr. * gnu/packages/rocm.scm (rocclr): New variable. --- gnu/packages/rocm.scm | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/rocm.scm b/gnu/packages/rocm.scm index 2155ea2e49..631d8336c0 100644 --- a/gnu/packages/rocm.scm +++ b/gnu/packages/rocm.scm @@ -208,3 +208,48 @@ (define-public rocr-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))) -- cgit v1.2.3 From c0f10a5dd4be70a990223b707be1067f6982c4ae Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Fri, 6 Aug 2021 08:27:32 +0200 Subject: gnu: Add rocm-opencl-runtime. * gnu/packages/rocm.scm (rocm-opencl-runtime): New variable. * gnu/packages/patches/rocm-opencl-runtime-3.10.0-add-rocclr-include-directories.patch, gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch, gnu/packages/patches/rocm-opencl-runtime-4.3-nocltrace.patch, gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch: New files. * gnu/local.mk (dist_patch_DATA): Add them. --- gnu/local.mk | 4 ++ ...ime-3.10.0-add-rocclr-include-directories.patch | 14 +++++ .../patches/rocm-opencl-runtime-4.3-noclinfo.patch | 28 ++++++++++ .../rocm-opencl-runtime-4.3-nocltrace.patch | 25 +++++++++ .../patches/rocm-opencl-runtime-4.3-noopencl.patch | 63 ++++++++++++++++++++++ gnu/packages/rocm.scm | 51 ++++++++++++++++++ 6 files changed, 185 insertions(+) create mode 100644 gnu/packages/patches/rocm-opencl-runtime-3.10.0-add-rocclr-include-directories.patch create mode 100644 gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch create mode 100644 gnu/packages/patches/rocm-opencl-runtime-4.3-nocltrace.patch create mode 100644 gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch (limited to 'gnu') diff --git a/gnu/local.mk b/gnu/local.mk index d545db39dd..3f09b167b1 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1702,6 +1702,10 @@ dist_patch_DATA = \ %D%/packages/patches/rnp-disable-ruby-rnp-tests.patch \ %D%/packages/patches/rnp-unbundle-googletest.patch \ %D%/packages/patches/rocm-comgr-3.1.0-dependencies.patch \ + %D%/packages/patches/rocm-opencl-runtime-3.10.0-add-rocclr-include-directories.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-1.19-mrustc.patch \ %D%/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch \ diff --git a/gnu/packages/patches/rocm-opencl-runtime-3.10.0-add-rocclr-include-directories.patch b/gnu/packages/patches/rocm-opencl-runtime-3.10.0-add-rocclr-include-directories.patch new file mode 100644 index 0000000000..d81bb0747f --- /dev/null +++ b/gnu/packages/patches/rocm-opencl-runtime-3.10.0-add-rocclr-include-directories.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 $ +- DESTINATION bin +- COMPONENT MAIN) ++#install(PROGRAMS $ ++# DESTINATION bin ++# COMPONENT MAIN) + install(PROGRAMS $ + 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 $ + # DESTINATION bin + # COMPONENT MAIN) +-install(PROGRAMS $ +- DESTINATION lib +- COMPONENT MAIN) + install(PROGRAMS $ + 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 $ + DESTINATION lib + COMPONENT MAIN) +-install(PROGRAMS $ +- DESTINATION lib +- COMPONENT MAIN) +-install(PROGRAMS $ +- 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 $ +- 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/rocm.scm b/gnu/packages/rocm.scm index 631d8336c0..07e395c9f0 100644 --- a/gnu/packages/rocm.scm +++ b/gnu/packages/rocm.scm @@ -253,3 +253,54 @@ (define-public rocclr 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) + (source (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")) + (patches + (search-patches + "rocm-opencl-runtime-3.10.0-add-rocclr-include-directories.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 `()) + (home-page "https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime") + (synopsis "ROCm OpenCL Runtime") + (description "OpenCL 2.0 compatible language runtime, supporting offline +and in-process/in-memory compilation.") + (license license:ncsa))) -- cgit v1.2.3 From 91ce17a53236578f8055a2588460047741983925 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Fri, 6 Aug 2021 08:29:12 +0200 Subject: gnu: Add rocminfo. * gnu/packages/rocm.scm (rocminfo): New variable. --- gnu/packages/rocm.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/rocm.scm b/gnu/packages/rocm.scm index 07e395c9f0..0cf5a34b46 100644 --- a/gnu/packages/rocm.scm +++ b/gnu/packages/rocm.scm @@ -304,3 +304,24 @@ (define-public 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. + (inputs `(("rocr-runtime" ,rocr-runtime))) + (home-page "https://github.com/RadeonOpenCompute/rocminfo") + (synopsis "ROCm Application for Reporting System Info") + (description #f) + (license license:ncsa))) -- cgit v1.2.3 From 339762235d6eb323513aeff34149f3ab29b27227 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Fri, 6 Aug 2021 08:29:39 +0200 Subject: gnu: Add rocm-bandwidth-test. * gnu/packages/rocm.scm (rocm-bandwidth-test): New variable. --- gnu/packages/rocm.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/rocm.scm b/gnu/packages/rocm.scm index 0cf5a34b46..d6bd584146 100644 --- a/gnu/packages/rocm.scm +++ b/gnu/packages/rocm.scm @@ -325,3 +325,29 @@ (define-public rocminfo (synopsis "ROCm Application for Reporting System Info") (description #f) (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))) + -- cgit v1.2.3 From e81cf4e79a6e297db0ae2a9c39eab495e7e204f0 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Fri, 6 Aug 2021 08:30:13 +0200 Subject: gnu: darktable: Add compatibility for ROCm. darktable has a few tools, which can use OpenCL, not just the main binary. Instead of wrapping it, patch the search path. ROCm also fails to build OpenCL kernels with just the inline keyword. Apply upstream fix. * gnu/packages/photo.scm (darktable) [#:phases]: Add new phases, remove LD_LIBRARY_PATH from wrap-binary. --- gnu/packages/photo.scm | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm index 3ef0fbf7f5..bf51e6885f 100644 --- a/gnu/packages/photo.scm +++ b/gnu/packages/photo.scm @@ -486,6 +486,24 @@ (define-public darktable "-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 @@ (define-public darktable ;; 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) -- cgit v1.2.3 From e473fe1056a8b8089715dff46050355f777ef5ed Mon Sep 17 00:00:00 2001 From: Xinglu Chen Date: Mon, 21 Jun 2021 12:01:49 +0200 Subject: gnu: ocaml-bisect-ppx: Update to 2.6.1. * gnu/packages/ocaml.scm (ocaml-bisect-ppx): Update to 2.6.1. [propagated-inputs]: Adjust accordingly. [arguments]: Remove unnecessary phase; disable tests. Signed-off-by: Julien Lepiller --- gnu/packages/ocaml.scm | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index bb42003de2..f9380ed228 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -6536,7 +6536,7 @@ (define-public ocaml-tyxml (define-public ocaml-bisect-ppx (package (name "ocaml-bisect-ppx") - (version "1.4.2") + (version "2.6.1") (source (origin (method git-fetch) @@ -6546,24 +6546,14 @@ (define-public ocaml-bisect-ppx (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 -- cgit v1.2.3 From 882976d44495910120bbd3514a39f3d75a38176b Mon Sep 17 00:00:00 2001 From: Xinglu Chen Date: Mon, 21 Jun 2021 12:01:56 +0200 Subject: gnu: Add ocaml-uucd. * gnu/packages/ocaml.scm (ocaml-uucd): New variable. Signed-off-by: Julien Lepiller --- gnu/packages/ocaml.scm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index f9380ed228..022531a3a4 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -6958,6 +6958,39 @@ (define-public ocaml-reactivedata 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-bigstringaf (package (name "ocaml-bigstringaf") -- cgit v1.2.3 From d31434c4739c00904cc05a7311fe28ddf5ab1dde Mon Sep 17 00:00:00 2001 From: Xinglu Chen Date: Mon, 21 Jun 2021 12:01:58 +0200 Subject: gnu: Add ocaml-uucp. * gnu/packages/ocaml.scm (ocaml-uucp): New variable. Signed-off-by: Julien Lepiller --- gnu/packages/ocaml.scm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index 022531a3a4..cf56c0c25a 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -6991,6 +6991,38 @@ (define-public ocaml-uucd 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-bigstringaf (package (name "ocaml-bigstringaf") -- cgit v1.2.3 From 2787bcbd1bbfc01516d28914edf1697aa3740237 Mon Sep 17 00:00:00 2001 From: Xinglu Chen Date: Mon, 21 Jun 2021 12:01:59 +0200 Subject: gnu: Add ocaml-uuseg. * gnu/packages/ocaml.scm (ocaml-uuseg): New variable. Signed-off-by: Julien Lepiller --- gnu/packages/ocaml.scm | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index cf56c0c25a..2e879eb40d 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -7023,6 +7023,45 @@ (define-public ocaml-uucp 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-bigstringaf (package (name "ocaml-bigstringaf") -- cgit v1.2.3 From 03f05b475badce7440448e6b1bc60e2e51e885b6 Mon Sep 17 00:00:00 2001 From: Xinglu Chen Date: Mon, 21 Jun 2021 12:02:01 +0200 Subject: gnu: Add ocaml-fix. * gnu/packages/ocaml.scm (ocaml-fix): New variable. Signed-off-by: Julien Lepiller --- gnu/packages/ocaml.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index 2e879eb40d..92c00801a4 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -7062,6 +7062,30 @@ (define-public ocaml-uuseg 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-bigstringaf (package (name "ocaml-bigstringaf") -- cgit v1.2.3 From 092b65e1aa7dca24f89fa8bccd0eb4e5dc07b346 Mon Sep 17 00:00:00 2001 From: Xinglu Chen Date: Mon, 21 Jun 2021 12:02:03 +0200 Subject: gnu: Add ocaml-dune-build-info. * gnu/packages/ocaml.scm (ocaml-dune-build-info): New variable. Signed-off-by: Julien Lepiller --- gnu/packages/ocaml.scm | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index 92c00801a4..76fb53db01 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -7086,6 +7086,24 @@ (define-public ocaml-fix 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 ocaml-bigstringaf (package (name "ocaml-bigstringaf") -- cgit v1.2.3 From e83fe81be4677aca1f42f0df9c8d2606400a4619 Mon Sep 17 00:00:00 2001 From: Xinglu Chen Date: Mon, 21 Jun 2021 12:02:04 +0200 Subject: gnu: Add ocamlformat. * gnu/packages/ocaml.scm (ocamlformat): New variable. Signed-off-by: Julien Lepiller --- gnu/packages/ocaml.scm | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index 76fb53db01..112751ddec 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -7104,6 +7104,50 @@ (define-public ocaml-dune-build-info 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") -- cgit v1.2.3 From 3f09c48452f501ccde4b6169776ebfaafc5cb0d5 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Sun, 8 Aug 2021 15:21:46 -0400 Subject: gnu: linux-libre: Update to 5.13.9. * gnu/packages/linux.scm (linux-libre-5.13-version): Update to 5.13.9. (linux-libre-5.13-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index fed4ad2d14..c0cc0e53a8 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -356,7 +356,7 @@ (define (%upstream-linux-source version hash) ;; 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.8") +(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 @@ (define deblob-scripts-5.13 (base32 "153jf5l5x4438zgxwggaky2ahjlfl48j438vhpzks6h77lzc51a5"))) (define-public linux-libre-5.13-pristine-source (let ((version linux-libre-5.13-version) - (hash (base32 "0a54r71mcyqvq7c8kff817vh6zfj0bdzmp6ql4az84wq9nwc526h"))) + (hash (base32 "16hm6sb64f1hlr0qmf2w81zv55s6flj1x8jr2q326d9ny30przkj"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.13))) -- cgit v1.2.3 From 51c43e24869e28a48609d92417d4270b992daa7d Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Sun, 8 Aug 2021 15:22:07 -0400 Subject: gnu: linux-libre 5.10: Update to 5.10.57. * gnu/packages/linux.scm (linux-libre-5.10-version): Update to 5.10.57. (linux-libre-5.10-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index c0cc0e53a8..ac45231fcf 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -372,7 +372,7 @@ (define-public linux-libre-5.13-pristine-source ;; The "longterm" kernels — the older releases with long-term upstream support. ;; Here are the support timelines: ;; -(define-public linux-libre-5.10-version "5.10.56") +(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,7 +380,7 @@ (define deblob-scripts-5.10 (base32 "0c9x07gplzajm0h5if3fpw2rvfb7psw3yp7i2n6ws7ggq1dvmki2"))) (define-public linux-libre-5.10-pristine-source (let ((version linux-libre-5.10-version) - (hash (base32 "0szcj0lbs33wmphxzvcc8jzfdvzncgxy2q8b1s4l9yjhkighssjd"))) + (hash (base32 "0b8lwfjlyd6j0csk71v07bxb5lrrzp545g1wv6kdk0kzq6maxfq0"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.10))) -- cgit v1.2.3 From 7818877d2708460625cb6a6c1c230d83013ea99b Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Sun, 8 Aug 2021 15:22:22 -0400 Subject: gnu: linux-libre 5.4: Update to 5.4.139. * gnu/packages/linux.scm (linux-libre-5.4-version): Update to 5.4.139. (linux-libre-5.4-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index ac45231fcf..f865c56689 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -385,7 +385,7 @@ (define-public linux-libre-5.10-pristine-source (%upstream-linux-source version hash) deblob-scripts-5.10))) -(define-public linux-libre-5.4-version "5.4.138") +(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,7 +393,7 @@ (define deblob-scripts-5.4 (base32 "1xghbbnaisjd0k1klbyn1p7r6r4x5a1bpmkm56a3gh2zvw4s7mj8"))) (define-public linux-libre-5.4-pristine-source (let ((version linux-libre-5.4-version) - (hash (base32 "0mw6k9zrcmv1j4b3han5c0q8xbh38bka2wkkbl1y3ralg9r5ffd4"))) + (hash (base32 "0zx3hj8fc0qpdmkn56cna5438wjxmj42a69msbkxlg4mnz6d0w84"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.4))) -- cgit v1.2.3 From 5e21e3947cd7059a92037c557d2146906e17d7da Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Sun, 8 Aug 2021 15:22:59 -0400 Subject: gnu: linux-libre 4.19: Update to 4.19.202. * gnu/packages/linux.scm (linux-libre-4.19-version): Update to 4.19.202. (linux-libre-4.19-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index f865c56689..b8224b50af 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -398,7 +398,7 @@ (define-public linux-libre-5.4-pristine-source (%upstream-linux-source version hash) deblob-scripts-5.4))) -(define-public linux-libre-4.19-version "4.19.201") +(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,7 +406,7 @@ (define deblob-scripts-4.19 (base32 "1jiaw0as1ippkrjdpd52657w5mz9qczg3y2hlra7m9k0xawwiqlf"))) (define-public linux-libre-4.19-pristine-source (let ((version linux-libre-4.19-version) - (hash (base32 "1l6ww5igjv6r2zl1zyq7mzsmpc884p7hpds7l9jfwil232kxydc2"))) + (hash (base32 "09ya7n0il8fipp8ksb8cyl894ihny2r75g70vbhclbv20q2pv0pj"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.19))) -- cgit v1.2.3 From 9dfb17520ab48217022875be1b41fa2c457c47df Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Sun, 8 Aug 2021 15:23:15 -0400 Subject: gnu: linux-libre 4.14: Update to 4.14.243. * gnu/packages/linux.scm (linux-libre-4.14-version): Update to 4.14.243. (linux-libre-4.14-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index b8224b50af..f666df2a85 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -411,7 +411,7 @@ (define-public linux-libre-4.19-pristine-source (%upstream-linux-source version hash) deblob-scripts-4.19))) -(define-public linux-libre-4.14-version "4.14.242") +(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,7 +419,7 @@ (define deblob-scripts-4.14 (base32 "1qij18inijj6c3ma8hv98yjagnzxdxyn134da9fd23ky8q6hbvky"))) (define-public linux-libre-4.14-pristine-source (let ((version linux-libre-4.14-version) - (hash (base32 "0p0s9hd8ks25a2fndzw36rqflw3xbcb3cq8sldlfj8jdli11qg9y"))) + (hash (base32 "0wdk93qv91pa6bd3ff1gv7manhkzh190c5blcpl14cbh9m2ms8vz"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.14))) -- cgit v1.2.3 From 658e173dc92205a95b6b6fe481a1498bff0b9c8b Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Sun, 8 Aug 2021 15:23:28 -0400 Subject: gnu: linux-libre 4.9: Update to 4.9.279. * gnu/packages/linux.scm (linux-libre-4.9-version): Update to 4.9.279. (linux-libre-4.9-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index f666df2a85..d5b07c73d6 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -424,7 +424,7 @@ (define-public linux-libre-4.14-pristine-source (%upstream-linux-source version hash) deblob-scripts-4.14))) -(define-public linux-libre-4.9-version "4.9.278") +(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,7 +432,7 @@ (define deblob-scripts-4.9 (base32 "0fxajshb75siq39lj5h8xvhdj8lcmddkslwlyj65rhlwk6g2r4b2"))) (define-public linux-libre-4.9-pristine-source (let ((version linux-libre-4.9-version) - (hash (base32 "04byav6cbga3jqkppygm5zj73d9v44xyvx6hbrhwr22lsk282dz7"))) + (hash (base32 "01rf3xh2jcz6l2h79g0m02i8f9q51j64wvgvzi8lmq0gx9yvbv91"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.9))) -- cgit v1.2.3 From 2bc17f60885825b2602f64e309f01aa75758ff9b Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Sun, 8 Aug 2021 15:23:40 -0400 Subject: gnu: linux-libre 4.4: Update to 4.4.279. * gnu/packages/linux.scm (linux-libre-4.4-version): Update to 4.4.279. (linux-libre-4.4-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index d5b07c73d6..7506d79bb4 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -437,7 +437,7 @@ (define-public linux-libre-4.9-pristine-source (%upstream-linux-source version hash) deblob-scripts-4.9))) -(define-public linux-libre-4.4-version "4.4.278") +(define-public linux-libre-4.4-version "4.4.279") (define deblob-scripts-4.4 (linux-libre-deblob-scripts linux-libre-4.4-version @@ -445,7 +445,7 @@ (define deblob-scripts-4.4 (base32 "0hhin1jpfkd6nwrb6xqxjzl3hdxy4pn8a15hy2d3d83yw6pflbsf"))) (define-public linux-libre-4.4-pristine-source (let ((version linux-libre-4.4-version) - (hash (base32 "1r2sbxn8finzcg72ds5dyh4578vv2s5zwylq3b3xyw3hzr4swn4f"))) + (hash (base32 "1d3cfhs7ixk0dhh1mc1z6y73i816a2wl16zhayl1ssp69d4ndpsb"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.4))) -- cgit v1.2.3 From 4d28393f2d16680ec307cf2c65c66411069ac26e Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Sun, 8 Aug 2021 17:00:15 -0400 Subject: gnu: libaom: Update to 3.1.2. * gnu/packages/video.scm (libaom): Update to 3.1.2. --- gnu/packages/video.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 399327741f..72b6a86101 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -777,7 +777,7 @@ (define-public liba52 (define-public libaom (package (name "libaom") - (version "3.1.1") + (version "3.1.2") (source (origin (method git-fetch) (uri (git-reference @@ -786,7 +786,7 @@ (define-public libaom (file-name (git-file-name name version)) (sha256 (base32 - "11fy2xw35ladkjcz71samhcpqlqr3y0n1n17nk90i13aydrll66f")))) + "1c7yrhb56qj5c3lz54n1f9cbrvdr32g2yrrdiiy72sib8ycq9hz2")))) (build-system cmake-build-system) (native-inputs `(("perl" ,perl) -- cgit v1.2.3 From 94b437c6f430347d3c5ee509e5e4395ff48a73f1 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Sun, 8 Aug 2021 17:00:32 -0400 Subject: gnu: dav1d: Update to 0.9.1. * gnu/packages/video.scm (dav1d): Update to 0.9.1. --- gnu/packages/video.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 72b6a86101..57a6dc1c19 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -4752,7 +4752,7 @@ (define-public shotcut (define-public dav1d (package (name "dav1d") - (version "0.9.0") + (version "0.9.1") (source (origin (method git-fetch) @@ -4761,7 +4761,7 @@ (define-public dav1d (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") -- cgit v1.2.3 From f476876e5ce0e7141570cfebe13fee9703a49e38 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Sun, 8 Aug 2021 21:10:16 -0400 Subject: gnu: IlmBase and OpenEXR: Update to 2.5.7. * gnu/packages/graphics.scm (ilmbase): Update to 2.5.7. --- gnu/packages/graphics.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm index 70b0c18793..38feb27c87 100644 --- a/gnu/packages/graphics.scm +++ b/gnu/packages/graphics.scm @@ -799,7 +799,7 @@ (define-public cgal (define-public ilmbase (package (name "ilmbase") - (version "2.5.5") + (version "2.5.7") (source (origin (method git-fetch) (uri (git-reference @@ -808,7 +808,7 @@ (define-public ilmbase (file-name (git-file-name "ilmbase" version)) (sha256 (base32 - "0mjzb3fd8b9pcqmrgy5cdsmvqd70hmlvjnfypi66v59h3fhrmgd8")) + "1vja0rbilcd1wn184w8nbcmck00n7bfwlddwiaxw8dhj64nx4468")) (patches (search-patches "ilmbase-fix-tests.patch")))) (build-system cmake-build-system) (arguments -- cgit v1.2.3 From db7d197b30db77cffbbe8877e46f8d8173ab21da Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Mon, 9 Aug 2021 09:07:44 +0200 Subject: gnu: rocminfo: Static references to lsmod and grep. Fixes usage in a pure environment. * gnu/packages/rocm.scm (rocminfo) [arguments]: Add #:phases. --- gnu/packages/rocm.scm | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/rocm.scm b/gnu/packages/rocm.scm index d6bd584146..63306cd671 100644 --- a/gnu/packages/rocm.scm +++ b/gnu/packages/rocm.scm @@ -319,8 +319,19 @@ (define-public rocminfo (base32 "0pcm308vwkjrwnrk507iya20mkil8j0vx699w9jk2gas4n4jvkcz")))) (build-system cmake-build-system) - (arguments `(#:tests? #f)) ; No tests. - (inputs `(("rocr-runtime" ,rocr-runtime))) + (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 #f) -- cgit v1.2.3 From 0a379de3249d5e9ff66fb404f7e5aa8ce2cb3d24 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Mon, 9 Aug 2021 09:08:47 +0200 Subject: gnu: rocminfo: Add description. * gnu/packages/rocm.scm (rocminfo) [description]: Add it. --- gnu/packages/rocm.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/rocm.scm b/gnu/packages/rocm.scm index 63306cd671..fe85eaa642 100644 --- a/gnu/packages/rocm.scm +++ b/gnu/packages/rocm.scm @@ -334,7 +334,8 @@ (define-public rocminfo ("kmod" ,kmod))) (home-page "https://github.com/RadeonOpenCompute/rocminfo") (synopsis "ROCm Application for Reporting System Info") - (description #f) + (description "List @acronym{HSA,Heterogeneous System Architecture} Agents +available to ROCm and show their properties.") (license license:ncsa))) (define-public rocm-bandwidth-test -- cgit v1.2.3 From d7ffc535c52f49177a8e5553569cdb1e321b5bc6 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Mon, 9 Aug 2021 09:53:09 +0300 Subject: gnu: python-coveralls: Update to 3.2.0. * gnu/packages/python-check.scm (python-coveralls): Update to 3.2.0. --- gnu/packages/python-check.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm index 2a4f50ad46..038ca177af 100644 --- a/gnu/packages/python-check.scm +++ b/gnu/packages/python-check.scm @@ -116,7 +116,7 @@ (define-public python-testfixtures (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 @@ (define-public python-coveralls (file-name (git-file-name name version)) (sha256 (base32 - "1rpdv7rhs4xy6q4s63krrfhwihli9vla0qsw64vls0naail9yjn3")))) + "1915ab77nfb1rfw4i2ps0zy19wpf20lwxn81qxxbwyd2gy7m0fn8")))) (build-system python-build-system) (arguments '(#:phases (modify-phases %standard-phases -- cgit v1.2.3 From 30289f4d4638452520f52c1a36240220d0d940ff Mon Sep 17 00:00:00 2001 From: Milkey Mouse Date: Sun, 8 Aug 2021 22:15:40 -0700 Subject: gnu: electrum: Update to 4.1.5. * gnu/packages/finance.scm (electrum): Update to 4.1.5. Signed-off-by: Efraim Flashner --- gnu/packages/finance.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm index 76bf0dc28d..db02232d3c 100644 --- a/gnu/packages/finance.scm +++ b/gnu/packages/finance.scm @@ -501,7 +501,7 @@ (define-public geierlein (define-public electrum (package (name "electrum") - (version "4.0.9") + (version "4.1.5") (source (origin (method url-fetch) @@ -509,7 +509,7 @@ (define-public electrum version "/Electrum-" version ".tar.gz")) (sha256 - (base32 "1fvjiagi78f32nxgr2rx8jas8hxfvpp1c8fpfcalvykmlhdc2gva")) + (base32 "188r4zji985z8pm9b942xhmvv174yndk6jxagxl7ljk03wl2wiwi")) (modules '((guix build utils))) (snippet '(begin -- cgit v1.2.3 From f4bf6165deec25cf45151cb60c1ee71f8506cfd4 Mon Sep 17 00:00:00 2001 From: Xinglu Chen Date: Mon, 9 Aug 2021 19:48:09 +0200 Subject: gnu: fetchmail: Update to 6.4.21 [fixes CVE-2021-36386]. * gnu/packages/mail.scm (fetchmail): Update to 6.4.21. Signed-off-by: Leo Famulari --- gnu/packages/mail.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 3e162bd28b..13761fa4b3 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -498,7 +498,7 @@ (define-public nullmailer (define-public fetchmail (package (name "fetchmail") - (version "6.4.20") + (version "6.4.21") (source (origin (method url-fetch) @@ -506,7 +506,7 @@ (define-public fetchmail (version-major+minor version) "/" "fetchmail-" version ".tar.xz")) (sha256 - (base32 "0xk171sbxcwjh1ibpipryw5sv4sy7jjfvhn5n373j04g5sp428f8")))) + (base32 "07cxr5137hvrk8jfgn4wd6sq9361c3d40w8krnjxm8fpmwf9qiba")))) (build-system gnu-build-system) (inputs `(("openssl" ,openssl))) -- cgit v1.2.3 From 1fa4485fb033874fd56b025e8ec998aebc245fe5 Mon Sep 17 00:00:00 2001 From: Mike Rosset Date: Mon, 9 Aug 2021 09:28:02 -0700 Subject: gnu: python-aiorpcx: Update to 0.18.7. * gnu/packages/python-web.scm (python-aiorpcx): Update to 0.18.7. Signed-off-by: Efraim Flashner --- gnu/packages/python-web.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index 5df134ddff..f27b9121f9 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -284,14 +284,14 @@ (define-public python-aiodns (define-public python-aiorpcx (package (name "python-aiorpcx") - (version "0.18.3") + (version "0.18.7") (source (origin (method url-fetch) (uri (pypi-uri "aiorpcX" version)) (sha256 (base32 - "0k545hc7wl6sh1svydzbv6x7sx5pig2pqkl3yxs9riwmvzawx9xp")))) + "1rswrspv27x33xa5bnhrkjqzhv0sknv5kd7pl1vidw9d2z4rx2l0")))) (build-system python-build-system) (propagated-inputs `(("python-attrs" ,python-attrs))) -- cgit v1.2.3 From edbf8272c0fb86729254a018b49f7313c2fcf55c Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Tue, 10 Aug 2021 16:32:53 +0300 Subject: gnu: gcompris-qt: Update to 1.1. * gnu/packages/education.scm (gcompris-qt): Update to 1.1. --- gnu/packages/education.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm index 2f38598cab..955ab929ba 100644 --- a/gnu/packages/education.scm +++ b/gnu/packages/education.scm @@ -141,7 +141,7 @@ (define-public gcompris (define-public gcompris-qt (package (name "gcompris-qt") - (version "1.0") + (version "1.1") (source (origin (method url-fetch) @@ -149,7 +149,7 @@ (define-public gcompris-qt "https://gcompris.net/download/qt/src/gcompris-qt-" version ".tar.xz")) (sha256 - (base32 "08dw1q0h4qz2q0ksa5pbmb9v60hr1zv9skx6z8dlq9b1i7harnds")))) + (base32 "1bpjwrv83rhikbycpyfpf6dbqr0xfq6amgdpqfgfph6nzr3zka7h")))) (build-system cmake-build-system) (arguments `(#:phases -- cgit v1.2.3 From 1ac96992fbdee5bfff992f067c2a7f45de99a062 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Tue, 10 Aug 2021 16:35:23 +0300 Subject: gnu: gcompris-qt: Switch to qt-build-system. * gnu/packages/education.scm (gcompris-qt)[build-system]: Switch from cmake-build-system to qt-build-system. [arguments]: Remove custom 'wrap-executable phase. --- gnu/packages/education.scm | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm index 955ab929ba..f0120c8af2 100644 --- a/gnu/packages/education.scm +++ b/gnu/packages/education.scm @@ -150,7 +150,7 @@ (define-public gcompris-qt version ".tar.xz")) (sha256 (base32 "1bpjwrv83rhikbycpyfpf6dbqr0xfq6amgdpqfgfph6nzr3zka7h")))) - (build-system cmake-build-system) + (build-system qt-build-system) (arguments `(#:phases (modify-phases %standard-phases @@ -162,23 +162,7 @@ (define-public gcompris-qt (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 -- cgit v1.2.3 From b0a6b1f13ce17ec37600f5e8404e0c8c43302fe5 Mon Sep 17 00:00:00 2001 From: Pierre Langlois Date: Tue, 27 Jul 2021 21:09:49 +0100 Subject: gnu: mu: Update to 1.6.2. * gnu/packages/mail.scm (mu): Update to 1.6.2. [inputs]: Use guile-3.0. [arguments]: Remove autotools substitutions for guile-2.2. Update 'patch-bin-sh-in-tests phase to new tests. Do not return #t in the remaining phases. --- gnu/packages/mail.scm | 35 ++++++++++++----------------------- 1 file changed, 12 insertions(+), 23 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 13761fa4b3..6efea78670 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -1146,7 +1146,7 @@ (define-public emacs-mew (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/" @@ -1154,7 +1154,7 @@ (define-public mu "mu-" version ".tar.xz")) (sha256 (base32 - "0ailz0k5fdgq6gdl5m7jxy315b7qn5ckj6xwd49hsiq9vqblwlpp")))) + "0jlpkx1486ac8649jc2kxjklzsfaxj9qf2kji4kszy4axd0iwi1p")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -1163,7 +1163,7 @@ (define-public mu ("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 @@ -1181,43 +1181,32 @@ (define-public mu ;; 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 (setenv "TZDIR" (string-append (assoc-ref inputs "tzdata") - "/share/zoneinfo")) - #t)) + "/share/zoneinfo")))) (add-after 'install 'install-emacs-autoloads (lambda* (#:key outputs #:allow-other-keys) (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 -- cgit v1.2.3 From 06c11434c9288bc70ba958227d47d31d5e46eda7 Mon Sep 17 00:00:00 2001 From: "Paul A. Patience" Date: Thu, 29 Jul 2021 12:16:32 -0400 Subject: gnu: dealii-openmpi: Add Trilinos dependency. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/maths.scm (trilinos-for-dealii-openmpi): New variable. (dealii-openmpi)[propagated-inputs]: Add trilinos-for-dealii-openmpi. Signed-off-by: Ludovic Courtès --- gnu/packages/maths.scm | 149 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index a179413fd8..ce9515fb35 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -4646,6 +4646,154 @@ (define-public lpsolve 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") @@ -4741,6 +4889,7 @@ (define-public dealii-openmpi ("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) -- cgit v1.2.3 From 75e117bac713134c060b1276849cc1c8cd6ae183 Mon Sep 17 00:00:00 2001 From: Ryan Sundberg Date: Wed, 28 Jul 2021 20:43:14 -0700 Subject: gnu: rocksdb: set TEST_TMPDIR for faster test i/o. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The rocksdb test can take an egregious amount of time on a spinning HDD. This will inherit guixbuild's /tmp mount for the rocksdb testing directory. * gnu/packages/databases.scm (rocksdb)[arguments]: set TEST_TMPDIR for check phase Signed-off-by: Ludovic Courtès --- gnu/packages/databases.scm | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index ca7075a089..fbff9e8a7c 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -1396,6 +1396,15 @@ (define-public rocksdb (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. -- cgit v1.2.3 From e6d0264b8218ba2354547a5925f6e6e89af42d37 Mon Sep 17 00:00:00 2001 From: Ivan Gankevich Date: Fri, 23 Jul 2021 21:15:39 +0300 Subject: gnu: sendmail: Install executables to $prefix/sbin and $prefix/bin directories. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently "sendmail" installs executables to $PREFIX/usr/sbin and $PREFIX/usr/bin directories. This patch changes them to $PREFIX/sbin and $PREFIX/bin respectively. Also this patch fixes broken symlinks in $PREFIX/bin and updates package definitions that use old sendmail paths. * gnu/packages/mail.scm (sendmail): Set new paths. [arguments]<#:phases>{replace-/usr}: Remove /usr prefix. [arguments]<#:phases>{post-install}: Fix broken symlinks [arguments]<#:phases>{configure}: Set paths without /usr prefix. * gnu/packages/mail.scm (claws-mail): Use new sendmail paths. * gnu/packages/version-control.scm (python-git-multimail): Use new sendmail paths. Signed-off-by: Ludovic Courtès --- gnu/packages/mail.scm | 28 ++++++++++++++++++++++++---- gnu/packages/version-control.scm | 2 +- 2 files changed, 25 insertions(+), 5 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 6efea78670..8917a49c93 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -1624,7 +1624,7 @@ (define-public claws-mail (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))))) @@ -2871,6 +2871,13 @@ (define-public sendmail (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 _ @@ -2882,6 +2889,11 @@ (define-public sendmail (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') @@ -2900,13 +2912,21 @@ (define-public sendmail (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/version-control.scm b/gnu/packages/version-control.scm index ac61b97f59..95175251ad 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -1036,7 +1036,7 @@ (define-public python-git-multimail "'")) (("/usr/sbin/sendmail") (string-append (assoc-ref inputs "sendmail") - "/usr/sbin/sendmail"))) + "/sbin/sendmail"))) #t))))) (inputs `(("git" ,git) -- cgit v1.2.3 From 224093fb855cb37024e92a8d15e749751d0ed6e2 Mon Sep 17 00:00:00 2001 From: Ivan Gankevich Date: Fri, 23 Jul 2021 21:19:03 +0300 Subject: gnu: Add task-spooler. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/task-runners.scm (task-spooler): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/task-runners.scm | 64 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) (limited to 'gnu') 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 +;;; Copyright © 2021 Ivan Gankevich ;;; ;;; 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 @@ (define-public run 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+))) -- cgit v1.2.3 From 1e16e1938c76090447850ed31d31b9e05e2c85bd Mon Sep 17 00:00:00 2001 From: Milkey Mouse Date: Sun, 8 Aug 2021 17:56:53 -0700 Subject: gnu: python-libusb1: Update to 1.9.3. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/libusb.scm (python-libusb1): Update to 1.9.3. [inputs], [propagated-inputs]: Change libusb to a propagated-input. Signed-off-by: Ludovic Courtès --- gnu/packages/libusb.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'gnu') 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 @@ (define-public java-usb4java (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 @@ (define-public python-libusb1 "^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 -- cgit v1.2.3 From fdd2f57359cb01b2a867aaff88b86989597c2953 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Mon, 2 Aug 2021 21:40:37 -0400 Subject: gnu: mit-krb5: Update to 1.18.4 [fixes CVE-2021-36222]. * gnu/packages/kerberos.scm (mit-krb5)[replacement]: New field. (mit-krb5-1.18.4): New variable. --- gnu/packages/kerberos.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/kerberos.scm b/gnu/packages/kerberos.scm index 20ed94b33b..92cc84b673 100644 --- a/gnu/packages/kerberos.scm +++ b/gnu/packages/kerberos.scm @@ -52,6 +52,7 @@ (define-module (gnu packages kerberos) (define-public mit-krb5 (package (name "mit-krb5") + (replacement mit-krb5-1.18.4) (version "1.18") (source (origin (method url-fetch) @@ -119,6 +120,28 @@ (define-public mit-krb5 (home-page "https://web.mit.edu/kerberos/") (properties '((cpe-name . "kerberos"))))) +(define-public mit-krb5-1.18.4 + ;; Hide the package to avoid displaying the confusing "1.1a" version in the + ;; user interface. + (hidden-package + (package + (inherit mit-krb5) + ; version 1.18.4 + (version "1.1a") + (source (origin + (method url-fetch) + (uri (list + (string-append "https://web.mit.edu/kerberos/dist/krb5/" + "1.18" + "/krb5-1.18.4.tar.gz") + (string-append "https://kerberos.org/dist/krb5/" + "1.18" + "/krb5-1.18.4.tar.gz"))) + (patches (search-patches "mit-krb5-hurd.patch")) + (sha256 + (base32 + "1j4zm5npv3yxrwrsdwlxias0ycj4qfxzgnz0h9zffla7b4pmw236"))))))) + (define-public shishi (package (name "shishi") -- cgit v1.2.3 From 5e71375361c0d6a11e1890b61e464f030596d0de Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Wed, 4 Aug 2021 01:21:00 -0400 Subject: gnu: Borg: Use bundled msgpack. This is an old and customized version of msgpack-python. * gnu/packages/backup.scm (borg)[source]: In the snippet, don't delete the bundled 'msgpack' directory, and remove the related substition applied to setup.py. [arguments]: Remove the 'use-system-msgpack' phase. [inputs]: Remove 'python-msgpack-transitional'. --- gnu/packages/backup.scm | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index b35dbe4b76..d05cb55163 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -659,12 +659,7 @@ (define-public borg ;; 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 @@ -688,12 +683,6 @@ (define-public borg ;; 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 @@ -757,10 +746,6 @@ (define-public borg ("lz4" ,lz4) ("openssl" ,openssl) ("python-llfuse" ,python-llfuse) - ;; The Python msgpack library changed its name so Borg requires this - ;; transitional package for now: - ;; - ("python-msgpack" ,python-msgpack-transitional) ("zstd" ,zstd "lib"))) (synopsis "Deduplicated, encrypted, authenticated and compressed backups") (description "Borg is a deduplicating backup program. Optionally, it -- cgit v1.2.3 From eb0abba3877c0caeac24d0f9c71f31420dba8d6b Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Mon, 9 Aug 2021 14:41:47 -0400 Subject: gnu: icecat: Update to 78.13.0-guix0-preview1 [security fixes]. Includes fixes for CVE-2021-29980, CVE-2021-29984, CVE-2021-29985, CVE-2021-29986, CVE-2021-29988, and CVE-2021-29989. * gnu/packages/gnuzilla.scm (%icecat-version, %icecat-build-id): Update. (icecat-source): Update upstream source hash. --- gnu/packages/gnuzilla.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 4231e2a2d1..f32b8cb106 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -694,8 +694,8 @@ (define* (computed-origin-method gexp-promise hash-algo hash #: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' @@ -717,7 +717,7 @@ (define icecat-source "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)) -- cgit v1.2.3 From 207cfa3467867bb5b21d5f632b1ae3551aa905a5 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Tue, 3 Aug 2021 12:14:07 +0200 Subject: gnu: libcacard: Enable PC/SC support. * gnu/packages/spice.scm (libcacard)[propagated-inputs]: Add PCSC-LITE. --- gnu/packages/spice.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/spice.scm b/gnu/packages/spice.scm index 7fce241aca..d9daac1185 100644 --- a/gnu/packages/spice.scm +++ b/gnu/packages/spice.scm @@ -354,8 +354,8 @@ (define-public libcacard "/lib/softhsm/libsofthsm2.so")))))))) (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") -- cgit v1.2.3 From 26d68d4fff34e8d8154e847aded2656604879344 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Tue, 10 Aug 2021 09:22:16 +0200 Subject: gnu: ungoogled-chromium: Update to 92.0.4515.131-0.4a9534c. * gnu/packages/chromium.scm (%preserved-third-party-files): Adjust for 92. (%chromium-version): Set to 92.0.4515.131. (%ungoogled-revision): Set to 92.0.4515.131-1-0-g4a9534c. (%ungoogled-origin): Update hash. (ungoogled-chromium-snippet): Remove obsolete substitution and trailing #t. (ungoogled-chromium)[source]: Update hash. [arguments]: Remove trailing #t's. [native-inputs]: Remove PYTHON-BEAUTIFULSOUP4 and PYTHON-HTML5LIB. Add PYTHON-WRAPPER. [inputs]: Add LINUX-LIBRE-HEADERS-5.10. --- gnu/packages/chromium.scm | 53 ++++++++++++++++++++--------------------------- 1 file changed, 23 insertions(+), 30 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm index f33a690914..390ca166b5 100644 --- a/gnu/packages/chromium.scm +++ b/gnu/packages/chromium.scm @@ -58,8 +58,6 @@ (define-module (gnu packages chromium) #: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 @@ (define %preserved-third-party-files "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 . "third_party/catapult/tracing/third_party/d3" ;BSD-3 "third_party/catapult/tracing/third_party/gl-matrix" ;Expat @@ -138,7 +139,7 @@ (define %preserved-third-party-files "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 @@ (define %preserved-third-party-files "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 @@ (define* (debian-patch name hash #:optional (revision %debian-revision)) (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 @@ (define %ungoogled-origin (file-name (git-file-name "ungoogled-chromium" %ungoogled-revision)) (sha256 (base32 - "1xb5g3hybaiwn3y1zw1fxd3g0zwmvplrs06sdqnxzsr1qm8b874h")))) + "1nbgknj5ba116y47sxbp7pbma1bp0lmkyi3vk915x837ysaf6mrd")))) (define %guix-patches (list (local-file @@ -401,11 +403,6 @@ (define ungoogled-chromium-snippet (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 @@ (define ungoogled-chromium-snippet "--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 @@ (define-public ungoogled-chromium %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 @@ (define-public ungoogled-chromium (("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 @@ (define-public ungoogled-chromium (("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 @@ (define-public ungoogled-chromium ;; 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 @@ (define-public ungoogled-chromium (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 @@ (define-public ungoogled-chromium (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 @@ (define-public ungoogled-chromium ("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 @@ (define-public ungoogled-chromium ("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) -- cgit v1.2.3 From 2730ed9a0e905c4d8b9303f1454620a648822b21 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Wed, 11 Aug 2021 00:04:46 +0200 Subject: gnu: uBlock Origin: Update to 1.37.2. * gnu/packages/browser-extensions.scm (uassets): Update to 54e217d90. (ublock-origin): Update to 1.37.2. --- gnu/packages/browser-extensions.scm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'gnu') 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 @@ (define-public play-to-kodi/chromium (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 @@ (define uassets (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 @@ (define ublock-origin (file-name (git-file-name name version)) (sha256 (base32 - "1r3aic18zkz8s3v1a2kffidp4swzbxnq0h8444bif9myjffnpxpj")))) + "1c1dh9kkimvahs9yw1hv67290h8xvmbl10film7g1wamdxydj97y")))) (build-system gnu-build-system) (outputs '("xpi" "firefox" "chromium")) (arguments -- cgit v1.2.3 From 29c5177cc06946c1d5082a71faa5f471a06143d2 Mon Sep 17 00:00:00 2001 From: Jonathan Brielmaier Date: Wed, 11 Aug 2021 12:17:25 +0200 Subject: gnu: icedove: Update to 78.13.0. * gnu/packages/gnuzilla.scm (icedove): Update to 78.13.0. --- gnu/packages/gnuzilla.scm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index f32b8cb106..e063b2f89d 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -1307,11 +1307,11 @@ (define-public icecat (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"))) @@ -1596,7 +1596,7 @@ (define-public icedove ;; 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 @@ -1605,7 +1605,7 @@ (define-public icedove (file-name (string-append "thunderbird-" version "-checkout")) (sha256 (base32 - "1nnz90h5w9skpdwm8ilndcwfx9d7k9cn6gzh32y4jil95da13813"))))) + "1dahf3y8bm3kh7amf341wnmh82a2r0ksqihc6dwiakh6x86a94cm"))))) ("autoconf" ,autoconf-2.13) ("cargo" ,rust-1.41 "cargo") ("clang" ,clang) -- cgit v1.2.3 From 005c8b426528d6aeb3ea0dc755d4b70ebacd50e1 Mon Sep 17 00:00:00 2001 From: Xinglu Chen Date: Tue, 10 Aug 2021 11:19:05 +0200 Subject: gnu: emacs-emms: Update to 7.6. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/emacs-xyz.scm (emacs-emms): Update to 7.6. Signed-off-by: 宋文武 --- gnu/packages/emacs-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 172d620adc..38338757bf 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -2093,14 +2093,14 @@ (define-public emacs-eww-lnum (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") -- cgit v1.2.3 From a192ea31a0f48ed8277b7686d829d78d2ba06be4 Mon Sep 17 00:00:00 2001 From: Xinglu Chen Date: Tue, 10 Aug 2021 11:11:20 +0200 Subject: gnu: emacs-project: Update to 0.6.1. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/emacs-xyz.scm (emacs-project): Update to 0.6.1. Signed-off-by: 宋文武 --- gnu/packages/emacs-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 38338757bf..50bd711083 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -631,13 +631,13 @@ (define-public emacs-paredit (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") -- cgit v1.2.3 From 59675fef2f327a4d2952bbc398b1299616910c41 Mon Sep 17 00:00:00 2001 From: Milkey Mouse Date: Tue, 10 Aug 2021 00:36:00 -0700 Subject: gnu: python-aiorpcx: Update to 0.22.1. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/finance.scm (electrum)[inputs]: Use python-aiorpcx-0.18. * gnu/packages/python-web.scm (python-aiorpcx): Update to 0.22.1. (python-aiorpcx-0.18): New variable. Signed-off-by: 宋文武 --- gnu/packages/finance.scm | 2 +- gnu/packages/python-web.scm | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm index db02232d3c..430552c3a3 100644 --- a/gnu/packages/finance.scm +++ b/gnu/packages/finance.scm @@ -523,7 +523,7 @@ (define-public electrum ("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/python-web.scm b/gnu/packages/python-web.scm index f27b9121f9..441af70f26 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -284,14 +284,14 @@ (define-public python-aiodns (define-public python-aiorpcx (package (name "python-aiorpcx") - (version "0.18.7") + (version "0.22.1") (source (origin (method url-fetch) (uri (pypi-uri "aiorpcX" version)) (sha256 (base32 - "1rswrspv27x33xa5bnhrkjqzhv0sknv5kd7pl1vidw9d2z4rx2l0")))) + "0lx54bcinp44fmr8q4bbffsqbkg8kdcwykf9i5jj0bj3sfzgf9k0")))) (build-system python-build-system) (propagated-inputs `(("python-attrs" ,python-attrs))) @@ -306,6 +306,18 @@ (define-public python-aiorpcx 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") -- cgit v1.2.3 From d908da107ee8d74c19ac0ba0c621f4f7528eff08 Mon Sep 17 00:00:00 2001 From: Xinglu Chen Date: Wed, 11 Aug 2021 11:57:38 +0200 Subject: gnu: emacs-corfu: Update to 0.11. * gnu/packages/emacs-xyz.scm (emacs-corfu): Update to 0.11. Signed-off-by: Leo Prikler --- gnu/packages/emacs-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 50bd711083..f4d942d2db 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -2856,7 +2856,7 @@ (define-public emacs-citeproc-el (define-public emacs-corfu (package (name "emacs-corfu") - (version "0.10") + (version "0.11") (source (origin (method git-fetch) @@ -2865,7 +2865,7 @@ (define-public emacs-corfu (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") -- cgit v1.2.3 From 006b9c85f50fe1a6a0d7ba339ee911db064d5700 Mon Sep 17 00:00:00 2001 From: Xinglu Chen Date: Wed, 11 Aug 2021 11:57:49 +0200 Subject: gnu: emacs-consult: Update to 0.10. * gnu/packages/emacs-xyz.scm (emacs-consult): Update to 0.10. Signed-off-by: Leo Prikler --- gnu/packages/emacs-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index f4d942d2db..b7f6c9d525 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -8205,7 +8205,7 @@ (define-public emacs-orderless (define-public emacs-consult (package (name "emacs-consult") - (version "0.9") + (version "0.10") (source (origin (method git-fetch) @@ -8213,7 +8213,7 @@ (define-public emacs-consult (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 -- cgit v1.2.3 From 3f4303efde8c6bf7fead4b1dfa43e1461399a721 Mon Sep 17 00:00:00 2001 From: Xinglu Chen Date: Wed, 11 Aug 2021 11:57:55 +0200 Subject: gnu: emacs-marginalia: Update to 0.8. * gnu/packages/emacs-xyz.scm (emacs-marginalia): Update to 0.8. Signed-off-by: Leo Prikler --- gnu/packages/emacs-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index b7f6c9d525..6a05d63c91 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -8253,7 +8253,7 @@ (define-public emacs-consult-notmuch (define-public emacs-marginalia (package (name "emacs-marginalia") - (version "0.7") + (version "0.8") (source (origin (method git-fetch) @@ -8262,7 +8262,7 @@ (define-public emacs-marginalia (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") -- cgit v1.2.3 From d39b95b1c27ffc401bfdf6b624a421b81420a38b Mon Sep 17 00:00:00 2001 From: Xinglu Chen Date: Wed, 11 Aug 2021 11:58:09 +0200 Subject: gnu: emacs-vertico: Update to 0.14. * gnu/packages/emacs-xyz.scm (emacs-vertico): Update to 0.14. Signed-off-by: Leo Prikler --- gnu/packages/emacs-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 6a05d63c91..403f89a19e 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -28998,7 +28998,7 @@ (define-public emacs-ivy-avy (define-public emacs-vertico (package (name "emacs-vertico") - (version "0.13") + (version "0.14") (source (origin (method git-fetch) @@ -29007,7 +29007,7 @@ (define-public emacs-vertico (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "09zrrjbfbvj5lfrgjq21nsavdm69iwdsa0a80618v7xlkfk56wf1")))) + (base32 "0rddk76ih44b574lsr6d6r9wa2l7c9zlb9kcyw5xvly17ciiq16h")))) (build-system emacs-build-system) (native-inputs `(("texinfo" ,texinfo))) -- cgit v1.2.3 From 9b54559e237b40ea56a604fa50b4dfa8a4437bc5 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 10 Aug 2021 23:43:10 +0200 Subject: gnu: rocm-opencl-runtime: Use a non-redirecting source URL. * gnu/packages/rocm.scm (rocm-opencl-runtime)[source]: Use 'home-page' as the URL; since it lacks the ".git" prefix, that placates 'guix lint'. --- gnu/packages/rocm.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/rocm.scm b/gnu/packages/rocm.scm index fe85eaa642..8d6e3e69e2 100644 --- a/gnu/packages/rocm.scm +++ b/gnu/packages/rocm.scm @@ -258,10 +258,11 @@ (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 "https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime.git") + (url home-page) (commit (string-append "rocm-" version)))) (file-name (git-file-name name version)) (sha256 @@ -299,7 +300,6 @@ (define-public rocm-opencl-runtime ("ocl-icd" ,ocl-icd) ("glew" ,glew))) (native-inputs `()) - (home-page "https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime") (synopsis "ROCm OpenCL Runtime") (description "OpenCL 2.0 compatible language runtime, supporting offline and in-process/in-memory compilation.") -- cgit v1.2.3 From 168d107abf5608e6a1bfb37ee3448c4087856602 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 10 Aug 2021 23:51:06 +0200 Subject: gnu: rocm-opencl-runtime: Shorten patch file name. This appeases 'guix lint -c patch-file-names'. * gnu/packages/patches/rocm-opencl-runtime-3.10.0-add-rocclr-include-directories.patch: Rename to... * gnu/packages/patches/rocm-opencl-runtime-3.10.0-includes.patch: ... this. * gnu/packages/rocm.scm (rocm-opencl-runtime)[source]: Adjust accordingly. * gnu/local.mk (dist_patch_DATA): Likewise. --- gnu/local.mk | 2 +- ...ncl-runtime-3.10.0-add-rocclr-include-directories.patch | 14 -------------- .../patches/rocm-opencl-runtime-3.10.0-includes.patch | 14 ++++++++++++++ gnu/packages/rocm.scm | 2 +- 4 files changed, 16 insertions(+), 16 deletions(-) delete mode 100644 gnu/packages/patches/rocm-opencl-runtime-3.10.0-add-rocclr-include-directories.patch create mode 100644 gnu/packages/patches/rocm-opencl-runtime-3.10.0-includes.patch (limited to 'gnu') diff --git a/gnu/local.mk b/gnu/local.mk index 3f09b167b1..32ac19d20e 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1702,7 +1702,7 @@ dist_patch_DATA = \ %D%/packages/patches/rnp-disable-ruby-rnp-tests.patch \ %D%/packages/patches/rnp-unbundle-googletest.patch \ %D%/packages/patches/rocm-comgr-3.1.0-dependencies.patch \ - %D%/packages/patches/rocm-opencl-runtime-3.10.0-add-rocclr-include-directories.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 \ diff --git a/gnu/packages/patches/rocm-opencl-runtime-3.10.0-add-rocclr-include-directories.patch b/gnu/packages/patches/rocm-opencl-runtime-3.10.0-add-rocclr-include-directories.patch deleted file mode 100644 index d81bb0747f..0000000000 --- a/gnu/packages/patches/rocm-opencl-runtime-3.10.0-add-rocclr-include-directories.patch +++ /dev/null @@ -1,14 +0,0 @@ -Add missing include dirs for ROCclr. - ---- a/amdocl/CMakeLists.txt 2020-12-05 22:05:55.838529158 +0100 -+++ b/amdocl/CMakeLists.txt 2020-12-05 22:07:35.677524507 +0100 -@@ -23,6 +23,9 @@ - include_directories(${CMAKE_CURRENT_LIST_DIR}/../khronos) - include_directories(${CMAKE_CURRENT_LIST_DIR}/../khronos/headers) - include_directories(${CMAKE_CURRENT_LIST_DIR}/../khronos/headers/opencl2.2) -+include_directories(${ROCclr_DIR}/../../../include) -+include_directories(${ROCclr_DIR}/../../../include/compiler/lib/include/) -+include_directories(${ROCclr_DIR}/../../../include/elf/) - - if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR - (CMAKE_${COMPILER}_COMPILER_ID MATCHES "Clang")) diff --git a/gnu/packages/patches/rocm-opencl-runtime-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/rocm.scm b/gnu/packages/rocm.scm index 8d6e3e69e2..66a28fc169 100644 --- a/gnu/packages/rocm.scm +++ b/gnu/packages/rocm.scm @@ -270,7 +270,7 @@ (define-public rocm-opencl-runtime "1cglpiaj3ny1z74ssmy6j63vj92sfy4q38ix6qsga0mg3b2wvqz3")) (patches (search-patches - "rocm-opencl-runtime-3.10.0-add-rocclr-include-directories.patch" + "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. -- cgit v1.2.3 From 973842acbc2d0dc1ab41738a534d4abda6d9efa7 Mon Sep 17 00:00:00 2001 From: iKaSeRo Date: Sat, 24 Jul 2021 02:52:28 +0300 Subject: gnu: Add unclutter-xfixes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/xdisorg.scm (unclutter-xfixes): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/xdisorg.scm | 51 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index 22f29c93be..4d689a2c70 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -49,6 +49,7 @@ ;;; Copyright © 2021 Paul A. Patience ;;; Copyright © 2021 Niklas Eklund ;;; Copyright © 2021 Nikita Domnitskii +;;; Copyright © 2021 ikasero ;;; ;;; This file is part of GNU Guix. ;;; @@ -100,6 +101,7 @@ (define-module (gnu packages xdisorg) #: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) @@ -907,6 +909,55 @@ (define-public unclutter 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") -- cgit v1.2.3 From b1c97ff60b8ac8205d878fec3af8d02ffdf601fe Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Wed, 11 Aug 2021 12:16:30 -0400 Subject: gnu: Duplicity: Depend on python-paramiko. Fixes . * gnu/packages/backup.scm (duplicity)[native-inputs]: Add python-paramiko. --- gnu/packages/backup.scm | 1 + 1 file changed, 1 insertion(+) (limited to 'gnu') diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index d05cb55163..7d7868ea17 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -105,6 +105,7 @@ (define-public duplicity ("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) -- cgit v1.2.3 From 938d77d9727795baa988fc96204bf8044c6e47e4 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Wed, 11 Aug 2021 13:01:06 -0400 Subject: gnu: linux-libre 4.4: Update to 4.4.280. * gnu/packages/linux.scm (linux-libre-4.4-version): Update to 4.4.280. (linux-libre-4.4-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 7506d79bb4..de03e98887 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -437,7 +437,7 @@ (define-public linux-libre-4.9-pristine-source (%upstream-linux-source version hash) deblob-scripts-4.9))) -(define-public linux-libre-4.4-version "4.4.279") +(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 @@ (define deblob-scripts-4.4 (base32 "0hhin1jpfkd6nwrb6xqxjzl3hdxy4pn8a15hy2d3d83yw6pflbsf"))) (define-public linux-libre-4.4-pristine-source (let ((version linux-libre-4.4-version) - (hash (base32 "1d3cfhs7ixk0dhh1mc1z6y73i816a2wl16zhayl1ssp69d4ndpsb"))) + (hash (base32 "1b9jx9zkycj0xjmy35890q5phiznayaz730dmsv3mdjg4qgfn18y"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.4))) -- cgit v1.2.3 From 907f835e19715b7631b69682862c1386c611ff51 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 11 Aug 2021 19:33:12 +0200 Subject: gnu: pigx-rnaseq: Update to 0.0.18. * gnu/packages/bioinformatics.scm (pigx-rnaseq): Update to 0.0.18. --- gnu/packages/bioinformatics.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 86f09dfaf4..4ac9a99b41 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -10447,7 +10447,7 @@ (define-public dropseq-tools (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/" @@ -10455,7 +10455,7 @@ (define-public pigx-rnaseq "/pigx_rnaseq-" version ".tar.gz")) (sha256 (base32 - "0k9zj50bij3sjwq08v8l8waddcx8k66m3vdq8mx5vc23p19qz42s")))) + "1622l6grmsk0wm859rvllngx29q3v16jjvzcdq2bmrlamccrj82y")))) (build-system gnu-build-system) (arguments `(#:parallel-tests? #f ; not supported -- cgit v1.2.3 From 9d32e6cdad050b8c12cfda753cf4bb21910416dc Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Wed, 11 Aug 2021 13:48:40 -0400 Subject: gnu: Restore the correct order of the golang module. * gnu/packages/golang.scm: Move the Go compilers back to the beginning of the file. --- gnu/packages/golang.scm | 1488 +++++++++++++++++++++++------------------------ 1 file changed, 744 insertions(+), 744 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index 15f3ea46c4..f4cd30c662 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -75,6 +75,540 @@ (define-module (gnu packages golang) #: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 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 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")) @@ -759,796 +1293,262 @@ (define-public go-github-com-operatorfoundation-obfs4 `(("go-github-com-dchest-siphash" ,go-github-com-dchest-siphash) ("go-github-com-operatorfoundation-ed25519" - ,go-github-com-operatorfoundation-ed25519) - ("go-github-com-willscott-goturn" - ,go-github-com-willscott-goturn) - ("go-golang-org-x-crypto" ,go-golang-org-x-crypto) - ("go-golang-org-x-net" ,go-golang-org-x-net) - ("go-torproject-org-pluggable-transports-goptlib" - ,go-torproject-org-pluggable-transports-goptlib))) - (home-page "https://github.com/OperatorFoundation/obfs4") - (synopsis "Network obfourscator to scramble network traffic") - (description "Obfs4 is a look-like nothing obfuscation protocol that -incorporates ideas and concepts from Philipp Winter's ScrambleSuit protocol. -The notable differences between ScrambleSuit and obfs4 are: -@itemize -@item The handshake always does a full key exchange (no such thing as a Session -Ticket Handshake). -@item The handshake uses the Tor Project's ntor handshake with public keys -obfuscated via the Elligator 2 mapping. -@item The link layer encryption uses NaCl secret boxes (Poly1305/XSalsa20). -@end itemize") - (license license:bsd-2))) - -(define-public go-github-com-willscott-goturn - (let ((commit "19f41278d0c9251d64e0ee29f37d51e87a24a97b") - (revision "0")) - (package - (name "go-github-com-willscott-goturn") - (version (git-version "0.0.0" revision commit)) - (source - (origin - (method git-fetch) - (uri - (git-reference - (url "https://github.com/willscott/goturn") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0zwvhfznr84ayzknn9flh65nvqjsixisgy9fkhz2jlahl1ldqcq7")))) - (build-system go-build-system) - (arguments - `(#:import-path "github.com/willscott/goturn")) - (home-page "https://github.com/willscott/goturn") - (synopsis "Go TURN dialer") - (description "GoTURN is a library providing a Go interface compatible with -the golang proxy package which connects through a TURN relay. It provides -parsing and encoding support for STUN and TURN protocols.") - (license license:bsd-3)))) - -(define-public go-torproject-org-pluggable-transports-goptlib - (package - (name "go-torproject-org-pluggable-transports-goptlib") - (version "1.1.0") - (source - (origin - (method git-fetch) - (uri - (git-reference - (url "https://git.torproject.org/pluggable-transports/goptlib") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1lh938194hvkf8pqgnxwf6hvjv9rv0j3kasi07r2ckrj8sxzk4jc")))) - (build-system go-build-system) - (arguments - `(#:import-path "git.torproject.org/pluggable-transports/goptlib")) - (home-page "https://gitweb.torproject.org/pluggable-transports/goptlib.git/") - (synopsis "Go pluggable transports library") - (description "GoPtLib is a library for writing Tor pluggable transports in -Go.") - (license license:cc0))) - -(define-public go-github-com-sevlyar-go-daemon - (package - (name "go-github-com-sevlyar-go-daemon") - (version "0.1.5") - (source - (origin - (method git-fetch) - (uri - (git-reference - (url "https://github.com/sevlyar/go-daemon") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1y3gnxaifykcjcbzx91lz9bc93b95w3xj4rjxjbii26pm3j7gqyk")))) - (build-system go-build-system) - (arguments - `(#:import-path "github.com/sevlyar/go-daemon")) - (propagated-inputs - `(("go-golang-org-x-sys" ,go-golang-org-x-sys))) - (home-page "https://github.com/sevlyar/go-daemon") - (synopsis "Library for writing system daemons") - (description "Go-Daemon is a library for writing system daemons in Go.") - (license license:expat))) - -(define-public go-github-com-keybase-go-ps - (let ((commit "91aafc93ba19d1988cff338c1929d35b6c6f5b50") - (revision "0")) - (package - (name "go-github-com-keybase-go-ps") - (version (git-version "0.0.0" revision commit)) - (source - (origin - (method git-fetch) - (uri - (git-reference - (url "https://github.com/keybase/go-ps") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1la7m9pd1rrij727g34k9d2iapqwrkwdkqwpkbsbcq8ig0fg634h")))) - (build-system go-build-system) - (arguments - `(#:import-path "github.com/keybase/go-ps" - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-tests - (lambda* (#:key native-inputs inputs #:allow-other-keys) - (substitute* (find-files "." "test\\.go") - (("/bin/sleep" command) - (string-append - (assoc-ref (or native-inputs inputs) "coreutils") - command)))))))) - (native-inputs - `(("coreutils" ,coreutils) - ("go-github-com-stretchr-testify" - ,go-github-com-stretchr-testify))) - (home-page "https://github.com/keybase/go-ps") - (synopsis "Process list library for Go") - (description "Go-Ps is a library for Go that implements OS-specific APIs -to list and manipulate processes in a safe way.") - (license license:expat)))) - -(define-public go-github-com-apparentlymart-go-openvpn-mgmt - (let ((commit "4d2ce95ae600ee04eeb020ee0997aabb82752210") - (revision "0")) - (package - (name "go-github-com-apparentlymart-go-openvpn-mgmt") - (version (git-version "0.0.0" revision commit)) - (source - (origin - (method git-fetch) - (uri - (git-reference - (url "https://github.com/apparentlymart/go-openvpn-mgmt") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1dn431jnswg5ns1ah10wswnw6wiv48zq21zr5xp1178l4waswj7k")))) - (build-system go-build-system) - (arguments - `(#:unpack-path "github.com/apparentlymart/go-openvpn-mgmt" - #:phases - (modify-phases %standard-phases - (replace 'build - (lambda arguments - (for-each - (lambda (directory) - (apply (assoc-ref %standard-phases 'build) - `(,@arguments #:import-path ,directory))) - (list - "github.com/apparentlymart/go-openvpn-mgmt/demux" - "github.com/apparentlymart/go-openvpn-mgmt/openvpn")))) - (replace 'check - (lambda arguments - (for-each - (lambda (directory) - (apply (assoc-ref %standard-phases 'check) - `(,@arguments #:import-path ,directory))) - (list - "github.com/apparentlymart/go-openvpn-mgmt/demux" - "github.com/apparentlymart/go-openvpn-mgmt/openvpn")))) - (replace 'install - (lambda arguments - (for-each - (lambda (directory) - (apply (assoc-ref %standard-phases 'install) - `(,@arguments #:import-path ,directory))) - (list - "github.com/apparentlymart/go-openvpn-mgmt/demux" - "github.com/apparentlymart/go-openvpn-mgmt/openvpn"))))))) - (home-page "https://github.com/apparentlymart/go-openvpn-mgmt") - (synopsis "Go client library for OpenVPN's management protocol") - (description "Go-OpenVPN-Mgmt implements a client for the OpenVPN -management interface. It can be used to monitor and control an OpenVPN process -running with its management port enabled.") - (license license:expat)))) + ,go-github-com-operatorfoundation-ed25519) + ("go-github-com-willscott-goturn" + ,go-github-com-willscott-goturn) + ("go-golang-org-x-crypto" ,go-golang-org-x-crypto) + ("go-golang-org-x-net" ,go-golang-org-x-net) + ("go-torproject-org-pluggable-transports-goptlib" + ,go-torproject-org-pluggable-transports-goptlib))) + (home-page "https://github.com/OperatorFoundation/obfs4") + (synopsis "Network obfourscator to scramble network traffic") + (description "Obfs4 is a look-like nothing obfuscation protocol that +incorporates ideas and concepts from Philipp Winter's ScrambleSuit protocol. +The notable differences between ScrambleSuit and obfs4 are: +@itemize +@item The handshake always does a full key exchange (no such thing as a Session +Ticket Handshake). +@item The handshake uses the Tor Project's ntor handshake with public keys +obfuscated via the Elligator 2 mapping. +@item The link layer encryption uses NaCl secret boxes (Poly1305/XSalsa20). +@end itemize") + (license license:bsd-2))) -(define-public go-github-com-emersion-go-autostart - (let ((commit "00ed301c8e9ae79e82878c6361c709983ac5dd2c") +(define-public go-github-com-willscott-goturn + (let ((commit "19f41278d0c9251d64e0ee29f37d51e87a24a97b") (revision "0")) (package - (name "go-github-com-emersion-go-autostart") + (name "go-github-com-willscott-goturn") (version (git-version "0.0.0" revision commit)) (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/emersion/go-autostart") + (url "https://github.com/willscott/goturn") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "0cqqvbzn32xv5lknfygrx01rx2sc6pi833k7008nlk9lsfgry06v")))) + (base32 "0zwvhfznr84ayzknn9flh65nvqjsixisgy9fkhz2jlahl1ldqcq7")))) (build-system go-build-system) (arguments - `(#:import-path "github.com/emersion/go-autostart")) - (home-page "https://github.com/emersion/go-autostart") - (synopsis "Autostart library in Go") - (description "Go-Autostart is a Go library to run a command after login.") - (license license:expat)))) + `(#:import-path "github.com/willscott/goturn")) + (home-page "https://github.com/willscott/goturn") + (synopsis "Go TURN dialer") + (description "GoTURN is a library providing a Go interface compatible with +the golang proxy package which connects through a TURN relay. It provides +parsing and encoding support for STUN and TURN protocols.") + (license license:bsd-3)))) -(define-public go-github-com-dchest-siphash +(define-public go-torproject-org-pluggable-transports-goptlib (package - (name "go-github-com-dchest-siphash") - (version "1.2.1") + (name "go-torproject-org-pluggable-transports-goptlib") + (version "1.1.0") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/dchest/siphash") + (url "https://git.torproject.org/pluggable-transports/goptlib") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "08s076y7vmjqnq7jz0762hkm896r6r31v8b31a3gy0n8rfa01k8k")))) + (base32 "1lh938194hvkf8pqgnxwf6hvjv9rv0j3kasi07r2ckrj8sxzk4jc")))) (build-system go-build-system) (arguments - `(#:import-path "github.com/dchest/siphash")) - (home-page "https://github.com/dchest/siphash") - (synopsis "Go library for pseudorandom functions") - (description "SipHash is a family of pseudorandom functions (PRFs) optimized -for speed on short messages.") + `(#:import-path "git.torproject.org/pluggable-transports/goptlib")) + (home-page "https://gitweb.torproject.org/pluggable-transports/goptlib.git/") + (synopsis "Go pluggable transports library") + (description "GoPtLib is a library for writing Tor pluggable transports in +Go.") (license license:cc0))) -(define-public go-github-com-rakyll-statik - (package - (name "go-github-com-rakyll-statik") - (version "0.1.7") - (source - (origin - (method git-fetch) - (uri - (git-reference - (url "https://github.com/rakyll/statik") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "0y0kbzma55vmyqhyrw9ssgvxn6nw7d0zg72a7nz8vp1zly4hs6va")))) - (build-system go-build-system) - (arguments - `(#:import-path "github.com/rakyll/statik")) - (home-page "https://github.com/rakyll/statik/") - (synopsis "Embed files into a Go executable") - (description "Statik allows you to embed a directory of static files into -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 (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") +(define-public go-github-com-sevlyar-go-daemon + (package + (name "go-github-com-sevlyar-go-daemon") + (version "0.1.5") (source (origin (method git-fetch) - (uri (git-reference - (url "https://github.com/golang/go") - (commit (string-append "go" version)))) + (uri + (git-reference + (url "https://github.com/sevlyar/go-daemon") + (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 - "1crh90qkvhlx23hwsi4wxy3l3h8973lr18135y6h1nnzzwr3n3ps")))) + (base32 "1y3gnxaifykcjcbzx91lz9bc93b95w3xj4rjxjbii26pm3j7gqyk")))) + (build-system go-build-system) (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 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") + `(#:import-path "github.com/sevlyar/go-daemon")) + (propagated-inputs + `(("go-golang-org-x-sys" ,go-golang-org-x-sys))) + (home-page "https://github.com/sevlyar/go-daemon") + (synopsis "Library for writing system daemons") + (description "Go-Daemon is a library for writing system daemons in Go.") + (license license:expat))) - (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") +(define-public go-github-com-keybase-go-ps + (let ((commit "91aafc93ba19d1988cff338c1929d35b6c6f5b50") + (revision "0")) + (package + (name "go-github-com-keybase-go-ps") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/keybase/go-ps") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1la7m9pd1rrij727g34k9d2iapqwrkwdkqwpkbsbcq8ig0fg634h")))) + (build-system go-build-system) + (arguments + `(#:import-path "github.com/keybase/go-ps" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-tests + (lambda* (#:key native-inputs inputs #:allow-other-keys) + (substitute* (find-files "." "test\\.go") + (("/bin/sleep" command) + (string-append + (assoc-ref (or native-inputs inputs) "coreutils") + command)))))))) + (native-inputs + `(("coreutils" ,coreutils) + ("go-github-com-stretchr-testify" + ,go-github-com-stretchr-testify))) + (home-page "https://github.com/keybase/go-ps") + (synopsis "Process list library for Go") + (description "Go-Ps is a library for Go that implements OS-specific APIs +to list and manipulate processes in a safe way.") + (license license:expat)))) - (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")) +(define-public go-github-com-apparentlymart-go-openvpn-mgmt + (let ((commit "4d2ce95ae600ee04eeb020ee0997aabb82752210") + (revision "0")) + (package + (name "go-github-com-apparentlymart-go-openvpn-mgmt") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/apparentlymart/go-openvpn-mgmt") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1dn431jnswg5ns1ah10wswnw6wiv48zq21zr5xp1178l4waswj7k")))) + (build-system go-build-system) + (arguments + `(#:unpack-path "github.com/apparentlymart/go-openvpn-mgmt" + #:phases + (modify-phases %standard-phases + (replace 'build + (lambda arguments + (for-each + (lambda (directory) + (apply (assoc-ref %standard-phases 'build) + `(,@arguments #:import-path ,directory))) + (list + "github.com/apparentlymart/go-openvpn-mgmt/demux" + "github.com/apparentlymart/go-openvpn-mgmt/openvpn")))) + (replace 'check + (lambda arguments + (for-each + (lambda (directory) + (apply (assoc-ref %standard-phases 'check) + `(,@arguments #:import-path ,directory))) + (list + "github.com/apparentlymart/go-openvpn-mgmt/demux" + "github.com/apparentlymart/go-openvpn-mgmt/openvpn")))) + (replace 'install + (lambda arguments + (for-each + (lambda (directory) + (apply (assoc-ref %standard-phases 'install) + `(,@arguments #:import-path ,directory))) + (list + "github.com/apparentlymart/go-openvpn-mgmt/demux" + "github.com/apparentlymart/go-openvpn-mgmt/openvpn"))))))) + (home-page "https://github.com/apparentlymart/go-openvpn-mgmt") + (synopsis "Go client library for OpenVPN's management protocol") + (description "Go-OpenVPN-Mgmt implements a client for the OpenVPN +management interface. It can be used to monitor and control an OpenVPN process +running with its management port enabled.") + (license license:expat)))) - (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-github-com-emersion-go-autostart + (let ((commit "00ed301c8e9ae79e82878c6361c709983ac5dd2c") + (revision "0")) + (package + (name "go-github-com-emersion-go-autostart") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/emersion/go-autostart") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0cqqvbzn32xv5lknfygrx01rx2sc6pi833k7008nlk9lsfgry06v")))) + (build-system go-build-system) + (arguments + `(#:import-path "github.com/emersion/go-autostart")) + (home-page "https://github.com/emersion/go-autostart") + (synopsis "Autostart library in Go") + (description "Go-Autostart is a Go library to run a command after login.") + (license license:expat)))) -(define-public go-1.16 +(define-public go-github-com-dchest-siphash (package - (inherit go-1.14) - (name "go") - (version "1.16.7") + (name "go-github-com-dchest-siphash") + (version "1.2.1") (source (origin (method git-fetch) - (uri (git-reference - (url "https://github.com/golang/go") - (commit (string-append "go" version)))) + (uri + (git-reference + (url "https://github.com/dchest/siphash") + (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 - "1id6nsavf7gm78bmzsvym135pi2xa0v75ny51xrw93j70clz9w0h")))) + (base32 "08s076y7vmjqnq7jz0762hkm896r6r31v8b31a3gy0n8rfa01k8k")))) + (build-system go-build-system) (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 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)))))) + `(#:import-path "github.com/dchest/siphash")) + (home-page "https://github.com/dchest/siphash") + (synopsis "Go library for pseudorandom functions") + (description "SipHash is a family of pseudorandom functions (PRFs) optimized +for speed on short messages.") + (license license:cc0))) -(define-public go go-1.14) +(define-public go-github-com-rakyll-statik + (package + (name "go-github-com-rakyll-statik") + (version "0.1.7") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/rakyll/statik") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0y0kbzma55vmyqhyrw9ssgvxn6nw7d0zg72a7nz8vp1zly4hs6va")))) + (build-system go-build-system) + (arguments + `(#:import-path "github.com/rakyll/statik")) + (home-page "https://github.com/rakyll/statik/") + (synopsis "Embed files into a Go executable") + (description "Statik allows you to embed a directory of static files into +your Go binary to be later served from an http.FileSystem.") + (license license:asl2.0))) (define-public go-github-com-alsm-ioprogress (let ((commit "063c3725f436e7fba0c8f588547bee21ffec7ac5") -- cgit v1.2.3 From 363fe99c1e33f999badea3eb207d411632daf2d6 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Tue, 13 Jul 2021 18:50:33 -0400 Subject: gnu: Add wolfSSL. * gnu/packages/tls.scm (wolfssl): New variable. --- gnu/packages/tls.scm | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index d98a724b5f..7a0a9bd9a9 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2014 Ian Denhardt ;;; Copyright © 2013, 2015 Andreas Enge ;;; Copyright © 2015 David Thompson -;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Leo Famulari +;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Leo Famulari ;;; Copyright © 2016, 2017, 2019 Efraim Flashner ;;; Copyright © 2016, 2017, 2018 Nikita ;;; Copyright © 2016 Hartmut Goebel @@ -48,6 +48,7 @@ (define-module (gnu packages tls) #: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) @@ -1158,3 +1159,34 @@ (define-public s2n 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 -- cgit v1.2.3 From e6388b48f3df21b792cd61f93fddc7274238bac6 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Tue, 13 Jul 2021 18:54:29 -0400 Subject: gnu: VDE 2: Update to 2.3.2-0.8c65ebc. Updating to this unreleased revision allows us to package VDE 2 with wolfSSL instead of the obsolete OpenSSL 1.0: https://github.com/virtualsquare/vde-2/issues/2 * gnu/packages/networking.scm (vde2): Update to 2.3.2-0.8c65ebc. [source]: Use git-fetch. [native-inputs]: Add autoconf, automake, and libtool [inputs]: Replace openssl-1.0 with wolfssl. --- gnu/packages/networking.scm | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 05fd092b23..f1f84f986b 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -13,7 +13,7 @@ ;;; Copyright © 2016 Benz Schenk ;;; Copyright © 2016, 2017 Pjotr Prins ;;; Copyright © 2017 Mathieu Othacehe -;;; Copyright © 2017, 2020 Leo Famulari +;;; Copyright © 2017, 2020, 2021 Leo Famulari ;;; Copyright © 2017, 2018, 2019, 2020 Efraim Flashner ;;; Copyright © 2017, 2018, 2019 Rutger Helling ;;; Copyright © 2017, 2019 Gábor Boskovits @@ -3833,22 +3833,31 @@ (define-public traceroute 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 @@ -3860,7 +3869,7 @@ (define-public vde2 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 -- cgit v1.2.3 From 443e7f6338049d39427439fc5d997f8c59916fe1 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Wed, 11 Aug 2021 09:59:42 +0200 Subject: gnu: rapidjson: Adjust for GCC 10. * gnu/packages/patches/rapidjson-gcc-compat.patch: Add additional patch. --- gnu/packages/patches/rapidjson-gcc-compat.patch | 48 +++++++++++++++++++++++++ 1 file changed, 48 insertions(+) (limited to 'gnu') 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(MemberEnd() - last) * sizeof(Member)); ++ std::memmove(static_cast(&*pos), &*last, static_cast(MemberEnd() - last) * sizeof(Member)); + data_.o.size -= static_cast(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(End() - last) * sizeof(GenericValue)); ++ itr->~GenericValue(); ++ std::memmove(static_cast(pos), last, static_cast(End() - last) * sizeof(GenericValue)); + data_.a.size -= static_cast(last - first); + return pos; + } +@@ -1936,7 +1936,7 @@ private: + if (count) { + GenericValue* e = static_cast(allocator.Malloc(count * sizeof(GenericValue))); + SetElementsPointer(e); +- std::memcpy(e, values, count * sizeof(GenericValue)); ++ std::memcpy(static_cast(e), values, count * sizeof(GenericValue)); + } + else + SetElementsPointer(0); +@@ -1949,7 +1949,7 @@ private: + if (count) { + Member* m = static_cast(allocator.Malloc(count * sizeof(Member))); + SetMembersPointer(m); +- std::memcpy(m, members, count * sizeof(Member)); ++ std::memcpy(static_cast(m), members, count * sizeof(Member)); + } + else + SetMembersPointer(0); -- cgit v1.2.3 From e65bcfda22fe4e3a0f6fe9b4af9f17e6a567f692 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Wed, 11 Aug 2021 10:01:01 +0200 Subject: gnu: rapidjson: Remove unused configure flag. * gnu/packages/web.scm (rapidjson)[arguments]: Remove #:configure-flags, as the entry is not honored by the build system and would only affect tests and examples, which are not installed. [source](snippet): Remove trailing #t. --- gnu/packages/web.scm | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'gnu') diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 432ed3c445..ff53333169 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1381,8 +1381,7 @@ (define-public rapidjson '(begin ;; Remove code using the problematic JSON license (see ;; ). - (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) @@ -1392,10 +1391,8 @@ (define-public rapidjson (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 -- cgit v1.2.3 From 4eb0a5146ae5a195a29c79f586fcc1e58f7fa69b Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Thu, 12 Aug 2021 00:02:23 +0200 Subject: gnu: ruby@2.7: Inherit source snippet from ruby@2.6. This is a follow-up to 507472b036f8cdd3d1a88c401017d2e43620bc20. * gnu/packages/ruby.scm (ruby-2.7)[source]: Inherit fields from RUBY. --- gnu/packages/ruby.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 73e85a4b6b..8db5bd9158 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -157,7 +157,7 @@ (define-public ruby-2.7 (version "2.7.4") (source (origin - (method url-fetch) + (inherit (package-source ruby)) (uri (string-append "https://cache.ruby-lang.org/pub/ruby/" (version-major+minor version) "/ruby-" version ".tar.gz")) -- cgit v1.2.3