From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id oJBQOCGE6mHNBgEAgWs5BA (envelope-from ) for ; Fri, 21 Jan 2022 11:00:01 +0100 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id WIy4NSGE6mEiAwAA9RJhRA (envelope-from ) for ; Fri, 21 Jan 2022 11:00:01 +0100 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 35C082BCE8 for ; Fri, 21 Jan 2022 11:00:01 +0100 (CET) Received: from localhost ([::1]:47154 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nAqi8-0002UI-BA for larch@yhetil.org; Fri, 21 Jan 2022 05:00:00 -0500 Received: from eggs.gnu.org ([209.51.188.92]:40314) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAoZd-0004fk-SO for bug-guix@gnu.org; Fri, 21 Jan 2022 02:43:09 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:38940) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nAoZa-0007MG-Gx for bug-guix@gnu.org; Fri, 21 Jan 2022 02:43:05 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1nAoZa-0002hp-Co for bug-guix@gnu.org; Fri, 21 Jan 2022 02:43:02 -0500 X-Loop: help-debbugs@gnu.org Subject: bug#53407: libfuse 3 can't find fusermount Resent-From: Leo Famulari Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Fri, 21 Jan 2022 07:43:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 53407 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: 53407@debbugs.gnu.org X-Debbugs-Original-To: bug-guix@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.164275093710345 (code B ref -1); Fri, 21 Jan 2022 07:43:02 +0000 Received: (at submit) by debbugs.gnu.org; 21 Jan 2022 07:42:17 +0000 Received: from localhost ([127.0.0.1]:60076 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nAoYd-0002gW-Mc for submit@debbugs.gnu.org; Fri, 21 Jan 2022 02:42:17 -0500 Received: from lists.gnu.org ([209.51.188.17]:49122) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nAoYZ-0002g6-R8 for submit@debbugs.gnu.org; Fri, 21 Jan 2022 02:42:02 -0500 Received: from eggs.gnu.org ([209.51.188.92]:40144) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAoYZ-0003Bc-8E for bug-guix@gnu.org; Fri, 21 Jan 2022 02:41:59 -0500 Received: from out2-smtp.messagingengine.com ([66.111.4.26]:44781) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nAoYW-0006z9-5O for bug-guix@gnu.org; Fri, 21 Jan 2022 02:41:58 -0500 Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 266085C0150; Fri, 21 Jan 2022 02:41:55 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Fri, 21 Jan 2022 02:41:55 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=famulari.name; h=cc:content-type:date:date:from:from:in-reply-to:message-id :mime-version:reply-to:sender:subject:subject:to:to; s=mesmtp; bh=GwvFx69F865a1bhNS/7kYH1AdY9MIY7sx0lnRZKwb7U=; b=tZSUBVXIRuoB RDGSBnDxhQOkIqs40ND3j2XpYgxAJKmZmfuol1Yaef714Oax32RnWWZMid8H2Cqi qj0+nI11P3PtffU98Sq2i3tn1+tIud9heMrMY7WEnPrMXoh8BYW2q4qt5aVLw50N TCe0sC8Dfbdex/fz1PtNXUKnev6BL5Y= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:date:from:from :in-reply-to:message-id:mime-version:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm1; bh=GwvFx69F865a1bhNS/7kYH1AdY9MIY7sx0lnRZKwb 7U=; b=ly9CZdFuTNet0RKkhU7vYV6y+xBqHGqDYjeC3+JwxB7dqRCl0sWiW7Ehq +wlf0D5VM7xYMGs+SE2ihNvjl6gqwo1neat4FVktdOw8Q7xbEoe08goqZ3LpyuOD RqmeV2Is9AxE7IHm8xRkifrQLOB86c9sBE+9LGkRy3E7qv03sDHcQugA8uO3+ELK X0NqF2ueuYTv7cYfWwddEHvKukMDjRQfougg94qAjar6WZjl9KuCA5es6y92z7TE MZorwmSekOnv+1jnxxp7NTnxXhI8Pegph5yGxx5h+pK4kp/r7AeVPflj2AFvBHgq POIUw0kF9PS3lHvCouDfR7McqcnGg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvvddrudelgdduudduucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvuffkgggtugesghdtreertd dtvdenucfhrhhomhepnfgvohcuhfgrmhhulhgrrhhiuceolhgvohesfhgrmhhulhgrrhhi rdhnrghmvgeqnecuggftrfgrthhtvghrnhepvdehueevvefggeffhfeigffhhfdvgffghe fgtdejgffftedufeeivdejkeelgedtnecuffhomhgrihhnpehgnhhurdhorhhgnecuvehl uhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomheplhgvohesfhgrmh hulhgrrhhirdhnrghmvg X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Fri, 21 Jan 2022 02:41:54 -0500 (EST) Date: Fri, 21 Jan 2022 02:41:49 -0500 From: Leo Famulari Message-ID: MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="cZhbQlIGHzO67gK3" Content-Disposition: inline Received-SPF: pass client-ip=66.111.4.26; envelope-from=leo@famulari.name; helo=out2-smtp.messagingengine.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-guix@gnu.org List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+larch=yhetil.org@gnu.org Sender: "bug-Guix" X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1642759201; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:resent-cc:resent-from:resent-sender: resent-message-id:list-id:list-help:list-unsubscribe:list-subscribe: list-post:dkim-signature; bh=GwvFx69F865a1bhNS/7kYH1AdY9MIY7sx0lnRZKwb7U=; b=nMl60cBMUwElc4okynoqIP3UmJac1aQCAfztf28S/XBXQK95oHjJ2MKkTEoCQnsKkWOKzR +un0hTBxKdVnm43SjT/6WJ1BntSKBPgMyIgW32pzGCpYQqjyDzKyB85rqFamAu3grjKMMV 9o1+abs1Gz3HzDFVutgbCKT7j6/3K9knr9txyvo6VmkcbkXgfOjHNkJg48n2EqKEbfMD0W jMl04NXg4oRA4NtXcJGx7hR18WwgS+FvvIS46hXmuvgj+PGbScCuzQUbhXR2S3Infc3yEN oqFQE2RDl7vpiAYYUbkwubZ8D5S4YZqVIcmrWqL9nIv6XRp17fe48XhX0a/RaQ== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1642759201; a=rsa-sha256; cv=none; b=FkLq4mLPdyTCEfE0emiZRNnYoEVQvUhg8NL1p/EWe0LBqXPH+hYTG31s+w8eTWC9T2qEgR rmMdR7jGaELZtDSOkhY3L3XlwgWZfqDzFHCn51Fcd+som8awanEA3suOisv4O+laA/R8Go fzPrAnopZwXJ+/cWsun1VS6CMcYZ/ZYiGiqHPEjurUKHHCE+H6xrd6zLamWv0WBD6xHZri vvJR8yeqHZjlsDtn5ZMrTupFIff8SXRdF1gWMX4jRkzt2aX29axM2NUqpcMAkRgjh1yfkJ K5jYZ3GvufoRUcZ1MdnX2AjeSGNO0joy8y1p9egzDju1Z6d4URHQaY07CvNGfg== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=famulari.name header.s=mesmtp header.b=tZSUBVXI; dkim=fail ("headers rsa verify failed") header.d=messagingengine.com header.s=fm1 header.b=ly9CZdFu; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "bug-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="bug-guix-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -5.42 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=famulari.name header.s=mesmtp header.b=tZSUBVXI; dkim=fail ("headers rsa verify failed") header.d=messagingengine.com header.s=fm1 header.b=ly9CZdFu; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "bug-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="bug-guix-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 35C082BCE8 X-Spam-Score: -5.42 X-Migadu-Scanner: scn0.migadu.com X-TUID: +DuLUeI2HV13 --cZhbQlIGHzO67gK3 Content-Type: multipart/mixed; boundary="aCSnybDWKnSXCIQP" Content-Disposition: inline --aCSnybDWKnSXCIQP Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable While testing a Borg update (patch attached), I noticed that the FUSERMOUNT_DIR hack in Fuse 3 doesn't seem to work like it does with Fuse 2. The 1.2.0b3 beta of the upcoming Borg release can use either Fuse 2 (with python-llfuse) or Fuse 3 (with python-pyfuse3). The `borg mount` command works as expected with Fuse 2 / llfuse. But, with Fuse 3 / pyfuse3, it fails with: fuse: failed to exec fusermount3: No such file or directory When I commented out the FUSERMOUNT_DIR [0] substitution in the fuse-3 package and rebuilt Borg, `borg mount` instead gives us this, which is expected, because this system does not have a setuid fusermount3: fusermount3: mount failed: Operation not permitted So, the substitution doesn't seem to help with Fuse 3: it just breaks the lookup. You can apply the patch and test it out. And you can also observe the optimal behaviour if you switch the borg package's fuse implementation =66rom pyfuse3 to llfuse / Fuse 2. Should we just remove the substitution in fuse-3? [0] https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/linux.scm?id= =3Db09f2aa4dae7e2a2f0f37ba831a2428fee8557d2#n3306 --aCSnybDWKnSXCIQP Content-Type: text/plain; charset=utf-8 Content-Disposition: attachment; filename="fusermount-borg.diff" Content-Transfer-Encoding: quoted-printable diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index a8f300f0b8..5bc2a8015f 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright =C2=A9 2014, 2015, 2020 Eric Bavier ;;; Copyright =C2=A9 2014 Ian Denhardt -;;; Copyright =C2=A9 2015, 2016, 2017 Leo Famulari +;;; Copyright =C2=A9 2015, 2016, 2017, 2022 Leo Famulari ;;; Copyright =C2=A9 2017=E2=80=932021 Tobias Geerinckx-Rice ;;; Copyright =C2=A9 2017 Thomas Danckaert ;;; Copyright =C2=A9 2017, 2021 Arun Isaac @@ -57,6 +57,7 @@ (define-module (gnu packages backup) #:use-module (gnu packages crypto) #:use-module (gnu packages databases) #:use-module (gnu packages datastructures) + #:use-module (gnu packages digest) #:use-module (gnu packages dbm) #:use-module (gnu packages dejagnu) #:use-module (gnu packages ftp) @@ -83,6 +84,7 @@ (define-module (gnu packages backup) #:use-module (gnu packages rsync) #:use-module (gnu packages serialization) #:use-module (gnu packages ssh) + #:use-module (gnu packages time) #:use-module (gnu packages tls) #:use-module (gnu packages valgrind) #:use-module (gnu packages xml)) @@ -619,13 +621,13 @@ (define-public libchop (define-public borg (package (name "borg") - (version "1.1.17") + (version "1.2.0b3") (source (origin (method url-fetch) (uri (pypi-uri "borgbackup" version)) (sha256 - (base32 "0x0ncy0b0bmf586hbdgrif3gjmkdw760vfnfxndr493v07y29fbs")) + (base32 "0gnx4i1pbzym9mb93w4bijaq189a9319ry0gzcm15rk41mq5lcag")) (modules '((guix build utils))) (snippet '(begin @@ -635,8 +637,6 @@ (define-public borg ;; generate the wrong list. (for-each delete-file '("src/borg/algorithms/checksums.c" - "src/borg/algorithms/msgpack/_packer.cpp" - "src/borg/algorithms/msgpack/_unpacker.cpp" "src/borg/chunker.c" "src/borg/compress.c" "src/borg/crypto/low_level.c" @@ -646,15 +646,17 @@ (define-public borg "src/borg/platform/freebsd.c" "src/borg/platform/linux.c" "src/borg/platform/posix.c" - "src/borg/platform/syncfilerange.c")) + "src/borg/platform/syncfilerange.c" + "src/borg/platform/windows.c")) ;; Remove bundled shared libraries. (with-directory-excursion "src/borg/algorithms" (for-each delete-file-recursively - (list "blake2" "lz4" "zstd"))) + (list "lz4" "xxh64" "zstd"))) #t)))) (build-system python-build-system) (arguments - `(#:modules ((srfi srfi-26) ; for cut + `(#:tests? #f ; The tests pass. Skip them all while debugging FUSE 3 + #:modules ((srfi srfi-26) ; for cut (guix build utils) (guix build python-build-system)) #:phases @@ -662,12 +664,12 @@ (define-public borg (add-after 'unpack 'set-env (lambda* (#:key inputs #:allow-other-keys) (let ((openssl (assoc-ref inputs "openssl")) - (libb2 (assoc-ref inputs "libb2")) (lz4 (assoc-ref inputs "lz4")) + (xxhash (assoc-ref inputs "xxhash")) (zstd (assoc-ref inputs "zstd"))) (setenv "BORG_OPENSSL_PREFIX" openssl) - (setenv "BORG_LIBB2_PREFIX" libb2) (setenv "BORG_LIBLZ4_PREFIX" lz4) + (setenv "BORG_LIBXXHASH_PREFIX" xxhash) (setenv "BORG_LIBZSTD_PREFIX" zstd) (setenv "PYTHON_EGG_CACHE" "/tmp") ;; The test 'test_return_codes[python]' fails when @@ -677,32 +679,37 @@ (define-public borg ;; The tests need to be run after Borg is installed. (delete 'check) (add-after 'install 'check - (lambda* (#:key inputs outputs #:allow-other-keys) - ;; Make the installed package available for the test suite. - (add-installed-pythonpath inputs outputs) - ;; The tests should be run in an empty directory. - (mkdir-p "tests") - (with-directory-excursion "tests" - (invoke "py.test" "-v" "--pyargs" "borg.testsuite" "-k" - (string-append - ;; These tests need to write to '/var'. - "not test_get_cache_dir " - "and not test_get_config_dir " - "and not test_get_keys_dir " - "and not test_get_security_dir " - ;; These tests assume there is a root user in - ;; '/etc/passwd'. - "and not test_access_acl " - "and not test_default_acl " - "and not test_non_ascii_acl " - "and not test_create_stdin " - ;; This test needs the unpackaged pytest-benchmark. - "and not benchmark " - ;; These tests assume the kernel supports FUSE. - "and not test_fuse " - "and not test_fuse_allow_damaged_files " - "and not test_mount_hardlinks " - "and not test_readonly_mount "))))) + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + ;; Make the installed package available for the test suite. + (add-installed-pythonpath inputs outputs) + ;; The tests should be run in an empty directory. + (mkdir-p "tests") + (with-directory-excursion "tests" + (invoke "py.test" "-v" "--pyargs" "borg.testsuite" "-k" + (string-append + ;; These tests need to write to '/var'. + "not test_get_cache_dir " + "and not test_get_config_dir " + "and not test_get_keys_dir " + "and not test_get_security_dir " + ;; These tests assume there is a root user in '/e= tc/passwd'. + "and not test_access_acl " + "and not test_default_acl " + "and not test_get_item_uid_gid " + "and not test_non_ascii_acl " + "and not test_create_content_from_command " + "and not test_create_content_from_command_with_fa= iled_command " + "and not test_create_stdin " + ;; We don't need to run benchmarks + "and not benchmark " + ;; These tests assume the kernel supports FUSE. + "and not test_fuse " + "and not test_fuse_allow_damaged_files " + "and not test_mount_hardlinks " + "and not test_readonly_mount " + "and not test_fuse_versions_view " + "and not test_migrate_lock_alive")))))) (add-after 'install 'install-doc (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -710,10 +717,10 @@ (define-public borg (misc (string-append out "/share/borg/misc"))) (for-each (cut install-file <> misc) '("docs/misc/create_chunker-params.txt" + "docs/misc/borg-data-flow.png" "docs/misc/internals-picture.txt" "docs/misc/prune-example.txt")) - (copy-recursively "docs/man" man) - #t))) + (copy-recursively "docs/man" man)))) (add-after 'install-docs 'install-shell-completions (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -725,24 +732,26 @@ (define-public borg (install-file "zsh/_borg" (string-append share "/zsh/site-functions")) (install-file "fish/borg.fish" - (string-append share "/fish/vendor_completi= ons.d"))) - #t)))))) + (string-append share "/fish/vendor_completi= ons.d"))))))))) (native-inputs - (list python-cython python-setuptools-scm python-pytest)) + (list python-cython python-dateutil python-setuptools-scm python-pyte= st)) (inputs (list acl - libb2 lz4 openssl - python-llfuse - `(,zstd "lib"))) + ;; This is the latest version of msgpack accepted by 'setup.py'. + python-msgpack-1.0.2 +; python-llfuse + python-pyfuse3 + `(,zstd "lib") + xxhash)) (synopsis "Deduplicated, encrypted, authenticated and compressed backu= ps") (description "Borg is a deduplicating backup program. Optionally, it supports compression and authenticated encryption. The main goal of Borg = is to provide an efficient and secure way to backup data. The data deduplication technique used makes Borg suitable for daily backups since only changes are -stored. The authenticated encryption technique makes it suitable for back= ups -to not fully trusted targets. Borg is a fork of Attic.") +stored. The authenticated encryption technique makes it suitable for stor= ing +backups on untrusted computers.") (home-page "https://www.borgbackup.org/") (license license:bsd-3))) =20 diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index eff1c4259b..c75ea42088 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -11,7 +11,7 @@ ;;; Copyright =C2=A9 2015, 2016, 2020 Christine Lemmer-Webber ;;; Copyright =C2=A9 2015 Eric Dvorsak ;;; Copyright =C2=A9 2015, 2016 David Thompson -;;; Copyright =C2=A9 2015, 2016, 2017, 2019 Leo Famulari +;;; Copyright =C2=A9 2015, 2016, 2017, 2019, 2022 Leo Famulari ;;; Copyright =C2=A9 2015, 2017 Ben Woodcroft ;;; Copyright =C2=A9 2015, 2016 Erik Edrosa ;;; Copyright =C2=A9 2015, 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flash= ner @@ -11135,6 +11135,17 @@ (define-public python-msgpack (home-page "https://pypi.org/project/msgpack/") (license license:asl2.0))) =20 +(define-public python-msgpack-1.0.2 + (package + (inherit python-msgpack) + (version "1.0.2") + (source (origin + (method url-fetch) + (uri (pypi-uri "msgpack" version)) + (sha256 + (base32 + "1109s2yynrahwi64ikax68hx0mbclz8p35afmpphw5dwynb49q7s"))))= )) + ;; This msgpack library's name changed from "python-msgpack" to "msgpack" = with ;; release 0.5. Some packages like borg still call it by the old name for = now. ;; @@ -28678,3 +28689,22 @@ (define-public python-reedsolo but not binary streams.") (license license:public-domain))) =20 +(define-public python-pyfuse3 + (package + (name "python-pyfuse3") + (version "3.2.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pyfuse3" version)) + (sha256 + (base32 "0cvybynv9igssfa4l13q09gb6m7afmwk34wsbq8jk14sqpd4dl92"))= )) + (build-system python-build-system) + (native-inputs (list pkg-config)) + (inputs (list fuse-3)) + (propagated-inputs (list python-pytest-trio)) + (home-page "https://github.com/libfuse/pyfuse3") + (synopsis "Python bindings FUSE 3") + (description "This package provides Python 3 bindings for libfuse 3 wi= th +async I/O support.") + (license license:gpl2+))) --aCSnybDWKnSXCIQP-- --cZhbQlIGHzO67gK3 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEsFFZSPHn08G5gDigJkb6MLrKfwgFAmHqY7kACgkQJkb6MLrK fwgRORAA2+7lXqCtOagOE5+yc0cz1/FiGpdQjMbaPkUECPnaSr5E5q1LtnSdzk9o +ICGbSuvyy769CD8nDjz0jDBEIiOT0/jhpbmTaPIWMdGB89v3NlM7+NH9Ko6O3jU a2ApRBJ6uN12TAkVLl35bgOFu9D+LhKwRc8NEafghh7ZQxuDio55Z+grvyDikJVX 71za6QyNnN+tNJnmKGBa3GmWJwwBED9TWnafb0clc6mG69XTBIcA6j2VMKxYEIra BZQ0BvAYj5By+w4Mjco6SoSaqTFNQ+jSgQSNVsbVL2ips3CnDQ+Pi/UL6NElL6ZZ OEn3i54mQotAppqZRis2gKprHqzwPofJhGGZSQgzKg+lezZz+do34IzWARC1X7e+ 2Y4ULDdj2V9+pYqnFxI8R2IidcjM+KqN62UzsQPEXTptdsXCaIYBs/rzG6vPDGba PVRGA99sHLXQMBDEFiDnsU0qSAZwfKxdWp4YL+2Y+ihztK2FN6HSSeV9EoDecdQp JHm2x0zH7PyR1A94Wv9tjnPqHnF7B3oWcMuBPrj3uPHzOI59AU6su6sdr30tgQM8 1eiw33yMzu0CBXPW+5X2fZ+PMMToylGFyGp1lLutLwfrB/VK9o98etALDZ7WEWlP 12iGsZX+V5psw9DC1hXSfrUjsxQr6ZYG17jkc1TMLzhqNK++uEQ= =2c8i -----END PGP SIGNATURE----- --cZhbQlIGHzO67gK3--