Package: src:asyncpg
Version: 0.27.0-1
Severity: serious
Control: close -1 0.30.0-1.1
Tags: ftbfs bookworm

Dear maintainer:

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

[ Note: The bug is closed with the version in trixie/sid, but
  packages in bookworm must still build in bookworm ].

--------------------------------------------------------------------------------
[...]
 debian/rules clean
dh clean --with python3 --buildsystem=pybuild
   dh_auto_clean -O--buildsystem=pybuild
I: pybuild base:240: python3.11 setup.py clean 
running clean
removing '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build' (and 
everything under it)
'build/bdist.linux-x86_64' does not exist -- can't clean it
'build/scripts-3.11' does not exist -- can't clean it
   dh_autoreconf_clean -O--buildsystem=pybuild
   dh_clean -O--buildsystem=pybuild
 debian/rules binary
dh binary --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:240: python3.11 setup.py config 
running config
   dh_auto_build -O--buildsystem=pybuild
I: pybuild base:240: /usr/bin/python3 setup.py build build_ext --cython-always
running build
running build_py
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg
copying asyncpg/connection.py -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg
copying asyncpg/pool.py -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg
copying asyncpg/_version.py -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg
copying asyncpg/cluster.py -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg
copying asyncpg/types.py -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg
copying asyncpg/prepared_stmt.py -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg
copying asyncpg/connect_utils.py -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg
copying asyncpg/compat.py -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg
copying asyncpg/transaction.py -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg
copying asyncpg/serverversion.py -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg
copying asyncpg/__init__.py -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg
copying asyncpg/utils.py -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg
copying asyncpg/connresource.py -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg
copying asyncpg/introspection.py -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg
copying asyncpg/cursor.py -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg
creating 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/exceptions
copying asyncpg/exceptions/__init__.py -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/exceptions
copying asyncpg/exceptions/_base.py -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/exceptions
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/pgproto
copying asyncpg/pgproto/types.py -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/pgproto
copying asyncpg/pgproto/__init__.py -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/pgproto
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/_testbase
copying asyncpg/_testbase/__init__.py -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/_testbase
copying asyncpg/_testbase/fuzzer.py -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/_testbase
creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol
copying asyncpg/protocol/__init__.py -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol
creating 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/__init__.py -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol/codecs
copying asyncpg/pgproto/frb.pyx -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/pgproto
copying asyncpg/pgproto/buffer.pyx -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/pgproto
copying asyncpg/pgproto/pgproto.pyx -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/pgproto
copying asyncpg/pgproto/uuid.pyx -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/pgproto
copying asyncpg/pgproto/cpythonx.pxd -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/pgproto
copying asyncpg/pgproto/hton.pxd -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/pgproto
copying asyncpg/pgproto/__init__.pxd -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/pgproto
copying asyncpg/pgproto/pgproto.pxd -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/pgproto
copying asyncpg/pgproto/buffer.pxd -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/pgproto
copying asyncpg/pgproto/tohex.pxd -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/pgproto
copying asyncpg/pgproto/frb.pxd -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/pgproto
copying asyncpg/pgproto/debug.pxd -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/pgproto
copying asyncpg/pgproto/consts.pxi -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/pgproto
copying asyncpg/protocol/prepared_stmt.pyx -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol
copying asyncpg/protocol/coreproto.pyx -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol
copying asyncpg/protocol/settings.pyx -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol
copying asyncpg/protocol/scram.pyx -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol
copying asyncpg/protocol/protocol.pyx -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol
copying asyncpg/protocol/encodings.pyx -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol
copying asyncpg/protocol/prepared_stmt.pxd -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol
copying asyncpg/protocol/settings.pxd -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol
copying asyncpg/protocol/cpythonx.pxd -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol
copying asyncpg/protocol/protocol.pxd -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol
copying asyncpg/protocol/coreproto.pxd -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol
copying asyncpg/protocol/scram.pxd -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol
copying asyncpg/protocol/consts.pxi -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol
copying asyncpg/protocol/pgtypes.pxi -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol
copying asyncpg/protocol/codecs/range.pyx -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/array.pyx -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/base.pyx -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/textutils.pyx -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/record.pyx -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/pgproto.pyx -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol/codecs
copying asyncpg/protocol/codecs/base.pxd -> 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol/codecs
running build_ext
building 'asyncpg.pgproto.pgproto' extension
creating build
creating build/temp.linux-x86_64-cpython-311
creating build/temp.linux-x86_64-cpython-311/asyncpg
creating build/temp.linux-x86_64-cpython-311/asyncpg/pgproto
x86_64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g 
-fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -O2 
-ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat 
-Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC 
-I./asyncpg/pgproto -I/usr/include/python3.11 -c asyncpg/pgproto/pgproto.c -o 
build/temp.linux-x86_64-cpython-311/asyncpg/pgproto/pgproto.o -O2 -fsigned-char 
-Wall -Wsign-compare -Wconversion
x86_64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -g -fwrapv -O2 
-Wl,-z,relro -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. 
-fstack-protector-strong -Wformat -Werror=format-security -Wdate-time 
-D_FORTIFY_SOURCE=2 
build/temp.linux-x86_64-cpython-311/asyncpg/pgproto/pgproto.o 
-L/usr/lib/x86_64-linux-gnu -o 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/pgproto/pgproto.cpython-311-x86_64-linux-gnu.so
building 'asyncpg.protocol.protocol' extension
creating build/temp.linux-x86_64-cpython-311/asyncpg/protocol
creating build/temp.linux-x86_64-cpython-311/asyncpg/protocol/record
x86_64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g 
-fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -O2 
-ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat 
-Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC 
-I./asyncpg/pgproto -Iasyncpg/pgproto/ -I/usr/include/python3.11 -c 
asyncpg/protocol/protocol.c -o 
build/temp.linux-x86_64-cpython-311/asyncpg/protocol/protocol.o -O2 
-fsigned-char -Wall -Wsign-compare -Wconversion
x86_64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g 
-fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -O2 
-ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat 
-Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC 
-I./asyncpg/pgproto -Iasyncpg/pgproto/ -I/usr/include/python3.11 -c 
asyncpg/protocol/record/recordobj.c -o 
build/temp.linux-x86_64-cpython-311/asyncpg/protocol/record/recordobj.o -O2 
-fsigned-char -Wall -Wsign-compare -Wconversion
asyncpg/protocol/record/recordobj.c: In function ‘record_dealloc’:
asyncpg/protocol/record/recordobj.c:101:5: warning: 
‘UsingDeprecatedTrashcanMacro’ is deprecated [-Wdeprecated-declarations]
  101 |     Py_TRASHCAN_SAFE_BEGIN(o)
      |     ^~~~~~~~~~~~~~~~~~~~~~
x86_64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -g -fwrapv -O2 
-Wl,-z,relro -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. 
-fstack-protector-strong -Wformat -Werror=format-security -Wdate-time 
-D_FORTIFY_SOURCE=2 
build/temp.linux-x86_64-cpython-311/asyncpg/protocol/protocol.o 
build/temp.linux-x86_64-cpython-311/asyncpg/protocol/record/recordobj.o 
-L/usr/lib/x86_64-linux-gnu -o 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build/asyncpg/protocol/protocol.cpython-311-x86_64-linux-gnu.so
   dh_auto_test -O--buildsystem=pybuild
I: pybuild base:240: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build; 
python3.11 -m pytest -k "not test_flake8"
============================= test session starts ==============================
platform linux -- Python 3.11.2, pytest-7.2.1, pluggy-1.0.0+repack
rootdir: /<<PKGBUILDDIR>>
collected 293 items / 1 deselected / 292 selected

tests/test__environment.py ss                                            [  0%]
tests/test_adversity.py ...                                              [  1%]
tests/test_cache_invalidation.py .........                               [  4%]
tests/test_cancellation.py ....                                          [  6%]
tests/test_codecs.py ....................................                [ 18%]
tests/test_connect.py ..............F.............................       [ 33%]
tests/test_copy.py .......................                               [ 41%]
tests/test_cursor.py ..........                                          [ 44%]
tests/test_exceptions.py ...                                             [ 45%]
tests/test_execute.py ...................                                [ 52%]
tests/test_introspection.py .......                                      [ 54%]
tests/test_listeners.py ..........                                       [ 58%]
tests/test_pool.py ...........................................           [ 72%]
tests/test_prepare.py ..................................                 [ 84%]
tests/test_record.py .........................                           [ 93%]
tests/test_test.py ..                                                    [ 93%]
tests/test_timeout.py .........                                          [ 96%]
tests/test_transaction.py ......                                         [ 98%]
tests/test_types.py .                                                    [ 99%]
tests/test_utils.py ..                                                   [100%]

=================================== FAILURES ===================================
____________________ TestConnectParams.test_connect_params _____________________

self = <tests.test_connect.TestConnectParams testMethod=test_connect_params>

    def test_connect_params(self):
        for testcase in self.TESTS:
>           self.run_testcase(testcase)

tests/test_connect.py:881: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_connect.py:810: in run_testcase
    addrs, params = connect_utils._parse_connect_dsn_and_args(
asyncpg/connect_utils.py:266: in _parse_connect_dsn_and_args
    parsed = urllib.parse.urlparse(dsn)
/usr/lib/python3.11/urllib/parse.py:395: in urlparse
    splitresult = urlsplit(url, scheme, allow_fragments)
/usr/lib/python3.11/urllib/parse.py:516: in urlsplit
    _check_bracketed_netloc(netloc)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

netloc = 'user@[2001:db8::1234%25eth0],[::1]'

    def _check_bracketed_netloc(netloc):
        # Note that this function must mirror the splitting
        # done in NetlocResultMixins._hostinfo().
        hostname_and_port = netloc.rpartition('@')[2]
        before_bracket, have_open_br, bracketed = 
hostname_and_port.partition('[')
        if have_open_br:
            # No data is allowed before a bracket.
            if before_bracket:
                raise ValueError("Invalid IPv6 URL")
            hostname, _, port = bracketed.partition(']')
            # No data is allowed after the bracket but before the port 
delimiter.
            if port and not port.startswith(":"):
>               raise ValueError("Invalid IPv6 URL")
E               ValueError: Invalid IPv6 URL

/usr/lib/python3.11/urllib/parse.py:451: ValueError
=========================== short test summary info ============================
FAILED tests/test_connect.py::TestConnectParams::test_connect_params - ValueE...
====== 1 failed, 289 passed, 2 skipped, 1 deselected in 61.09s (0:01:01) =======
E: pybuild pybuild:388: test: plugin distutils failed with: exit code=1: cd 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asyncpg/build; python3.11 -m pytest -k 
"not test_flake8"
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.11 
returned exit code 13
make: *** [debian/rules:8: binary] Error 25
dpkg-buildpackage: error: debian/rules binary 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/bookworm/

About the archive rebuild: The build was made on virtual machines 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 add an affects on src:asyncpg, so that this is still
visible in the BTS web page for this package.

Note: The following packages fail in a similar weird way:

asyncpg
python-taskflow
python-w3lib
yarl

Maybe there is a common reason, or maybe the packages need to adapt anyway.

Thanks.

Reply via email to