public inbox for gentoo-portage-dev@lists.gentoo.org
 help / color / mirror / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download: 
* Re: [gentoo-portage-dev] [PATCH] process: Unshare UTS namespace, and set hostname to 'localhost'
  @ 2020-03-27 19:10 99% ` Zac Medico
  0 siblings, 0 replies; 1+ results
From: Zac Medico @ 2020-03-27 19:10 UTC (permalink / raw
  To: gentoo-portage-dev, Michał Górny


[-- Attachment #1.1: Type: text/plain, Size: 1808 bytes --]

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 #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 343 bytes --]

^ permalink raw reply	[relevance 99%]

Results 1-1 of 1 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2020-03-27 16:05     [gentoo-portage-dev] [PATCH] process: Unshare UTS namespace, and set hostname to 'localhost' Michał Górny
2020-03-27 19:10 99% ` Zac Medico

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox