Since WORKSPACE should point at the EDK2 tree, the right place to check its validity is edksetup.sh, not BaseTools/BuildEnv.
This patch makes sure that BuildEnv is always invoked with a valid WORKSPACE. This lets us show better error messages, and ensures that we never dirty the user's environment. BuildEnv will maintain backwards-compatibility and, should the variable be missing, it will be able to set a default WORKSPACE. Only the sanity checks will be of lower quality. Note that the error message in SetupEnv will never be shown if SetWorkspace sets WORKSPACE=`pwd`. Suggested-by: Laszlo Ersek <[email protected]> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Paolo Bonzini <[email protected]> --- edksetup.sh | 46 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/edksetup.sh b/edksetup.sh index 5b4d37e..a576d92 100755 --- a/edksetup.sh +++ b/edksetup.sh @@ -33,16 +33,57 @@ function HelpMsg() return 1 } -function SetupEnv() +function SetWorkspace() { + # + # If WORKSPACE is already set, then we can return right now + # if [ -n "$WORKSPACE" ] then + return 0 + fi + + if [ ! ${BASH_SOURCE[0]} -ef ./edksetup.sh ] + then + echo Run this script from the base of your tree. For example: + echo " cd /Path/To/Edk/Root" + echo " . edksetup.sh" + return 1 + fi + + # + # Check for BaseTools/BuildEnv before dirtying the user's environment. + # + if [ ! -f BaseTools/BuildEnv ] && [ -z "$EDK_TOOLS_PATH" ] + then + echo BaseTools not found in your tree, and EDK_TOOLS_PATH is not set. + echo Please point EDK_TOOLS_PATH at the directory that contains + echo the EDK2 BuildEnv script. + return 1 + fi + + # + # Set $WORKSPACE + # + export WORKSPACE=`pwd` + + return 0 +} + +function SetupEnv() +{ + if [ -f "$WORKSPACE/BaseTools/BuildEnv" ] + then . $WORKSPACE/BaseTools/BuildEnv $* elif [ -n "$EDK_TOOLS_PATH" ] then . $EDK_TOOLS_PATH/BuildEnv $* else - . BaseTools/BuildEnv $* + echo BaseTools not found in your tree, and EDK_TOOLS_PATH is not set. + echo Please check that WORKSPACE is not set incorrectly in your + echo shell, or point EDK_TOOLS_PATH at the directory that contains + echo the EDK2 BuildEnv script. + return 1 fi } @@ -56,6 +97,7 @@ function SourceEnv() then HelpMsg else + SetWorkspace && SetupEnv "$*" fi } -- 1.9.3 ------------------------------------------------------------------------------ Open source business process management suite built on Java and Eclipse Turn processes into business applications with Bonita BPM Community Edition Quickly connect people, data, and systems into organized workflows Winner of BOSSIE, CODIE, OW2 and Gartner awards http://p.sf.net/sfu/Bonitasoft _______________________________________________ edk2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-devel
