apparently we thought of the same thing:

On 06/25/14 10:37, Paolo Bonzini wrote:
> 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 ]

here :) (Exactly this expression crossed my mind last evening.)

> +  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
>  }
> 

Looks great!

Series
Reviewed-by: Laszlo Ersek <[email protected]>

Thanks
Laszlo

------------------------------------------------------------------------------
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

Reply via email to