From a5bdceea552ed7fde095b69082f5527dd22d4539 Mon Sep 17 00:00:00 2001 From: Hongxu Jia Date: Mon, 11 Mar 2013 15:04:17 +0800 Subject: populate_sdk_base.bbclass:fix toolchain relocation issues When run "autoreconf" in toolchain, there is an error if the host's perl's version is not the same as the one in the SDK, the error says that the executable perl mismatches the perl lib's version. This is because most of the autotools' scripts use the "#!/usr/bin/perl -w" which is host perl, but the gnu-configize uses "#! /usr/bin/env perl" which invokes the perl wrapper in the SDK, and the wrapper will set the PERL5LIB to the SDK which causes the mismatch. We can make all the perl scripts to use the host perl or the SDK perl to fix this problem. Cherry-pick commit aeb53bd78991af9fbb60d64176ec864cfc2ddbb9 [YOCTO #3984] (From OE-Core rev: 9c10356bde6d303d84daadb8c1170e08e774f5af) Signed-off-by: Hongxu Jia Signed-off-by: Richard Purdie --- meta/classes/populate_sdk_base.bbclass | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/meta/classes/populate_sdk_base.bbclass b/meta/classes/populate_sdk_base.bbclass index 5e4ed51d4a..55285d946e 100644 --- a/meta/classes/populate_sdk_base.bbclass +++ b/meta/classes/populate_sdk_base.bbclass @@ -183,6 +183,13 @@ fi # replace ${SDKPATH} with the new prefix in all text files: configs/scripts/etc find $native_sysroot -type f -exec file '{}' \;|grep ":.*ASCII.*text"|cut -d':' -f1|xargs sed -i -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:g" +# find out all perl scripts in $native_sysroot and modify them replacing the +# host perl with SDK perl. +for perl_script in $(grep "^#!.*perl" -rls $native_sysroot); do + sed -i -e "s:^#! */usr/bin/perl.*:#! /usr/bin/env perl:g" -e \ + "s: /usr/bin/perl: /usr/bin/env perl:g" $perl_script +done + # change all symlinks pointing to ${SDKPATH} for l in $(find $native_sysroot -type l); do ln -sfn $(readlink $l|sed -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:") $l -- cgit v1.2.3-54-g00ecf