[edk2-devel] [PATCH] Simplify edksetup.sh

Rebecca Cran posted 1 patch 4 years, 9 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/edk2 tags/patchew/20190710211726.10100-1-rebecca@bsdio.com
edksetup.sh | 67 ++++++++++++++---------------------------------------
1 file changed, 18 insertions(+), 49 deletions(-)
[edk2-devel] [PATCH] Simplify edksetup.sh
Posted by Rebecca Cran 4 years, 9 months ago
o Use '$SCRIPTNAME' consistently instead of 'edksetup.sh'

o Use the bash environment variable $PWD instead of executing the pwd
  command.

o Add quotes around variables to ensure they're evaluated correctly.

o Simplify SetupPython3() and SetupPython() functions. On Linux,
  "whereis" matches python3, python3.7, as well as man pages, libs etc.
  While on macOS it only matches the specified name, and so misses
  python3.7. Improve this by looping over potential version numbers and
  seeing if such a binary exists and can be executed.

o Since when parsing options '*' matches anything not already matched,
  remove -?, -h and --help since they're redundant.

o When executing arithmetic commands, $ isn't needed before variables.

Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
---
 edksetup.sh | 67 ++++++++++++++---------------------------------------
 1 file changed, 18 insertions(+), 49 deletions(-)

diff --git a/edksetup.sh b/edksetup.sh
index 12a3e26a67..a797ff03d2 100755
--- a/edksetup.sh
+++ b/edksetup.sh
@@ -49,11 +49,11 @@ function SetWorkspace()
     return 0
   fi
 
-  if [ ! ${BASH_SOURCE[0]} -ef ./edksetup.sh ] && [ -z "$PACKAGES_PATH" ]
+  if [ ! ${BASH_SOURCE[0]} -ef ./$SCRIPTNAME ] && [ -z "$PACKAGES_PATH" ]
   then
     echo Run this script from the base of your tree.  For example:
-    echo "  cd /Path/To/Edk/Root"
-    echo "  . edksetup.sh"
+    echo "  cd /path/to/edk2/root"
+    echo "  . $SCRIPTNAME"
     return 1
   fi
 
@@ -71,7 +71,7 @@ function SetWorkspace()
   #
   # Set $WORKSPACE
   #
-  export WORKSPACE=`pwd`
+  export WORKSPACE=$PWD
   return 0
 }
 
@@ -107,24 +107,10 @@ function SetupEnv()
 
 function 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
+  for python in $(seq -f "python3.%g" 15 -1 1) python3; do
+    if command -v $python >/dev/null 2>&1; then
+      export PYTHON_COMMAND=$(which $python)
+      break
     fi
   done
   return 0
@@ -132,8 +118,8 @@ function SetupPython3()
 
 function SetupPython()
 {
-  if [ $PYTHON_COMMAND ] && [ -z $PYTHON3_ENABLE ];then
-    if ( command -v $PYTHON_COMMAND >/dev/null 2>&1 );then
+  if [ -n "$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.
@@ -141,32 +127,15 @@ function SetupPython()
     fi
   fi
 
-  if [ $PYTHON3_ENABLE ] && [ $PYTHON3_ENABLE == TRUE ]
-  then
+  if [ "$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
+  if [ -n "$PYTHON3_ENABLE" ] && [ "$PYTHON3_ENABLE" != "TRUE" ]; then
+    for python in $(seq -f "python2.%g" 10 -1 1) python2; do
+      if command -v $python >/dev/null 2>&1; then
+        export PYTHON_COMMAND=$(which $python)
+        break
       fi
     done
     return 0
@@ -194,12 +163,12 @@ do
       RECONFIG=TRUE
       shift
     ;;
-    -?|-h|--help|*)
+    *)
       HelpMsg
       break
     ;;
   esac
-  I=$(($I - 1))
+  I=$((I - 1))
 done
 
 if [ $I -gt 0 ]
-- 
2.22.0


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#43528): https://edk2.groups.io/g/devel/message/43528
Mute This Topic: https://groups.io/mt/32421563/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [PATCH] Simplify edksetup.sh
Posted by Laszlo Ersek 4 years, 9 months ago
Hi,

On 07/10/19 23:17, Rebecca Cran wrote:
> o Use '$SCRIPTNAME' consistently instead of 'edksetup.sh'
> 
> o Use the bash environment variable $PWD instead of executing the pwd
>   command.
> 
> o Add quotes around variables to ensure they're evaluated correctly.
> 
> o Simplify SetupPython3() and SetupPython() functions. On Linux,
>   "whereis" matches python3, python3.7, as well as man pages, libs etc.
>   While on macOS it only matches the specified name, and so misses
>   python3.7. Improve this by looping over potential version numbers and
>   seeing if such a binary exists and can be executed.
> 
> o Since when parsing options '*' matches anything not already matched,
>   remove -?, -h and --help since they're redundant.
> 
> o When executing arithmetic commands, $ isn't needed before variables.

As long as my opinion counts... (and I totally don't insist that it do):
the above task list will make for a nice 6-part patch series. :)

(When someone is tempted to capture a *list* of changes in a single
commit message, that frequently indicates that the patch should be split
up, so that each change get its own dedicated patch.)

Thanks,
Laszlo

> 
> Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
> ---
>  edksetup.sh | 67 ++++++++++++++---------------------------------------
>  1 file changed, 18 insertions(+), 49 deletions(-)
> 
> diff --git a/edksetup.sh b/edksetup.sh
> index 12a3e26a67..a797ff03d2 100755
> --- a/edksetup.sh
> +++ b/edksetup.sh
> @@ -49,11 +49,11 @@ function SetWorkspace()
>      return 0
>    fi
>  
> -  if [ ! ${BASH_SOURCE[0]} -ef ./edksetup.sh ] && [ -z "$PACKAGES_PATH" ]
> +  if [ ! ${BASH_SOURCE[0]} -ef ./$SCRIPTNAME ] && [ -z "$PACKAGES_PATH" ]
>    then
>      echo Run this script from the base of your tree.  For example:
> -    echo "  cd /Path/To/Edk/Root"
> -    echo "  . edksetup.sh"
> +    echo "  cd /path/to/edk2/root"
> +    echo "  . $SCRIPTNAME"
>      return 1
>    fi
>  
> @@ -71,7 +71,7 @@ function SetWorkspace()
>    #
>    # Set $WORKSPACE
>    #
> -  export WORKSPACE=`pwd`
> +  export WORKSPACE=$PWD
>    return 0
>  }
>  
> @@ -107,24 +107,10 @@ function SetupEnv()
>  
>  function 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
> +  for python in $(seq -f "python3.%g" 15 -1 1) python3; do
> +    if command -v $python >/dev/null 2>&1; then
> +      export PYTHON_COMMAND=$(which $python)
> +      break
>      fi
>    done
>    return 0
> @@ -132,8 +118,8 @@ function SetupPython3()
>  
>  function SetupPython()
>  {
> -  if [ $PYTHON_COMMAND ] && [ -z $PYTHON3_ENABLE ];then
> -    if ( command -v $PYTHON_COMMAND >/dev/null 2>&1 );then
> +  if [ -n "$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.
> @@ -141,32 +127,15 @@ function SetupPython()
>      fi
>    fi
>  
> -  if [ $PYTHON3_ENABLE ] && [ $PYTHON3_ENABLE == TRUE ]
> -  then
> +  if [ "$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
> +  if [ -n "$PYTHON3_ENABLE" ] && [ "$PYTHON3_ENABLE" != "TRUE" ]; then
> +    for python in $(seq -f "python2.%g" 10 -1 1) python2; do
> +      if command -v $python >/dev/null 2>&1; then
> +        export PYTHON_COMMAND=$(which $python)
> +        break
>        fi
>      done
>      return 0
> @@ -194,12 +163,12 @@ do
>        RECONFIG=TRUE
>        shift
>      ;;
> -    -?|-h|--help|*)
> +    *)
>        HelpMsg
>        break
>      ;;
>    esac
> -  I=$(($I - 1))
> +  I=$((I - 1))
>  done
>  
>  if [ $I -gt 0 ]
> 


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#43675): https://edk2.groups.io/g/devel/message/43675
Mute This Topic: https://groups.io/mt/32421563/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [PATCH] Simplify edksetup.sh
Posted by rebecca@bsdio.com 4 years, 9 months ago
On 2019-07-12 16:21, Laszlo Ersek wrote:
>
> As long as my opinion counts... (and I totally don't insist that it do):
> the above task list will make for a nice 6-part patch series. :)
>
> (When someone is tempted to capture a *list* of changes in a single
> commit message, that frequently indicates that the patch should be split
> up, so that each change get its own dedicated patch.)


While I can see your point, in this case I think splitting the patch up
into 6 parts would be excessive. All the changes are to a single file,
and a couple of the changes in the list are to single lines.


-- 
Rebecca Cran


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#43723): https://edk2.groups.io/g/devel/message/43723
Mute This Topic: https://groups.io/mt/32421563/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [PATCH] Simplify edksetup.sh
Posted by Leif Lindholm 4 years, 9 months ago
On Mon, Jul 15, 2019 at 08:40:21AM -0600, Rebecca Cran wrote:
> On 2019-07-12 16:21, Laszlo Ersek wrote:
> >
> > As long as my opinion counts... (and I totally don't insist that it do):
> > the above task list will make for a nice 6-part patch series. :)
> >
> > (When someone is tempted to capture a *list* of changes in a single
> > commit message, that frequently indicates that the patch should be split
> > up, so that each change get its own dedicated patch.)
> 
> While I can see your point, in this case I think splitting the patch up
> into 6 parts would be excessive. All the changes are to a single file,
> and a couple of the changes in the list are to single lines.

For me, the question is more with being able to trivially discern
which patch does what. I agree they're all individually trivial, but
as a single patch there is enough going on at once that it makes it
easier for bugs to slip through review. (And we've had issues with
this in the past in edksetup.sh.)

/
    Leif

-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#43725): https://edk2.groups.io/g/devel/message/43725
Mute This Topic: https://groups.io/mt/32421563/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [PATCH] Simplify edksetup.sh
Posted by rebecca@bsdio.com 4 years, 9 months ago
On 2019-07-15 08:55, Leif Lindholm wrote:
>
> For me, the question is more with being able to trivially discern
> which patch does what. I agree they're all individually trivial, but
> as a single patch there is enough going on at once that it makes it
> easier for bugs to slip through review. (And we've had issues with
> this in the past in edksetup.sh.)



Thanks, I understand now. I'll resubmit the changes as a series.


-- 

Rebecca Cran


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#43726): https://edk2.groups.io/g/devel/message/43726
Mute This Topic: https://groups.io/mt/32421563/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [PATCH] Simplify edksetup.sh
Posted by Laszlo Ersek 4 years, 9 months ago
On 07/15/19 17:01, Rebecca Cran wrote:
> On 2019-07-15 08:55, Leif Lindholm wrote:
>>
>> For me, the question is more with being able to trivially discern
>> which patch does what. I agree they're all individually trivial, but
>> as a single patch there is enough going on at once that it makes it
>> easier for bugs to slip through review. (And we've had issues with
>> this in the past in edksetup.sh.)
> 
> 
> 
> Thanks, I understand now. I'll resubmit the changes as a series.

I'm sorry, I shouldn't have followed up, but read Leif's response first
-- Leif expressed the same concern that I had, only better, and more
politely. :) My apologies for the snark!

Thanks
Laszlo

-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#43737): https://edk2.groups.io/g/devel/message/43737
Mute This Topic: https://groups.io/mt/32421563/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [PATCH] Simplify edksetup.sh
Posted by Laszlo Ersek 4 years, 9 months ago
On 07/15/19 16:40, Rebecca Cran wrote:
> On 2019-07-12 16:21, Laszlo Ersek wrote:
>>
>> As long as my opinion counts... (and I totally don't insist that it do):
>> the above task list will make for a nice 6-part patch series. :)
>>
>> (When someone is tempted to capture a *list* of changes in a single
>> commit message, that frequently indicates that the patch should be split
>> up, so that each change get its own dedicated patch.)
> 
> 
> While I can see your point, in this case I think splitting the patch up
> into 6 parts would be excessive. All the changes are to a single file,
> and a couple of the changes in the list are to single lines.

Fair enough, as long as you don't insist on my Reviewed-by in
particular. :) I won't block the patch just because of this, but I also
won't try to decipher changes made for six different goals from each other.

Thanks,
Laszlo


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#43736): https://edk2.groups.io/g/devel/message/43736
Mute This Topic: https://groups.io/mt/32421563/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [PATCH] Simplify edksetup.sh
Posted by rebecca@bsdio.com 4 years, 9 months ago
On 2019-07-15 11:45, Laszlo Ersek wrote:
>
> Fair enough, as long as you don't insist on my Reviewed-by in
> particular. :) I won't block the patch just because of this, but I also
> won't try to decipher changes made for six different goals from each other.


Not six different goals: *one* goal, of simplifying the script :)

Anyway, I've resubmitted the changes as a series. Now back to my day job.


-- 
Rebecca Cran


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#43749): https://edk2.groups.io/g/devel/message/43749
Mute This Topic: https://groups.io/mt/32421563/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [PATCH] Simplify edksetup.sh
Posted by rebecca@bsdio.com 4 years, 9 months ago
On 2019-07-10 15:17, Rebecca Cran wrote:
> o Use '$SCRIPTNAME' consistently instead of 'edksetup.sh'
>
> o Use the bash environment variable $PWD instead of executing the pwd
>   command.
>
> o Add quotes around variables to ensure they're evaluated correctly.
>
> o Simplify SetupPython3() and SetupPython() functions. On Linux,
>   "whereis" matches python3, python3.7, as well as man pages, libs etc.
>   While on macOS it only matches the specified name, and so misses
>   python3.7. Improve this by looping over potential version numbers and
>   seeing if such a binary exists and can be executed.
>
> o Since when parsing options '*' matches anything not already matched,
>   remove -?, -h and --help since they're redundant.
>
> o When executing arithmetic commands, $ isn't needed before variables.
>
> Signed-off-by: Rebecca Cran <rebecca@bsdio.com>


Ping? Added the TianoCore Stewards to cc list, since the file is in the
root of the repo and not a package.


-- 
Rebecca Cran


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#43660): https://edk2.groups.io/g/devel/message/43660
Mute This Topic: https://groups.io/mt/32421563/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-