[meta-freescale] [PATCH][fsl-community-bsp-base] setup-environment: check script has been sourced
Daiane Angolini
daiane.list at gmail.com
Fri Jul 11 06:28:01 PDT 2014
On Wed, Jul 9, 2014 at 12:25 PM, Trevor Woerner
<trevor.woerner at linaro.org> wrote:
> Check that this script has been invoked correctly (i.e. that it has been
> "source"d and not merely run directly). If it has been run directly, don't
> exit immediately in case the user specified the "help" option, allow the help
> to be displayed, then exit. Adjust how this script is terminated based on
> whether it has been sourced or run directly (i.e. use either "return" or
> "exit" as required).
>
> This change fixes an infinite loop that is caused if the user runs this script
> directly and specifies the help option.
>
> These changes have been tested on: bash, dash, and zsh.
>
> Signed-off-by: Trevor Woerner <trevor.woerner at linaro.org>
> ---
> setup-environment | 29 +++++++++++++++++++++++++++++
> 1 file changed, 29 insertions(+)
>
> diff --git a/setup-environment b/setup-environment
> index 5931e2b..d3f89ce 100755
> --- a/setup-environment
> +++ b/setup-environment
> @@ -24,6 +24,23 @@ NCPU=`grep -c processor /proc/cpuinfo`
> CWD=`pwd`
> PROGNAME="setup-environment"
>
> +# try to determine if this script has been invoked correctly
> +# in other words, make sure it has been "source"d
> +# don't exit out immediately, allow the user to ask for -h
> +INVOKEGOOD=1
> +if [ -n "$ZSH_NAME" ]; then
> + # check for zsh
> + if [ -n "$BASH_SOURCE" ]; then
> + INVOKEGOOD=0
> + fi
> +else
> + # check for bash, sh, and dash
> + echo $0 | grep -q $PROGNAME
> + if [ $? -eq 0 ]; then
> + INVOKEGOOD=0
> + fi
> +fi
> +
> usage()
> {
> echo -e "\nUsage: source $PROGNAME <build-dir>
> @@ -55,6 +72,10 @@ ARGS=$(getopt --options $SHORTOPTS \
> --longoptions $LONGOPTS --name $PROGNAME -- "$@" )
> # Print the usage menu if invalid options are specified
> if [ $? != 0 -o $# -lt 1 ]; then
> + if [ $INVOKEGOOD = 0 ]; then
> + echo "Error: This script needs to be sourced. Please run as '. $PROGNAME'"
I hate using dot "." in documentations or log messages (in fact I
don´t use it any more in my command lines) because I cannot *see* it
when I look to the log/doc line.
Do you see any problem in the use of "source" instead of ". " (dot +
space) as the suggested command line?
Other than that I don´t see any technical problem with the patch.
Daiane
> + exit 1
> + fi
> usage && clean_up
> return 1
> fi
> @@ -66,6 +87,9 @@ do
> -h|--help)
> usage
> clean_up
> + if [ $INVOKEGOOD = 0 ]; then
> + exit 0
> + fi
> return 0
> ;;
> --)
> @@ -75,6 +99,11 @@ do
> esac
> done
>
> +if [ $INVOKEGOOD = 0 ]; then
> + echo "Error: This script needs to be sourced. Please run as '. $PROGNAME'"
> + exit 1
> +fi
> +
> if [ "$(whoami)" = "root" ]; then
> echo "ERROR: do not use the BSP as root. Exiting..."
> fi
> --
> 2.0.0.5.gbce14aa
>
> --
> _______________________________________________
> meta-freescale mailing list
> meta-freescale at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/meta-freescale
More information about the meta-freescale
mailing list