]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core.git/commitdiff
oe-init-build-env: Error out when failed to locate cwd
authorRobert Yang <liezhi.yang@windriver.com>
Mon, 11 Mar 2019 10:16:55 +0000 (18:16 +0800)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 12 Mar 2019 18:56:38 +0000 (11:56 -0700)
Ubuntu's /bin/sh symlinks to /bin/dash by default, so
subprocess.check_call(oe-init-build-env, cwd=builddir) would be failed since
pwd is builddir, and there is no $builddir/oe-init-build-env, this would
lead to other confusing errors, check and error it out earlier to make it
easier to locate the problem.

We don't meet the problem when manually run ". oe-init-build-env" is because
Ubuntu's default login shell is bash, but subprocess.check_call() doesn't
respect to login shell, so the error only happens in situations like
subprocess.check_call().

And also print errors to stderr as oe-buildenv-internal does.

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
oe-init-build-env

index e813230a9888f17d99e9b02161b7cd8eb2faff96..861c3e000ed6b4a40595c1a7f8c99f438cfeea93 100755 (executable)
@@ -31,13 +31,18 @@ elif [ -n "$ZSH_NAME" ]; then
     THIS_SCRIPT=$0
 else
     THIS_SCRIPT="$(pwd)/oe-init-build-env"
+    if [ ! -e "$THIS_SCRIPT" ]; then
+        echo "Error: $THIS_SCRIPT doesn't exist!" >&2
+        echo "Please run this script in oe-init-build-env's directory." >&2
+        exit 1
+    fi
 fi
 if [ -n "$BBSERVER" ]; then
     unset BBSERVER
 fi
 
 if [ -z "$ZSH_NAME" ] && [ "$0" = "$THIS_SCRIPT" ]; then
-    echo "Error: This script needs to be sourced. Please run as '. $THIS_SCRIPT'"
+    echo "Error: This script needs to be sourced. Please run as '. $THIS_SCRIPT'" >&2
     exit 1
 fi