]> code.ossystems Code Review - openembedded-core.git/commitdiff
devtool: fix devtool upgrade with reproducible_builds class
authorPaul Eggleton <paul.eggleton@linux.intel.com>
Tue, 19 Nov 2019 10:52:52 +0000 (23:52 +1300)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 21 Nov 2019 23:06:08 +0000 (23:06 +0000)
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]

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
scripts/lib/devtool/upgrade.py
scripts/lib/recipetool/create.py
scripts/lib/scriptutils.py

index 18c5b66a295f64bddb73bde6903907332c14ab17..cb6dce378a4179097721ed1567b8db2cfb2463ba 100644 (file)
@@ -32,7 +32,7 @@ def _run(cmd, cwd=''):
 
 def _get_srctree(tmpdir):
     srctree = tmpdir
-    dirs = os.listdir(tmpdir)
+    dirs = scriptutils.filter_src_subdirs(tmpdir)
     if len(dirs) == 1:
         srctree = os.path.join(tmpdir, dirs[0])
     return srctree
@@ -281,7 +281,8 @@ def _extract_new_source(newpv, srctree, no_patch, srcrev, srcbranch, branch, kee
             logger.info('Preserving temporary directory %s' % tmpsrctree)
         else:
             shutil.rmtree(tmpsrctree)
-            shutil.rmtree(tmpdir)
+            if tmpdir != tmpsrctree:
+                shutil.rmtree(tmpdir)
 
     return (rev, md5, sha256, srcbranch, srcsubdir_rel)
 
index b5c9f788433b31738da28210b67859c21b571c40..4c4bbadb4c03e87d57b723c131380abb52f31273 100644 (file)
@@ -495,9 +495,7 @@ def create_recipe(args):
         if ftmpdir and args.keep_temp:
             logger.info('Fetch temp directory is %s' % ftmpdir)
 
-        dirlist = os.listdir(srctree)
-        filterout = ['git.indirectionsymlink', 'source-date-epoch']
-        dirlist = [x for x in dirlist if x not in filterout]
+        dirlist = scriptutils.filter_src_subdirs(srctree)
         logger.debug('Directory listing (excluding filtered out):\n  %s' % '\n  '.join(dirlist))
         if len(dirlist) == 1:
             singleitem = os.path.join(srctree, dirlist[0])
index c573dc7f6783e754b66aa6c202a6ef2a39c543ec..45bdaf5f4ed106d429c5c9f0c0f7b017a4304170 100644 (file)
@@ -268,3 +268,13 @@ def is_src_url(param):
     elif param.startswith('git@') or ('@' in param and param.endswith('.git')):
         return True
     return False
+
+def filter_src_subdirs(pth):
+    """
+    Filter out subdirectories of initial unpacked source trees that we do not care about.
+    Used by devtool and recipetool.
+    """
+    dirlist = os.listdir(pth)
+    filterout = ['git.indirectionsymlink', 'source-date-epoch']
+    dirlist = [x for x in dirlist if x not in filterout]
+    return dirlist