From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f52.google.com (mail-pj1-f52.google.com [209.85.216.52]) by mx.groups.io with SMTP id smtpd.web11.39869.1683398083486913875 for ; Sat, 06 May 2023 11:34:43 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20221208 header.b=EpjbP6JP; spf=pass (domain: gmail.com, ip: 209.85.216.52, mailfrom: pedro.falcato@gmail.com) Received: by mail-pj1-f52.google.com with SMTP id 98e67ed59e1d1-24de2954bc5so2138875a91.1 for ; Sat, 06 May 2023 11:34:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683398083; x=1685990083; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=r6H3RXlaXPA0PmugBvMkM8i5CW4d4foZimxiyf+hqUE=; b=EpjbP6JPFpGhNj47ADvzk5VjLsfcqtTO3KgDY9EBXHlST5s/KUMgbk83bB0lO85uDO lWwtPlLmcdNfOqmBcdNW8wCqtHB5jrXiMEgowYef5RMvqPGZVvE3iR1FFz9eICsWPmXc 7vf+Y7siyzOA/A4BYw5yikYu+z0V9guJ03aOufvWyYHG1XYXWyxjjJU1YALMnKSD5wsY NzbUi8ujdGs9SL9rsMCmQWVrOsOGsHUGUfy24Mh9HdLfRapKqSnhvnD5WTtMQIMB0SqB EkVGbPerzXNUL+E+Yl+vPh6O2rTy0EA5utK/Kj+ed/feayebZs195DYswzrwojshAS0y Kp6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683398083; x=1685990083; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=r6H3RXlaXPA0PmugBvMkM8i5CW4d4foZimxiyf+hqUE=; b=G0SuX9eTresIMcTMwKkUPv3Fr2rbfQp00JOUpRwbnAz7lD8qWwdxNX9dTze0/wD2Lq +MRPlQcpIZeY1BsiOtrd+xUX+jsMzWjPhpIDuH6vVLswx1RQQUEwfcDEC9db/JLo4LfX 3pkHyGaoQ9vL8yUcyNHbwI/g3RwoaQHqywi7vGZI5O82uvonVBBwrPe5DRvazxhJgGKT qDP948V5YJKYPgadjeKgp3zDwSny/K8wT/ScLCkKjmebLSXO/NnYU5Y9rCxIVKcBwYHK U9hSZ1dGVoimw9OUCIguJVEzqAzTVeBVzffmRz8OoGl3TrgbCJ6eYMplzo32K6u3FLBS AmhA== X-Gm-Message-State: AC+VfDwFv8xgcN4gMlmfsOakopdWn3qS0oLBElMyTc6hGtju7/240xKi NtOt0v0KC/6dH/HbP6xXzzADGDQm2iuXSOI7J8PaNhM1Jyo= X-Google-Smtp-Source: ACHHUZ5yzosi7HDoxYpk6aml2vROjsdWHnTxfKUxZjidruP0NbfTIsCOpPK1F5x3ADFzuuYJTICbsZPZYZCAE3K/09Y= X-Received: by 2002:a17:90a:604b:b0:249:748b:a232 with SMTP id h11-20020a17090a604b00b00249748ba232mr5088597pjm.25.1683398082666; Sat, 06 May 2023 11:34:42 -0700 (PDT) MIME-Version: 1.0 References: <20230506182311.14023-1-rebecca@bsdio.com> In-Reply-To: <20230506182311.14023-1-rebecca@bsdio.com> From: "Pedro Falcato" Date: Sat, 6 May 2023 19:34:31 +0100 Message-ID: Subject: Re: [edk2-devel] [PATCH 1/1] Remove bashisms from edksetup.sh and BaseTools/BuildEnv To: devel@edk2.groups.io, rebecca@bsdio.com Cc: Liming Gao , Bob Feng , Yuwei Chen , Andrew Fish , Leif Lindholm , Michael D Kinney Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, May 6, 2023 at 7:23=E2=80=AFPM Rebecca Cran wro= te: > > Remove bashisms from edksetup.sh and BaseTools/BuildEnv. This allows any > POSIX shell to use those scripts, removing the dependency on bash. > > Signed-off-by: Rebecca Cran > --- > BaseTools/BuildEnv | 30 +++---- > edksetup.sh | 89 +++----------------- > 2 files changed, 26 insertions(+), 93 deletions(-) > > diff --git a/BaseTools/BuildEnv b/BaseTools/BuildEnv > index 275f4c5901aa..bd6235d74fa7 100755 > --- a/BaseTools/BuildEnv > +++ b/BaseTools/BuildEnv > @@ -20,7 +20,8 @@ SetWorkspace() { > # > # Set $WORKSPACE > # > - export WORKSPACE=3D`pwd` > + WORKSPACE=3D$(pwd) > + export WORKSPACE > > return 0 > > @@ -35,8 +36,7 @@ RestorePreviousConfiguration() { > export CONF_PATH=3D$WORKSPACE/Conf > if [ ! -d $WORKSPACE/Conf ] && [ -n "$PACKAGES_PATH" ] > then > - PATH_LIST=3D${PACKAGES_PATH//:/ } > - for DIR in $PATH_LIST > + for DIR in $(echo $PACKAGES_PATH | tr ':' ' ') > do > if [ -d $DIR/Conf ] > then > @@ -70,7 +70,13 @@ GenerateShellCodeToUpdatePath() { > OUTPUT_FILE=3D$1 > echo "if [ -e $EDK_TOOLS_PATH_BIN ]" >> $OUTPUT= _FILE > echo "then" >> $OUTPUT= _FILE > - echo " if [ "\${PATH/$EDK_TOOLS_PATH_BIN/}" =3D=3D "\$PATH" ]" >> $OU= TPUT_FILE > + echo " FOUND_TOOLS_PATH_BIN=3D0" >> $OUTP= UT_FILE > + echo " for DIR in \$(echo \$PATH | tr ':' ' '); do" >> $OUTPUT= _FILE > + echo " if [ \"\$DIR\" =3D \"$EDK_TOOLS_PATH_BIN\" ]; then" >> $OUTP= UT_FILE > + echo " FOUND_TOOLS_PATH_BIN=3D1" >> $OUTP= UT_FILE > + echo " fi" >> $OUTPUT= _FILE > + echo " done" >> $OUTPUT= _FILE > + echo " if [ \$FOUND_TOOLS_PATH_BIN =3D 0 ]" >> $OUTP= UT_FILE > echo " then" >> $OUTPUT= _FILE > echo " export PATH=3D$EDK_TOOLS_PATH_BIN:\$PATH" >> $OUTP= UT_FILE > echo " fi" >> $OUTPUT= _FILE > @@ -84,7 +90,7 @@ StoreCurrentConfiguration() { > # > OUTPUT_FILE=3D$CONF_PATH/BuildEnv.sh > #echo Storing current configuration into $OUTPUT_FILE > - echo "# Auto-generated by ${BASH_SOURCE[0]}" >| $OUTPUT_FILE > + echo "# Auto-generated by BaseTools/BuildEnv" >| $OUTPUT_FILE > GenerateShellCodeToSetVariable WORKSPACE $OUTPUT_FILE > GenerateShellCodeToSetVariable EDK_TOOLS_PATH $OUTPUT_FILE > GenerateShellCodeToUpdatePath $OUTPUT_FILE > @@ -130,10 +136,9 @@ SetEdkToolsPath() { > # > # Try $PACKAGES_PATH > # > - if [ -n "$PACKAGES_PATH"] > + if [ -n "$PACKAGES_PATH" ] > then > - PATH_LIST=3D${PACKAGES_PATH//:/ } > - for DIR in $PATH_LIST > + for DIR in $(echo $PACKAGES_PATH | tr ':' ' ') > do > if [ -d $DIR/BaseTools ] > then > @@ -156,10 +161,7 @@ GetBaseToolsBinSubDir() { > # > # Figure out a uniq directory name from the uname command > # > - UNAME_DIRNAME=3D`uname -sm` > - UNAME_DIRNAME=3D${UNAME_DIRNAME// /-} > - UNAME_DIRNAME=3D${UNAME_DIRNAME//\//-} > - echo $UNAME_DIRNAME > + echo $(uname -sm | tr ' ' '-') > } > > GetEdkToolsPathBinDirectory() { > @@ -180,8 +182,6 @@ GetEdkToolsPathBinDirectory() { > > AddDirToStartOfPath() { > DIRNAME=3D$1 > - PATH=3D$DIRNAME:$DIRNAME:$DIRNAME:$PATH > - PATH=3D${PATH//$DIRNAME:/} > PATH=3D$DIRNAME:$PATH > export PATH > } > @@ -199,7 +199,7 @@ AddEdkToolsToPath() { > EDK_TOOLS_PATH_BIN=3D`GetEdkToolsPathBinDirectory` > > # check if the edk2basetools pip package is available > - if $PYTHON_COMMAND -c "import edk2basetools" &> /dev/null; then > + if $PYTHON_COMMAND -c "import edk2basetools" > /dev/null 2>&1; then > # if it is, use the pip version of the wrappers > echo "Using Pip Basetools" > AddDirToStartOfPath $EDK_TOOLS_PATH/BinPipWrappers/PosixLike > diff --git a/edksetup.sh b/edksetup.sh > index 06d2f041e635..cab3a8c113e0 100755 > --- a/edksetup.sh > +++ b/edksetup.sh > @@ -20,7 +20,7 @@ > SCRIPTNAME=3D"edksetup.sh" > RECONFIG=3DFALSE > > -function HelpMsg() > +HelpMsg() > { > echo "Usage: $SCRIPTNAME [Options]" > echo > @@ -38,7 +38,7 @@ function HelpMsg() > echo "source $SCRIPTNAME" > } > > -function SetWorkspace() > +SetWorkspace() > { > # > # If WORKSPACE is already set, then we can return right now > @@ -49,10 +49,10 @@ function SetWorkspace() > return 0 > fi > > - if [ ! ${BASH_SOURCE[0]} -ef ./$SCRIPTNAME ] && [ -z "$PACKAGES_PATH" = ] > + if [ ! -f ${SCRIPTNAME} ] && [ -z "$PACKAGES_PATH" ] > then > - echo Run this script from the base of your tree. For example: > - echo " cd /Path/To/Edk/Root" > + echo Source this script from the base of your tree. For example: > + echo " cd /Path/To/Edk2/Clone" > echo " . $SCRIPTNAME" > return 1 > fi > @@ -75,7 +75,7 @@ function SetWorkspace() > return 0 > } > > -function SetupEnv() > +SetupEnv() > { > if [ -n "$EDK_TOOLS_PATH" ] > then > @@ -85,9 +85,7 @@ function SetupEnv() > . $WORKSPACE/BaseTools/BuildEnv > elif [ -n "$PACKAGES_PATH" ] > then > - PATH_LIST=3D$PACKAGES_PATH > - PATH_LIST=3D${PATH_LIST//:/ } > - for DIR in $PATH_LIST > + for DIR in $(echo $PACKAGES_PATH | tr ':' ' ') > do > if [ -f "$DIR/BaseTools/BuildEnv" ] > then > @@ -105,81 +103,16 @@ function SetupEnv() > fi > } > > -function SetupPython3() > +SetupPython3() > { > - if [ $origin_version ];then > - origin_version=3D > - fi > - for python in $(whereis python3) > - do > - python=3D$(echo $python | grep "[[:digit:]]$" || true) > - python_version=3D${python##*python} > - if [ -z "${python_version}" ] || (! command -v $python >/dev/null 2>= &1);then > - continue > - fi > - if [ -z $origin_version ];then > - origin_version=3D$python_version > - export PYTHON_COMMAND=3D$python > - continue > - fi > - if [[ "$origin_version" < "$python_version" ]]; then > - origin_version=3D$python_version > - export PYTHON_COMMAND=3D$python > - fi > - done > - return 0 > + export PYTHON_COMMAND=3Dpython3 Did you test this in FreeBSD (and hopefully other BSDs, such as Net)? As far as I know, those don't package a python3 symlink (only python3.{version}). At a glance, the rest of the changes look ok-ish to me though. --=20 Pedro