[yocto] Updating daisy -> Python.h not found

Neuer User auslands-kv at gmx.de
Fri Oct 17 09:09:36 PDT 2014


Hmm, going deeper into the configure error I found the following:

File
/home/ubuntu/yocto/build/tmp/sysroots/i686-linux/usr/lib/python3.3/distutils/sysconfig.py
contains in line 19:

PREFIX = os.path.normpath(sys.prefix).replace( os.getenv("BUILD_SYS"),
os.getenv("HOST_SYS") )

This gives error

TypeError: Can't convert 'NoneType' object to str implicitly

It does the same if I type this line on python3 on my host computer.

Looking into the sysconfig of python3 of my ubuntu installation, it does
NOT HAVE this line!

here are the lines from python3 sysconfig.py from yocto:

---------------------------------------------------------------------
"""Provide access to Python's configuration information.  The specific
configuration variables available depend heavily on the platform and
configuration.  The values may be retrieved using
get_config_var(name), and the list of variables is available via
get_config_vars().keys().  Additional convenience functions are also
available.

Written by:   Fred L. Drake, Jr.
Email:        <fdrake at acm.org>
"""

import os
import re
import sys

from .errors import DistutilsPlatformError

# These are needed in a couple of spots, so just compute them once.
PREFIX = os.path.normpath(sys.prefix).replace( os.getenv("BUILD_SYS"),
os.getenv("HOST_SYS") )
EXEC_PREFIX = os.path.normpath(sys.exec_prefix).replace(
os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") )
BASE_PREFIX = os.path.normpath(sys.base_prefix).replace(
os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") )
BASE_EXEC_PREFIX= os.path.normpath(sys.base_exec_prefix).replace(
os.getenv("BUILD_SYS"), os.getenv("HOST_SYS") )

[...]
----------------------------------------------------------------------

and here from my host pc:

----------------------------------------------------------------------
"""Provide access to Python's configuration information.  The specific
configuration variables available depend heavily on the platform and
configuration.  The values may be retrieved using
get_config_var(name), and the list of variables is available via
get_config_vars().keys().  Additional convenience functions are also
available.

Written by:   Fred L. Drake, Jr.
Email:        <fdrake at acm.org>
"""

import os
import re
import sys

from .errors import DistutilsPlatformError

# These are needed in a couple of spots, so just compute them once.
PREFIX = os.path.normpath(sys.prefix)
EXEC_PREFIX = os.path.normpath(sys.exec_prefix)
BASE_PREFIX = os.path.normpath(sys.base_prefix)
BASE_EXEC_PREFIX = os.path.normpath(sys.base_exec_prefix)
----------------------------------------------------------------------


Now, I don't know if that changed with the daisy update, but it
definitely seems to be wrong.

Any python3 expert out there? Can we find out (git blame) when these
lines were changed last?


EDIT: found it, it's this patch:

./poky/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch

and it is from 2013-05-14, so pretty old... :-(

That leaves the question why it gives an error now after updating daisy,
but not before.

Here is the log_configure from before updating daisy:

DEBUG: Executing python function sysroot_cleansstate
DEBUG: Removing manifest:
/home/ubuntu/yocto/build/tmp/sysroots/cubox-i/sysroot-providers/pyotherside
DEBUG: Removing manifest:
/home/ubuntu/yocto/build/tmp/sysroots/cubox-i/usr/lib/qt5/qml/io/thp/pyotherside/qmldir
DEBUG: Removing manifest:
/home/ubuntu/yocto/build/tmp/sysroots/cubox-i/usr/lib/qt5/qml/io/thp/pyotherside/libpyothersideplugin.so
DEBUG: Removing manifest:
/home/ubuntu/yocto/build/tmp/sysroots/cubox-i/usr/lib/qt5/qml/io/thp/pyotherside/
DEBUG: Removing manifest:
/home/ubuntu/yocto/build/tmp/sysroots/cubox-i/usr/lib/qt5/qml/io/thp/
DEBUG: Removing manifest:
/home/ubuntu/yocto/build/tmp/sysroots/cubox-i/usr/lib/qt5/qml/io/
DEBUG: Removing manifest:
/home/ubuntu/yocto/build/tmp/sysroots/cubox-i/sysroot-providers/
DEBUG: Removing manifest:
/home/ubuntu/yocto/build/tmp/sysroots/cubox-i/usr/lib/qt5/qml/
DEBUG: Removing manifest:
/home/ubuntu/yocto/build/tmp/sysroots/cubox-i/usr/lib/qt5/
DEBUG: Removing manifest:
/home/ubuntu/yocto/build/tmp/sysroots/cubox-i/usr/lib/
DEBUG: Removing manifest: /home/ubuntu/yocto/build/tmp/sysroots/cubox-i/usr/
DEBUG: Python function sysroot_cleansstate finished
DEBUG: Executing shell function qmake5_base_preconfigure
Previously configured separate build directory detected, cleaning
/home/ubuntu/yocto/build/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/pyotherside/1.2+gitAUTOINC+87e5eaf470-r0/build
DEBUG: Shell function qmake5_base_preconfigure finished
DEBUG: Executing shell function do_configure
Reading
/home/ubuntu/yocto/build/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/pyotherside/1.2+gitAUTOINC+87e5eaf470-r0/git/src/src.pro
[/home/ubuntu/yocto/build/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/pyotherside/1.2+gitAUTOINC+87e5eaf470-r0/build/src]
Project MESSAGE: PYTHON_CONFIG = python3-config
Reading
/home/ubuntu/yocto/build/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/pyotherside/1.2+gitAUTOINC+87e5eaf470-r0/git/tests/tests.pro
[/home/ubuntu/yocto/build/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/pyotherside/1.2+gitAUTOINC+87e5eaf470-r0/build/tests]
Project MESSAGE: PYTHON_CONFIG = python3-config
DEBUG: Shell function do_configure finished
DEBUG: Executing python function do_qa_configure
NOTE: Checking autotools environment for common misconfiguration
NOTE: pyotherside: md5 checksum matched for
file:///home/ubuntu/yocto/sources/poky/meta/files/common-licenses/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302
DEBUG: Python function do_qa_configure finished
DEBUG: Executing shell function qmake5_base_postconfigure
DEBUG: Shell function qmake5_base_postconfigure finished

NO ERROR...

Hmmm...




More information about the yocto mailing list