mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 21:09:03 +02:00

Util now, only paths added for current project are removed to avoid PATH growing unnecessarily. This is to handle the case of sourcing the init script into different build directories. However, if we source the init script from different projects into different build directories, the paths added by previous projects are not cleaned up. To avoid this, we record the paths added into OE_ADDED_PATHS, and remove it in the next sourcing. The OE_ADDED_PATHS variable is exported mainly for the two reasons: 1. users can clearly see it in the `env' command's output. 2. if the prefixed PATH is carried into the subprocess (e.g., a subshell), so should this OE_ADDED_PATHS variable that prefixes it. Note that the paths, "$OEROOT/scripts:$BITBAKEDIR/bin:", are added as a whole. A previous commit, "oe-buildenv-internal: Add paths to $PATH individually", made the change to treat these two paths separately, the reason was not "assuming the path to the scripts directory always is in $PATH directly before the bitbake directory". But this is exactly the effect of the codes. I see no reason why we should complicate things. (From OE-Core rev: 3405a3221b8f6641a8e42b04bc7acd6e032aeab8) Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
120 lines
3.8 KiB
Bash
Executable File
120 lines
3.8 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# OE-Core Build Environment Setup Script
|
|
#
|
|
# Copyright (C) 2006-2011 Linux Foundation
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
#
|
|
|
|
if ! $(return >/dev/null 2>&1) ; then
|
|
echo 'oe-buildenv-internal: error: this script must be sourced'
|
|
echo ''
|
|
echo 'Usage: . $OEROOT/scripts/oe-buildenv-internal &&'
|
|
echo ''
|
|
echo 'OpenEmbedded oe-buildenv-internal - an internal script that is'
|
|
echo 'used in oe-init-build-env to initialize oe build environment'
|
|
echo ''
|
|
exit 2
|
|
fi
|
|
|
|
# It is assumed OEROOT is already defined when this is called
|
|
if [ -z "$OEROOT" ]; then
|
|
echo >&2 "Error: OEROOT is not defined!"
|
|
return 1
|
|
fi
|
|
|
|
if [ -z "$OE_SKIP_SDK_CHECK" ] && [ -n "$OECORE_SDK_VERSION" ]; then
|
|
echo >&2 "Error: The OE SDK/ADT was detected as already being present in this shell environment. Please use a clean shell when sourcing this environment script."
|
|
return 1
|
|
fi
|
|
|
|
# We potentially have code that doesn't parse correctly with older versions
|
|
# of Python, and rather than fixing that and being eternally vigilant for
|
|
# any other new feature use, just check the version here.
|
|
py_v35_check=$(python3 -c 'import sys; print(sys.version_info >= (3,5,0))')
|
|
if [ "$py_v35_check" != "True" ]; then
|
|
echo >&2 "BitBake requires Python 3.5.0 or later as 'python3 (scripts/install-buildtools can be used if needed)'"
|
|
return 1
|
|
fi
|
|
unset py_v35_check
|
|
|
|
if [ -z "$BDIR" ]; then
|
|
if [ -z "$1" ]; then
|
|
BDIR="build"
|
|
else
|
|
BDIR="$1"
|
|
if [ "$BDIR" = "/" ]; then
|
|
echo >&2 "Error: / is not supported as a build directory."
|
|
return 1
|
|
fi
|
|
|
|
# Remove any possible trailing slashes. This is used to work around
|
|
# buggy readlink in Ubuntu 10.04 that doesn't ignore trailing slashes
|
|
# and hence "readlink -f new_dir_to_be_created/" returns empty.
|
|
BDIR=$(echo $BDIR | sed -re 's|/+$||')
|
|
|
|
BDIR=$(readlink -f "$BDIR")
|
|
if [ -z "$BDIR" ]; then
|
|
PARENTDIR=$(dirname "$1")
|
|
echo >&2 "Error: the directory $PARENTDIR does not exist?"
|
|
return 1
|
|
fi
|
|
fi
|
|
if [ -n "$2" ]; then
|
|
BITBAKEDIR="$2"
|
|
fi
|
|
fi
|
|
if [ "${BDIR#/}" != "$BDIR" ]; then
|
|
BUILDDIR="$BDIR"
|
|
else
|
|
BUILDDIR="$(pwd)/$BDIR"
|
|
fi
|
|
unset BDIR
|
|
|
|
if [ -z "$BITBAKEDIR" ]; then
|
|
BITBAKEDIR="$OEROOT/bitbake$BBEXTRA"
|
|
test -d "$BITBAKEDIR" || BITBAKEDIR="$OEROOT/../bitbake$BBEXTRA"
|
|
fi
|
|
|
|
BITBAKEDIR=$(readlink -f "$BITBAKEDIR")
|
|
BUILDDIR=$(readlink -f "$BUILDDIR")
|
|
BBPATH=$BUILDDIR
|
|
|
|
export BBPATH
|
|
|
|
if [ ! -d "$BITBAKEDIR" ]; then
|
|
echo >&2 "Error: The bitbake directory ($BITBAKEDIR) does not exist! Please ensure a copy of bitbake exists at this location or specify an alternative path on the command line"
|
|
return 1
|
|
fi
|
|
|
|
# Add BitBake's library to PYTHONPATH
|
|
PYTHONPATH=$BITBAKEDIR/lib:$PYTHONPATH
|
|
export PYTHONPATH
|
|
|
|
# Remove any paths added by sourcing this script before
|
|
[ -n "$OE_ADDED_PATHS" ] && PATH=$(echo $PATH | sed -e "s#$OE_ADDED_PATHS##") ||
|
|
PATH=$(echo $PATH | sed -e "s#$OEROOT/scripts:$BITBAKEDIR/bin:##")
|
|
|
|
# Make sure our paths are at the beginning of $PATH
|
|
OE_ADDED_PATHS="$OEROOT/scripts:$BITBAKEDIR/bin:"
|
|
PATH="$OE_ADDED_PATHS$PATH"
|
|
export OE_ADDED_PATHS
|
|
|
|
# This is not needed anymore
|
|
unset BITBAKEDIR
|
|
|
|
# Used by the runqemu script
|
|
export BUILDDIR
|
|
|
|
BB_ENV_PASSTHROUGH_ADDITIONS_OE="MACHINE DISTRO TCMODE TCLIBC HTTP_PROXY http_proxy \
|
|
HTTPS_PROXY https_proxy FTP_PROXY ftp_proxy FTPS_PROXY ftps_proxy ALL_PROXY \
|
|
all_proxy NO_PROXY no_proxy SSH_AGENT_PID SSH_AUTH_SOCK BB_SRCREV_POLICY \
|
|
SDKMACHINE BB_NUMBER_THREADS BB_NO_NETWORK PARALLEL_MAKE GIT_PROXY_COMMAND \
|
|
SOCKS5_PASSWD SOCKS5_USER SCREENDIR STAMPS_DIR BBPATH_EXTRA BB_SETSCENE_ENFORCE \
|
|
BB_LOGCONFIG"
|
|
|
|
BB_ENV_PASSTHROUGH_ADDITIONS="$(echo $BB_ENV_PASSTHROUGH_ADDITIONS $BB_ENV_PASSTHROUGH_ADDITIONS_OE | tr ' ' '\n' | LC_ALL=C sort --unique | tr '\n' ' ')"
|
|
|
|
export BB_ENV_PASSTHROUGH_ADDITIONS
|