diff options
author | Jaewon Lee <jaewon.lee@xilinx.com> | 2018-12-14 16:39:22 -0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-03-06 10:39:25 +0000 |
commit | 206ca252c64eb0048f05da6933b5923b2346ef09 (patch) | |
tree | d3bd034be414706158bdad025b31703a2679900b /meta | |
parent | 243655b6c22ced795d79c888fd0f01608300dfaa (diff) | |
download | poky-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.bbclass | 6 | ||||
-rw-r--r-- | meta/classes/kernel-yocto.bbclass | 4 | ||||
-rw-r--r-- | meta/lib/oe/recipeutils.py | 9 |
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 | ||