Сбой сборки Bitbake из-за функции python

#yocto #rpm #bitbake

Вопрос:

Во время выполнения команды bitbake задача, которая создает пакет rpm, завершается с ошибкой из-за функции python. Я не смог определить, что может привести к сбою этой функции. У вас, ребята, есть какие-нибудь идеи?

     ERROR: perl-5.30.1-r0 do_package_write_rpm: Error executing a python function in exec_func_python() 
autogenerated:The stack trace of python calls that resulted in this exception/failure was: File: 'exec_func_python() autogenerated', lineno: 2, function: <module>
0001: *** 
0002:do_package_rpm(d)     
0003:
File: '/srv/yocto/poky/meta/classes/package_rpm.bbclass', lineno: 712, function: do_package_rpm     
0708:     
0709:    # Build the rpm package!     
0710:    d.setVar('BUILDSPEC', cmd   "\n"   cleanupcmd   "\n")     
0711:    d.setVarFlag('BUILDSPEC', 'func', '1')
0712:    bb.build.exec_func('BUILDSPEC', d)     
0713:     
0714:    if d.getVar('RPM_SIGN_PACKAGES') == '1':
0715:        bb.build.exec_func("sign_rpm", d)     
0716:}
File: '/srv/yocto/poky/bitbake/lib/bb/build.py', lineno: 254, function: exec_func     
0250:    with bb.utils.fileslocked(lockfiles):     
0251:    if ispython:     
0252:            exec_func_python(func, d, runfile, cwd=adir)     
0253:    else: *** 
0254:            exec_func_shell(func, d, runfile, cwd=adir)     
0255:     
0256:    try:     
0257:        curcwd = os.getcwd()     
0258:    except:
File: '/srv/yocto/poky/bitbake/lib/bb/build.py', lineno: 455, function: exec_func_shell     
0451:    with open(fifopath, 'r b', buffering=0) as fifo:     
0452:        try:     
0453:            bb.debug(2, "Executing shell function %s" % func)    
0454:            with open(os.devnull, 'r ') as stdin, logfile: *** 
0455:                bb.process.run(cmd, shell=False, stdin=stdin, log=logfile, extrafiles=[(fifo,readfifo)])     
0456:        finally:     
0457:            os.unlink(fifopath)    
0458:     
0459:    bb.debug(2, "Shell function %s finished" % func)
File: '/srv/yocto/poky/bitbake/lib/bb/process.py', lineno: 184, function: run     
0180:     
0181:    if pipe.returncode != 0:     
0182:        if log:     
0183:            # Don't duplicate the output in the exception if logging it *** 
0184:            raise ExecutionError(cmd, pipe.returncode, None, None)     
0185:        raise ExecutionError(cmd, pipe.returncode, stdout, stderr)     
0186:    return stdout, stderr Exception: bb.process.ExecutionError: Execution of '/srv/yocto/build/tmp/work/corei7-64-poky-linux/perl/5.30.1-r0/temp/run.BUILDSPEC.35372' failed with exit code 1
 

Комментарии:

1. Вы нашли решение? У меня та же проблема…

2. К сожалению, я этого не сделал. Просматривая файл журнала, я заметил следующую ошибку прямо перед ошибкой, которую я опубликовал в вопросе: Deprecated external dependency generator is used! create archive failed: cpio: write WARNING: exit code 1 from a shell command. я обратился к некоторым разработчикам в списке рассылки yocto, и один из них предложил запустить strace в команде bitbake. Однако это приводит к слишком большой производительности, так что на самом деле это не очень полезно.

Ответ №1:

У меня была такая же проблема, и это происходило из-за того, что моя SECTION переменная в моем рецепте была пустой ( SECTION =»»). Я приписал ему любое значение, например SECTION = «a», и это устранило проблему.

Ответ №2:

У меня была такая же проблема, и я понял, что в моей системе были некоторые недостающие предпосылки, определенные здесь: https://docs.yoctoproject.org/3.3.3/ref-manual/system-requirements.html

Выполнение следующей команды решило мою проблему:

 sudo apt-get install gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 xterm python3-subunit mesa-common-dev