summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorJaewon Lee <jaewon.lee@xilinx.com>2018-12-14 16:39:22 -0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-03-06 10:39:25 +0000
commit206ca252c64eb0048f05da6933b5923b2346ef09 (patch)
treed3bd034be414706158bdad025b31703a2679900b /meta
parent243655b6c22ced795d79c888fd0f01608300dfaa (diff)
downloadpoky-206ca252c64eb0048f05da6933b5923b2346ef09.tar.gz
devtool: Support kmeta directory usage with devtool modify/finish
When using Kmeta directories, devtool finish will add every single file in the directory to the bbappend. This is because in the current implementation, the get_recipe_local_files function treats the kmeta directory like a file. Modifying the function to loop through the provided directories and return all included files instead of just the top level directory. This will enable correct file to file comparison when determing which files are new/changed and need to be added to the bbappend. Adding an extra check in devtool-source.bbclass to not copy the cfg file if its already included somewhere in the kmeta directory Also during 'modify', when moving necessary files in the kmeta directory from the workdir to oe-local-files, the dangling parent directories are left behind. This in itself is not an issue as the temporary devtool workspace is automatically deleted, but this causes an incorrect include directory to be added in kernel-yocto.bbclass. Changing the order of the if statements to catch the correct conditional. This is safe to do as when not in the devtool context, there will be no oe-local-files directory. (From OE-Core rev: 4671011b5b02d0989aa0fdcb50e18cb385a0e95e) Signed-off-by: Jaewon Lee <jaewon.lee@xilinx.com> Signed-off-by: Alejandro Enedino Hernandez Samaniego <alejandr@xilinx.com> Acked-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/classes/devtool-source.bbclass6
-rw-r--r--meta/classes/kernel-yocto.bbclass4
-rw-r--r--meta/lib/oe/recipeutils.py9
3 files changed, 14 insertions, 5 deletions
diff --git a/meta/classes/devtool-source.bbclass b/meta/classes/devtool-source.bbclass
index 1372e32c9e..a8110006fb 100644
--- a/meta/classes/devtool-source.bbclass
+++ b/meta/classes/devtool-source.bbclass
@@ -103,8 +103,10 @@ python devtool_post_unpack() {
103 for l in sccfile: 103 for l in sccfile:
104 line = l.split() 104 line = l.split()
105 if line and line[0] in ('kconf', 'patch'): 105 if line and line[0] in ('kconf', 'patch'):
106 local_files[line[-1]] = os.path.join(os.path.dirname(local_files[key]), line[-1]) 106 cfg = os.path.join(os.path.dirname(local_files[key]), line[-1])
107 shutil.copy2(os.path.join(os.path.dirname(local_files[key]), line[-1]), workdir) 107 if not cfg in local_files.values():
108 local_files[line[-1]] = cfg
109 shutil.copy2(cfg, workdir)
108 sccfile.close() 110 sccfile.close()
109 111
110 # Ignore local files with subdir={BP} 112 # Ignore local files with subdir={BP}
diff --git a/meta/classes/kernel-yocto.bbclass b/meta/classes/kernel-yocto.bbclass
index 496c8a7f68..2f556ca03b 100644
--- a/meta/classes/kernel-yocto.bbclass
+++ b/meta/classes/kernel-yocto.bbclass
@@ -138,10 +138,10 @@ do_kernel_metadata() {
138 for f in ${feat_dirs}; do 138 for f in ${feat_dirs}; do
139 if [ -d "${WORKDIR}/$f/meta" ]; then 139 if [ -d "${WORKDIR}/$f/meta" ]; then
140 includes="$includes -I${WORKDIR}/$f/kernel-meta" 140 includes="$includes -I${WORKDIR}/$f/kernel-meta"
141 elif [ -d "${WORKDIR}/$f" ]; then
142 includes="$includes -I${WORKDIR}/$f"
143 elif [ -d "${WORKDIR}/../oe-local-files/$f" ]; then 141 elif [ -d "${WORKDIR}/../oe-local-files/$f" ]; then
144 includes="$includes -I${WORKDIR}/../oe-local-files/$f" 142 includes="$includes -I${WORKDIR}/../oe-local-files/$f"
143 elif [ -d "${WORKDIR}/$f" ]; then
144 includes="$includes -I${WORKDIR}/$f"
145 fi 145 fi
146 done 146 done
147 for s in ${sccs} ${patches}; do 147 for s in ${sccs} ${patches}; do
diff --git a/meta/lib/oe/recipeutils.py b/meta/lib/oe/recipeutils.py
index 8f70d2eb21..4ca200d834 100644
--- a/meta/lib/oe/recipeutils.py
+++ b/meta/lib/oe/recipeutils.py
@@ -482,7 +482,14 @@ def get_recipe_local_files(d, patches=False, archives=False):
482 unpack = fetch.ud[uri].parm.get('unpack', True) 482 unpack = fetch.ud[uri].parm.get('unpack', True)
483 if unpack: 483 if unpack:
484 continue 484 continue
485 ret[fname] = localpath 485 if os.path.isdir(localpath):
486 for root, dirs, files in os.walk(localpath):
487 for fname in files:
488 fileabspath = os.path.join(root,fname)
489 srcdir = os.path.dirname(localpath)
490 ret[os.path.relpath(fileabspath,srcdir)] = fileabspath
491 else:
492 ret[fname] = localpath
486 return ret 493 return ret
487 494
488 495