Skip to content

Commit

Permalink
edksetup.sh: Ensure that WORKSPACE points to the top of an edk2 checkout
Browse files Browse the repository at this point in the history
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
Reviewed-by: Jordan Justen <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15701 6f19259b-4bc3-4df7-8a09-765794883524
  • Loading branch information
bonzini authored and jljusten committed Jul 28, 2014
1 parent 7bc1421 commit d549344
Showing 1 changed file with 44 additions and 2 deletions.
46 changes: 44 additions & 2 deletions edksetup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,57 @@ function HelpMsg()
return 1
}

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 [ -n "$EDK_TOOLS_PATH" ]
then
. $EDK_TOOLS_PATH/BuildEnv $*
elif [ -n "$WORKSPACE" ]
elif [ -f "$WORKSPACE/BaseTools/BuildEnv" ]
then
. $WORKSPACE/BaseTools/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
}

Expand All @@ -56,6 +97,7 @@ function SourceEnv()
then
HelpMsg
else
SetWorkspace &&
SetupEnv "$*"
fi
}
Expand Down

0 comments on commit d549344

Please sign in to comment.