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 <[email protected]> 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
>> <[email protected]> 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: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-