On 10/1/12 10:17 AM, Laurentiu Palcu wrote:
On 10/01/2012 05:55 PM, Mark Hatle wrote:
On 10/1/12 8:17 AM, Richard Purdie wrote:
On Sat, 2012-09-29 at 19:19 -0500, Mark Hatle wrote:
When multilibs are enabled, there will be more then one environment
file created. We need to be sure to process each environment file.
The next function can simply use the last environment file processed
to get the magic value(s) that it requires.
Signed-off-by: Mark Hatle <[email protected]>
---
meta/classes/populate_sdk_base.bbclass | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/meta/classes/populate_sdk_base.bbclass
b/meta/classes/populate_sdk_base.bbclass
index 6eb6726..1bc1438 100644
--- a/meta/classes/populate_sdk_base.bbclass
+++ b/meta/classes/populate_sdk_base.bbclass
@@ -158,8 +158,9 @@ echo "done"
printf "Setting it up..."
# fix environment paths
-env_setup_script=$(find $target_sdk_dir/ -name
"environment-setup-${REAL_MULTIMACH_TARGET_SYS}")
The reason to replace globbing with ${REAL_MULTIMACH_TARGET_SYS} was to
match only the file we're interested in and avoid matching other files
whose names start with environment-setup. However, since all the
environment-setup directories reside in $target_sdk_dir/ we would
probably be safer, and faster, by doing a simple ls and avoid searching
all the tree.
env_setup_script=$(ls $target_sdk_dir/environment-setup-*)
That seems reasonable to me, and a lot faster then the find.
-sed -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:g" -i $env_setup_script
+for env_setup_script in `find $target_sdk_dir/ -name "environment-setup-*"` ;
do
+ sed -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:g" -i $env_setup_script
+done
We could probably do this without the for loop since sed accepts
multiple input files.
The end result of the env_setups_script though, needs to only contain -one-
environment script (doesn't matter which one). That's why I used the loop.
# fix dynamic loader paths in all ELF SDK binaries
native_sysroot=$(cat $env_setup_script |grep OECORE_NATIVE_SYSROOT|cut -d'='
-f2|tr -d '"')
The code snippet above is the reason why it can only contain the one item.. but
it happens that OECORE_NATIVE_SYSROOT is the same in all environment files (and
has to be...) So it's safe to just use the last processed item.
A for loop shouldn't be any slower then calling the set w/ multilib inputs and
then later adjusting the variable to only be one item. (We're talking at a
maximum 3 environment scripts.. thus why it shouldn't be an issue.)
This is on course to conflict with
http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=1b6019086c4242c550b4e0551c7b5d206a0d52e1
Can you please talk with Laurentiu and come up with a solution that
works for everyone.
I think this is a better fix for the problem. The other change limits the
environment file to a single file. However, there is nothing in the function --
other then the use of 'env_setuo_script' -- that wants or needs a single file
loaded.
So it's better to find htem all and just iterate over them all. Also the order
of processing, and the last item processed does not matter. The later chunks of
functionality just look for a static value that is supposed to be the same in
all of the environment files.
--Mark
Cheers,
Richard
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core