После обновления до Yocto 2.5 Sumo моя genericx86
сборка больше не работает.Проблема, кажется, с функцией Multilib.Мне нужна 64-битная версия grub-efi
, поэтому я добавил это к своему local.conf
:
require conf/multilib.conf
MULTILIBS = "multilib:lib64"
DEFAULTTUNE_virtclass-multilib-lib64 = "x86-64"
IMAGE_INSTALL_append = " lib64-grub-efi"
С Sumo я получаю эту ошибку:
image-dev-1.0-r0 do_image_wic: 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:extend_recipe_sysroot(d)
0003:
File: '/workdir/poky/build-x86/../meta/classes/staging.bbclass', lineno: 546, function: extend_recipe_sysroot
0542: bb.note("Skipping as already exists in sysroot: %s" % str(msg_exists))
0543:
0544: for f in fixme:
0545: if f == '':
*** 0546: staging_processfixme(fixme[f], recipesysroot, recipesysroot, recipesysrootnative, d)
0547: elif f == 'native':
0548: staging_processfixme(fixme[f], recipesysrootnative, recipesysroot, recipesysrootnative, d)
0549: else:
0550: staging_processfixme(fixme[f], multilibs[f].getVar("RECIPE_SYSROOT"), recipesysroot, recipesysrootnative, d)
File: '/workdir/poky/build-x86/../meta/classes/staging.bbclass', lineno: 174, function: staging_processfixme
0170: for fixmevar in ['COMPONENTS_DIR', 'HOSTTOOLS_DIR', 'PKGDATA_DIR', 'PSEUDO_LOCALSTATEDIR', 'LOGFIFO']:
0171: fixme_path = d.getVar(fixmevar)
0172: cmd += " -e 's:FIXME_%s:%s:g'" % (fixmevar, fixme_path)
0173: bb.debug(2, cmd)
*** 0174: subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT)
0175:
0176:
0177:def staging_populate_sysroot_dir(targetsysroot, nativesysroot, native, d):
0178: import glob
File: '/usr/lib/python3.5/subprocess.py', lineno: 626, function: check_output
0622: # empty string. That is maintained here for backwards compatibility.
0623: kwargs['input'] = '' if kwargs.get('universal_newlines', False) else b''
0624:
0625: return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
*** 0626: **kwargs).stdout
0627:
0628:
0629:class CompletedProcess(object):
0630: """A process that has finished running.
File: '/usr/lib/python3.5/subprocess.py', lineno: 708, function: run
0704: raise
0705: retcode = process.poll()
0706: if check and retcode:
0707: raise CalledProcessError(retcode, process.args,
*** 0708: output=stdout, stderr=stderr)
0709: return CompletedProcess(process.args, retcode, stdout, stderr)
0710:
0711:
0712:def list2cmdline(seq):
Exception: subprocess.CalledProcessError: Command 'sed -e 's:^[^/]*/:/workdir/poky/build-x86/tmp/work/genericx86-poky-linux/image-dev/1.0-r0/recipe-sysroot/:g' /workdir/poky/build-x86/tmp/sysroots-components/x86_64/lib64-libtool-cross/fixmepath /workdir/poky/build-x86/tmp/sysroots-components/core2-32/libtool-cross/fixmepath | xargs sed -i -e 's:FIXMESTAGINGDIRTARGET:/workdir/poky/build-x86/tmp/work/genericx86-poky-linux/image-dev/1.0-r0/recipe-sysroot:g; s:FIXMESTAGINGDIRHOST:/workdir/poky/build-x86/tmp/work/genericx86-poky-linux/image-dev/1.0-r0/recipe-sysroot-native:g' -e 's:FIXME_COMPONENTS_DIR:/workdir/poky/build-x86/tmp/sysroots-components:g' -e 's:FIXME_HOSTTOOLS_DIR:/workdir/poky/build-x86/tmp/hosttools:g' -e 's:FIXME_PKGDATA_DIR:/workdir/poky/build-x86/tmp/pkgdata/genericx86:g' -e 's:FIXME_PSEUDO_LOCALSTATEDIR:/workdir/poky/build-x86/tmp/work/genericx86-poky-linux/image-dev/1.0-r0/pseudo/:g' -e 's:FIXME_LOGFIFO:/workdir/poky/build-x86/tmp/work/genericx86-poky-linux/image-dev/1.0-r0/temp/fifo.20324:g'' returned non-zero exit status 123
Subprocess output:
sed: can't read /workdir/poky/build-x86/tmp/work/genericx86-poky-linux/image-dev/1.0-r0/recipe-sysroot/usr/bin/crossscripts/x86_64-pokymllib64-linux-libtool: No such file or directory
ERROR: image-dev-1.0-r0 do_image_wic: Function failed: extend_recipe_sysroot
ERROR: Logfile of failure stored in: /workdir/poky/build-x86/tmp/work/genericx86-poky-linux/image-dev/1.0-r0/temp/log.do_image_wic.20324
ERROR: Task (/workdir/poky/build-x86/../meta-general/recipes-devtools/images/image-dev.bb:do_image_wic) failed with exit code '1'
Файл x86_64-pokymllib64-linux-libtool
находится в genericx86-pokym llib64 -linux / image-dev / 1.0-r0 / lib64 -recipe-sysroot / usr / bin / crossscripts / .Если я скопирую его, просто чтобы посмотреть, что произойдет, появится еще одна ошибка:
ERROR: image-dev-1.0-r0 do_image_wic: 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:extend_recipe_sysroot(d)
0003:
File: '/workdir/poky/build-x86/../meta/classes/staging.bbclass', lineno: 539, function: extend_recipe_sysroot
0535: dest = newmanifest[l]
0536: if l.endswith("/"):
0537: staging_copydir(l, targetdir, dest, seendirs)
0538: continue
*** 0539: staging_copyfile(l, targetdir, dest, postinsts, seendirs)
0540:
0541: bb.note("Installed into sysroot: %s" % str(msg_adding))
0542: bb.note("Skipping as already exists in sysroot: %s" % str(msg_exists))
0543:
File: '/workdir/poky/build-x86/../meta/classes/staging.bbclass', lineno: 151, function: staging_copyfile
0147: os.symlink(linkto, dest)
0148: #bb.warn(c)
0149: else:
0150: try:
*** 0151: os.link(c, dest)
0152: except OSError as err:
0153: if err.errno == errno.EXDEV:
0154: bb.utils.copyfile(c, dest)
0155: else:
Exception: FileExistsError: [Errno 17] File exists: '/workdir/poky/build-x86/tmp/sysroots-components/x86_64/lib64-glibc/sysroot-providers/virtual_lib64-libc' -> '/workdir/poky/build-x86/tmp/work/genericx86-pokymllib64-linux/image-dev/1.0-r0/lib64-recipe-sysroot/sysroot-providers/virtual_lib64-libc'
ERROR: image-dev-1.0-r0 do_image_wic: Function failed: extend_recipe_sysroot
ERROR: Logfile of failure stored in: /workdir/poky/build-x86/tmp/work/genericx86-poky-linux/image-dev/1.0-r0/temp/log.do_image_wic.20412
ERROR: Task (/workdir/poky/build-x86/../meta-general/recipes-devtools/images/image-dev.bb:do_image_wic) failed with exit code '1'
Что-то кардинально изменилось с Multilib в сумо?Я отсканировал руководство , но мне кажется, что мне не нужно делать ничего другого, чем раньше.
Когда я комментирую строки Multilib из local.config
, они создаются без ошибок.