public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH 1/1] Remove bashisms from edksetup.sh and BaseTools/BuildEnv
@ 2023-05-06 18:23 Rebecca Cran
  2023-05-06 18:34 ` [edk2-devel] " Pedro Falcato
  0 siblings, 1 reply; 13+ messages in thread
From: Rebecca Cran @ 2023-05-06 18:23 UTC (permalink / raw)
  To: devel, Liming Gao, Bob Feng, Yuwei Chen, Andrew Fish,
	Leif Lindholm, Michael D Kinney
  Cc: Rebecca Cran

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 <rebecca@bsdio.com>
---
 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=`pwd`
+  WORKSPACE=$(pwd)
+  export WORKSPACE
 
   return 0
 
@@ -35,8 +36,7 @@ RestorePreviousConfiguration() {
     export CONF_PATH=$WORKSPACE/Conf
     if [ ! -d $WORKSPACE/Conf ] && [ -n "$PACKAGES_PATH" ]
     then
-      PATH_LIST=${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=$1
   echo "if [ -e $EDK_TOOLS_PATH_BIN ]"                        >> $OUTPUT_FILE
   echo "then"                                                 >> $OUTPUT_FILE
-  echo "  if [ "\${PATH/$EDK_TOOLS_PATH_BIN/}" == "\$PATH" ]" >> $OUTPUT_FILE
+  echo "  FOUND_TOOLS_PATH_BIN=0"                             >> $OUTPUT_FILE
+  echo "  for DIR in \$(echo \$PATH | tr ':' ' '); do"        >> $OUTPUT_FILE
+  echo "    if [ \"\$DIR\" = \"$EDK_TOOLS_PATH_BIN\" ]; then" >> $OUTPUT_FILE
+  echo "      FOUND_TOOLS_PATH_BIN=1"                         >> $OUTPUT_FILE
+  echo "    fi"                                               >> $OUTPUT_FILE
+  echo "  done"                                               >> $OUTPUT_FILE
+  echo "  if [ \$FOUND_TOOLS_PATH_BIN = 0 ]"                  >> $OUTPUT_FILE
   echo "  then"                                               >> $OUTPUT_FILE
   echo "    export PATH=$EDK_TOOLS_PATH_BIN:\$PATH"           >> $OUTPUT_FILE
   echo "  fi"                                                 >> $OUTPUT_FILE
@@ -84,7 +90,7 @@ StoreCurrentConfiguration() {
   #
   OUTPUT_FILE=$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=${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=`uname -sm`
-  UNAME_DIRNAME=${UNAME_DIRNAME// /-}
-  UNAME_DIRNAME=${UNAME_DIRNAME//\//-}
-  echo $UNAME_DIRNAME
+  echo $(uname -sm | tr ' ' '-')
 }
 
 GetEdkToolsPathBinDirectory() {
@@ -180,8 +182,6 @@ GetEdkToolsPathBinDirectory() {
 
 AddDirToStartOfPath() {
   DIRNAME=$1
-  PATH=$DIRNAME:$DIRNAME:$DIRNAME:$PATH
-  PATH=${PATH//$DIRNAME:/}
   PATH=$DIRNAME:$PATH
   export PATH
 }
@@ -199,7 +199,7 @@ AddEdkToolsToPath() {
   EDK_TOOLS_PATH_BIN=`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="edksetup.sh"
 RECONFIG=FALSE
 
-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=$PACKAGES_PATH
-    PATH_LIST=${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=
-  fi
-  for python in $(whereis python3)
-  do
-    python=$(echo $python | grep "[[:digit:]]$" || true)
-    python_version=${python##*python}
-    if [ -z "${python_version}" ] || (! command -v $python >/dev/null 2>&1);then
-      continue
-    fi
-    if [ -z $origin_version ];then
-      origin_version=$python_version
-      export PYTHON_COMMAND=$python
-      continue
-    fi
-      if [[ "$origin_version" < "$python_version" ]]; then
-      origin_version=$python_version
-      export PYTHON_COMMAND=$python
-    fi
-  done
-  return 0
+  export PYTHON_COMMAND=python3
 }
 
-function SetupPython()
+SourceEnv()
 {
-  if [ $PYTHON_COMMAND ] && [ -z $PYTHON3_ENABLE ];then
-    if ( command -v $PYTHON_COMMAND >/dev/null 2>&1 );then
-      return 0
-    else
-      echo $PYTHON_COMMAND Cannot be used to build or execute the python tools.
-      return 1
-    fi
-  fi
-
-  if [ $PYTHON3_ENABLE ] && [ $PYTHON3_ENABLE == TRUE ]
-  then
-    SetupPython3
-  fi
-
-  if [ $PYTHON3_ENABLE ] && [ $PYTHON3_ENABLE != TRUE ]
-  then
-    if [ $origin_version ];then
-      origin_version=
-    fi
-    for python in $(whereis python2)
-    do
-      python=$(echo $python | grep "[[:digit:]]$" || true)
-      python_version=${python##*python}
-      if [ -z "${python_version}" ] || (! command -v $python >/dev/null 2>&1);then
-        continue
-      fi
-      if [ -z $origin_version ]
-      then
-        origin_version=$python_version
-        export PYTHON_COMMAND=$python
-        continue
-      fi
-      if [[ "$origin_version" < "$python_version" ]]; then
-        origin_version=$python_version
-        export PYTHON_COMMAND=$python
-      fi
-    done
-    return 0
-  fi
-
   SetupPython3
-}
-
-function SourceEnv()
-{
-  SetWorkspace &&
+  SetWorkspace
   SetupEnv
-  SetupPython
 }
 
 I=$#
-- 
2.40.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2023-05-10  1:33 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-06 18:23 [PATCH 1/1] Remove bashisms from edksetup.sh and BaseTools/BuildEnv Rebecca Cran
2023-05-06 18:34 ` [edk2-devel] " Pedro Falcato
2023-05-06 19:34   ` Rebecca Cran
     [not found]   ` <175CA4E73380D66F.2502@groups.io>
2023-05-06 19:45     ` Rebecca Cran
2023-05-06 21:48       ` Pedro Falcato
2023-05-07  3:31         ` Rebecca Cran
2023-05-07  3:51           ` Pedro Falcato
2023-05-09  0:53             ` 回复: " gaoliming
2023-05-09  4:28               ` Rebecca Cran
2023-05-10  0:29                 ` Rebecca Cran
2023-05-10  0:43                   ` Michael D Kinney
2023-05-10  1:02                     ` Rebecca Cran
2023-05-10  1:33                       ` 回复: " gaoliming

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox