Your message dated Sat, 07 Dec 2024 11:49:01 +0000
with message-id <e1tjtiz-0084tg...@fasolo.debian.org>
and subject line Bug#1081334: fixed in async-upnp-client 0.41.0-1
has caused the Debian Bug report #1081334,
regarding async-upnp-client: FTBFS (requires network interfaces)
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
1081334: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1081334
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Source: async-upnp-client
Version: 0.40.0-1
Severity: serious
Tags: ftbfs
Justification: FTBFS

Dear maintainer,

During a test rebuild, async-upnp-client failed to rebuild.

Judging from the test, this may be specifically because of the unshare
build backend? They pass for me under Incus.

Probably these ENODEV errors could be caught and turned into test skips.

-------------------------------------------------------------------------------
[...]
            type=socket.SOCK_DGRAM,
            proto=socket.IPPROTO_UDP,
        )[0]
        source_ip, source_port = ip_port_from_address_tuple(source)
        source_info = socket.getaddrinfo(
            str(source_ip), source_port, type=socket.SOCK_DGRAM, 
proto=socket.IPPROTO_UDP
        )[0]
        _LOGGER.debug("Creating socket, source: %s, target: %s", source_info, 
target_info)
    
        # create socket
        sock = socket.socket(source_info[0], source_info[1])
    
        # set options
        sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        try:
            sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
        except AttributeError:
            pass
        sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
    
        # multicast
        if target_ip.is_multicast:
            if source_info[0] == socket.AF_INET6:
                sock.setsockopt(socket.IPPROTO_IPV6, 
socket.IPV6_MULTICAST_HOPS, 2)
                addr = cast(AddressTupleV6Type, source_info[4])
                if addr[3]:
                    mreq = target_ip.packed + addr[3].to_bytes(4, sys.byteorder)
                    sock.setsockopt(socket.IPPROTO_IPV6, 
socket.IPV6_JOIN_GROUP, mreq)
                    sock.setsockopt(socket.IPPROTO_IPV6, 
socket.IPV6_MULTICAST_IF, addr[3])
                else:
                    _LOGGER.debug("Skipping setting multicast interface")
            else:
                sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_IF, 
source_ip.packed)
                sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 2)
>               sock.setsockopt(
                    socket.IPPROTO_IP,
                    socket.IP_ADD_MEMBERSHIP,
                    target_ip.packed + source_ip.packed,
                )
E               OSError: [Errno 19] No such device

async_upnp_client/ssdp.py:491: OSError
_____________________ test_see_search_device_ipv4_and_ipv6 _____________________

    @pytest.mark.asyncio
    async def test_see_search_device_ipv4_and_ipv6() -> None:
        """Test seeing the same device via IPv4, then via IPv6."""
        # pylint: disable=protected-access
        async_callback = AsyncMock()
        listener = SsdpListener(async_callback=async_callback)
>       await listener.async_start()

tests/test_ssdp_listener.py:686: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
async_upnp_client/ssdp_listener.py:520: in async_start
    await self._advertisement_listener.async_start()
async_upnp_client/advertisement.py:118: in async_start
    sock, _source, _target = get_ssdp_socket(self.source, self.target)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

source = ('0.0.0.0', 0), target = ('239.255.255.250', 1900)

    def get_ssdp_socket(
        source: AddressTupleVXType,
        target: AddressTupleVXType,
    ) -> Tuple[socket.socket, AddressTupleVXType, AddressTupleVXType]:
        """Create a socket to listen on."""
        # Ensure a proper IPv6 source/target.
        if is_ipv6_address(source):
            source = cast(AddressTupleV6Type, source)
            if not source[3]:
                raise UpnpError(f"Source missing scope_id, source: {source}")
    
        if is_ipv6_address(target):
            target = cast(AddressTupleV6Type, target)
            if not target[3]:
                raise UpnpError(f"Target missing scope_id, target: {target}")
    
        target_ip, target_port = ip_port_from_address_tuple(target)
        target_info = socket.getaddrinfo(
            str(target_ip),
            target_port,
            type=socket.SOCK_DGRAM,
            proto=socket.IPPROTO_UDP,
        )[0]
        source_ip, source_port = ip_port_from_address_tuple(source)
        source_info = socket.getaddrinfo(
            str(source_ip), source_port, type=socket.SOCK_DGRAM, 
proto=socket.IPPROTO_UDP
        )[0]
        _LOGGER.debug("Creating socket, source: %s, target: %s", source_info, 
target_info)
    
        # create socket
        sock = socket.socket(source_info[0], source_info[1])
    
        # set options
        sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        try:
            sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
        except AttributeError:
            pass
        sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
    
        # multicast
        if target_ip.is_multicast:
            if source_info[0] == socket.AF_INET6:
                sock.setsockopt(socket.IPPROTO_IPV6, 
socket.IPV6_MULTICAST_HOPS, 2)
                addr = cast(AddressTupleV6Type, source_info[4])
                if addr[3]:
                    mreq = target_ip.packed + addr[3].to_bytes(4, sys.byteorder)
                    sock.setsockopt(socket.IPPROTO_IPV6, 
socket.IPV6_JOIN_GROUP, mreq)
                    sock.setsockopt(socket.IPPROTO_IPV6, 
socket.IPV6_MULTICAST_IF, addr[3])
                else:
                    _LOGGER.debug("Skipping setting multicast interface")
            else:
                sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_IF, 
source_ip.packed)
                sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 2)
>               sock.setsockopt(
                    socket.IPPROTO_IP,
                    socket.IP_ADD_MEMBERSHIP,
                    target_ip.packed + source_ip.packed,
                )
E               OSError: [Errno 19] No such device

async_upnp_client/ssdp.py:491: OSError
=============================== warnings summary ===============================
.pybuild/cpython3_3.12_async-upnp-client/build/tests/test_server.py::test_init
.pybuild/cpython3_3.12_async-upnp-client/build/tests/test_server.py::test_action
.pybuild/cpython3_3.12_async-upnp-client/build/tests/test_server.py::test_subscribe
  
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_async-upnp-client/build/async_upnp_client/server.py:291:
 DeprecationWarning: Testing an element's truth value will always return True 
in future versions.  Use specific 'len(elem)' or 'elem is not None' test 
instead.
    if not thing or not hasattr(thing, "__upnp_action__"):

.pybuild/cpython3_3.12_async-upnp-client/build/tests/test_server.py::test_action
  
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_async-upnp-client/build/async_upnp_client/server.py:1081:
 DeprecationWarning: Testing an element's truth value will always return True 
in future versions.  Use specific 'len(elem)' or 'elem is not None' test 
instead.
    assert body_el

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED tests/test_ssdp_listener.py::test_see_advertisement_alive - OSError: [...
FAILED tests/test_ssdp_listener.py::test_see_advertisement_byebye - OSError: ...
FAILED tests/test_ssdp_listener.py::test_see_advertisement_update - OSError: ...
FAILED tests/test_ssdp_listener.py::test_see_search - OSError: [Errno 19] No ...
FAILED tests/test_ssdp_listener.py::test_see_search_sync - OSError: [Errno 19...
FAILED tests/test_ssdp_listener.py::test_see_search_then_alive - OSError: [Er...
FAILED tests/test_ssdp_listener.py::test_see_search_then_update - OSError: [E...
FAILED tests/test_ssdp_listener.py::test_see_search_then_byebye - OSError: [E...
FAILED tests/test_ssdp_listener.py::test_see_search_then_byebye_then_alive - ...
FAILED tests/test_ssdp_listener.py::test_purge_devices - OSError: [Errno 19] ...
FAILED tests/test_ssdp_listener.py::test_purge_devices_2 - OSError: [Errno 19...
FAILED tests/test_ssdp_listener.py::test_see_search_invalid_usn - OSError: [E...
FAILED tests/test_ssdp_listener.py::test_see_search_invalid_location - OSErro...
FAILED 
tests/test_ssdp_listener.py::test_see_search_localhost_location[http:/127.0.0.1:1234/device.xml]
FAILED 
tests/test_ssdp_listener.py::test_see_search_localhost_location[http:/[::1]:1234/device.xml]
FAILED 
tests/test_ssdp_listener.py::test_see_search_localhost_location[http:/169.254.12.1:1234/device.xml]
FAILED tests/test_ssdp_listener.py::test_combined_headers - OSError: [Errno 1...
FAILED tests/test_ssdp_listener.py::test_see_search_device_ipv4_and_ipv6 - OS...
========== 18 failed, 124 passed, 14 deselected, 4 warnings in 11.08s ==========
E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_async-upnp-client/build; python3.12 -m 
pytest -k "not test_get_local_ip and not test_async_get_local_ip"
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.12 
returned exit code 13
make: *** [debian/rules:8: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------
Build finished at 2024-09-07T14:13:33Z

-------------------------------------------------------------------------------

The above is just how the build ends and not necessarily the most relevant part.
If required, the full build log is available here (for the next 30 days):
https://debusine.debian.net/artifact/609977/

About the archive rebuild: The build was made on debusine.debian.net,
on arm64 using sbuild.

You can find the build task here:
https://debusine.debian.net/work-request/20346/

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,

Stefano

--- End Message ---
--- Begin Message ---
Source: async-upnp-client
Source-Version: 0.41.0-1
Done: Edward Betts <edw...@4angle.com>

We believe that the bug you reported is fixed in the latest version of
async-upnp-client, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 1081...@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Edward Betts <edw...@4angle.com> (supplier of updated async-upnp-client package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmas...@ftp-master.debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Sat, 07 Dec 2024 11:23:55 +0000
Source: async-upnp-client
Architecture: source
Version: 0.41.0-1
Distribution: unstable
Urgency: medium
Maintainer: Debian Python Team <team+pyt...@tracker.debian.org>
Changed-By: Edward Betts <edw...@4angle.com>
Closes: 1081334
Changes:
 async-upnp-client (0.41.0-1) unstable; urgency=medium
 .
   * New upstream release.
   * Skip tests that need network access. (Closes: #1081334)
   * Add pybuild-plugin-pyproject to Build-Depends.
   * Move packages required for tests to Build-Depends-Indep.
   * Simplify debian/watch.
   * No need for python3-pytest-cov during autopkgtest.
   * Add contrib directory to examples.
Checksums-Sha1:
 19ffdb2294ce40b41adf319347432ed7f944c9ad 2525 async-upnp-client_0.41.0-1.dsc
 7a1efcb738089152e213fdd7fd0032c8a9d15305 133041 
async-upnp-client_0.41.0.orig.tar.gz
 884fc8e505d0a068f6b56011c3861a6a03274b56 2700 
async-upnp-client_0.41.0-1.debian.tar.xz
 882358d13b97561ecdfb242dd47d53869fc5b60e 8932 
async-upnp-client_0.41.0-1_source.buildinfo
Checksums-Sha256:
 48bd57518014b06c4bab760b395fbc080815077ee1f0320b175b21bb8464bd03 2525 
async-upnp-client_0.41.0-1.dsc
 bd58088bad82ee79f32fe76a0a4173098ba5070516649eb10bfe1fa2a8978482 133041 
async-upnp-client_0.41.0.orig.tar.gz
 73191613f49df2e3130566a586a6c7a43184ae8af297e0fa396854379427282f 2700 
async-upnp-client_0.41.0-1.debian.tar.xz
 02cdff00692879f1cea23bc239607a76b359f1775ed73929236f4e1535fbba6c 8932 
async-upnp-client_0.41.0-1_source.buildinfo
Files:
 98d67ad04623cabf00d8cee854bb36ae 2525 python optional 
async-upnp-client_0.41.0-1.dsc
 8088a44cd152f1b68e005f0f705830f0 133041 python optional 
async-upnp-client_0.41.0.orig.tar.gz
 1ad40291d6199cc455df224ee0c2c4cd 2700 python optional 
async-upnp-client_0.41.0-1.debian.tar.xz
 d26c3f57a8bc8d4d70a9627770013e29 8932 python optional 
async-upnp-client_0.41.0-1_source.buildinfo

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEE+4rPp4xyYInDitAmlgWhCYxjuSoFAmdUMvEACgkQlgWhCYxj
uSo77xAAnr+MV81AcFK5Kny3n+OuTRHn6Q8KmpJqtdMIiIGgy9nAR+280p+mDhb6
R69Vw91KQ5Ph03KkJvmwS9crJ+LjCIlls0Z3r/MxxHSQnTTZpk8UzufO/izO3NTt
SUvCFhAVXKc0QINZ5DYXz5/mTBO+nTJtvc/Fx4tyzlO3Ns1Wnsfi/0xdawH+Nlu7
h2bZ20BplztalxnN/4P/5mXP8zTwrQI0mFSWU+C8HDG2TsFowszVQXKmLbER7dxi
ySNkqgTDqz95CjNWqDIl/ujjOsRq9DZ4DKCoyew7G04BWKMzyyYpCHP+WzWmO62X
u9d6VwyEXkll+VKktjRVEEpKHbXDtfPcH3BTBfT2Rdd0wc4ZQbOMfpdlfZiUmprz
35h1SxMb2yHYj6oyWp3m+BjRHqfVBS9RoUwU64zFBVI0T7Xb9B1V+lB0e7maXJ2d
R4hObr9wzL2T5tB5Ch3E79M4gtBe7qzfKFOU1ndb650NFME49TJqSnBC+epkb9tK
ROuk3q84cuIVPLAwxOs5VPwEmZ4y8EUo1Ej/K8BzX7yTjcCOUIke4etgEI6x1cdq
pdac59gYohGbYwqhC094eI3v+f4gi/V/L+a7K8ufChJ9yGfbxC5YWL/QpqxdSIBQ
vg5UV4NO16kIpezlwusz/N46YJlbzncPihyngSCBOJHVZqXxc8g=
=HAdr
-----END PGP SIGNATURE-----

Attachment: pgpRLXvmhedly.pgp
Description: PGP signature


--- End Message ---

Reply via email to