From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:4010:c07::22f; helo=mail-lf0-x22f.google.com; envelope-from=arvindprasanna@gmail.com; receiver=edk2-devel@lists.01.org Received: from mail-lf0-x22f.google.com (mail-lf0-x22f.google.com [IPv6:2a00:1450:4010:c07::22f]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id DE04122603B1C for ; Mon, 12 Mar 2018 10:11:16 -0700 (PDT) Received: by mail-lf0-x22f.google.com with SMTP id l191-v6so24461196lfe.1 for ; Mon, 12 Mar 2018 10:17:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=39wWk01fSBIve9UfPCaI9Et0N5B3OaEjhToyC+gS/3g=; b=AZsF5WFRjZBgJ3Jhd4drrtC0enRt025q5eCy5zX29dFWo9fkWLdOdxYFGdWyCKzgFY yeuJe2WwfJdvhDC4z63Ar/FNVwx0UyOPB7BO26tOXzMattNZXf1ANRPBLoLKBGjABM+4 2AaHEEwSC7Zuy5h8mYPfzMYtHAA1HG2/LCxKqecafsWLSmWAW35HUQk7TcueRmmxneSE 9EglSwpbNh/Zi0AMPnJny+OUk3zpQA96/nlv3oIEvHmfF6JhLkBgelRIfDh+Wu1KffOy rXeGztNfCs1K/7EerpsVRxlJKjfQDH1tOnXPP5ADx4hXaaC0iMUU8czCohjf0PObJ2Yv epgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=39wWk01fSBIve9UfPCaI9Et0N5B3OaEjhToyC+gS/3g=; b=kqOH/pmVLMIrXZDYUN+lQYReas5v27QbYZoJTbEPzpRlm60sHmtls3Nx0b0hTLk4QM dS1mTNSRkQhIRRUqNRLnFAli4znb6Y9pxJjrEcI2kD3sO5yhN+I5ksrw0TpBp46pc1DN RRdTpGMOwmy/0nRCdr8oNp3Feb8A/uvZQR3jlpTjqP55+tLSfUI1EnwErhmd1gSP9xDR 143yOo9PqKSUDpONICtQ8gLmIYCUoPdYPgfkEK2cmxZZrS2yeXu7ls/bnMVGg8ty/uIf NRl/ZO433jRVgUdsKgwD90sFjqz8QrV3rmCzhtZCWC76idLSO5n8gUHLIWLKjgloVmlS 7m5w== X-Gm-Message-State: AElRT7Hq3T1crvugMpASGgmflki8auJ+85ZfqOzSOcaWaQbwnSgIfgE2 f88cnen2s2krU96mEKCcaA/oZQ8aMqdUFUL7fPM= X-Google-Smtp-Source: AG47ELteCHFwnSKkIGhz9QBiAU/V58/gs4apZjknHLhtcZ3IDwABNcVGEngz5prYGHLKk7GJBUq9HyDlnECmtaypupg= X-Received: by 2002:a19:1a82:: with SMTP id a124-v6mr4878613lfa.35.1520875054987; Mon, 12 Mar 2018 10:17:34 -0700 (PDT) MIME-Version: 1.0 Received: by 10.179.75.154 with HTTP; Mon, 12 Mar 2018 10:17:34 -0700 (PDT) In-Reply-To: <4A89E2EF3DFEDB4C8BFDE51014F606A14E1E5764@SHSMSX104.ccr.corp.intel.com> References: <1520669933-8602-1-git-send-email-arvindprasanna@gmail.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E1E5764@SHSMSX104.ccr.corp.intel.com> From: Arvind Prasanna Date: Mon, 12 Mar 2018 13:17:34 -0400 Message-ID: To: "Gao, Liming" Cc: "Zhu, Yonghong" , "edk2-devel@lists.01.org" X-Content-Filtered-By: Mailman/MimeDel 2.1.23 Subject: Re: [PATCH] edksetup.sh: Update help section regarding positional X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Mar 2018 17:11:17 -0000 Content-Type: text/plain; charset="UTF-8" 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 wrote: > Arvind: > > Could you give one example to explain this usage? > > > > ---------- Forwarded message ---------- > From: *Arvind Prasanna* > 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 > > > 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 > --- > 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 > > >