简体   繁体   中英

do_rootfs function failed in yocto project

I am just getting started with the yocto project and trying to build an image for x86 architecture to be emulated using QEMU emulator (running on Ubuntu 16.04 ).I am getting the following error while building the OS image.

ERROR: core-image-sato-1.0-r0 do_rootfs: 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:do_rootfs(d)
     0003:
File: '/home/rahul/poky/poky/meta/classes/image.bbclass', lineno: 258, function: do_rootfs
     0254:    progress_reporter.next_stage()
     0255:
     0256:    # generate rootfs
     0257:    d.setVarFlag('REPRODUCIBLE_TIMESTAMP_ROOTFS', 'export', '1')
 *** 0258:    create_rootfs(d, progress_reporter=progress_reporter, logcatcher=logcatcher)
     0259:
     0260:    progress_reporter.finish()
     0261:}
     0262:do_rootfs[dirs] = "${TOPDIR}"
File: '/home/rahul/poky/poky/meta/lib/oe/rootfs.py', lineno: 1010, function: create_rootfs
     1006:    env_bkp = os.environ.copy()
     1007:
     1008:    img_type = d.getVar('IMAGE_PKGTYPE')
     1009:    if img_type == "rpm":
 *** 1010:        RpmRootfs(d, manifest_dir, progress_reporter, logcatcher).create()
     1011:    elif img_type == "ipk":
     1012:        OpkgRootfs(d, manifest_dir, progress_reporter, logcatcher).create()
     1013:    elif img_type == "deb":
     1014:        DpkgRootfs(d, manifest_dir, progress_reporter, logcatcher).create()
File: '/home/rahul/poky/poky/meta/lib/oe/rootfs.py', lineno: 201, function: create
     0197:        if self.progress_reporter:
     0198:            self.progress_reporter.next_stage()
     0199:
     0200:        # call the package manager dependent create method
 *** 0201:        self._create()
     0202:
     0203:        sysconfdir = self.image_rootfs + self.d.getVar('sysconfdir')
     0204:        bb.utils.mkdirhier(sysconfdir)
     0205:        with open(sysconfdir + "/version", "w+") as ver:
File: '/home/rahul/poky/poky/meta/lib/oe/rootfs.py', lineno: 450, function: _create
     0446:        rpm_pre_process_cmds = self.d.getVar('RPM_PREPROCESS_COMMANDS')
     0447:        rpm_post_process_cmds = self.d.getVar('RPM_POSTPROCESS_COMMANDS')
     0448:
     0449:        # update PM index files
 *** 0450:        self.pm.write_index()
     0451:
     0452:        execute_pre_post_process(self.d, rpm_pre_process_cmds)
     0453:
     0454:        if self.progress_reporter:
File: '/home/rahul/poky/poky/meta/lib/oe/package_manager.py', lineno: 543, function: write_index
     0539:
     0540:    def write_index(self):
     0541:        lockfilename = self.d.getVar('DEPLOY_DIR_RPM') + "/rpm.lock"
     0542:        lf = bb.utils.lockfile(lockfilename, False)
 *** 0543:        RpmIndexer(self.d, self.rpm_repo_dir).write_index()
     0544:        bb.utils.unlockfile(lf)
     0545:
     0546:    def insert_feeds_uris(self, feed_uris, feed_base_paths, feed_archs):
     0547:        from urllib.parse import urlparse
File: '/home/rahul/poky/poky/meta/lib/oe/package_manager.py', lineno: 105, function: write_index
     0101:        else:
     0102:            signer = None
     0103:
     0104:        createrepo_c = bb.utils.which(os.environ['PATH'], "createrepo_c")
 *** 0105:        result = create_index("%s --update -q %s" % (createrepo_c, self.deploy_dir))
     0106:        if result:
     0107:            bb.fatal(result)
     0108:
     0109:        # Sign repomd
File: '/home/rahul/poky/poky/meta/lib/oe/package_manager.py', lineno: 21, function: create_index
     0017:def create_index(arg):
     0018:    index_cmd = arg
     0019:
     0020:    bb.note("Executing '%s' ..." % index_cmd)
 *** 0021:    result = subprocess.check_output(index_cmd, stderr=subprocess.STDOUT, shell=True).decode("utf-8")
     0022:    if result:
     0023:        bb.note(result)
     0024:
     0025:"""
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 '/home/rahul/poky/poky/build/tmp/work/qemux86-poky-linux/core-image-sato/1.0-r0/recipe-sysroot-native/usr/bin/createrepo_c --update -q /home/rahul/poky/poky/build/tmp/work/qemux86-poky-linux/core-image-sato/1.0-r0/oe-rootfs-repo' returned non-zero exit status 1

Subprocess output:
Temporary repodata directory /home/rahul/poky/poky/build/tmp/work/qemux86-poky-linux/core-image-sato/1.0-r0/oe-rootfs-repo/.repodata/ already exists! (Another createrepo process is running?)

ERROR: core-image-sato-1.0-r0 do_rootfs: Function failed: do_rootfs
ERROR: Logfile of failure stored in: /home/rahul/poky/poky/build/tmp/work/qemux86-poky-linux/core-image-sato/1.0-r0/temp/log.do_rootfs.5019
ERROR: Task (/home/rahul/poky/poky/meta/recipes-sato/images/core-image-sato.bb:do_rootfs) failed with exit code '1'

Build process runs upto almost 90 percent after which this error comes up which terminates the process.What could be the issue ?

当我的主机突然关闭时我遇到了同样的错误,但是在我使用sudo rm -r build/tmp/work/qemux86-poky-linux/core-image-sato/1.0-r0/oe-rootfs-repo/.repodata/删除.repodata文件夹后一切正常sudo rm -r build/tmp/work/qemux86-poky-linux/core-image-sato/1.0-r0/oe-rootfs-repo/.repodata/然后再次构建。

I stopped a build using Ctrl-C and got the python error described in the original question.

The .repodata folder (please see the answer from jmiranda) was empty. So I deleted the oe-rootfs-repo folder and this worked for me.

I get the same issue, but with error "Directory not empty" instead, when building in Docker container. Deleting the destination directory using rm -r, and running the build again, works.

None of these methods worked for me.

I then clean the build using bitbake -c clean mybuildname and then again made the build and it worked flawlessly, i hope it helps someone.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM