diff options
author | Devendra Tewari <devendra.tewari@gmail.com> | 2021-04-21 17:49:48 -0300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2021-04-23 10:12:12 +0100 |
commit | 828dbdc6a5300c6cfd074f470bc01f77054525f4 (patch) | |
tree | 317f7e40ff812cad47a74fe524d08cbfc41c83ab /meta | |
parent | 8d48138e9b1f3577cfba64b4757b576c27c6ef04 (diff) | |
download | openembedded-core-contrib-828dbdc6a5300c6cfd074f470bc01f77054525f4.tar.gz |
use bb.utils.rename to rename file or directory
bb.utils.rename handles cross-device link error with os.rename and
retries with shutil.move.
[YOCTO #14301]
Signed-off-by: Devendra Tewari <devendra.tewari@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r-- | meta/classes/buildhistory.bbclass | 6 | ||||
-rw-r--r-- | meta/classes/package.bbclass | 12 | ||||
-rw-r--r-- | meta/classes/populate_sdk_ext.bbclass | 10 | ||||
-rw-r--r-- | meta/classes/reproducible_build.bbclass | 6 | ||||
-rw-r--r-- | meta/classes/sstate.bbclass | 22 | ||||
-rw-r--r-- | meta/classes/update-alternatives.bbclass | 11 | ||||
-rw-r--r-- | meta/lib/oe/package_manager/deb/__init__.py | 18 | ||||
-rw-r--r-- | meta/lib/oe/package_manager/ipk/__init__.py | 5 | ||||
-rw-r--r-- | meta/lib/oe/rootfs.py | 15 | ||||
-rw-r--r-- | meta/lib/oeqa/selftest/cases/wic.py | 16 |
10 files changed, 22 insertions, 99 deletions
diff --git a/meta/classes/buildhistory.bbclass b/meta/classes/buildhistory.bbclass index 554c8810ac..059de36a5d 100644 --- a/meta/classes/buildhistory.bbclass +++ b/meta/classes/buildhistory.bbclass @@ -875,11 +875,7 @@ python buildhistory_eventhandler() { entries = [ x for x in os.listdir(rootdir) if not x.startswith('.') ] bb.utils.mkdirhier(olddir) for entry in entries: - try: - os.rename(os.path.join(rootdir, entry), - os.path.join(olddir, entry)) - except OSError: - shutil.move(os.path.join(rootdir, entry), + bb.utils.rename(os.path.join(rootdir, entry), os.path.join(olddir, entry)) elif isinstance(e, bb.event.BuildCompleted): if reset: diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass index 6707c2e9db..cf30f33f3d 100644 --- a/meta/classes/package.bbclass +++ b/meta/classes/package.bbclass @@ -835,7 +835,6 @@ perform_packagecopy[dirs] = "${PKGD}" # the fs-perms.txt files python fixup_perms () { import pwd, grp - import shutil # init using a string with the same format as a line as documented in # the fs-perms.txt file @@ -1050,10 +1049,7 @@ python fixup_perms () { # Create path to move directory to, move it, and then setup the symlink bb.utils.mkdirhier(os.path.dirname(target)) #bb.note("Fixup Perms: Rename %s -> %s" % (dir, ptarget)) - try: - os.rename(origin, target) - except OSError: - shutil.move(origin, target) + bb.utils.rename(origin, target) #bb.note("Fixup Perms: Link %s -> %s" % (dir, link)) os.symlink(link, origin) @@ -1780,7 +1776,6 @@ python package_do_shlibs() { import itertools import re, pipes import subprocess - import shutil exclude_shlibs = d.getVar('EXCLUDE_FROM_SHLIBS', False) if exclude_shlibs: @@ -1972,10 +1967,7 @@ python package_do_shlibs() { for (old, new) in renames: bb.note("Renaming %s to %s" % (old, new)) - try: - os.rename(old, new) - except OSError: - shutil.move(old, new) + bb.utils.rename(old, new) pkgfiles[pkg].remove(old) shlibs_file = os.path.join(shlibswork_dir, pkg + ".list") diff --git a/meta/classes/populate_sdk_ext.bbclass b/meta/classes/populate_sdk_ext.bbclass index 12e758c2ad..fe840d9cfb 100644 --- a/meta/classes/populate_sdk_ext.bbclass +++ b/meta/classes/populate_sdk_ext.bbclass @@ -165,10 +165,7 @@ def create_filtered_tasklist(d, sdkbasepath, tasklistfile, conf_initpath): shutil.rmtree(temp_sdkbasepath) except FileNotFoundError: pass - try: - os.rename(sdkbasepath, temp_sdkbasepath) - except OSError: - shutil.move(sdkbasepath, temp_sdkbasepath) + bb.utils.rename(sdkbasepath, temp_sdkbasepath) cmdprefix = '. %s .; ' % conf_initpath logfile = d.getVar('WORKDIR') + '/tasklist_bb_log.txt' try: @@ -178,10 +175,7 @@ def create_filtered_tasklist(d, sdkbasepath, tasklistfile, conf_initpath): if 'attempted to execute unexpectedly and should have been setscened' in e.stdout: msg += '\n----------\n\nNOTE: "attempted to execute unexpectedly and should have been setscened" errors indicate this may be caused by missing sstate artifacts that were likely produced in earlier builds, but have been subsequently deleted for some reason.\n' bb.fatal(msg) - try: - os.rename(temp_sdkbasepath, sdkbasepath) - except OSError: - shutil.move(temp_sdkbasepath, sdkbasepath) + bb.utils.rename(temp_sdkbasepath, sdkbasepath) # Clean out residue of running bitbake, which check_sstate_task_list() # will effectively do clean_esdk_builddir(d, sdkbasepath) diff --git a/meta/classes/reproducible_build.bbclass b/meta/classes/reproducible_build.bbclass index 480d58f86d..f2d9324440 100644 --- a/meta/classes/reproducible_build.bbclass +++ b/meta/classes/reproducible_build.bbclass @@ -57,17 +57,13 @@ do_deploy_source_date_epoch () { } python do_deploy_source_date_epoch_setscene () { - import shutil sstate_setscene(d) bb.utils.mkdirhier(d.getVar('SDE_DIR')) sde_file = os.path.join(d.getVar('SDE_DEPLOYDIR'), '__source_date_epoch.txt') if os.path.exists(sde_file): target = d.getVar('SDE_FILE') bb.debug(1, "Moving setscene SDE file %s -> %s" % (sde_file, target)) - try: - os.rename(sde_file, target) - except OSError: - shutil.move(sde_file, target) + bb.utils.rename(sde_file, target) else: bb.debug(1, "%s not found!" % sde_file) } diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass index 60f7a94285..b1c608dcb1 100644 --- a/meta/classes/sstate.bbclass +++ b/meta/classes/sstate.bbclass @@ -384,7 +384,6 @@ def sstate_installpkg(ss, d): def sstate_installpkgdir(ss, d): import oe.path import subprocess - import shutil sstateinst = d.getVar("SSTATE_INSTDIR") d.setVar('SSTATE_FIXMEDIR', ss['fixmedir']) @@ -402,10 +401,7 @@ def sstate_installpkgdir(ss, d): for state in ss['dirs']: prepdir(state[1]) - try: - os.rename(sstateinst + state[0], state[1]) - except OSError: - shutil.move(sstateinst + state[0], state[1]) + bb.utils.rename(sstateinst + state[0], state[1]) sstate_install(ss, d) for plain in ss['plaindirs']: @@ -417,10 +413,7 @@ def sstate_installpkgdir(ss, d): dest = plain bb.utils.mkdirhier(src) prepdir(dest) - try: - os.rename(src, dest) - except OSError: - shutil.move(src, dest) + bb.utils.rename(src, dest) return True @@ -645,7 +638,6 @@ python sstate_hardcode_path () { def sstate_package(ss, d): import oe.path - import shutil tmpdir = d.getVar('TMPDIR') @@ -672,10 +664,7 @@ def sstate_package(ss, d): continue bb.error("sstate found an absolute path symlink %s pointing at %s. Please replace this with a relative link." % (srcpath, link)) bb.debug(2, "Preparing tree %s for packaging at %s" % (state[1], sstatebuild + state[0])) - try: - os.rename(state[1], sstatebuild + state[0]) - except OSError: - shutil.move(state[1], sstatebuild + state[0]) + bb.utils.rename(state[1], sstatebuild + state[0]) workdir = d.getVar('WORKDIR') sharedworkdir = os.path.join(d.getVar('TMPDIR'), "work-shared") @@ -685,10 +674,7 @@ def sstate_package(ss, d): pdir = plain.replace(sharedworkdir, sstatebuild) bb.utils.mkdirhier(plain) bb.utils.mkdirhier(pdir) - try: - os.rename(plain, pdir) - except OSError: - shutil.move(plain, pdir) + bb.utils.rename(plain, pdir) d.setVar('SSTATE_BUILDDIR', sstatebuild) d.setVar('SSTATE_INSTDIR', sstatebuild) diff --git a/meta/classes/update-alternatives.bbclass b/meta/classes/update-alternatives.bbclass index 7e213472e3..000e4d5664 100644 --- a/meta/classes/update-alternatives.bbclass +++ b/meta/classes/update-alternatives.bbclass @@ -139,7 +139,6 @@ python apply_update_alternative_renames () { return import re - import shutil def update_files(alt_target, alt_target_rename, pkg, d): f = d.getVar('FILES_' + pkg) @@ -185,10 +184,7 @@ python apply_update_alternative_renames () { link_rename.append((alt_target, alt_target_rename)) else: bb.note('%s: Rename %s -> %s' % (pn, alt_target, alt_target_rename)) - try: - os.rename(src, dest) - except OSError: - shutil.move(src, dest) + bb.utils.rename(src, dest) update_files(alt_target, alt_target_rename, pkg, d) else: bb.warn("%s: alternative target (%s or %s) does not exist, skipping..." % (pn, alt_target, alt_target_rename)) @@ -205,10 +201,7 @@ python apply_update_alternative_renames () { if os.path.lexists(link_target): # Ok, the link_target exists, we can rename bb.note('%s: Rename (link) %s -> %s' % (pn, alt_target, alt_target_rename)) - try: - os.rename(src, dest) - except OSError: - shutil.move(src, dest) + bb.utils.rename(src, dest) else: # Try to resolve the broken link to link.${BPN} link_maybe = '%s.%s' % (os.readlink(src), pn) diff --git a/meta/lib/oe/package_manager/deb/__init__.py b/meta/lib/oe/package_manager/deb/__init__.py index 8edc653dff..a4b6b6f647 100644 --- a/meta/lib/oe/package_manager/deb/__init__.py +++ b/meta/lib/oe/package_manager/deb/__init__.py @@ -5,7 +5,6 @@ import re import subprocess from oe.package_manager import * -import shutil class DpkgIndexer(Indexer): def _create_configs(self): @@ -215,10 +214,7 @@ class DpkgPM(OpkgDpkgPM): tmp_sf.write(status) - try: - os.rename(status_file + ".tmp", status_file) - except OSError: - shutil.move(status_file + ".tmp", status_file) + bb.utils.rename(status_file + ".tmp", status_file) def run_pre_post_installs(self, package_name=None): """ @@ -303,21 +299,13 @@ class DpkgPM(OpkgDpkgPM): for dir in dirs: new_dir = re.sub(r"\.dpkg-new", "", dir) if dir != new_dir: - try: - os.rename(os.path.join(root, dir), - os.path.join(root, new_dir)) - except OSError: - shutil.move(os.path.join(root, dir), + bb.utils.rename(os.path.join(root, dir), os.path.join(root, new_dir)) for file in files: new_file = re.sub(r"\.dpkg-new", "", file) if file != new_file: - try: - os.rename(os.path.join(root, file), - os.path.join(root, new_file)) - except OSError: - shutil.move(os.path.join(root, file), + bb.utils.rename(os.path.join(root, file), os.path.join(root, new_file)) diff --git a/meta/lib/oe/package_manager/ipk/__init__.py b/meta/lib/oe/package_manager/ipk/__init__.py index 2aa21949f3..4cd3963111 100644 --- a/meta/lib/oe/package_manager/ipk/__init__.py +++ b/meta/lib/oe/package_manager/ipk/__init__.py @@ -213,10 +213,7 @@ class OpkgPM(OpkgDpkgPM): tmp_sf.write(status) - try: - os.rename(status_file + ".tmp", status_file) - except OSError: - shutil.move(status_file + ".tmp", status_file) + bb.utils.rename(status_file + ".tmp", status_file) def _create_custom_config(self): bb.note("Building from feeds activated!") diff --git a/meta/lib/oe/rootfs.py b/meta/lib/oe/rootfs.py index ef00010047..a7cc4e084a 100644 --- a/meta/lib/oe/rootfs.py +++ b/meta/lib/oe/rootfs.py @@ -114,10 +114,7 @@ class Rootfs(object, metaclass=ABCMeta): shutil.rmtree(self.image_rootfs + '-orig') except: pass - try: - os.rename(self.image_rootfs, self.image_rootfs + '-orig') - except OSError: - shutil.move(self.image_rootfs, self.image_rootfs + '-orig') + bb.utils.rename(self.image_rootfs, self.image_rootfs + '-orig') bb.note(" Creating debug rootfs...") bb.utils.mkdirhier(self.image_rootfs) @@ -168,16 +165,10 @@ class Rootfs(object, metaclass=ABCMeta): shutil.rmtree(self.image_rootfs + '-dbg') except: pass - try: - os.rename(self.image_rootfs, self.image_rootfs + '-dbg') - except OSError: - shutil.move(self.image_rootfs, self.image_rootfs + '-dbg') + bb.utils.rename(self.image_rootfs, self.image_rootfs + '-dbg') bb.note(" Restoreing original rootfs...") - try: - os.rename(self.image_rootfs + '-orig', self.image_rootfs) - except OSError: - shutil.move(self.image_rootfs + '-orig', self.image_rootfs) + bb.utils.rename(self.image_rootfs + '-orig', self.image_rootfs) def _exec_shell_cmd(self, cmd): fakerootcmd = self.d.getVar('FAKEROOT') diff --git a/meta/lib/oeqa/selftest/cases/wic.py b/meta/lib/oeqa/selftest/cases/wic.py index fa93973087..a11e2d0781 100644 --- a/meta/lib/oeqa/selftest/cases/wic.py +++ b/meta/lib/oeqa/selftest/cases/wic.py @@ -1269,7 +1269,6 @@ class Wic2(WicTestCase): def test_expand_mbr_image(self): """Test wic write --expand command for mbr image""" - import shutil # build an image config = 'IMAGE_FSTYPES = "wic"\nWKS_FILE = "directdisk.wks"\n' self.append_config(config) @@ -1307,14 +1306,8 @@ class Wic2(WicTestCase): result = runCmd("%s/usr/sbin/sfdisk -F %s" % (sysroot, new_image_path)) self.assertTrue("0 B, 0 bytes, 0 sectors" in result.output) - try: - os.rename(image_path, image_path + '.bak') - except OSError: - shutil.move(image_path, image_path + '.bak') - try: - os.rename(new_image_path, image_path) - except OSError: - shutil.move(new_image_path, image_path) + bb.utils.rename(image_path, image_path + '.bak') + bb.utils.rename(new_image_path, image_path) # Check if it boots in qemu with runqemu('core-image-minimal', ssh=False) as qemu: @@ -1325,10 +1318,7 @@ class Wic2(WicTestCase): if os.path.exists(new_image_path): os.unlink(new_image_path) if os.path.exists(image_path + '.bak'): - try: - os.rename(image_path + '.bak', image_path) - except OSError: - shutil.move(image_path + '.bak', image_path) + bb.utils.rename(image_path + '.bak', image_path) def test_wic_ls_ext(self): """Test listing content of the ext partition using 'wic ls'""" |