Post Go back to editing

New Yocto builds broken with Python 3.10 API change in poky

Category: Software
Product Number: Linux Add-in for CCES

Hi,
I've been trying to set up a yocto build environment over the last couple days using these tools and following the WIKI instructions, but I am coming into several issues.
I want to build linux for the ARM core of the ADSZ-SC589-MINI 'Sharc Audio Module'

My builds are using the Ubuntu 2004LTS image that is recommended in the ADI wiki.
The only python version I have installed manually is 2.7

The first issue I come across is that the poky version is outdated compared to the python version that is incorporated into the build system (3.10), which leads to several errors accessing outdated primitives:
AttributeError: module 'collections' has no attribute 'MutableMapping'
This issue is highlighted in a few SO posts, but is reported as fixed on the Yocto forums, so I guess the repo manifest version of this tool is out of date?

If I follow advice on SO and 'monkey-patch' the the access to the python primatives I get the following warnings:
WARNING: Host distribution "ubuntu-22.04" has not been validated with this version of the build system; you may possibly experience unexpected failures. It is recommended that you use a tested distribution.

Followed by the subsequent errors:
WARNING: Your host glibc verson (2.35) is newer than that in uninative (2.29). Disabling uninative so that sstate is not corrupted. Initialising tasks: 100% |#####################################################################| Time: 0:00:00 Sstate summary: Wanted 75 Found 0 Missed 75 Current 0 (0% match, 0% complete) NOTE: Executing SetScene Tasks NOTE: Executing RunQueue Tasks ERROR: m4-default-1.4.18-r0 do_compile: oe_runmake failed ERROR: m4-default-1.4.18-r0 do_compile: Function failed: do_compile (log file is located at /home/user/Workspace/build/tmp/work/x86_64-linux/m4-default/1.4.18-r0/temp/log.do_compile.15475) ERROR: Logfile of failure stored in: /home/user/Workspace/build/tmp/work/x86_64-linux/m4-default/1.4.18-r0/temp/log.do_compile.15475 Log data follows: | DEBUG: Executing shell function do_compile | NOTE: make -j 1 infodir=/home/user/Workspace/build/tmp/work/x86_64-linux/m4-default/1.4.18-r0/recipe-sysroot-default/usr/share/info | make all-recursive | make[1]: Entering directory '/home/user/Workspace/build/tmp/work/x86_64-linux/m4-default/1.4.18-r0/build' | Making all in . | make[2]: Entering directory '/home/user/Workspace/build/tmp/work/x86_64-linux/m4-default/1.4.18-r0/build' | make[2]: Nothing to be done for 'all-am'. | make[2]: Leaving directory '/home/user/Workspace/build/tmp/work/x86_64-linux/m4-default/1.4.18-r0/build' | Making all in examples | make[2]: Entering directory '/home/user/Workspace/build/tmp/work/x86_64-linux/m4-default/1.4.18-r0/build/examples' | make[2]: Nothing to be done for 'all'. | make[2]: Leaving directory '/home/user/Workspace/build/tmp/work/x86_64-linux/m4-default/1.4.18-r0/build/examples'

The actual build error in the logs comes down to:
gcc -I. -I../../m4-1.4.18/lib -isystem/home/user/Workspace/build/tmp/work/x86_64-linux/m4-default/1.4.18-r0/recipe-sysroot-default/usr/include -isystem/home/user/Workspace/build/tmp/work/x86_64-linux/m4-default/1.4.18-r0/recipe-sysroot-default/usr/include -O2 -pipe -c -o c-stack.o ../../m4-1.4.18/lib/c-stack.c In file included from /usr/include/signal.h:328, from ./signal.h:52, from ../../m4-1.4.18/lib/c-stack.c:49: ../../m4-1.4.18/lib/c-stack.c:55:26: error: missing binary operator before token "(" 55 | #elif HAVE_LIBSIGSEGV && SIGSTKSZ < 16384 | ^~~~~~~~ make[3]: *** [Makefile:1915: c-stack.o] Error 1 make[3]: Leaving directory '/home/user/Workspace/build/tmp/work/x86_64-linux/m4-default/1.4.18-r0/build/lib' make[2]: *** [Makefile:1674: all] Error 2 make[2]: Leaving directory '/home/user/Workspace/build/tmp/work/x86_64-linux/m4-default/1.4.18-r0/build/lib' make[1]: *** [Makefile:1572: all-recursive] Error 1 make[1]: Leaving directory '/home/user/Workspace/build/tmp/work/x86_64-linux/m4-default/1.4.18-r0/build'

Which I am guessing is suggesting the HAVE_LIBSIGSEGV is undefined, probably because the dependency versions are misaligned.

Is there a set up that currently works where I can 'get going' without too much suffering?
Is there a more up to date version of the resources I should be accessing, instead of executing this line from the wiki:
python ./bin/repo init -u github.com/.../lnxdsp-repo-manifest.git -b release/yocto-1.0.0

Parents Reply Children
  • Hi,

    Could you try using "Ubuntu-20" LTS as your build machine? and let me know if you still see any issues there, will help you!!

    In your error log it says, you were trying with Ubuntu-22, 

    "

    WARNING: Host distribution "ubuntu-22.04" has not been validated with this version of the build system; you may possibly experience unexpected failures. It is recommended that you use a tested distribution.

    "

    According to the AD build manual: 

    " The build system is currently supported on host PCs running Ubuntu 20.04 LTS 64-bit."

    Thanks,

    Prasanth R