I have a tentative fix, but need to test it thoroughly, and adjust recipes
to use the new class where needed:
http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=akanavin/package-version-updates&id=d6b6a6f67cc967c0ead6dbab3c95435b7ca85246

It does resolve the devtool issue though.

Alex

On Thu, 12 Nov 2020 at 17:03, Alexander Kanavin via lists.openembedded.org
<alex.kanavin=gmail....@lists.openembedded.org> wrote:

> I have just seen it first-hand for the first time. It happens on Ubuntu
> 20.04, but not on for example OpenSuse tumbleweed. So something in Ubuntu
> causes the native python environment to leak into the host python
> environment. Will investigate.
>
> Alex
>
> On Thu, 12 Nov 2020 at 13:59, Peter Bergin <pe...@berginkonsult.se> wrote:
>
>> Hi Alex,
>>
>> On 2020-11-12 12:38, Alexander Kanavin wrote:
>> > If you can provide exact steps to reproduce (the recipe is not
>> > available in oe-core), I can take a look. It's been reported plenty of
>> > times, but always with something not in core and not easily available.
>>
>> here are the steps to reproduce with only poky. I hope it can help you
>> find the root cause:
>>
>>      $ git clone https://git.yoctoproject.org/git/poky sources/poky
>>      $ . ./sources/poky/oe-init-build-env
>>      $ echo 'MACHINE = "qemuarm64"' >> conf/auto.conf
>>      $ devtool modify u-boot
>>
>> And here is the output on my machine:
>>
>>      Build Configuration:
>>      BB_VERSION           = "1.49.0"
>>      BUILD_SYS            = "x86_64-linux"
>>      NATIVELSBSTRING      = "ubuntu-20.04"
>>      TARGET_SYS           = "aarch64-poky-linux"
>>      MACHINE              = "qemuarm64"
>>      DISTRO               = "poky"
>>      DISTRO_VERSION       = "3.2+snapshot-20201112"
>>      TUNE_FEATURES        = "aarch64 armv8a crc cortexa57"
>>      TARGET_FPU           = ""
>>      meta
>>      meta-poky
>>      meta-yocto-bsp       =
>> "master:e949e76d0f6897ec5d4feaa47afd2b049b32707f"
>>      workspace            = "<unknown>:<unknown>"
>>
>>      Initialising tasks: 100%
>> |###########################################################| Time:
>> 0:00:00
>>      Sstate summary: Wanted 20 Found 20 Missed 0 Current 0 (100% match,
>> 0% complete)
>>      NOTE: Executing Tasks
>>      ERROR: Error executing a python function in exec_python_func()
>> autogenerated:
>>
>>      The stack trace of python calls that resulted in this
>> exception/failure was:
>>      File: 'exec_python_func() autogenerated', lineno: 2, function:
>> <module>
>>           0001:
>>       *** 0002:devtool_post_unpack(d)
>>           0003:
>>      File:
>> '/work/yocto/devtool-reproduce2/sources/poky/meta/classes/devtool-source.bbclass',
>>
>> lineno: 68, function: devtool_post_unpack
>>           0064:}
>>           0065:
>>           0066:
>>           0067:python devtool_post_unpack() {
>>       *** 0068:    import oe.recipeutils
>>           0069:    import shutil
>>           0070:    sys.path.insert(0, os.path.join(d.getVar('COREBASE'),
>> 'scripts', 'lib'))
>>           0071:    import scriptutils
>>           0072:    from devtool import setup_git_repo
>>      File:
>> '/work/yocto/devtool-reproduce2/sources/poky/meta/lib/oe/recipeutils.py',
>> lineno: 21, function: <module>
>>           0017:import shutil
>>           0018:import re
>>           0019:import fnmatch
>>           0020:import glob
>>       *** 0021:import bb.tinfoil
>>           0022:
>>           0023:from collections import OrderedDict, defaultdict
>>           0024:from bb.utils import vercmp_string
>>           0025:
>>      File:
>> '/work/yocto/devtool-reproduce2/sources/poky/bitbake/lib/bb/tinfoil.py',
>> lineno: 19, function: <module>
>>           0015:from collections import OrderedDict, defaultdict
>>           0016:from functools import partial
>>           0017:
>>           0018:import bb.cache
>>       *** 0019:import bb.cooker
>>           0020:import bb.providers
>>           0021:import bb.taskdata
>>           0022:import bb.utils
>>           0023:import bb.command
>>      File:
>> '/work/yocto/devtool-reproduce2/sources/poky/bitbake/lib/bb/cooker.py',
>> lineno: 25, function: <module>
>>           0021:import bb, bb.exceptions, bb.command
>>           0022:from bb import utils, data, parse, event, cache,
>> providers, taskdata, runqueue, build
>>           0023:import queue
>>           0024:import signal
>>       *** 0025:import prserv.serv
>>           0026:import pyinotify
>>           0027:import json
>>           0028:import pickle
>>           0029:import codecs
>>      File:
>> '/work/yocto/devtool-reproduce2/sources/poky/bitbake/lib/prserv/serv.py',
>> lineno: 7, function: <module>
>>           0003:#
>>           0004:
>>           0005:import os,sys,logging
>>           0006:import signal, time
>>       *** 0007:from xmlrpc.server import SimpleXMLRPCServer,
>> SimpleXMLRPCRequestHandler
>>           0008:import threading
>>           0009:import queue
>>           0010:import socket
>>           0011:import io
>>      File: '/usr/lib/python3.8/xmlrpc/server.py', lineno: 117, function:
>> <module>
>>           0113:import socketserver
>>           0114:import sys
>>           0115:import os
>>           0116:import re
>>       *** 0117:import pydoc
>>           0118:import traceback
>>           0119:try:
>>           0120:    import fcntl
>>           0121:except ImportError:
>>      File: '/usr/lib/python3.8/pydoc.py', lineno: 370, function: <module>
>>           0366:    return module
>>           0367:
>>           0368:# ----------------------------------------------------
>> formatter base class
>>           0369:
>>       *** 0370:class Doc:
>>           0371:
>>           0372:    PYTHONDOCS = os.environ.get("PYTHONDOCS",
>>           0373: "https://docs.python.org/%d.%d/library";
>>           0374:                                % sys.version_info[:2])
>>      File: '/usr/lib/python3.8/pydoc.py', lineno: 400, function: Doc
>>           0396:        raise TypeError(message)
>>           0397:
>>           0398:    docmodule = docclass = docroutine = docother =
>> docproperty = docdata = fail
>>           0399:
>>       *** 0400:    def getdocloc(self, object,
>> basedir=sysconfig.get_path('stdlib')):
>>           0401:        """Return the location of module docs or None"""
>>           0402:
>>           0403:        try:
>>           0404:            file = inspect.getabsfile(object)
>>      File: '/usr/lib/python3.8/sysconfig.py', lineno: 512, function:
>> get_path
>>           0508:    """Return a path corresponding to the scheme.
>>           0509:
>>           0510:    ``scheme`` is the install scheme name.
>>           0511:    """
>>       *** 0512:    return get_paths(scheme, vars, expand)[name]
>>           0513:
>>           0514:
>>           0515:def get_config_vars(*args):
>>           0516:    """With no arguments, return a dictionary of all
>> configuration
>>      File: '/usr/lib/python3.8/sysconfig.py', lineno: 502, function:
>> get_paths
>>           0498:    ``scheme`` is the install scheme name. If not
>> provided, it will
>>           0499:    return the default scheme for the current platform.
>>           0500:    """
>>           0501:    if expand:
>>       *** 0502:        return _expand_vars(scheme, vars)
>>           0503:    else:
>>           0504:        return _INSTALL_SCHEMES[scheme]
>>           0505:
>>           0506:
>>      File: '/usr/lib/python3.8/sysconfig.py', lineno: 172, function:
>> _expand_vars
>>           0168:def _expand_vars(scheme, vars):
>>           0169:    res = {}
>>           0170:    if vars is None:
>>           0171:        vars = {}
>>       *** 0172:    _extend_dict(vars, get_config_vars())
>>           0173:
>>           0174:    for key, value in _INSTALL_SCHEMES[scheme].items():
>>           0175:        if os.name in ('posix', 'nt'):
>>           0176:            value = os.path.expanduser(value)
>>      File: '/usr/lib/python3.8/sysconfig.py', lineno: 550, function:
>> get_config_vars
>>           0546:
>>           0547:        if os.name == 'nt':
>>           0548:            _init_non_posix(_CONFIG_VARS)
>>           0549:        if os.name == 'posix':
>>       *** 0550:            _init_posix(_CONFIG_VARS)
>>           0551:        # For backward compatibility, see issue19555
>>           0552:        SO = _CONFIG_VARS.get('EXT_SUFFIX')
>>           0553:        if SO is not None:
>>           0554:            _CONFIG_VARS['SO'] = SO
>>      File: '/usr/lib/python3.8/sysconfig.py', lineno: 421, function:
>> _init_posix
>>           0417:def _init_posix(vars):
>>           0418:    """Initialize the module as appropriate for POSIX
>> systems."""
>>           0419:    # _sysconfigdata is generated at build time, see
>> _generate_posix_vars()
>>           0420:    name = _get_sysconfigdata_name()
>>       *** 0421:    _temp = __import__(name, globals(), locals(),
>> ['build_time_vars'], 0)
>>           0422:    build_time_vars = _temp.build_time_vars
>>           0423:    vars.update(build_time_vars)
>>           0424:
>>           0425:def _init_non_posix(vars):
>>      Exception: ModuleNotFoundError: No module named '_sysconfigdata'
>>
>>
>> Thanks,
>> /Peter
>>
>>
> 
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#144530): 
https://lists.openembedded.org/g/openembedded-core/message/144530
Mute This Topic: https://lists.openembedded.org/mt/78203937/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to