On 3/27/20 9:05 AM, Michał Górny wrote:
> Use UTS namespace to override hostname when network-sandbox is enabled.
> Set it to 'localhost' as that has a better chance of being present
> in /etc/hosts.  This fixes tests in some packages that try to connect
> to localhost via hostname obtained using gethostname(), e.g. docker-py,
> and suffer resolution problems due to the system hostname not being
> defined in /etc/hosts.
> ---
>  lib/portage/process.py | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/lib/portage/process.py b/lib/portage/process.py
> index c1fc4bcf6..0f9789acb 100644
> --- a/lib/portage/process.py
> +++ b/lib/portage/process.py
> @@ -348,12 +348,14 @@ def spawn(mycommand, env=None, opt_name=None, 
> fd_pipes=None, returnpid=False,
>       if unshare_net or unshare_ipc or unshare_mount or unshare_pid:
>               # from /usr/include/bits/sched.h
>               CLONE_NEWNS = 0x00020000
> +             CLONE_NEWUTS = 0x04000000
>               CLONE_NEWIPC = 0x08000000
>               CLONE_NEWPID = 0x20000000
>               CLONE_NEWNET = 0x40000000
>  
>               if unshare_net:
> -                     unshare_flags |= CLONE_NEWNET
> +                     # UTS namespace to override hostname
> +                     unshare_flags |= CLONE_NEWNET | CLONE_NEWUTS
>               if unshare_ipc:
>                       unshare_flags |= CLONE_NEWIPC
>               if unshare_mount:
> @@ -704,6 +706,8 @@ def _exec(binary, mycommand, opt_name, fd_pipes,
>                                                                       
> noiselevel=-1)
>                                                               os._exit(1)
>                                               if unshare_net:
> +                                                     # use 'localhost' to 
> avoid hostname resolution problems
> +                                                     
> socket.sethostname('localhost')
>                                                       
> _configure_loopback_interface()
>                               except AttributeError:
>                                       # unshare() not supported by libc
> 

Looks good with latest changes in
https://github.com/gentoo/portage/pull/539. Please merge.
-- 
Thanks,
Zac

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to