Your message dated Mon, 6 May 2024 08:23:33 +0200
with message-id <[email protected]>
and subject line Wont fix
has caused the Debian Bug report #1070333,
regarding python-eventlet fails to build with an empty /etc/resolv.conf
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 [email protected]
immediately.)


-- 
1070333: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1070333
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Source: python-eventlet
Version: 0.35.1-1
Severity: normal
X-Debbugs-Cc: [email protected], [email protected]
Control: affects -1 buildd.debian.org

Hi,

python-eventlet fails to build with no nameserver specified in
/etc/resolv.conf:

=================================== FAILURES ===================================
_________________________ TestProxyResolver.test_clear _________________________

self = <tests.greendns_test.TestProxyResolver testMethod=test_clear>

    def test_clear(self):
        rp = greendns.ResolverProxy()
        assert rp._cached_resolver is None
>       resolver = rp._resolver

tests/greendns_test.py:304:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
eventlet/support/greendns.py:347: in _resolver
    self.clear()
eventlet/support/greendns.py:355: in clear
    self._resolver = dns.resolver.Resolver(filename=self._filename)
/usr/lib/python3/dist-packages/dns/resolver.py:944: in __init__
    self.read_resolv_conf(filename)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <dns.resolver.Resolver object at 0x7f9116b8ac90>
f = <_io.TextIOWrapper name='/etc/resolv.conf' mode='r' encoding='UTF-8'>

    def read_resolv_conf(self, f: Any) -> None:
        """Process *f* as a file in the /etc/resolv.conf format.  If f is
        a ``str``, it is used as the name of the file to open; otherwise it
        is treated as the file itself.

        Interprets the following items:

        - nameserver - name server IP address

        - domain - local domain name

        - search - search list for host-name lookup

        - options - supported options are rotate, timeout, edns0, and ndots

        """

        nameservers = []
        if isinstance(f, str):
            try:
                cm: contextlib.AbstractContextManager = open(f)
            except OSError:
                # /etc/resolv.conf doesn't exist, can't be read, etc.
                raise NoResolverConfiguration(f"cannot open {f}")
        else:
            cm = contextlib.nullcontext(f)
        with cm as f:
            for l in f:
                if len(l) == 0 or l[0] == "#" or l[0] == ";":
                    continue
                tokens = l.split()

                # Any line containing less than 2 tokens is malformed
                if len(tokens) < 2:
                    continue

                if tokens[0] == "nameserver":
                    nameservers.append(tokens[1])
                elif tokens[0] == "domain":
                    self.domain = dns.name.from_text(tokens[1])
                    # domain and search are exclusive
                    self.search = []
                elif tokens[0] == "search":
                    # the last search wins
                    self.search = []
                    for suffix in tokens[1:]:
                        self.search.append(dns.name.from_text(suffix))
                    # We don't set domain as it is not used if
                    # len(self.search) > 0
               elif tokens[0] == "options":
                    for opt in tokens[1:]:
                        if opt == "rotate":
                            self.rotate = True
                        elif opt == "edns0":
                            self.use_edns()
                        elif "timeout" in opt:
                            try:
                                self.timeout = int(opt.split(":")[1])
                            except (ValueError, IndexError):
                                pass
                        elif "ndots" in opt:
                            try:
                                self.ndots = int(opt.split(":")[1])
                            except (ValueError, IndexError):
                                pass
        if len(nameservers) == 0:
>           raise NoResolverConfiguration("no nameservers")
E           dns.resolver.NoResolverConfiguration: no nameservers

/usr/lib/python3/dist-packages/dns/resolver.py:1038: NoResolverConfiguration


This fails in sbuild with the unshare backend.

Cheers Jochen

--- End Message ---
--- Begin Message ---
Hi,

for the same reasons I already explained in #1070332, I don't think it's useful to spend time on this bug, and therefore I'm closing it with no further action. Please discuss it there if you think it should.

Cheers,

Thomas Goirand (zigo)

--- End Message ---

Reply via email to