On Wed, 2022-01-19 at 23:09 -0800, Robert Yang wrote:
> The NIS or icecc can't work when task network is dissable, add BB_TASK_NETWORK
> to enable network globally for such exceptions.
> 
> Note, enable nscd on the build machine might be a solution, but that isn't
> reliable since it depends on whether the network function has been cached or
> not.
> 
> Signed-off-by: Robert Yang <[email protected]>
> ---
>  meta/classes/icecc.bbclass |  2 ++
>  meta/conf/bitbake.conf     |  3 +++
>  meta/lib/oe/utils.py       | 15 +++++++++++++++
>  3 files changed, 20 insertions(+)
> 
> diff --git a/meta/classes/icecc.bbclass b/meta/classes/icecc.bbclass
> index 794e9930ad9..c39c86458a4 100644
> --- a/meta/classes/icecc.bbclass
> +++ b/meta/classes/icecc.bbclass
> @@ -41,6 +41,8 @@ ICECC_ENV_EXEC ?= 
> "${STAGING_BINDIR_NATIVE}/icecc-create-env"
>  
>  HOSTTOOLS_NONFATAL += "icecc patchelf"
>  
> +BB_TASK_NETWORK ? = "1"
> +

As Quentin mentions, I'd much rather this was done on the tasks using icecc
using the flag.


>  # This version can be incremented when changes are made to the environment 
> that
>  # invalidate the version on the compile nodes. Changing it will cause a new
>  # environment to be created.
> diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
> index fba99e8f0cd..bf5bcd55519 100644
> --- a/meta/conf/bitbake.conf
> +++ b/meta/conf/bitbake.conf
> @@ -946,3 +946,6 @@ MULTILIB_VARIANTS ??= ""
>  # what it would be anyway if the signature generator (e.g. OEEquivHash) 
> doesn't
>  # support unihashes.
>  BB_UNIHASH ?= "${BB_TASKHASH}"
> +
> +# Enable task network for remote user such as NIS.
> +BB_TASK_NETWORK ??= "${@['1', '0'][oe.utils.is_local_uid()]}"
> diff --git a/meta/lib/oe/utils.py b/meta/lib/oe/utils.py
> index 136650e6f74..c21f034aafc 100644
> --- a/meta/lib/oe/utils.py
> +++ b/meta/lib/oe/utils.py
> @@ -595,3 +595,18 @@ def directory_size(root, blocksize=4096):
>          total += sum(roundup(getsize(os.path.join(root, name))) for name in 
> files)
>          total += roundup(getsize(root))
>      return total
> +
> +def is_local_uid(uid=''):
> +    """
> +    Check whether uid is a local one or not.
> +    Can't use pwd module since it gets all UIDs, not local ones only.
> +    """
> +    if not uid:
> +        uid = os.getuid()
> +    local_uids = set()
> +    with open('/etc/passwd', 'r') as f:
> +        for line in f.readlines():
> +            if not ':' in line:
> +                continue
> +            local_uids.add(line.split(':')[2])
> +    return uid in local_uids

I think we should move this code into bitbake as I really dislike having it in
bitbake.conf and that [0][1] syntax is horrible too...

I'm also not convinced about the name "BB_TASK_NETWORK" and think we need
something better. If we're moving the code to bitbake we might not need a name
right now though.

Cheers,

Richard



-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#160759): 
https://lists.openembedded.org/g/openembedded-core/message/160759
Mute This Topic: https://lists.openembedded.org/mt/88554465/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to