summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2019-11-19 23:52:52 +1300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-11-21 23:08:20 +0000
commitea01bd31c3f4645ca0efddf6913d5136b4ea5a8a (patch)
tree26b2362be77a540cee77f372ac0a5b0de0c4b633 /scripts
parent81cd5f77149c1879f0503aa719319e414747f54a (diff)
downloadpoky-ea01bd31c3f4645ca0efddf6913d5136b4ea5a8a.tar.gz
devtool: fix devtool upgrade with reproducible_builds class
If the reproducible_build class is inherited then there may be a "source-date-epoch" subdirectory in a fetched source tree; devtool upgrade was not expecting that in the upgraded source. Take a small snippet of code from recipetool create which already handles this, and make it a shared function that can be used in both places. Additionally, fix an assumption that the source is always in a subdirectory in the cleanup code that blocked debugging this. [YOCTO #13635] (From OE-Core rev: 0d642861cd9cf034b8d4951433980addc215d4fd) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/lib/devtool/upgrade.py5
-rw-r--r--scripts/lib/recipetool/create.py4
-rw-r--r--scripts/lib/scriptutils.py10
3 files changed, 14 insertions, 5 deletions
diff --git a/scripts/lib/devtool/upgrade.py b/scripts/lib/devtool/upgrade.py
index 18c5b66a29..cb6dce378a 100644
--- a/scripts/lib/devtool/upgrade.py
+++ b/scripts/lib/devtool/upgrade.py
@@ -32,7 +32,7 @@ def _run(cmd, cwd=''):
32 32
33def _get_srctree(tmpdir): 33def _get_srctree(tmpdir):
34 srctree = tmpdir 34 srctree = tmpdir
35 dirs = os.listdir(tmpdir) 35 dirs = scriptutils.filter_src_subdirs(tmpdir)
36 if len(dirs) == 1: 36 if len(dirs) == 1:
37 srctree = os.path.join(tmpdir, dirs[0]) 37 srctree = os.path.join(tmpdir, dirs[0])
38 return srctree 38 return srctree
@@ -281,7 +281,8 @@ def _extract_new_source(newpv, srctree, no_patch, srcrev, srcbranch, branch, kee
281 logger.info('Preserving temporary directory %s' % tmpsrctree) 281 logger.info('Preserving temporary directory %s' % tmpsrctree)
282 else: 282 else:
283 shutil.rmtree(tmpsrctree) 283 shutil.rmtree(tmpsrctree)
284 shutil.rmtree(tmpdir) 284 if tmpdir != tmpsrctree:
285 shutil.rmtree(tmpdir)
285 286
286 return (rev, md5, sha256, srcbranch, srcsubdir_rel) 287 return (rev, md5, sha256, srcbranch, srcsubdir_rel)
287 288
diff --git a/scripts/lib/recipetool/create.py b/scripts/lib/recipetool/create.py
index b5c9f78843..4c4bbadb4c 100644
--- a/scripts/lib/recipetool/create.py
+++ b/scripts/lib/recipetool/create.py
@@ -495,9 +495,7 @@ def create_recipe(args):
495 if ftmpdir and args.keep_temp: 495 if ftmpdir and args.keep_temp:
496 logger.info('Fetch temp directory is %s' % ftmpdir) 496 logger.info('Fetch temp directory is %s' % ftmpdir)
497 497
498 dirlist = os.listdir(srctree) 498 dirlist = scriptutils.filter_src_subdirs(srctree)
499 filterout = ['git.indirectionsymlink', 'source-date-epoch']
500 dirlist = [x for x in dirlist if x not in filterout]
501 logger.debug('Directory listing (excluding filtered out):\n %s' % '\n '.join(dirlist)) 499 logger.debug('Directory listing (excluding filtered out):\n %s' % '\n '.join(dirlist))
502 if len(dirlist) == 1: 500 if len(dirlist) == 1:
503 singleitem = os.path.join(srctree, dirlist[0]) 501 singleitem = os.path.join(srctree, dirlist[0])
diff --git a/scripts/lib/scriptutils.py b/scripts/lib/scriptutils.py
index c573dc7f67..45bdaf5f4e 100644
--- a/scripts/lib/scriptutils.py
+++ b/scripts/lib/scriptutils.py
@@ -268,3 +268,13 @@ def is_src_url(param):
268 elif param.startswith('git@') or ('@' in param and param.endswith('.git')): 268 elif param.startswith('git@') or ('@' in param and param.endswith('.git')):
269 return True 269 return True
270 return False 270 return False
271
272def filter_src_subdirs(pth):
273 """
274 Filter out subdirectories of initial unpacked source trees that we do not care about.
275 Used by devtool and recipetool.
276 """
277 dirlist = os.listdir(pth)
278 filterout = ['git.indirectionsymlink', 'source-date-epoch']
279 dirlist = [x for x in dirlist if x not in filterout]
280 return dirlist