[tahoe-lafs-trac-stream] [Tahoe-LAFS] #2746: failure to build on OpenBSD 5.6 (Kyle's buildslave) due to OpenSSL not having ALPN-related symbols
Tahoe-LAFS
trac at tahoe-lafs.org
Wed Apr 6 02:07:11 UTC 2016
#2746: failure to build on OpenBSD 5.6 (Kyle's buildslave) due to OpenSSL not
having ALPN-related symbols
---------------------------+---------------------------------------------
Reporter: daira | Owner: daira
Type: defect | Status: new
Priority: normal | Milestone: undecided
Component: packaging | Version: 1.10.2
Resolution: | Keywords: build openssl packaging openbsd
Launchpad Bug: |
---------------------------+---------------------------------------------
Comment (by crd):
It does look to me like the version of `cryptography` in pypi is even
compatible with the modern version of LibreSSL 2.3.2 in OpenBSD-5.9.
Here's what I get when I tried to build tahoe-lafs-1.11.0 on OpenBSD-5.9
using the usual virtualenv method:
{{{
n150:/home/crd:11$ virtualenv tahoe-lafs
New python executable in tahoe-lafs/bin/python2.7
Also creating executable in tahoe-lafs/bin/python
Installing setuptools, pip, wheel...done.
n150:/home/crd:12$ . tahoe-lafs/bin/activate
(tahoe-lafs)n150:/home/crd:13$ pip install --user --find-links=https
://tahoe-lafs.org/deps tahoe-l>
(tahoe-lafs)n150:/home/crd:13$ pip install --find-links=https://tahoe-
lafs.org/deps tahoe-lafs >
(tahoe-lafs)n150:/home/crd:13$ pip install --find-links=https://tahoe-
lafs.org/deps tahoe-lafs
You are using pip version 7.0.3, however version 8.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting tahoe-lafs
Requirement already satisfied (use --upgrade to upgrade): setuptools>=11.3
in ./tahoe-lafs/lib/python2.7/site-packages (from tahoe-lafs)
Collecting zope.interface!=3.6.3,!=3.6.4,>=3.6.0 (from tahoe-lafs)
Collecting Nevow>=0.11.1 (from tahoe-lafs)
Using cached Nevow-0.13.0-py2-none-any.whl
Collecting pyasn1>=0.1.8 (from tahoe-lafs)
Using cached pyasn1-0.1.9-py2.py3-none-any.whl
Collecting foolscap>=0.10.1 (from tahoe-lafs)
Using cached foolscap-0.11.0-py2-none-any.whl
Collecting pycrypto!=2.2,!=2.4,>=2.1.0 (from tahoe-lafs)
Collecting pyOpenSSL>=0.14 (from tahoe-lafs)
Using cached pyOpenSSL-16.0.0-py2.py3-none-any.whl
Collecting Twisted[tls]>=15.1.0 (from tahoe-lafs)
Collecting characteristic>=14.0.0 (from tahoe-lafs)
Using cached characteristic-14.3.0-py2.py3-none-any.whl
Collecting zfec>=1.1.0 (from tahoe-lafs)
Collecting pycryptopp>=0.6.0 (from tahoe-lafs)
Collecting service-identity (from tahoe-lafs)
Using cached service_identity-16.0.0-py2.py3-none-any.whl
Collecting pyasn1-modules>=0.0.5 (from tahoe-lafs)
Using cached pyasn1_modules-0.0.8-py2.py3-none-any.whl
Collecting simplejson>=1.4 (from tahoe-lafs)
Collecting cryptography>=1.3 (from pyOpenSSL>=0.14->tahoe-lafs)
Using cached cryptography-1.3.1.tar.gz
Collecting six>=1.5.2 (from pyOpenSSL>=0.14->tahoe-lafs)
Using cached six-1.10.0-py2.py3-none-any.whl
Collecting idna>=0.6 (from Twisted[tls]>=15.1.0->tahoe-lafs)
Using cached idna-2.1-py2-none-any.whl
Collecting pyutil>=1.3.19 (from zfec>=1.1.0->tahoe-lafs)
Using cached https://tahoe-lafs.org/deps/pyutil-2.0.0-py2-none-any.whl
Collecting attrs (from service-identity->tahoe-lafs)
Using cached attrs-15.2.0-py2.py3-none-any.whl
Collecting enum34 (from cryptography>=1.3->pyOpenSSL>=0.14->tahoe-lafs)
Using cached https://tahoe-lafs.org/deps/enum34-1.1.2-cp27-none-any.whl
Collecting ipaddress (from cryptography>=1.3->pyOpenSSL>=0.14->tahoe-lafs)
Using cached ipaddress-1.0.16-py27-none-any.whl
Collecting cffi>=1.4.1 (from cryptography>=1.3->pyOpenSSL>=0.14->tahoe-
lafs)
Collecting zbase32>=1.0 (from pyutil>=1.3.19->zfec>=1.1.0->tahoe-lafs)
Using cached https://tahoe-lafs.org/deps/zbase32-1.1.5-py2-none-any.whl
Collecting pycparser (from cffi>=1.4.1->cryptography>=1.3->pyOpenSSL>=0.14
->tahoe-lafs)
Using cached https://tahoe-lafs.org/deps/pycparser-2.14-cp27-none-
any.whl
Building wheels for collected packages: cryptography
Running setup.py bdist_wheel for cryptography
Complete output from command /home/crd/tahoe-lafs/bin/python2.7 -c
"import setuptools;__file__='/tmp/pip-build-
M2hczj/cryptography/setup.py';exec(compile(open(__file__).read().replace('\r\n',
'\n'), __file__, 'exec'))" bdist_wheel -d /tmp/tmprebG9bpip-wheel-:
_configtest.c:1: error: thread-local storage not supported for this
target
Note: will not use '__thread' in the C code
The above error message can be safely ignored
Installed /tmp/pip-build-
M2hczj/cryptography/.eggs/cffi-1.5.2-py2.7-openbsd-5.9-amd64.egg
Searching for pycparser
Reading https://pypi.python.org/simple/pycparser/
Best match: pycparser 2.14
Downloading
https://pypi.python.org/packages/source/p/pycparser/pycparser-2.14.tar.gz#md5=a2bc8d28c923b4fe2b2c3b4b51a4f935
Processing pycparser-2.14.tar.gz
Writing /tmp/easy_install-8rsSga/pycparser-2.14/setup.cfg
Running pycparser-2.14/setup.py -q bdist_egg --dist-dir /tmp
/easy_install-8rsSga/pycparser-2.14/egg-dist-tmp-JCVgOd
warning: no previously-included files matching 'yacctab.*' found under
directory 'tests'
warning: no previously-included files matching 'lextab.*' found under
directory 'tests'
warning: no previously-included files matching 'yacctab.*' found under
directory 'examples'
warning: no previously-included files matching 'lextab.*' found under
directory 'examples'
zip_safe flag not set; analyzing archive contents...
Moving pycparser-2.14-py2.7.egg to /tmp/pip-build-
M2hczj/cryptography/.eggs
Installed /tmp/pip-build-
M2hczj/cryptography/.eggs/pycparser-2.14-py2.7.egg
running bdist_wheel
running build
running build_py
creating build
creating build/lib.openbsd-5.9-amd64-2.7
creating build/lib.openbsd-5.9-amd64-2.7/cryptography
copying src/cryptography/__about__.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography
copying src/cryptography/__init__.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography
copying src/cryptography/exceptions.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography
copying src/cryptography/fernet.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography
copying src/cryptography/utils.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography
creating build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat
copying src/cryptography/hazmat/__init__.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat
creating build/lib.openbsd-5.9-amd64-2.7/cryptography/x509
copying src/cryptography/x509/__init__.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/x509
copying src/cryptography/x509/base.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/x509
copying src/cryptography/x509/extensions.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/x509
copying src/cryptography/x509/general_name.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/x509
copying src/cryptography/x509/name.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/x509
copying src/cryptography/x509/oid.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/x509
creating build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends
copying src/cryptography/hazmat/backends/__init__.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends
copying src/cryptography/hazmat/backends/interfaces.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends
copying src/cryptography/hazmat/backends/multibackend.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends
creating build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/bindings
copying src/cryptography/hazmat/bindings/__init__.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/bindings
creating build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/__init__.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/cmac.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/constant_time.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/hashes.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/hmac.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/keywrap.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/padding.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/serialization.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives
creating
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends/commoncrypto
copying src/cryptography/hazmat/backends/commoncrypto/__init__.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends/commoncrypto
copying src/cryptography/hazmat/backends/commoncrypto/backend.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends/commoncrypto
copying src/cryptography/hazmat/backends/commoncrypto/ciphers.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends/commoncrypto
copying src/cryptography/hazmat/backends/commoncrypto/hashes.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends/commoncrypto
copying src/cryptography/hazmat/backends/commoncrypto/hmac.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends/commoncrypto
creating
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/__init__.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/backend.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/ciphers.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/cmac.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/decode_asn1.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/dsa.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/ec.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/encode_asn1.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/hashes.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/hmac.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/rsa.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/utils.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/x509.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/backends/openssl
creating
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/bindings/commoncrypto
copying src/cryptography/hazmat/bindings/commoncrypto/__init__.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/bindings/commoncrypto
copying src/cryptography/hazmat/bindings/commoncrypto/binding.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/bindings/commoncrypto
creating
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/bindings/openssl
copying src/cryptography/hazmat/bindings/openssl/__init__.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/bindings/openssl
copying src/cryptography/hazmat/bindings/openssl/_conditional.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/bindings/openssl
copying src/cryptography/hazmat/bindings/openssl/binding.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/bindings/openssl
creating
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/__init__.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/dh.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/dsa.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/ec.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/padding.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/rsa.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/utils.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/asymmetric
creating
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/__init__.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/algorithms.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/base.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/modes.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/ciphers
creating
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/interfaces
copying src/cryptography/hazmat/primitives/interfaces/__init__.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/interfaces
creating
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/__init__.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/concatkdf.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/hkdf.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/pbkdf2.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/x963kdf.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/kdf
creating
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/twofactor
copying src/cryptography/hazmat/primitives/twofactor/__init__.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/twofactor
copying src/cryptography/hazmat/primitives/twofactor/hotp.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/twofactor
copying src/cryptography/hazmat/primitives/twofactor/totp.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/twofactor
copying src/cryptography/hazmat/primitives/twofactor/utils.py ->
build/lib.openbsd-5.9-amd64-2.7/cryptography/hazmat/primitives/twofactor
running egg_info
writing requirements to src/cryptography.egg-info/requires.txt
writing src/cryptography.egg-info/PKG-INFO
writing top-level names to src/cryptography.egg-info/top_level.txt
writing dependency_links to src/cryptography.egg-
info/dependency_links.txt
writing entry points to src/cryptography.egg-info/entry_points.txt
warning: manifest_maker: standard file '-c' not found
reading manifest file 'src/cryptography.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
no previously-included directories found matching 'docs/_build'
warning: no previously-included files matching '*' found under directory
'vectors'
writing manifest file 'src/cryptography.egg-info/SOURCES.txt'
running build_ext
generating cffi module 'build/temp.openbsd-5.9-amd64-2.7/_padding.c'
creating build/temp.openbsd-5.9-amd64-2.7
generating cffi module
'build/temp.openbsd-5.9-amd64-2.7/_constant_time.c'
generating cffi module 'build/temp.openbsd-5.9-amd64-2.7/_openssl.c'
building '_openssl' extension
creating build/temp.openbsd-5.9-amd64-2.7/build
creating
build/temp.openbsd-5.9-amd64-2.7/build/temp.openbsd-5.9-amd64-2.7
cc -pthread -fno-strict-aliasing -O2 -pipe -DNDEBUG -O2 -pipe -fPIC
-fPIC -I/usr/local/include/python2.7 -c
build/temp.openbsd-5.9-amd64-2.7/_openssl.c -o
build/temp.openbsd-5.9-amd64-2.7/build/temp.openbsd-5.9-amd64-2.7/_openssl.o
build/temp.openbsd-5.9-amd64-2.7/_openssl.c:423:27: error:
openssl/e_os2.h: No such file or directory
error: command 'cc' failed with exit status 1
----------------------------------------
Failed building wheel for cryptography
Failed to build cryptography
Installing collected packages: zope.interface, idna, pyasn1, six, enum34,
ipaddress, pycparser, cffi, cryptography, pyOpenSSL, pyasn1-modules,
attrs, service-identity, Twisted, Nevow, foolscap, pycrypto,
characteristic, zbase32, pyutil, zfec, pycryptopp, simplejson, tahoe-lafs
Running setup.py install for cryptography
Complete output from command /home/crd/tahoe-lafs/bin/python2.7 -c
"import setuptools, tokenize;__file__='/tmp/pip-build-
M2hczj/cryptography/setup.py';exec(compile(getattr(tokenize, 'open',
open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install
--record /tmp/pip-9gaYu8-record/install-record.txt --single-version-
externally-managed --compile --install-headers /home/crd/tahoe-
lafs/include/site/python2.7/cryptography:
running install
running build
running build_py
running egg_info
writing requirements to src/cryptography.egg-info/requires.txt
writing src/cryptography.egg-info/PKG-INFO
writing top-level names to src/cryptography.egg-info/top_level.txt
writing dependency_links to src/cryptography.egg-
info/dependency_links.txt
writing entry points to src/cryptography.egg-info/entry_points.txt
warning: manifest_maker: standard file '-c' not found
reading manifest file 'src/cryptography.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
no previously-included directories found matching 'docs/_build'
warning: no previously-included files matching '*' found under
directory 'vectors'
writing manifest file 'src/cryptography.egg-info/SOURCES.txt'
running build_ext
generating cffi module 'build/temp.openbsd-5.9-amd64-2.7/_padding.c'
already up-to-date
generating cffi module
'build/temp.openbsd-5.9-amd64-2.7/_constant_time.c'
already up-to-date
generating cffi module 'build/temp.openbsd-5.9-amd64-2.7/_openssl.c'
already up-to-date
building '_openssl' extension
cc -pthread -fno-strict-aliasing -O2 -pipe -DNDEBUG -O2 -pipe -fPIC
-fPIC -I/usr/local/include/python2.7 -c
build/temp.openbsd-5.9-amd64-2.7/_openssl.c -o
build/temp.openbsd-5.9-amd64-2.7/build/temp.openbsd-5.9-amd64-2.7/_openssl.o
build/temp.openbsd-5.9-amd64-2.7/_openssl.c:423:27: error:
openssl/e_os2.h: No such file or directory
error: command 'cc' failed with exit status 1
----------------------------------------
Command "/home/crd/tahoe-lafs/bin/python2.7 -c "import setuptools,
tokenize;__file__='/tmp/pip-build-
M2hczj/cryptography/setup.py';exec(compile(getattr(tokenize, 'open',
open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install
--record /tmp/pip-9gaYu8-record/install-record.txt --single-version-
externally-managed --compile --install-headers /home/crd/tahoe-
lafs/include/site/python2.7/cryptography" failed with error code 1 in /tmp
/pip-build-M2hczj/cryptography
(tahoe-lafs)n150:/home/crd:14$
}}}
It's worth noting that `py-cryptography-1.2.1` from OpenBSD's binary
packages '''does''' work because of the patches found in
http://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/security/py-
cryptography/patches/
Perhaps these patches have not been accepted in the upstream `py-
cryptography` project.
--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2746#comment:2>
Tahoe-LAFS <https://Tahoe-LAFS.org>
secure decentralized storage
More information about the tahoe-lafs-trac-stream
mailing list