Discussion:
Bug#1080115: magic-wormhole: FTBFS: ImportError: cannot import name 'provides' from 'attr.validators' (/usr/lib/python3/dist-packages/attr/validators.py)
Add Reply
Santiago Vila
2024-08-30 17:40:01 UTC
Reply
Permalink
Package: src:magic-wormhole
Version: 0.14.0-0.1
Severity: serious
Tags: ftbfs

Dear maintainer:

During a rebuild of all packages in unstable, your package failed to build:

--------------------------------------------------------------------------------
[...]
debian/rules build
dh build --with python3 --buildsystem=pybuild
dh_update_autotools_config -O--buildsystem=pybuild
dh_autoreconf -O--buildsystem=pybuild
dh_auto_configure -O--buildsystem=pybuild
I: pybuild base:311: python3.12 setup.py config
/usr/lib/python3/dist-packages/setuptools/_distutils/dist.py:268: UserWarning: Unknown distribution option: 'test_suite'
warnings.warn(msg)
running config
dh_auto_build -O--buildsystem=pybuild
I: pybuild base:311: /usr/bin/python3 setup.py build
/usr/lib/python3/dist-packages/setuptools/_distutils/dist.py:268: UserWarning: Unknown distribution option: 'test_suite'
warnings.warn(msg)
running build
running build_py
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/_mailbox.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/_wordlist.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/errors.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/_interfaces.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/_order.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/observer.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/_version.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/_boss.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/timing.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/_rlcompleter.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/_send.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/_receive.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/transit.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/_key.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/_allocator.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/_lister.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/tor_manager.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/xfer_util.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/wormhole.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/_terminator.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/eventual.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/journal.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/ipaddrs.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/util.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/_rendezvous.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/_hints.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/_code.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/__main__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/_input.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
copying src/wormhole/_nameplate.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/cli
copying src/wormhole/cli/public_relay.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/cli
copying src/wormhole/cli/cmd_ssh.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/cli
copying src/wormhole/cli/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/cli
copying src/wormhole/cli/welcome.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/cli
copying src/wormhole/cli/cmd_send.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/cli
copying src/wormhole/cli/cli.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/cli
copying src/wormhole/cli/cmd_receive.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/cli
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/_dilation
copying src/wormhole/_dilation/connector.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/_dilation
copying src/wormhole/_dilation/connection.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/_dilation
copying src/wormhole/_dilation/inbound.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/_dilation
copying src/wormhole/_dilation/manager.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/_dilation
copying src/wormhole/_dilation/_noise.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/_dilation
copying src/wormhole/_dilation/encode.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/_dilation
copying src/wormhole/_dilation/roles.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/_dilation
copying src/wormhole/_dilation/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/_dilation
copying src/wormhole/_dilation/subchannel.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/_dilation
copying src/wormhole/_dilation/outbound.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/_dilation
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test
copying src/wormhole/test/test_util.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test
copying src/wormhole/test/test_hints.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test
copying src/wormhole/test/test_keys.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test
copying src/wormhole/test/test_cli.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test
copying src/wormhole/test/test_wordlist.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test
copying src/wormhole/test/test_eventual.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test
copying src/wormhole/test/test_xfer_util.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test
copying src/wormhole/test/test_tor_manager.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test
copying src/wormhole/test/test_observer.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test
copying src/wormhole/test/test_wormhole.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test
copying src/wormhole/test/test_machines.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test
copying src/wormhole/test/test_ssh.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test
copying src/wormhole/test/test_args.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test
copying src/wormhole/test/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test
copying src/wormhole/test/common.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test
copying src/wormhole/test/test_rlcompleter.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test
copying src/wormhole/test/test_transit.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test
copying src/wormhole/test/test_hkdf.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test
copying src/wormhole/test/run_trial.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test
copying src/wormhole/test/test_ipaddrs.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test
copying src/wormhole/test/test_journal.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test/dilate
copying src/wormhole/test/dilate/test_inbound.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test/dilate
copying src/wormhole/test/dilate/test_framer.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test/dilate
copying src/wormhole/test/dilate/test_parse.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test/dilate
copying src/wormhole/test/dilate/test_connection.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test/dilate
copying src/wormhole/test/dilate/test_record.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test/dilate
copying src/wormhole/test/dilate/test_outbound.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test/dilate
copying src/wormhole/test/dilate/test_manager.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test/dilate
copying src/wormhole/test/dilate/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test/dilate
copying src/wormhole/test/dilate/common.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test/dilate
copying src/wormhole/test/dilate/test_full.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test/dilate
copying src/wormhole/test/dilate/test_endpoints.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test/dilate
copying src/wormhole/test/dilate/test_connect.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test/dilate
copying src/wormhole/test/dilate/test_subchannel.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test/dilate
copying src/wormhole/test/dilate/test_connector.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test/dilate
copying src/wormhole/test/dilate/test_encoding.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/test/dilate
UPDATING /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/_version.py
set /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/_version.py to '0.14.0'
dh_auto_test -O--buildsystem=pybuild
I: pybuild base:311: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build; python3 -m wormhole.test.run_trial wormhole
Traceback (most recent call last):
File "<frozen runpy>", line 189, in _run_module_as_main
File "<frozen runpy>", line 112, in _get_module_details
File "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/__init__.py", line 2, in <module>
from .wormhole import create
File "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/wormhole.py", line 11, in <module>
from ._boss import Boss
File "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build/wormhole/_boss.py", line 4, in <module>
from attr.validators import instance_of, optional, provides
ImportError: cannot import name 'provides' from 'attr.validators' (/usr/lib/python3/dist-packages/attr/validators.py)
E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_magic-wormhole/build; python3 -m wormhole.test.run_trial wormhole
dh_auto_test: error: pybuild --test -i python{version} -p 3.12 returned exit code 13
make: *** [debian/rules:14: build] Error 25
dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2
--------------------------------------------------------------------------------

The above is just how the build ends and not necessarily the most relevant part.
If required, the full build log is available here:

https://people.debian.org/~sanvila/build-logs/202408/

About the archive rebuild: The build was made on virtual machines
of type m6a.large and r6a.large from AWS, using sbuild and a
reduced chroot with only build-essential packages.

If you could not reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.

If this is really a bug in one of the build-depends, please use
reassign and affects, so that this is still visible in the BTS web
page for this package.

Thanks.
Paolo Greppi
2024-10-17 06:00:01 UTC
Reply
Permalink
According to the issue:
https://github.com/magic-wormhole/magic-wormhole/issues/537
this should be fixed upstream in releases 0.15.0 and later.

A fix for the version in sid is to pin the attr module to version 23.2.0
but ATM python3-attr in sid is at version 24.2.0-1:
https://packages.debian.org/sid/python3-attr

This bug is related to:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1079401
fut I cannot forcemerge them because they are not assigned to the same
package ('magic-wormhole' is not 'src:magic-wormhole').

As a side-note, we have tried a few times to tag this bug as forwarded
upstream but the BTS rejects the mail to ***@bugs.d.o as "Unknown
command or malformed arguments to command."

P.

Loading...