[OE-core] [PATCH] toolchain-shar-relocate.sh: let $relocate control the entire script

liu.ming50 at gmail.com liu.ming50 at gmail.com
Wed Dec 6 03:54:31 UTC 2017


From: Ming Liu <liu.ming50 at gmail.com>

There is a series of checking/substituting being processed in this
script, I would like them to be controlled together by $relocate which
make more sense from my point of view rather than it only controls
relocate_sdk.sh. And another reason why we need this fix, is that
sometimes we do not install nativesdk ld-linux.so or other nativesdk
packages if we not want do relocate, which can save some space and
reduce build time for us, but in that case the SDK installer will fail
on some sanity checks without this fix.

Signed-off-by: Ming Liu <liu.ming50 at gmail.com>
---
 meta/files/toolchain-shar-relocate.sh | 101 +++++++++++++++++-----------------
 1 file changed, 50 insertions(+), 51 deletions(-)

diff --git a/meta/files/toolchain-shar-relocate.sh b/meta/files/toolchain-shar-relocate.sh
index e3c1001..04e7582 100644
--- a/meta/files/toolchain-shar-relocate.sh
+++ b/meta/files/toolchain-shar-relocate.sh
@@ -1,28 +1,29 @@
-if ! xargs --version > /dev/null 2>&1; then
-	echo "xargs is required by the relocation script, please install it first. Abort!"
-	exit 1
-fi
+if [ $relocate = 1 ] ; then
+    if ! xargs --version > /dev/null 2>&1; then
+        echo "xargs is required by the relocation script, please install it first. Abort!"
+        exit 1
+    fi
 
-# fix dynamic loader paths in all ELF SDK binaries
-native_sysroot=$($SUDO_EXEC cat $env_setup_script |grep 'OECORE_NATIVE_SYSROOT='|cut -d'=' -f2|tr -d '"')
-dl_path=$($SUDO_EXEC find $native_sysroot/lib -name "ld-linux*")
-if [ "$dl_path" = "" ] ; then
-	echo "SDK could not be set up. Relocate script unable to find ld-linux.so. Abort!"
-	exit 1
-fi
-executable_files=$($SUDO_EXEC find $native_sysroot -type f \
-	\( -perm -0100 -o -perm -0010 -o -perm -0001 \) -printf "'%h/%f' ")
-if [ "x$executable_files" = "x" ]; then
-   echo "SDK relocate failed, could not get executalbe files"
-   exit 1
-fi
+    # fix dynamic loader paths in all ELF SDK binaries
+    native_sysroot=$($SUDO_EXEC cat $env_setup_script |grep 'OECORE_NATIVE_SYSROOT='|cut -d'=' -f2|tr -d '"')
+    dl_path=$($SUDO_EXEC find $native_sysroot/lib -name "ld-linux*")
+    if [ "$dl_path" = "" ] ; then
+        echo "SDK could not be set up. Relocate script unable to find ld-linux.so. Abort!"
+        exit 1
+    fi
+    executable_files=$($SUDO_EXEC find $native_sysroot -type f \
+        \( -perm -0100 -o -perm -0010 -o -perm -0001 \) -printf "'%h/%f' ")
+    if [ "x$executable_files" = "x" ]; then
+       echo "SDK relocate failed, could not get executalbe files"
+       exit 1
+    fi
 
-tdir=`mktemp -d`
-if [ x$tdir = x ] ; then
-   echo "SDK relocate failed, could not create a temporary directory"
-   exit 1
-fi
-cat <<EOF >> $tdir/relocate_sdk.sh
+    tdir=`mktemp -d`
+    if [ x$tdir = x ] ; then
+       echo "SDK relocate failed, could not create a temporary directory"
+       exit 1
+    fi
+    cat <<EOF >> $tdir/relocate_sdk.sh
 #!/bin/sh
 for py in python python2 python3
 do
@@ -39,22 +40,20 @@ fi
 \${PYTHON} ${env_setup_script%/*}/relocate_sdk.py $target_sdk_dir $dl_path $executable_files
 EOF
 
-$SUDO_EXEC mv $tdir/relocate_sdk.sh ${env_setup_script%/*}/relocate_sdk.sh
-$SUDO_EXEC chmod 755 ${env_setup_script%/*}/relocate_sdk.sh
-rm -rf $tdir
-if [ $relocate = 1 ] ; then
-	$SUDO_EXEC ${env_setup_script%/*}/relocate_sdk.sh
-	if [ $? -ne 0 ]; then
-		echo "SDK could not be set up. Relocate script failed. Abort!"
-		exit 1
-	fi
-fi
+    $SUDO_EXEC mv $tdir/relocate_sdk.sh ${env_setup_script%/*}/relocate_sdk.sh
+    $SUDO_EXEC chmod 755 ${env_setup_script%/*}/relocate_sdk.sh
+    rm -rf $tdir
+    $SUDO_EXEC ${env_setup_script%/*}/relocate_sdk.sh
+    if [ $? -ne 0 ]; then
+        echo "SDK could not be set up. Relocate script failed. Abort!"
+        exit 1
+    fi
 
-# replace @SDKPATH@ with the new prefix in all text files: configs/scripts/etc.
-# replace the host perl with SDK perl.
-for replace in "$target_sdk_dir -maxdepth 1" "$native_sysroot"; do
-	$SUDO_EXEC find $replace -type f
-done | xargs -n100 file | grep ":.*\(ASCII\|script\|source\).*text" | \
+    # replace @SDKPATH@ with the new prefix in all text files: configs/scripts/etc.
+    # replace the host perl with SDK perl.
+    for replace in "$target_sdk_dir -maxdepth 1" "$native_sysroot"; do
+        $SUDO_EXEC find $replace -type f
+    done | xargs -n100 file | grep ":.*\(ASCII\|script\|source\).*text" | \
     awk -F':' '{printf "\"%s\"\n", $1}' | \
     grep -Ev "$target_sdk_dir/(environment-setup-*|relocate_sdk*|${0##*/})" | \
     xargs -n100 $SUDO_EXEC sed -i \
@@ -62,18 +61,18 @@ done | xargs -n100 file | grep ":.*\(ASCII\|script\|source\).*text" | \
         -e "s:^#! */usr/bin/perl.*:#! /usr/bin/env perl:g" \
         -e "s: /usr/bin/perl: /usr/bin/env perl:g"
 
-if [ $? -ne 0 ]; then
-	echo "Failed to replace perl. Relocate script failed. Abort!"
-	exit 1
-fi
-
-# change all symlinks pointing to @SDKPATH@
-for l in $($SUDO_EXEC find $native_sysroot -type l); do
-	$SUDO_EXEC ln -sfn $(readlink $l|$SUDO_EXEC sed -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:") $l
-	if [ $? -ne 0 ]; then
-		echo "Failed to setup symlinks. Relocate script failed. Abort!"
-		exit 1
+    if [ $? -ne 0 ]; then
+        echo "Failed to replace perl. Relocate script failed. Abort!"
+        exit 1
     fi
-done
 
-echo done
+    # change all symlinks pointing to @SDKPATH@
+    for l in $($SUDO_EXEC find $native_sysroot -type l); do
+        $SUDO_EXEC ln -sfn $(readlink $l|$SUDO_EXEC sed -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:") $l
+        if [ $? -ne 0 ]; then
+            echo "Failed to setup symlinks. Relocate script failed. Abort!"
+            exit 1
+        fi
+    done
+    echo done
+fi
-- 
2.7.4




More information about the Openembedded-core mailing list