[oe-commits] Paul Eggleton : devtool: improve modified file preservation to handle directory structures
git at git.openembedded.org
git at git.openembedded.org
Tue Sep 8 22:56:25 UTC 2015
Module: openembedded-core.git
Branch: master-next
Commit: 08beb2589d4b2983370e83b1e8d9b8d765de5d36
URL: http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=08beb2589d4b2983370e83b1e8d9b8d765de5d36
Author: Paul Eggleton <paul.eggleton at linux.intel.com>
Date: Tue Sep 8 11:39:08 2015 +0100
devtool: improve modified file preservation to handle directory structures
Allow the _add_md5() function to be called with a directory in order to
recursively add the files under it. Additionally, we need to skip
preserving empty directories (since directories aren't listed in the md5
file).
Signed-off-by: Paul Eggleton <paul.eggleton at linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
scripts/lib/devtool/standard.py | 30 +++++++++++++++++++++---------
1 file changed, 21 insertions(+), 9 deletions(-)
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py
index ee00c6d..a5a20e3 100644
--- a/scripts/lib/devtool/standard.py
+++ b/scripts/lib/devtool/standard.py
@@ -362,14 +362,23 @@ def _extract_source(srctree, keep_temp, devbranch, d):
return initial_rev
def _add_md5(config, recipename, filename):
- """Record checksum of a recipe to the md5-file of the workspace"""
+ """Record checksum of a file (or recursively for a directory) to the md5-file of the workspace"""
import bb.utils
- md5 = bb.utils.md5_file(filename)
- with open(os.path.join(config.workspace_path, '.devtool_md5'), 'a') as f:
- f.write('%s|%s|%s\n' % (recipename, os.path.relpath(filename, config.workspace_path), md5))
+
+ def addfile(fn):
+ md5 = bb.utils.md5_file(fn)
+ with open(os.path.join(config.workspace_path, '.devtool_md5'), 'a') as f:
+ f.write('%s|%s|%s\n' % (recipename, os.path.relpath(fn, config.workspace_path), md5))
+
+ if os.path.isdir(filename):
+ for root, _, files in os.walk(os.path.dirname(filename)):
+ for f in files:
+ addfile(os.path.join(root, f))
+ else:
+ addfile(filename)
def _check_preserve(config, recipename):
- """Check if a recipe was manually changed and needs to be saved in 'attic'
+ """Check if a file was manually changed and needs to be saved in 'attic'
directory"""
import bb.utils
origfile = os.path.join(config.workspace_path, '.devtool_md5')
@@ -830,10 +839,13 @@ def reset(args, config, basepath, workspace):
preservepath = os.path.join(config.workspace_path, 'attic', pn)
def preservedir(origdir):
if os.path.exists(origdir):
- for fn in os.listdir(origdir):
- logger.warn('Preserving %s in %s' % (fn, preservepath))
- bb.utils.mkdirhier(preservepath)
- shutil.move(os.path.join(origdir, fn), os.path.join(preservepath, fn))
+ for root, dirs, files in os.walk(origdir):
+ for fn in files:
+ logger.warn('Preserving %s in %s' % (fn, preservepath))
+ bb.utils.mkdirhier(preservepath)
+ shutil.move(os.path.join(origdir, fn), os.path.join(preservepath, fn))
+ for dn in dirs:
+ os.rmdir(os.path.join(root, dn))
os.rmdir(origdir)
preservedir(os.path.join(config.workspace_path, 'recipes', pn))
More information about the Openembedded-commits
mailing list