Browse Source

bitbake: hashserv: Fix localhost sometimes resolved to a wrong IP

From: Anatol Belski <anbelski@linux.microsoft.com>

Using localhost for direct builds on host is fine. A case with a
misbehavior has been sighted on a Docker build. Even when the host
supports IPv6, but Docker is not configured correspondingly - some
versions of the asyncio Python module seem to misbehave and try to
use IPv6 where it's not supported in the container. This happens at
least on some Ubuntu 18.04 based containers, resolving the IP
explicitly appears to be the fix.

Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Anatol Belski 3 years ago
parent
commit
0e20f91c11
1 changed files with 6 additions and 1 deletions
  1. 6 1
      lib/hashserv/tests.py

+ 6 - 1
lib/hashserv/tests.py

@@ -14,6 +14,7 @@ import sys
 import tempfile
 import threading
 import unittest
+import socket
 
 
 class TestHashEquivalenceServer(object):
@@ -163,4 +164,8 @@ class TestHashEquivalenceUnixServer(TestHashEquivalenceServer, unittest.TestCase
 
 class TestHashEquivalenceTCPServer(TestHashEquivalenceServer, unittest.TestCase):
     def get_server_addr(self):
-        return "localhost:0"
+        # Some hosts cause asyncio module to misbehave, when IPv6 is not enabled.
+        # If IPv6 is enabled, it should be safe to use localhost directly, in general
+        # case it is more reliable to resolve the IP address explicitly.
+        return socket.gethostbyname("localhost") + ":0"
+