summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDevendra Tewari <devendra.tewari@gmail.com>2021-04-21 17:49:48 -0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2021-04-23 10:12:12 +0100
commit828dbdc6a5300c6cfd074f470bc01f77054525f4 (patch)
tree317f7e40ff812cad47a74fe524d08cbfc41c83ab
parent8d48138e9b1f3577cfba64b4757b576c27c6ef04 (diff)
downloadopenembedded-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>
-rw-r--r--meta/classes/buildhistory.bbclass6
-rw-r--r--meta/classes/package.bbclass12
-rw-r--r--meta/classes/populate_sdk_ext.bbclass10
-rw-r--r--meta/classes/reproducible_build.bbclass6
-rw-r--r--meta/classes/sstate.bbclass22
-rw-r--r--meta/classes/update-alternatives.bbclass11
-rw-r--r--meta/lib/oe/package_manager/deb/__init__.py18
-rw-r--r--meta/lib/oe/package_manager/ipk/__init__.py5
-rw-r--r--meta/lib/oe/rootfs.py15
-rw-r--r--meta/lib/oeqa/selftest/cases/wic.py16
-rwxr-xr-xscripts/combo-layer5
-rw-r--r--scripts/lib/devtool/standard.py21
-rw-r--r--scripts/lib/devtool/upgrade.py8
-rw-r--r--scripts/lib/wic/plugins/imager/direct.py5
14 files changed, 30 insertions, 130 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'"""
diff --git a/scripts/combo-layer b/scripts/combo-layer
index 1b88340b6e..045de65642 100755
--- a/scripts/combo-layer
+++ b/scripts/combo-layer
@@ -508,10 +508,7 @@ def check_patch(patchfile):
f.close()
if of:
of.close()
- try:
- os.rename(patchfile + '.tmp', patchfile)
- except OSError:
- shutil.move(patchfile + '.tmp', patchfile)
+ bb.utils.rename(patchfile + '.tmp', patchfile)
def drop_to_shell(workdir=None):
if not sys.stdin.isatty():
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py
index 3854dfb3e8..5eba2191d9 100644
--- a/scripts/lib/devtool/standard.py
+++ b/scripts/lib/devtool/standard.py
@@ -746,10 +746,7 @@ def _check_preserve(config, recipename):
os.remove(removefile)
else:
tf.write(line)
- try:
- os.rename(newfile, origfile)
- except OSError:
- shutil.move(newfile, origfile)
+ bb.utils.rename(newfile, origfile)
def get_staging_kver(srcdir):
# Kernel version from work-shared
@@ -1097,16 +1094,10 @@ def rename(args, config, basepath, workspace):
# Rename bbappend
logger.info('Renaming %s to %s' % (append, newappend))
- try:
- os.rename(append, newappend)
- except OSError:
- shutil.move(append, newappend)
+ bb.utils.rename(append, newappend)
# Rename recipe file
logger.info('Renaming %s to %s' % (recipefile, newfile))
- try:
- os.rename(recipefile, newfile)
- except OSError:
- shutil.move(recipefile, newfile)
+ bb.utils.rename(recipefile, newfile)
# Rename source tree if it's the default path
appendmd5 = None
@@ -1342,11 +1333,7 @@ def _export_patches(srctree, rd, start_rev, destdir, changed_revs=None):
if match_name:
# Rename patch files
if new_patch != match_name:
- try:
- os.rename(os.path.join(destdir, new_patch),
- os.path.join(destdir, match_name))
- except OSError:
- shutil.move(os.path.join(destdir, new_patch),
+ bb.utils.rename(os.path.join(destdir, new_patch),
os.path.join(destdir, match_name))
# Need to pop it off the list now before checking changed_revs
oldpath = existing_patches.pop(old_patch)
diff --git a/scripts/lib/devtool/upgrade.py b/scripts/lib/devtool/upgrade.py
index 2bff69f5a2..24e3700ece 100644
--- a/scripts/lib/devtool/upgrade.py
+++ b/scripts/lib/devtool/upgrade.py
@@ -71,12 +71,8 @@ def _rename_recipe_dirs(oldpv, newpv, path):
if oldfile.find(oldpv) != -1:
newfile = oldfile.replace(oldpv, newpv)
if oldfile != newfile:
- try:
- os.rename(os.path.join(path, oldfile),
- os.path.join(path, newfile))
- except OSError:
- shutil.move(os.path.join(path, oldfile),
- os.path.join(path, newfile))
+ bb.utils.rename(os.path.join(path, oldfile),
+ os.path.join(path, newfile))
def _rename_recipe_file(oldrecipe, bpn, oldpv, newpv, path):
oldrecipe = os.path.basename(oldrecipe)
diff --git a/scripts/lib/wic/plugins/imager/direct.py b/scripts/lib/wic/plugins/imager/direct.py
index fb5e52b2a6..96168aadb4 100644
--- a/scripts/lib/wic/plugins/imager/direct.py
+++ b/scripts/lib/wic/plugins/imager/direct.py
@@ -616,8 +616,5 @@ class PartitionedImage():
part.start + part.size_sec - 1, part.size_sec)
partimage = self.path + '.p%d' % part.num
- try:
- os.rename(source, partimage)
- except OSError:
- shutil.move(source, partimage)
+ bb.utils.rename(source, partimage)
self.partimages.append(partimage)