These patches are working well at my end, but I’m still seeing the following 
error in do_rootfs, when building incrementally in a container. I’m not sure if 
this is due to timing issues alluded to earlier or something else entirely. I 
do know for sure that this is not caused by the patches because it happens even 
without them.

ERROR: core-image-base-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/pi/docker-meta-raspberrypi/layers/poky/meta/classes/image.bbclass', 
lineno: 247, function: do_rootfs
     0243:    progress_reporter.next_stage()
     0244:
     0245:    # generate rootfs
     0246:    d.setVarFlag('REPRODUCIBLE_TIMESTAMP_ROOTFS', 'export', '1')
 *** 0247:    create_rootfs(d, progress_reporter=progress_reporter, 
logcatcher=logcatcher)
     0248:
     0249:    progress_reporter.finish()
     0250:}
     0251:do_rootfs[dirs] = "${TOPDIR}"
File: '/home/pi/docker-meta-raspberrypi/layers/poky/meta/lib/oe/rootfs.py', 
lineno: 375, function: create_rootfs
     0371:
     0372:    img_type = d.getVar('IMAGE_PKGTYPE')
     0373:
     0374:    cls = get_class_for_type(img_type)
 *** 0375:    cls(d, manifest_dir, progress_reporter, logcatcher).create()
     0376:    os.environ.clear()
     0377:    os.environ.update(env_bkp)
     0378:
     0379:
File: '/home/pi/docker-meta-raspberrypi/layers/poky/meta/lib/oe/rootfs.py', 
lineno: 203, function: create
     0199:        if self.progress_reporter:
     0200:            self.progress_reporter.next_stage()
     0201:
     0202:        # call the package manager dependent create method
 *** 0203:        self._create()
     0204:
     0205:        sysconfdir = self.image_rootfs + self.d.getVar('sysconfdir')
     0206:        bb.utils.mkdirhier(sysconfdir)
     0207:        with open(sysconfdir + "/version", "w+") as ver:
File: 
'/home/pi/docker-meta-raspberrypi/layers/poky/meta/lib/oe/package_manager/rpm/rootfs.py',
 lineno: 70, function: _create
     0066:        rpm_pre_process_cmds = 
self.d.getVar('RPM_PREPROCESS_COMMANDS')
     0067:        rpm_post_process_cmds = 
self.d.getVar('RPM_POSTPROCESS_COMMANDS')
     0068:
     0069:        # update PM index files
 *** 0070:        self.pm.write_index()
     0071:
     0072:        execute_pre_post_process(self.d, rpm_pre_process_cmds)
     0073:
     0074:        if self.progress_reporter:
File: 
'/home/pi/docker-meta-raspberrypi/layers/poky/meta/lib/oe/package_manager/rpm/__init__.py',
 lineno: 141, function: write_index
     0137:
     0138:    def write_index(self):
     0139:        lockfilename = self.d.getVar('DEPLOY_DIR_RPM') + "/rpm.lock"
     0140:        lf = bb.utils.lockfile(lockfilename, False)
 *** 0141:        RpmIndexer(self.d, self.rpm_repo_dir).write_index()
     0142:        bb.utils.unlockfile(lf)
     0143:
     0144:    def insert_feeds_uris(self, feed_uris, feed_base_paths, 
feed_archs):
     0145:        from urllib.parse import urlparse
File: 
'/home/pi/docker-meta-raspberrypi/layers/poky/meta/lib/oe/package_manager/rpm/__init__.py',
 lineno: 11, function: write_index
     0007:from oe.package_manager import *
     0008:
     0009:class RpmIndexer(Indexer):
     0010:    def write_index(self):
 *** 0011:        self.do_write_index(self.deploy_dir)
     0012:
     0013:    def do_write_index(self, deploy_dir):
     0014:        if self.d.getVar('PACKAGE_FEED_SIGN') == '1':
     0015:            signer = get_signer(self.d, 
self.d.getVar('PACKAGE_FEED_GPG_BACKEND'))
File: 
'/home/pi/docker-meta-raspberrypi/layers/poky/meta/lib/oe/package_manager/rpm/__init__.py',
 lineno: 20, function: do_write_index
     0016:        else:
     0017:            signer = None
     0018:
     0019:        createrepo_c = bb.utils.which(os.environ['PATH'], 
"createrepo_c")
 *** 0020:        result = create_index("%s --update -q %s" % (createrepo_c, 
deploy_dir))
     0021:        if result:
     0022:            bb.fatal(result)
     0023:
     0024:        # Sign repomd
File: 
'/home/pi/docker-meta-raspberrypi/layers/poky/meta/lib/oe/package_manager/__init__.py',
 lineno: 26, function: create_index
     0022:def create_index(arg):
     0023:    index_cmd = arg
     0024:
     0025:    bb.note("Executing '%s' ..." % index_cmd)
 *** 0026:    result = subprocess.check_output(index_cmd, 
stderr=subprocess.STDOUT, shell=True).decode("utf-8")
     0027:    if result:
     0028:        bb.note(result)
     0029:
     0030:def opkg_query(cmd_output):
File: '/usr/lib/python3.8/subprocess.py', lineno: 411, function: check_output
     0407:        # Explicitly passing input=None was previously equivalent to 
passing an
     0408:        # empty string. That is maintained here for backwards 
compatibility.
     0409:        kwargs['input'] = '' if kwargs.get('universal_newlines', 
False) else b''
     0410:
 *** 0411:    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
     0412:               **kwargs).stdout
     0413:
     0414:
     0415:class CompletedProcess(object):
File: '/usr/lib/python3.8/subprocess.py', lineno: 512, function: run
     0508:            # We don't call process.wait() as .__exit__ does that for 
us.
     0509:            raise
     0510:        retcode = process.poll()
     0511:        if check and retcode:
 *** 0512:            raise CalledProcessError(retcode, process.args,
     0513:                                     output=stdout, stderr=stderr)
     0514:    return CompletedProcess(process.args, retcode, stdout, stderr)
     0515:
     0516:
Exception: subprocess.CalledProcessError: Command 
'/home/pi/docker-meta-raspberrypi/build/tmp/work/raspberrypi0_wifi-poky-linux-gnueabi/core-image-base/1.0-r0/recipe-sysroot-native/usr/bin/createrepo_c
 --update -q 
/home/pi/docker-meta-raspberrypi/build/tmp/work/raspberrypi0_wifi-poky-linux-gnueabi/core-image-base/1.0-r0/oe-rootfs-repo'
 returned non-zero exit status 1.

Subprocess output:
Critical: Cannot rename 
/home/pi/docker-meta-raspberrypi/build/tmp/work/raspberrypi0_wifi-poky-linux-gnueabi/core-image-base/1.0-r0/oe-rootfs-repo/.repodata/
 -> 
/home/pi/docker-meta-raspberrypi/build/tmp/work/raspberrypi0_wifi-poky-linux-gnueabi/core-image-base/1.0-r0/oe-rootfs-repo/repodata/:
 Directory not empty

ERROR: Logfile of failure stored in: 
/home/pi/docker-meta-raspberrypi/build/tmp/work/raspberrypi0_wifi-poky-linux-gnueabi/core-image-base/1.0-r0/temp/log.do_rootfs.165072
ERROR: Task 
(/home/pi/docker-meta-raspberrypi/layers/poky/meta/recipes-core/images/core-image-base.bb:do_rootfs)
 failed with exit code '1'


> On 21 Apr 2021, at 18:08, Devendra Tewari <devendra.tew...@gmail.com> wrote:
> 
> Separate patches for bitbake and oe-core, as requested
> 
> <0001-use-bb.utils.rename-to-rename-file-or-directory.patch><0001-use-bb.utils.rename-to-rename-file-or-directory.patch>
> 
> I've assumed each will be applied to the master-next branch on top of the 
> previous patch.
> 
> Thanks,
> Devendra
> 
>> On 21 Apr 2021, at 16:21, Richard Purdie 
>> <richard.pur...@linuxfoundation.org> wrote:
>> 
>> On Wed, 2021-04-21 at 16:15 -0300, Devendra Tewari wrote:
>>> That's a neat idea - if the exception handler catches OSError with error 
>>> number 
>>> 18 (Invalid cross-device link) in os.rename, it should attempt shutil.move, 
>>> otherwise it should re-throw the exception with raise. A wrapper function 
>>> will make it easier to handle other situations as they arise. I'll update 
>>> the patch.
>> 
>> Sounds good. Could you also please split the patch into two, one for bitbake
>> and one for OE-Core since they are two different repositories.
>> 
>> Cheers,
>> 
>> Richard
>> 
> 

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#151033): 
https://lists.openembedded.org/g/openembedded-core/message/151033
Mute This Topic: https://lists.openembedded.org/mt/81698791/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to