public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Arvind Prasanna <arvindprasanna@gmail.com>
To: "Gao, Liming" <liming.gao@intel.com>
Cc: "Zhu, Yonghong" <yonghong.zhu@intel.com>,
	 "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Subject: Re: [PATCH] edksetup.sh: Update help section regarding positional
Date: Mon, 12 Mar 2018 13:17:34 -0400	[thread overview]
Message-ID: <CAK-=9LrMQ9A9wDGi9VCiy5WUv3yWUCz5gBBaSNAvOXug2yz1tw@mail.gmail.com> (raw)
In-Reply-To: <4A89E2EF3DFEDB4C8BFDE51014F606A14E1E5764@SHSMSX104.ccr.corp.intel.com>

Hi Liming Gao:

Here is a simple example that highlights the issue:


$ ls -l
total 8
drwxrwxr-x 49 arvind arvind 4096 Mar 12 12:35 edk2
-rwxrwxr-x  1 arvind arvind  113 Mar 12 12:37 sourcing_script.sh

$ cat sourcing_script.sh

#!/bin/bash
echo "I have been passed $# arguments"
EDK2_PATH=${PWD}/../edk2
cd ${EDK2_PATH}
source edksetup.sh


Case 1) Let us call sourcing_script.sh with no arguments

$ ./sourcing_script.sh
I have been passed 0 arguments
Loading previous configuration from /home/arvind/edk2/Conf/BuildEnv.sh
WORKSPACE: /home/arvind/edk2
EDK_TOOLS_PATH: /home/arvind/edk2/BaseTools
CONF_PATH: /home/arvind/edk2/Conf

Everything looks good.


Case 2) Let us call sourcing_script.sh with say two arguments

$ ./sourcing_script.sh arg1 arg2
I have been passed 2 arguments
Usage: edksetup.sh [Options]

The system environment variable, WORKSPACE, is always set to the current
working directory.

Options:
  --help, -h, -?        Print this help screen and exit.

  --reconfig            Overwrite the WORKSPACE/Conf/*.txt files with the
                        template files from the BaseTools/Conf directory.

Please note: This script must be 'sourced' so the environment can be
changed.
. edksetup.sh
source edksetup.sh


This is the case I intend to bring out. I have not passed any arguments
(intentionally) to edksetup.sh. but it always defaults to the help case
with the current edksetup.sh script.

In edksetup.sh in line 120, it counts the number of positional parameters
"I=$#" and then does a switch-case on these arguments. In case 2, these
arguments are "arg1" and "arg2" which has nothing to do with edksetup.sh.

If I were to clear all the positional arguments passed to
sourcing_script.sh, using "shift $#" prior to sourcing edk2setup.sh, it
works as expected. I do not want to fix anything in the code as this might
not be a common case but I would like to let the user know that all the
positional parameters that exist in the caller script will affect sourcing
edksetup.sh.



This is how I would recommend the help section be with my patch:

$ ./sourcing_script.sh arg1 arg2
I have been passed 2 arguments
Usage: edksetup.sh [Options]

The system environment variable, WORKSPACE, is always set to the current
working directory.

Options:
  --help, -h, -?        Print this help screen and exit.

  --reconfig            Overwrite the WORKSPACE/Conf/*.txt files with the
                        template files from the BaseTools/Conf directory.

Please note: This script must be 'sourced' so the environment can be
changed.
. edksetup.sh
source edksetup.sh
If this script is being sourced from another script, please ensure that the
sourcing/calling script has no set postional parameters.

 Please let me know your feedback.

Thanks!

- Arvind.

P.S. I just realized my patch has a typo in the word "positional". I will
fix it.

On Mon, Mar 12, 2018 at 10:55 AM, Gao, Liming <liming.gao@intel.com> wrote:

> Arvind:
>
>   Could you give one example to explain this usage?
>
>
>
> ---------- Forwarded message ----------
> From: *Arvind Prasanna* <arvindprasanna@gmail.com>
> Date: Sat, Mar 10, 2018 at 3:18 AM
> Subject: [PATCH] edksetup.sh: Update help section regarding positional
> To: edk2-devel@lists.01.org
> Cc: Arvind Prasanna <arvindprasanna@gmail.com>
>
>
> It is possible to source edksetup.sh from another script. If the
> calling/sourcing script has any positional parameters set, those are
> incorrectly accounted for in edksetup.sh while sourcing it resulting in
> the the help section always being shown. This patch updates the help
> section advising the user about these set positional parameters so they
> can be unset prior to sourcing edksetup.sh.
>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Arvind Prasanna <arvindprasanna@gmail.com>
> ---
>  edksetup.sh | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/edksetup.sh b/edksetup.sh
> index 93d6525..a3d5560 100755
> --- a/edksetup.sh
> +++ b/edksetup.sh
> @@ -42,6 +42,8 @@ function HelpMsg()
>    echo Please note: This script must be \'sourced\' so the environment
> can be changed.
>    echo ". $SCRIPTNAME"
>    echo "source $SCRIPTNAME"
> +  echo "If this script is being sourced from another script, please
> ensure that the"
> +  echo "sourcing/calling script has no set postional parameters."
>  }
>
>  function SetWorkspace()
> --
> 2.7.4
>
>
>


  reply	other threads:[~2018-03-12 17:11 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1520669933-8602-1-git-send-email-arvindprasanna@gmail.com>
     [not found] ` <CAK-=9LqFN3c_ZOnFO=fAnnk6wqKxmbF+LXhek2x6tkXNB37e-g@mail.gmail.com>
2018-03-12 14:55   ` [PATCH] edksetup.sh: Update help section regarding positional Gao, Liming
2018-03-12 17:17     ` Arvind Prasanna [this message]
2018-03-13  5:38       ` [PATCH v2] edksetup.sh: Update help section regarding positional parameters Arvind Prasanna
2018-03-13  5:44         ` Arvind Prasanna
2018-03-13 13:44           ` Gao, Liming
2018-03-13 16:09             ` Arvind Prasanna
2018-03-13  5:41       ` [PATCH] edksetup.sh: Update help section regarding positional Arvind Prasanna
2018-03-13 18:51       ` [PATCH v3] edksetup.sh: Update help section regarding positional parameters Arvind Prasanna
2018-03-10 16:11 [PATCH] edksetup.sh: Update help section regarding positional Arvind Prasanna
2018-03-14 11:25 ` Leif Lindholm
2018-03-16  6:18   ` Arvind Prasanna

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAK-=9LrMQ9A9wDGi9VCiy5WUv3yWUCz5gBBaSNAvOXug2yz1tw@mail.gmail.com' \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox