poky/oe-init-build-env
Robert Yang 2a708dec24 oe-init-build-env: Error out when failed to locate cwd
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.

(From OE-Core rev: aa4d86ff55b01d150f49b5b4517b0c661a10c36b)

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-05-22 00:31:48 +01:00

1.9 KiB
Executable File

#!/bin/sh

OE Build Environment Setup Script

Copyright (C) 2006-2011 Linux Foundation

This program is free software; you can redistribute it and/or modify

it under the terms of the GNU General Public License as published by

the Free Software Foundation; either version 2 of the License, or

(at your option) any later version.

This program is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

GNU General Public License for more details.

You should have received a copy of the GNU General Public License

along with this program; if not, write to the Free Software

Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Normally this is called as '. ./oe-init-build-env '

This works in most shells (not dash), but not all of them pass the arguments

when being sourced. To workaround the shell limitation use "set "

prior to sourcing this script.

if [ -n "$BASH_SOURCE" ]; then THIS_SCRIPT=$BASH_SOURCE 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'" >&2 exit 1 fi

if [ -z "$OEROOT" ]; then OEROOT=$(dirname "$THIS_SCRIPT") OEROOT=$(readlink -f "$OEROOT") fi unset THIS_SCRIPT

export OEROOT . $OEROOT/scripts/oe-buildenv-internal && TEMPLATECONF="$TEMPLATECONF" $OEROOT/scripts/oe-setup-builddir || { unset OEROOT return 1 } unset OEROOT

[ -z "$BUILDDIR" ] || cd "$BUILDDIR"