commit:     c35f39af1ae591c9df50da52e83067428a10f80a
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun May 17 08:55:22 2020 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun May 17 09:37:45 2020 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=c35f39af

process: Provide libc fallback for sethostname() on PyPy

Reviewed-by: Zac Medico <zmedico <AT> gentoo.org>
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 lib/portage/process.py | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/lib/portage/process.py b/lib/portage/process.py
index 79052b608..ceb454030 100644
--- a/lib/portage/process.py
+++ b/lib/portage/process.py
@@ -715,7 +715,14 @@ def _exec(binary, mycommand, opt_name, fd_pipes,
                                                if unshare_net:
                                                        # use 'localhost' to 
avoid hostname resolution problems
                                                        try:
-                                                               
socket.sethostname('localhost')
+                                                               # pypy3 does 
not implement socket.sethostname()
+                                                               new_hostname = 
b'localhost'
+                                                               if 
hasattr(socket, 'sethostname'):
+                                                                       
socket.sethostname(new_hostname)
+                                                               else:
+                                                                       if 
libc.sethostname(new_hostname, len(new_hostname)) != 0:
+                                                                               
errno_value = ctypes.get_errno()
+                                                                               
raise OSError(errno_value, os.strerror(errno_value))
                                                        except Exception as e:
                                                                
writemsg("Unable to set hostname: %s (for FEATURES=\"network-sandbox\")\n" % (
                                                                        e,),

Reply via email to