public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Leif Lindholm" <leif@nuviainc.com>
To: devel@edk2.groups.io, bob.c.feng@intel.com
Cc: "Chen, Christine" <yuwei.chen@intel.com>,
	"matthewfcarlson@gmail.com" <matthewfcarlson@gmail.com>,
	Liming Gao <gaoliming@byosoft.com.cn>
Subject: Re: [edk2-devel] [PATCH v5 1/1] BaseTools: Use pip module if available, CI uses it by default
Date: Tue, 9 Feb 2021 13:15:04 +0000	[thread overview]
Message-ID: <20210209131504.GH1664@vanye> (raw)
In-Reply-To: <DM6PR11MB40732FC69A068BAD13120247C98E9@DM6PR11MB4073.namprd11.prod.outlook.com>

Hi Bob,

Something has gone wrong with the line endings on BaseTools/BuildEnv,
breaking the build on posix systems:

/work/git/edk2$ . edksetup.sh
-bash: /work/git/orion/edk2/BaseTools/BuildEnv: line 214: syntax error
near unexpected token `}'
-bash: /work/git/orion/edk2/BaseTools/BuildEnv: line 214: `}'

If I run dos2unix on BaseTools/BuildEnv, it works again.
Can you address please?

/
    Leif

On Tue, Feb 09, 2021 at 03:25:30 +0000, Bob Feng wrote:
> Matt,
> 
> I helped to convert the endling character for those PosixLike scripts and created a PR https://github.com/tianocore/edk2/pull/1415
> 
> Liming,
> 
> I verified the your pervious comments on this patch.
> 
> Thanks,
> Bob
> 
> -----Original Message-----
> From: Chen, Christine <yuwei.chen@intel.com> 
> Sent: Tuesday, February 9, 2021 10:32 AM
> To: matthewfcarlson@gmail.com; devel@edk2.groups.io
> Cc: Feng, Bob C <bob.c.feng@intel.com>; Liming Gao <gaoliming@byosoft.com.cn>
> Subject: RE: [PATCH v5 1/1] BaseTools: Use pip module if available, CI uses it by default
> 
> Reviewed-by: Yuwei Chen<yuwei.chen@intel.com>
> 
> > -----Original Message-----
> > From: matthewfcarlson@gmail.com <matthewfcarlson@gmail.com>
> > Sent: Tuesday, February 9, 2021 8:51 AM
> > To: devel@edk2.groups.io
> > Cc: Feng, Bob C <bob.c.feng@intel.com>; Liming Gao
> > <gaoliming@byosoft.com.cn>; Chen, Christine <yuwei.chen@intel.com>;
> > Matthew Carlson <matthewfcarlson@gmail.com>
> > Subject: [PATCH v5 1/1] BaseTools: Use pip module if available, CI uses it by
> > default
> > 
> > From: Matthew Carlson <matthewfcarlson@gmail.com>
> > 
> > Use the new edk2-basetools pip module.
> > Includes a helpful message in setup to let users know which has been
> > selected.
> > 
> > Cc: Bob Feng <bob.c.feng@intel.com>
> > Cc: Liming Gao <gaoliming@byosoft.com.cn>
> > Cc: Yuwei Chen <yuwei.chen@intel.com>
> > 
> > Reviewed-by: Bob Feng <bob.c.feng@intel.com>
> > 
> > Signed-off-by: Matthew Carlson <matthewfcarlson@gmail.com>
> > ---
> >  .pytool/CISettings.py                                                               | 51
> > +++++++++++++++-----
> >  BaseTools/BinPipWrappers/PosixLike/AmlToC                                           | 14
> > ++++++
> >  BaseTools/BinPipWrappers/PosixLike/BPDG                                             | 12
> > +++++
> >  BaseTools/BinPipWrappers/PosixLike/BrotliCompress                                   |
> > 34 +++++++++++++
> >  BaseTools/BinPipWrappers/PosixLike/DevicePath                                       | 29
> > +++++++++++
> >  BaseTools/BinPipWrappers/PosixLike/Ecc                                              | 13
> > +++++
> >  BaseTools/BinPipWrappers/PosixLike/EfiRom                                           | 29
> > +++++++++++
> >  BaseTools/BinPipWrappers/PosixLike/GenCrc32                                         | 29
> > +++++++++++
> >  BaseTools/BinPipWrappers/PosixLike/GenDepex                                         | 12
> > +++++
> >  BaseTools/BinPipWrappers/PosixLike/GenFds                                           | 12
> > +++++
> >  BaseTools/BinPipWrappers/PosixLike/GenFfs                                           | 29
> > +++++++++++
> >  BaseTools/BinPipWrappers/PosixLike/GenFv                                            | 29
> > +++++++++++
> >  BaseTools/BinPipWrappers/PosixLike/GenFw                                            | 29
> > +++++++++++
> >  BaseTools/BinPipWrappers/PosixLike/GenPatchPcdTable                                 |
> > 12 +++++
> >  BaseTools/BinPipWrappers/PosixLike/GenSec                                           | 29
> > +++++++++++
> >  BaseTools/BinPipWrappers/PosixLike/GenerateCapsule                                  |
> > 12 +++++
> >  BaseTools/BinPipWrappers/PosixLike/LzmaCompress                                     |
> > 29 +++++++++++
> >  BaseTools/BinPipWrappers/PosixLike/LzmaF86Compress                                  |
> > 19 ++++++++
> >  BaseTools/BinPipWrappers/PosixLike/PatchPcdValue                                    | 12
> > +++++
> >  BaseTools/BinPipWrappers/PosixLike/Pkcs7Sign                                        | 12
> > +++++
> >  BaseTools/BinPipWrappers/PosixLike/Rsa2048Sha256GenerateKeys
> > | 12 +++++
> >  BaseTools/BinPipWrappers/PosixLike/Rsa2048Sha256Sign                                |
> > 12 +++++
> >  BaseTools/BinPipWrappers/PosixLike/Split                                            | 29
> > +++++++++++
> >  BaseTools/BinPipWrappers/PosixLike/TargetTool                                       | 12
> > +++++
> >  BaseTools/BinPipWrappers/PosixLike/TianoCompress                                    |
> > 29 +++++++++++
> >  BaseTools/BinPipWrappers/PosixLike/Trim                                             | 13
> > +++++
> >  BaseTools/BinPipWrappers/PosixLike/UPT                                              | 12
> > +++++
> >  BaseTools/BinPipWrappers/PosixLike/VfrCompile                                       | 29
> > +++++++++++
> >  BaseTools/BinPipWrappers/PosixLike/VolInfo                                          | 29
> > +++++++++++
> >  BaseTools/BinPipWrappers/PosixLike/build                                            | 12
> > +++++
> >  BaseTools/{BinWrappers =>
> > BinPipWrappers}/PosixLike/posix_path_env.yaml             | 21 ++++----
> >  BaseTools/BinPipWrappers/WindowsLike/AmlToC.bat                                     |
> > 3 ++
> >  BaseTools/BinPipWrappers/WindowsLike/BPDG.bat                                       |
> > 3 ++
> >  BaseTools/BinPipWrappers/WindowsLike/Ecc.bat                                        |  3
> > ++
> >  BaseTools/BinPipWrappers/WindowsLike/GenDepex.bat
> > |  3 ++
> >  BaseTools/BinPipWrappers/WindowsLike/GenFds.bat                                     |
> > 3 ++
> >  BaseTools/BinPipWrappers/WindowsLike/GenPatchPcdTable.bat
> > |  3 ++
> >  BaseTools/BinPipWrappers/WindowsLike/GenerateCapsule.bat
> > |  1 +
> >  BaseTools/BinPipWrappers/WindowsLike/PatchPcdValue.bat
> > |  3 ++
> >  BaseTools/BinPipWrappers/WindowsLike/Pkcs7Sign.bat                                  |
> > 3 ++
> >  BaseTools/BinPipWrappers/WindowsLike/Rsa2048Sha256GenerateKeys.bat
> > |  1 +
> >  BaseTools/BinPipWrappers/WindowsLike/Rsa2048Sha256Sign.bat
> > |  3 ++
> >  BaseTools/BinPipWrappers/WindowsLike/Split.bat                                      |  3
> > ++
> >  BaseTools/BinPipWrappers/WindowsLike/TargetTool.bat                                 |
> > 3 ++
> >  BaseTools/BinPipWrappers/WindowsLike/Trim.bat                                       |  3
> > ++
> >  BaseTools/BinPipWrappers/WindowsLike/UPT.bat                                        |  3
> > ++
> >  BaseTools/BinPipWrappers/WindowsLike/build.bat                                      |  3
> > ++
> >  BaseTools/{BinWrappers =>
> > BinPipWrappers}/WindowsLike/win_build_tools_path_env.yaml |  3 +-
> >  BaseTools/BinWrappers/PosixLike/posix_path_env.yaml                                 |
> > 1 +
> >  BaseTools/BinWrappers/WindowsLike/win_build_tools_path_env.yaml
> > |  1 +
> >  BaseTools/BuildEnv                                                                  | 14 +++++-
> >  BaseTools/Scripts/PatchCheck.py                                                     |  1 +
> >  BaseTools/Source/Python/README.md                                                   | 29
> > +++++++++++
> >  BaseTools/toolsetup.bat                                                             | 19 ++++++++
> >  pip-requirements.txt                                                                |  1 +
> >  55 files changed, 745 insertions(+), 25 deletions(-)
> > 
> > diff --git a/.pytool/CISettings.py b/.pytool/CISettings.py index
> > e6c5ac700ab2..5f71eca1992e 100644
> > --- a/.pytool/CISettings.py
> > +++ b/.pytool/CISettings.py
> > @@ -22,16 +22,24 @@ class Settings(CiBuildSettingsManager,
> > UpdateSettingsManager, SetupSettingsManag
> >          self.ActualTargets = []         self.ActualArchitectures = []
> > self.ActualToolChainTag = ""+        self.UseBuiltInBaseTools = None+
> > self.ActualScopes = None      #
> > ################################################################
> > ####################### #     #                             Extra CmdLine
> > configuration                                 #     #
> > ################################################################
> > ####################### #      def AddCommandLineOptions(self,
> > parserObj):-        pass+        group =
> > parserObj.add_mutually_exclusive_group()+        group.add_argument("-
> > force_piptools", "--fpt", dest="force_piptools", action="store_true",
> > default=False, help="Force the system to use pip tools")+
> > group.add_argument("-no_piptools", "--npt", dest="no_piptools",
> > action="store_true", default=False, help="Force the system to not use pip
> > tools")      def RetrieveCommandLineOptions(self, args):-        pass+
> > super().RetrieveCommandLineOptions(args)+        if args.force_piptools:+
> > self.UseBuiltInBaseTools = True+        if args.no_piptools:+
> > self.UseBuiltInBaseTools = False      #
> > ################################################################
> > ####################### #     #                        Default Support for this Ci
> > Build                                #@@ -128,19 +136,38 @@ class
> > Settings(CiBuildSettingsManager, UpdateSettingsManager,
> > SetupSettingsManag
> >       def GetActiveScopes(self):         ''' return tuple containing scopes that
> > should be active for this process '''-        scopes = ("cibuild", "edk2-build",
> > "host-based-test")+        if self.ActualScopes is None:+            scopes =
> > ("cibuild", "edk2-build", "host-based-test") -        self.ActualToolChainTag =
> > shell_environment.GetBuildVars().GetValue("TOOL_CHAIN_TAG", "")+
> > self.ActualToolChainTag =
> > shell_environment.GetBuildVars().GetValue("TOOL_CHAIN_TAG", "") -        if
> > GetHostInfo().os.upper() == "LINUX" and
> > self.ActualToolChainTag.upper().startswith("GCC"):-            if "AARCH64" in
> > self.ActualArchitectures:-                scopes += ("gcc_aarch64_linux",)-            if
> > "ARM" in self.ActualArchitectures:-                scopes += ("gcc_arm_linux",)-
> > if "RISCV64" in self.ActualArchitectures:-                scopes +=
> > ("gcc_riscv64_unknown",)+            is_linux = GetHostInfo().os.upper() ==
> > "LINUX" -        return scopes+            if self.UseBuiltInBaseTools is None:+
> > is_linux = GetHostInfo().os.upper() == "LINUX"+                # try and import the
> > pip module for basetools+                try:+                    import edk2basetools+
> > self.UseBuiltInBaseTools = True+                except ImportError:+
> > self.UseBuiltInBaseTools = False+                    pass++            if
> > self.UseBuiltInBaseTools == True:+                scopes += ('pipbuild-unix',) if
> > is_linux else ('pipbuild-win',)+                logging.warning("Using Pip Tools
> > based BaseTools")+            else:+                logging.warning("Falling back to
> > using in-tree BaseTools")++            if is_linux and
> > self.ActualToolChainTag.upper().startswith("GCC"):+                if "AARCH64" in
> > self.ActualArchitectures:+                    scopes += ("gcc_aarch64_linux",)+
> > if "ARM" in self.ActualArchitectures:+                    scopes +=
> > ("gcc_arm_linux",)+                if "RISCV64" in self.ActualArchitectures:+
> > scopes += ("gcc_riscv64_unknown",)+            self.ActualScopes = scopes+
> > return self.ActualScopes      def GetRequiredSubmodules(self):         ''' return
> > iterable containing RequiredSubmodule objects.diff --git
> > a/BaseTools/BinPipWrappers/PosixLike/AmlToC
> > b/BaseTools/BinPipWrappers/PosixLike/AmlToC
> > new file mode 100755
> > index 000000000000..1dd28e966288
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/AmlToC
> > @@ -0,0 +1,14 @@
> > +#!/usr/bin/env bash
> > +#python `dirname $0`/RunToolFromSource.py `basename $0` $*
> > +
> > +# If a ${PYTHON_COMMAND} command is available, use it in preference to
> > +python if command -v ${PYTHON_COMMAND} >/dev/null 2>&1; then
> > +    python_exe=${PYTHON_COMMAND}
> > +fi
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here dir=$(dirname "$full_cmd") exe=$(basename
> > +"$full_cmd")
> > +
> > +export
> > PYTHONPATH="$dir/../../Source/Python${PYTHONPATH:+:"$PYTHONPATH"}"
> > +exec "${python_exe:-python}" "$dir/../../Source/Python/$exe/$exe.py"
> > "$@"
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/BPDG
> > b/BaseTools/BinPipWrappers/PosixLike/BPDG
> > new file mode 100755
> > index 000000000000..a08cbd8de5c5
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/BPDG
> > @@ -0,0 +1,12 @@
> > +#!/usr/bin/env bash
> > +#python `dirname $0`/RunToolFromSource.py `basename $0` $*
> > +
> > +# If a ${PYTHON_COMMAND} command is available, use it in preference to
> > +python if command -v ${PYTHON_COMMAND} >/dev/null 2>&1; then
> > +    python_exe=${PYTHON_COMMAND}
> > +fi
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here cmd=${full_cmd##*/}
> > +
> > +exec "${python_exe:-python}" -m edk2basetools.$cmd.EccMain "$@"
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/BrotliCompress
> > b/BaseTools/BinPipWrappers/PosixLike/BrotliCompress
> > new file mode 100755
> > index 000000000000..663860bb3e57
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/BrotliCompress
> > @@ -0,0 +1,34 @@
> > +#!/usr/bin/env bash
> > +#
> > +# This script will exec Brotli tool with -e/-d options.
> > +#
> > +# Copyright (c) 2017 - 2018, Intel Corporation. All rights
> > +reserved.<BR> # SPDX-License-Identifier: BSD-2-Clause-Patent # QLT="-q
> > +9 -w 22"
> > +ARGS=
> > +
> > +while test $# -gt 0
> > +do
> > +  case $1 in
> > +    -e)
> > +      ;;
> > +    -d)
> > +      ARGS+="$1 "
> > +      ;;
> > +    -o|-g)
> > +      ARGS+="$1 $2 "
> > +      shift
> > +      ;;
> > +    -q)
> > +      QLT="$1 $2 "
> > +      shift
> > +      ;;
> > +    *)
> > +      ARGS+="$1 "
> > +      ;;
> > +  esac
> > +  shift
> > +done
> > +
> > +exec Brotli $QLT $ARGS
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/DevicePath
> > b/BaseTools/BinPipWrappers/PosixLike/DevicePath
> > new file mode 100755
> > index 000000000000..0945d86d9209
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/DevicePath
> > @@ -0,0 +1,29 @@
> > +#!/usr/bin/env bash
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here dir=$(dirname "$full_cmd") cmd=${full_cmd##*/}
> > +
> > +if [ -n "$WORKSPACE" ] && [ -e "$WORKSPACE/Conf/BaseToolsCBinaries" ]
> > +then
> > +  exec "$WORKSPACE/Conf/BaseToolsCBinaries/$cmd"
> > +elif [ -n "$WORKSPACE" ] && [ -e "$EDK_TOOLS_PATH/Source/C" ] then
> > +  if [ ! -e "$EDK_TOOLS_PATH/Source/C/bin/$cmd" ]
> > +  then
> > +    echo "BaseTools C Tool binary was not found ($cmd)"
> > +    echo "You may need to run:"
> > +    echo "  make -C $EDK_TOOLS_PATH/Source/C"
> > +  else
> > +    exec "$EDK_TOOLS_PATH/Source/C/bin/$cmd" "$@"
> > +  fi
> > +elif [ -e "$dir/../../Source/C/bin/$cmd" ] then
> > +  exec "$dir/../../Source/C/bin/$cmd" "$@"
> > +else
> > +  echo "Unable to find the real '$cmd' to run"
> > +  echo "This message was printed by"
> > +  echo "  $0"
> > +  exit 127
> > +fi
> > +
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/Ecc
> > b/BaseTools/BinPipWrappers/PosixLike/Ecc
> > new file mode 100755
> > index 000000000000..598728915095
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/Ecc
> > @@ -0,0 +1,13 @@
> > +#!/usr/bin/env bash
> > +#python `dirname $0`/RunToolFromSource.py `basename $0` $*
> > +
> > +# If a ${PYTHON_COMMAND} command is available, use it in preference to
> > +python if command -v ${PYTHON_COMMAND} >/dev/null 2>&1; then
> > +    python_exe=${PYTHON_COMMAND}
> > +fi
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here cmd=${full_cmd##*/}
> > +
> > +export
> > PYTHONPATH="$dir/../../Source/Python${PYTHONPATH:+:"$PYTHONPATH"}"
> > +exec "${python_exe:-python}" -m $cmd.EccMain "$@"
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/EfiRom
> > b/BaseTools/BinPipWrappers/PosixLike/EfiRom
> > new file mode 100755
> > index 000000000000..0945d86d9209
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/EfiRom
> > @@ -0,0 +1,29 @@
> > +#!/usr/bin/env bash
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here dir=$(dirname "$full_cmd") cmd=${full_cmd##*/}
> > +
> > +if [ -n "$WORKSPACE" ] && [ -e "$WORKSPACE/Conf/BaseToolsCBinaries" ]
> > +then
> > +  exec "$WORKSPACE/Conf/BaseToolsCBinaries/$cmd"
> > +elif [ -n "$WORKSPACE" ] && [ -e "$EDK_TOOLS_PATH/Source/C" ] then
> > +  if [ ! -e "$EDK_TOOLS_PATH/Source/C/bin/$cmd" ]
> > +  then
> > +    echo "BaseTools C Tool binary was not found ($cmd)"
> > +    echo "You may need to run:"
> > +    echo "  make -C $EDK_TOOLS_PATH/Source/C"
> > +  else
> > +    exec "$EDK_TOOLS_PATH/Source/C/bin/$cmd" "$@"
> > +  fi
> > +elif [ -e "$dir/../../Source/C/bin/$cmd" ] then
> > +  exec "$dir/../../Source/C/bin/$cmd" "$@"
> > +else
> > +  echo "Unable to find the real '$cmd' to run"
> > +  echo "This message was printed by"
> > +  echo "  $0"
> > +  exit 127
> > +fi
> > +
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/GenCrc32
> > b/BaseTools/BinPipWrappers/PosixLike/GenCrc32
> > new file mode 100755
> > index 000000000000..0945d86d9209
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/GenCrc32
> > @@ -0,0 +1,29 @@
> > +#!/usr/bin/env bash
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here dir=$(dirname "$full_cmd") cmd=${full_cmd##*/}
> > +
> > +if [ -n "$WORKSPACE" ] && [ -e "$WORKSPACE/Conf/BaseToolsCBinaries" ]
> > +then
> > +  exec "$WORKSPACE/Conf/BaseToolsCBinaries/$cmd"
> > +elif [ -n "$WORKSPACE" ] && [ -e "$EDK_TOOLS_PATH/Source/C" ] then
> > +  if [ ! -e "$EDK_TOOLS_PATH/Source/C/bin/$cmd" ]
> > +  then
> > +    echo "BaseTools C Tool binary was not found ($cmd)"
> > +    echo "You may need to run:"
> > +    echo "  make -C $EDK_TOOLS_PATH/Source/C"
> > +  else
> > +    exec "$EDK_TOOLS_PATH/Source/C/bin/$cmd" "$@"
> > +  fi
> > +elif [ -e "$dir/../../Source/C/bin/$cmd" ] then
> > +  exec "$dir/../../Source/C/bin/$cmd" "$@"
> > +else
> > +  echo "Unable to find the real '$cmd' to run"
> > +  echo "This message was printed by"
> > +  echo "  $0"
> > +  exit 127
> > +fi
> > +
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/GenDepex
> > b/BaseTools/BinPipWrappers/PosixLike/GenDepex
> > new file mode 100755
> > index 000000000000..df75e43f9ec1
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/GenDepex
> > @@ -0,0 +1,12 @@
> > +#!/usr/bin/env bash
> > +#python `dirname $0`/RunToolFromSource.py `basename $0` $*
> > +
> > +# If a ${PYTHON_COMMAND} command is available, use it in preference to
> > +python if command -v ${PYTHON_COMMAND} >/dev/null 2>&1; then
> > +    python_exe=${PYTHON_COMMAND}
> > +fi
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here cmd=${full_cmd##*/}
> > +
> > +exec "${python_exe:-python}" -m edk2basetools.AutoGen.$cmd "$@"
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/GenFds
> > b/BaseTools/BinPipWrappers/PosixLike/GenFds
> > new file mode 100755
> > index 000000000000..b27e84eaa210
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/GenFds
> > @@ -0,0 +1,12 @@
> > +#!/usr/bin/env bash
> > +#python `dirname $0`/RunToolFromSource.py `basename $0` $*
> > +
> > +# If a ${PYTHON_COMMAND} command is available, use it in preference to
> > +python if command -v ${PYTHON_COMMAND} >/dev/null 2>&1; then
> > +    python_exe=${PYTHON_COMMAND}
> > +fi
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here cmd=${full_cmd##*/}
> > +
> > +exec "${python_exe:-python}" -m edk2basetools.$cmd "$@"
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/GenFfs
> > b/BaseTools/BinPipWrappers/PosixLike/GenFfs
> > new file mode 100755
> > index 000000000000..0945d86d9209
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/GenFfs
> > @@ -0,0 +1,29 @@
> > +#!/usr/bin/env bash
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here dir=$(dirname "$full_cmd") cmd=${full_cmd##*/}
> > +
> > +if [ -n "$WORKSPACE" ] && [ -e "$WORKSPACE/Conf/BaseToolsCBinaries" ]
> > +then
> > +  exec "$WORKSPACE/Conf/BaseToolsCBinaries/$cmd"
> > +elif [ -n "$WORKSPACE" ] && [ -e "$EDK_TOOLS_PATH/Source/C" ] then
> > +  if [ ! -e "$EDK_TOOLS_PATH/Source/C/bin/$cmd" ]
> > +  then
> > +    echo "BaseTools C Tool binary was not found ($cmd)"
> > +    echo "You may need to run:"
> > +    echo "  make -C $EDK_TOOLS_PATH/Source/C"
> > +  else
> > +    exec "$EDK_TOOLS_PATH/Source/C/bin/$cmd" "$@"
> > +  fi
> > +elif [ -e "$dir/../../Source/C/bin/$cmd" ] then
> > +  exec "$dir/../../Source/C/bin/$cmd" "$@"
> > +else
> > +  echo "Unable to find the real '$cmd' to run"
> > +  echo "This message was printed by"
> > +  echo "  $0"
> > +  exit 127
> > +fi
> > +
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/GenFv
> > b/BaseTools/BinPipWrappers/PosixLike/GenFv
> > new file mode 100755
> > index 000000000000..0945d86d9209
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/GenFv
> > @@ -0,0 +1,29 @@
> > +#!/usr/bin/env bash
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here dir=$(dirname "$full_cmd") cmd=${full_cmd##*/}
> > +
> > +if [ -n "$WORKSPACE" ] && [ -e "$WORKSPACE/Conf/BaseToolsCBinaries" ]
> > +then
> > +  exec "$WORKSPACE/Conf/BaseToolsCBinaries/$cmd"
> > +elif [ -n "$WORKSPACE" ] && [ -e "$EDK_TOOLS_PATH/Source/C" ] then
> > +  if [ ! -e "$EDK_TOOLS_PATH/Source/C/bin/$cmd" ]
> > +  then
> > +    echo "BaseTools C Tool binary was not found ($cmd)"
> > +    echo "You may need to run:"
> > +    echo "  make -C $EDK_TOOLS_PATH/Source/C"
> > +  else
> > +    exec "$EDK_TOOLS_PATH/Source/C/bin/$cmd" "$@"
> > +  fi
> > +elif [ -e "$dir/../../Source/C/bin/$cmd" ] then
> > +  exec "$dir/../../Source/C/bin/$cmd" "$@"
> > +else
> > +  echo "Unable to find the real '$cmd' to run"
> > +  echo "This message was printed by"
> > +  echo "  $0"
> > +  exit 127
> > +fi
> > +
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/GenFw
> > b/BaseTools/BinPipWrappers/PosixLike/GenFw
> > new file mode 100755
> > index 000000000000..0945d86d9209
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/GenFw
> > @@ -0,0 +1,29 @@
> > +#!/usr/bin/env bash
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here dir=$(dirname "$full_cmd") cmd=${full_cmd##*/}
> > +
> > +if [ -n "$WORKSPACE" ] && [ -e "$WORKSPACE/Conf/BaseToolsCBinaries" ]
> > +then
> > +  exec "$WORKSPACE/Conf/BaseToolsCBinaries/$cmd"
> > +elif [ -n "$WORKSPACE" ] && [ -e "$EDK_TOOLS_PATH/Source/C" ] then
> > +  if [ ! -e "$EDK_TOOLS_PATH/Source/C/bin/$cmd" ]
> > +  then
> > +    echo "BaseTools C Tool binary was not found ($cmd)"
> > +    echo "You may need to run:"
> > +    echo "  make -C $EDK_TOOLS_PATH/Source/C"
> > +  else
> > +    exec "$EDK_TOOLS_PATH/Source/C/bin/$cmd" "$@"
> > +  fi
> > +elif [ -e "$dir/../../Source/C/bin/$cmd" ] then
> > +  exec "$dir/../../Source/C/bin/$cmd" "$@"
> > +else
> > +  echo "Unable to find the real '$cmd' to run"
> > +  echo "This message was printed by"
> > +  echo "  $0"
> > +  exit 127
> > +fi
> > +
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/GenPatchPcdTable
> > b/BaseTools/BinPipWrappers/PosixLike/GenPatchPcdTable
> > new file mode 100755
> > index 000000000000..9d143c7fc6c2
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/GenPatchPcdTable
> > @@ -0,0 +1,12 @@
> > +#!/usr/bin/env bash
> > +#python `dirname $0`/RunToolFromSource.py `basename $0` $*
> > +
> > +# If a ${PYTHON_COMMAND} command is available, use it in preference to
> > +python if command -v ${PYTHON_COMMAND} >/dev/null 2>&1; then
> > +    python_exe=${PYTHON_COMMAND}
> > +fi
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here cmd=${full_cmd##*/}
> > +
> > +exec "${python_exe:-python}" -m edk2basetools.$cmd.$cmd "$@"
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/GenSec
> > b/BaseTools/BinPipWrappers/PosixLike/GenSec
> > new file mode 100755
> > index 000000000000..0945d86d9209
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/GenSec
> > @@ -0,0 +1,29 @@
> > +#!/usr/bin/env bash
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here dir=$(dirname "$full_cmd") cmd=${full_cmd##*/}
> > +
> > +if [ -n "$WORKSPACE" ] && [ -e "$WORKSPACE/Conf/BaseToolsCBinaries" ]
> > +then
> > +  exec "$WORKSPACE/Conf/BaseToolsCBinaries/$cmd"
> > +elif [ -n "$WORKSPACE" ] && [ -e "$EDK_TOOLS_PATH/Source/C" ] then
> > +  if [ ! -e "$EDK_TOOLS_PATH/Source/C/bin/$cmd" ]
> > +  then
> > +    echo "BaseTools C Tool binary was not found ($cmd)"
> > +    echo "You may need to run:"
> > +    echo "  make -C $EDK_TOOLS_PATH/Source/C"
> > +  else
> > +    exec "$EDK_TOOLS_PATH/Source/C/bin/$cmd" "$@"
> > +  fi
> > +elif [ -e "$dir/../../Source/C/bin/$cmd" ] then
> > +  exec "$dir/../../Source/C/bin/$cmd" "$@"
> > +else
> > +  echo "Unable to find the real '$cmd' to run"
> > +  echo "This message was printed by"
> > +  echo "  $0"
> > +  exit 127
> > +fi
> > +
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/GenerateCapsule
> > b/BaseTools/BinPipWrappers/PosixLike/GenerateCapsule
> > new file mode 100755
> > index 000000000000..366a268802c4
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/GenerateCapsule
> > @@ -0,0 +1,12 @@
> > +#!/usr/bin/env bash
> > +#python `dirname $0`/RunToolFromSource.py `basename $0` $*
> > +
> > +# If a ${PYTHON_COMMAND} command is available, use it in preference to
> > +python if command -v ${PYTHON_COMMAND} >/dev/null 2>&1; then
> > +    python_exe=${PYTHON_COMMAND}
> > +fi
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here cmd=${full_cmd##*/}
> > +
> > +exec "${python_exe:-python}" -m edk2basetools.Capsule.$cmd "$@"
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/LzmaCompress
> > b/BaseTools/BinPipWrappers/PosixLike/LzmaCompress
> > new file mode 100755
> > index 000000000000..0945d86d9209
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/LzmaCompress
> > @@ -0,0 +1,29 @@
> > +#!/usr/bin/env bash
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here dir=$(dirname "$full_cmd") cmd=${full_cmd##*/}
> > +
> > +if [ -n "$WORKSPACE" ] && [ -e "$WORKSPACE/Conf/BaseToolsCBinaries" ]
> > +then
> > +  exec "$WORKSPACE/Conf/BaseToolsCBinaries/$cmd"
> > +elif [ -n "$WORKSPACE" ] && [ -e "$EDK_TOOLS_PATH/Source/C" ] then
> > +  if [ ! -e "$EDK_TOOLS_PATH/Source/C/bin/$cmd" ]
> > +  then
> > +    echo "BaseTools C Tool binary was not found ($cmd)"
> > +    echo "You may need to run:"
> > +    echo "  make -C $EDK_TOOLS_PATH/Source/C"
> > +  else
> > +    exec "$EDK_TOOLS_PATH/Source/C/bin/$cmd" "$@"
> > +  fi
> > +elif [ -e "$dir/../../Source/C/bin/$cmd" ] then
> > +  exec "$dir/../../Source/C/bin/$cmd" "$@"
> > +else
> > +  echo "Unable to find the real '$cmd' to run"
> > +  echo "This message was printed by"
> > +  echo "  $0"
> > +  exit 127
> > +fi
> > +
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/LzmaF86Compress
> > b/BaseTools/BinPipWrappers/PosixLike/LzmaF86Compress
> > new file mode 100755
> > index 000000000000..b55352ae4c79
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/LzmaF86Compress
> > @@ -0,0 +1,19 @@
> > +#!/usr/bin/env bash
> > +#
> > +# This script will exec LzmaCompress tool with --f86 option that enables
> > converter for x86 code.
> > +#
> > +# (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR> #
> > +Copyright (c) 2012, Intel Corporation. All rights reserved.<BR> #
> > +SPDX-License-Identifier: BSD-2-Clause-Patent #
> > +
> > +for arg; do
> > +  case $arg in
> > +    -e|-d)
> > +      set -- "$@" --f86
> > +      break
> > +    ;;
> > +  esac
> > +done
> > +
> > +exec LzmaCompress "$@"
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/PatchPcdValue
> > b/BaseTools/BinPipWrappers/PosixLike/PatchPcdValue
> > new file mode 100755
> > index 000000000000..9d143c7fc6c2
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/PatchPcdValue
> > @@ -0,0 +1,12 @@
> > +#!/usr/bin/env bash
> > +#python `dirname $0`/RunToolFromSource.py `basename $0` $*
> > +
> > +# If a ${PYTHON_COMMAND} command is available, use it in preference to
> > +python if command -v ${PYTHON_COMMAND} >/dev/null 2>&1; then
> > +    python_exe=${PYTHON_COMMAND}
> > +fi
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here cmd=${full_cmd##*/}
> > +
> > +exec "${python_exe:-python}" -m edk2basetools.$cmd.$cmd "$@"
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/Pkcs7Sign
> > b/BaseTools/BinPipWrappers/PosixLike/Pkcs7Sign
> > new file mode 100755
> > index 000000000000..9d143c7fc6c2
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/Pkcs7Sign
> > @@ -0,0 +1,12 @@
> > +#!/usr/bin/env bash
> > +#python `dirname $0`/RunToolFromSource.py `basename $0` $*
> > +
> > +# If a ${PYTHON_COMMAND} command is available, use it in preference to
> > +python if command -v ${PYTHON_COMMAND} >/dev/null 2>&1; then
> > +    python_exe=${PYTHON_COMMAND}
> > +fi
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here cmd=${full_cmd##*/}
> > +
> > +exec "${python_exe:-python}" -m edk2basetools.$cmd.$cmd "$@"
> > diff --git
> > a/BaseTools/BinPipWrappers/PosixLike/Rsa2048Sha256GenerateKeys
> > b/BaseTools/BinPipWrappers/PosixLike/Rsa2048Sha256GenerateKeys
> > new file mode 100755
> > index 000000000000..aca2f3a6fe2a
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/Rsa2048Sha256GenerateKeys
> > @@ -0,0 +1,12 @@
> > +#!/usr/bin/env bash
> > +#python `dirname $0`/RunToolFromSource.py `basename $0` $*
> > +
> > +# If a ${PYTHON_COMMAND} command is available, use it in preference to
> > +python if command -v ${PYTHON_COMMAND} >/dev/null 2>&1; then
> > +    python_exe=${PYTHON_COMMAND}
> > +fi
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here cmd=${full_cmd##*/}
> > +
> > +exec "${python_exe:-python}" -m edk2basetools.Rsa2048Sha256Sign.$cmd
> > "$@"
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/Rsa2048Sha256Sign
> > b/BaseTools/BinPipWrappers/PosixLike/Rsa2048Sha256Sign
> > new file mode 100755
> > index 000000000000..068364070518
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/Rsa2048Sha256Sign
> > @@ -0,0 +1,12 @@
> > +#!/usr/bin/env bash
> > +#python `dirname $0`/RunToolFromSource.py `basename $0` $*
> > +
> > +# If a ${PYTHON_COMMAND} command is available, use it in preference to
> > +python if command -v ${PYTHON_COMMAND} >/dev/null 2>&1; then
> > +    python_exe=${PYTHON_COMMAND}
> > +fi
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here cmd=${full_cmd##*/}
> > +
> > +exec "${python_exe:-python}" -m edk2basetools.$cmd.$cmd "$@"
> > \ No newline at end of file
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/Split
> > b/BaseTools/BinPipWrappers/PosixLike/Split
> > new file mode 100755
> > index 000000000000..0945d86d9209
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/Split
> > @@ -0,0 +1,29 @@
> > +#!/usr/bin/env bash
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here dir=$(dirname "$full_cmd") cmd=${full_cmd##*/}
> > +
> > +if [ -n "$WORKSPACE" ] && [ -e "$WORKSPACE/Conf/BaseToolsCBinaries" ]
> > +then
> > +  exec "$WORKSPACE/Conf/BaseToolsCBinaries/$cmd"
> > +elif [ -n "$WORKSPACE" ] && [ -e "$EDK_TOOLS_PATH/Source/C" ] then
> > +  if [ ! -e "$EDK_TOOLS_PATH/Source/C/bin/$cmd" ]
> > +  then
> > +    echo "BaseTools C Tool binary was not found ($cmd)"
> > +    echo "You may need to run:"
> > +    echo "  make -C $EDK_TOOLS_PATH/Source/C"
> > +  else
> > +    exec "$EDK_TOOLS_PATH/Source/C/bin/$cmd" "$@"
> > +  fi
> > +elif [ -e "$dir/../../Source/C/bin/$cmd" ] then
> > +  exec "$dir/../../Source/C/bin/$cmd" "$@"
> > +else
> > +  echo "Unable to find the real '$cmd' to run"
> > +  echo "This message was printed by"
> > +  echo "  $0"
> > +  exit 127
> > +fi
> > +
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/TargetTool
> > b/BaseTools/BinPipWrappers/PosixLike/TargetTool
> > new file mode 100755
> > index 000000000000..9d143c7fc6c2
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/TargetTool
> > @@ -0,0 +1,12 @@
> > +#!/usr/bin/env bash
> > +#python `dirname $0`/RunToolFromSource.py `basename $0` $*
> > +
> > +# If a ${PYTHON_COMMAND} command is available, use it in preference to
> > +python if command -v ${PYTHON_COMMAND} >/dev/null 2>&1; then
> > +    python_exe=${PYTHON_COMMAND}
> > +fi
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here cmd=${full_cmd##*/}
> > +
> > +exec "${python_exe:-python}" -m edk2basetools.$cmd.$cmd "$@"
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/TianoCompress
> > b/BaseTools/BinPipWrappers/PosixLike/TianoCompress
> > new file mode 100755
> > index 000000000000..0945d86d9209
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/TianoCompress
> > @@ -0,0 +1,29 @@
> > +#!/usr/bin/env bash
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here dir=$(dirname "$full_cmd") cmd=${full_cmd##*/}
> > +
> > +if [ -n "$WORKSPACE" ] && [ -e "$WORKSPACE/Conf/BaseToolsCBinaries" ]
> > +then
> > +  exec "$WORKSPACE/Conf/BaseToolsCBinaries/$cmd"
> > +elif [ -n "$WORKSPACE" ] && [ -e "$EDK_TOOLS_PATH/Source/C" ] then
> > +  if [ ! -e "$EDK_TOOLS_PATH/Source/C/bin/$cmd" ]
> > +  then
> > +    echo "BaseTools C Tool binary was not found ($cmd)"
> > +    echo "You may need to run:"
> > +    echo "  make -C $EDK_TOOLS_PATH/Source/C"
> > +  else
> > +    exec "$EDK_TOOLS_PATH/Source/C/bin/$cmd" "$@"
> > +  fi
> > +elif [ -e "$dir/../../Source/C/bin/$cmd" ] then
> > +  exec "$dir/../../Source/C/bin/$cmd" "$@"
> > +else
> > +  echo "Unable to find the real '$cmd' to run"
> > +  echo "This message was printed by"
> > +  echo "  $0"
> > +  exit 127
> > +fi
> > +
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/Trim
> > b/BaseTools/BinPipWrappers/PosixLike/Trim
> > new file mode 100755
> > index 000000000000..0bd14ee03872
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/Trim
> > @@ -0,0 +1,13 @@
> > +#!/usr/bin/env bash
> > +#python `dirname $0`/RunToolFromSource.py `basename $0` $*
> > +
> > +# If a ${PYTHON_COMMAND} command is available, use it in preference to
> > +python if command -v ${PYTHON_COMMAND} >/dev/null 2>&1; then
> > +    python_exe=${PYTHON_COMMAND}
> > +fi
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here cmd=$(basename "$full_cmd")
> > +
> > +exec "${python_exe:-python}" -m edk2basetools.$cmd.$cmd "$@"
> > +
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/UPT
> > b/BaseTools/BinPipWrappers/PosixLike/UPT
> > new file mode 100755
> > index 000000000000..068364070518
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/UPT
> > @@ -0,0 +1,12 @@
> > +#!/usr/bin/env bash
> > +#python `dirname $0`/RunToolFromSource.py `basename $0` $*
> > +
> > +# If a ${PYTHON_COMMAND} command is available, use it in preference to
> > +python if command -v ${PYTHON_COMMAND} >/dev/null 2>&1; then
> > +    python_exe=${PYTHON_COMMAND}
> > +fi
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here cmd=${full_cmd##*/}
> > +
> > +exec "${python_exe:-python}" -m edk2basetools.$cmd.$cmd "$@"
> > \ No newline at end of file
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/VfrCompile
> > b/BaseTools/BinPipWrappers/PosixLike/VfrCompile
> > new file mode 100755
> > index 000000000000..0945d86d9209
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/VfrCompile
> > @@ -0,0 +1,29 @@
> > +#!/usr/bin/env bash
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here dir=$(dirname "$full_cmd") cmd=${full_cmd##*/}
> > +
> > +if [ -n "$WORKSPACE" ] && [ -e "$WORKSPACE/Conf/BaseToolsCBinaries" ]
> > +then
> > +  exec "$WORKSPACE/Conf/BaseToolsCBinaries/$cmd"
> > +elif [ -n "$WORKSPACE" ] && [ -e "$EDK_TOOLS_PATH/Source/C" ] then
> > +  if [ ! -e "$EDK_TOOLS_PATH/Source/C/bin/$cmd" ]
> > +  then
> > +    echo "BaseTools C Tool binary was not found ($cmd)"
> > +    echo "You may need to run:"
> > +    echo "  make -C $EDK_TOOLS_PATH/Source/C"
> > +  else
> > +    exec "$EDK_TOOLS_PATH/Source/C/bin/$cmd" "$@"
> > +  fi
> > +elif [ -e "$dir/../../Source/C/bin/$cmd" ] then
> > +  exec "$dir/../../Source/C/bin/$cmd" "$@"
> > +else
> > +  echo "Unable to find the real '$cmd' to run"
> > +  echo "This message was printed by"
> > +  echo "  $0"
> > +  exit 127
> > +fi
> > +
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/VolInfo
> > b/BaseTools/BinPipWrappers/PosixLike/VolInfo
> > new file mode 100755
> > index 000000000000..0945d86d9209
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/VolInfo
> > @@ -0,0 +1,29 @@
> > +#!/usr/bin/env bash
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here dir=$(dirname "$full_cmd") cmd=${full_cmd##*/}
> > +
> > +if [ -n "$WORKSPACE" ] && [ -e "$WORKSPACE/Conf/BaseToolsCBinaries" ]
> > +then
> > +  exec "$WORKSPACE/Conf/BaseToolsCBinaries/$cmd"
> > +elif [ -n "$WORKSPACE" ] && [ -e "$EDK_TOOLS_PATH/Source/C" ] then
> > +  if [ ! -e "$EDK_TOOLS_PATH/Source/C/bin/$cmd" ]
> > +  then
> > +    echo "BaseTools C Tool binary was not found ($cmd)"
> > +    echo "You may need to run:"
> > +    echo "  make -C $EDK_TOOLS_PATH/Source/C"
> > +  else
> > +    exec "$EDK_TOOLS_PATH/Source/C/bin/$cmd" "$@"
> > +  fi
> > +elif [ -e "$dir/../../Source/C/bin/$cmd" ] then
> > +  exec "$dir/../../Source/C/bin/$cmd" "$@"
> > +else
> > +  echo "Unable to find the real '$cmd' to run"
> > +  echo "This message was printed by"
> > +  echo "  $0"
> > +  exit 127
> > +fi
> > +
> > diff --git a/BaseTools/BinPipWrappers/PosixLike/build
> > b/BaseTools/BinPipWrappers/PosixLike/build
> > new file mode 100755
> > index 000000000000..9d143c7fc6c2
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/PosixLike/build
> > @@ -0,0 +1,12 @@
> > +#!/usr/bin/env bash
> > +#python `dirname $0`/RunToolFromSource.py `basename $0` $*
> > +
> > +# If a ${PYTHON_COMMAND} command is available, use it in preference to
> > +python if command -v ${PYTHON_COMMAND} >/dev/null 2>&1; then
> > +    python_exe=${PYTHON_COMMAND}
> > +fi
> > +
> > +full_cmd=${BASH_SOURCE:-$0} # see
> > +http://mywiki.wooledge.org/BashFAQ/028 for a discussion of why $0 is
> > +not a good choice here cmd=${full_cmd##*/}
> > +
> > +exec "${python_exe:-python}" -m edk2basetools.$cmd.$cmd "$@"
> > diff --git a/BaseTools/BinWrappers/PosixLike/posix_path_env.yaml
> > b/BaseTools/BinPipWrappers/PosixLike/posix_path_env.yaml
> > similarity index 74%
> > copy from BaseTools/BinWrappers/PosixLike/posix_path_env.yaml
> > copy to BaseTools/BinPipWrappers/PosixLike/posix_path_env.yaml
> > index 8b32e010bb1d..830670305c0c 100644
> > --- a/BaseTools/BinWrappers/PosixLike/posix_path_env.yaml
> > +++ b/BaseTools/BinPipWrappers/PosixLike/posix_path_env.yaml
> > @@ -1,10 +1,11 @@
> > -## @file-# Set this folder on the path for all linux builds-#-# Copyright (c)
> > Microsoft Corporation.-# SPDX-License-Identifier: BSD-2-Clause-Patent-##-{-
> > "scope": "global-nix",-  "flags": ["set_path"]-}+## @file
> > +# Set this folder on the path for all linux builds # # Copyright (c)
> > +Microsoft Corporation.
> > +# SPDX-License-Identifier: BSD-2-Clause-Patent ## {
> > +  "scope": "pipbuild-unix",
> > +  "override_id": "binwrappers",
> > +  "flags": ["set_path"]
> > +}
> > diff --git a/BaseTools/BinPipWrappers/WindowsLike/AmlToC.bat
> > b/BaseTools/BinPipWrappers/WindowsLike/AmlToC.bat
> > new file mode 100644
> > index 000000000000..d347d6484467
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/WindowsLike/AmlToC.bat
> > @@ -0,0 +1,3 @@
> > +@setlocal+@set ToolName=%~n0%+@%PYTHON_COMMAND% -m
> > +edk2basetools.%ToolName%.%ToolName% %*diff --git
> > +a/BaseTools/BinPipWrappers/WindowsLike/BPDG.bat
> > +b/BaseTools/BinPipWrappers/WindowsLike/BPDG.bat
> > new file mode 100644
> > index 000000000000..d347d6484467
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/WindowsLike/BPDG.bat
> > @@ -0,0 +1,3 @@
> > +@setlocal+@set ToolName=%~n0%+@%PYTHON_COMMAND% -m
> > +edk2basetools.%ToolName%.%ToolName% %*diff --git
> > +a/BaseTools/BinPipWrappers/WindowsLike/Ecc.bat
> > +b/BaseTools/BinPipWrappers/WindowsLike/Ecc.bat
> > new file mode 100644
> > index 000000000000..16a0a799a43b
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/WindowsLike/Ecc.bat
> > @@ -0,0 +1,3 @@
> > +@setlocal+@set ToolName=%~n0%+@%PYTHON_COMMAND% -m
> > +edk2basetools.%ToolName%.EccMain %*diff --git
> > +a/BaseTools/BinPipWrappers/WindowsLike/GenDepex.bat
> > +b/BaseTools/BinPipWrappers/WindowsLike/GenDepex.bat
> > new file mode 100644
> > index 000000000000..481b5ac47d24
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/WindowsLike/GenDepex.bat
> > @@ -0,0 +1,3 @@
> > +@setlocal+@set ToolName=%~n0%+@%PYTHON_COMMAND% -m
> > +edk2basetools.AutoGen.%ToolName% %*diff --git
> > +a/BaseTools/BinPipWrappers/WindowsLike/GenFds.bat
> > +b/BaseTools/BinPipWrappers/WindowsLike/GenFds.bat
> > new file mode 100644
> > index 000000000000..d347d6484467
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/WindowsLike/GenFds.bat
> > @@ -0,0 +1,3 @@
> > +@setlocal+@set ToolName=%~n0%+@%PYTHON_COMMAND% -m
> > +edk2basetools.%ToolName%.%ToolName% %*diff --git
> > +a/BaseTools/BinPipWrappers/WindowsLike/GenPatchPcdTable.bat
> > +b/BaseTools/BinPipWrappers/WindowsLike/GenPatchPcdTable.bat
> > new file mode 100644
> > index 000000000000..d347d6484467
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/WindowsLike/GenPatchPcdTable.bat
> > @@ -0,0 +1,3 @@
> > +@setlocal+@set ToolName=%~n0%+@%PYTHON_COMMAND% -m
> > +edk2basetools.%ToolName%.%ToolName% %*diff --git
> > +a/BaseTools/BinPipWrappers/WindowsLike/GenerateCapsule.bat
> > +b/BaseTools/BinPipWrappers/WindowsLike/GenerateCapsule.bat
> > new file mode 100644
> > index 000000000000..34c43ac7fc99
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/WindowsLike/GenerateCapsule.bat
> > @@ -0,0 +1 @@
> > +@%PYTHON_COMMAND% -m
> > edk2basetools.Capsule.GenerateCapsule %*diff --git
> > +a/BaseTools/BinPipWrappers/WindowsLike/PatchPcdValue.bat
> > +b/BaseTools/BinPipWrappers/WindowsLike/PatchPcdValue.bat
> > new file mode 100644
> > index 000000000000..d347d6484467
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/WindowsLike/PatchPcdValue.bat
> > @@ -0,0 +1,3 @@
> > +@setlocal+@set ToolName=%~n0%+@%PYTHON_COMMAND% -m
> > +edk2basetools.%ToolName%.%ToolName% %*diff --git
> > +a/BaseTools/BinPipWrappers/WindowsLike/Pkcs7Sign.bat
> > +b/BaseTools/BinPipWrappers/WindowsLike/Pkcs7Sign.bat
> > new file mode 100644
> > index 000000000000..d347d6484467
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/WindowsLike/Pkcs7Sign.bat
> > @@ -0,0 +1,3 @@
> > +@setlocal+@set ToolName=%~n0%+@%PYTHON_COMMAND% -m
> > +edk2basetools.%ToolName%.%ToolName% %*diff --git
> > +a/BaseTools/BinPipWrappers/WindowsLike/Rsa2048Sha256GenerateKeys.b
> > at
> > +b/BaseTools/BinPipWrappers/WindowsLike/Rsa2048Sha256GenerateKeys.
> > bat
> > new file mode 100644
> > index 000000000000..cdc2e3ea373d
> > --- /dev/null
> > +++
> > b/BaseTools/BinPipWrappers/WindowsLike/Rsa2048Sha256GenerateKeys.b
> > at
> > @@ -0,0 +1 @@
> > +@%PYTHON_COMMAND% -m
> > +edk2basetools.Rsa2048Sha256Sign.Rsa2048Sha256GenerateKeys %*diff --
> > git
> > +a/BaseTools/BinPipWrappers/WindowsLike/Rsa2048Sha256Sign.bat
> > +b/BaseTools/BinPipWrappers/WindowsLike/Rsa2048Sha256Sign.bat
> > new file mode 100644
> > index 000000000000..d347d6484467
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/WindowsLike/Rsa2048Sha256Sign.bat
> > @@ -0,0 +1,3 @@
> > +@setlocal+@set ToolName=%~n0%+@%PYTHON_COMMAND% -m
> > +edk2basetools.%ToolName%.%ToolName% %*diff --git
> > +a/BaseTools/BinPipWrappers/WindowsLike/Split.bat
> > +b/BaseTools/BinPipWrappers/WindowsLike/Split.bat
> > new file mode 100644
> > index 000000000000..d347d6484467
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/WindowsLike/Split.bat
> > @@ -0,0 +1,3 @@
> > +@setlocal+@set ToolName=%~n0%+@%PYTHON_COMMAND% -m
> > +edk2basetools.%ToolName%.%ToolName% %*diff --git
> > +a/BaseTools/BinPipWrappers/WindowsLike/TargetTool.bat
> > +b/BaseTools/BinPipWrappers/WindowsLike/TargetTool.bat
> > new file mode 100644
> > index 000000000000..d347d6484467
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/WindowsLike/TargetTool.bat
> > @@ -0,0 +1,3 @@
> > +@setlocal+@set ToolName=%~n0%+@%PYTHON_COMMAND% -m
> > +edk2basetools.%ToolName%.%ToolName% %*diff --git
> > +a/BaseTools/BinPipWrappers/WindowsLike/Trim.bat
> > +b/BaseTools/BinPipWrappers/WindowsLike/Trim.bat
> > new file mode 100644
> > index 000000000000..d347d6484467
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/WindowsLike/Trim.bat
> > @@ -0,0 +1,3 @@
> > +@setlocal+@set ToolName=%~n0%+@%PYTHON_COMMAND% -m
> > +edk2basetools.%ToolName%.%ToolName% %*diff --git
> > +a/BaseTools/BinPipWrappers/WindowsLike/UPT.bat
> > +b/BaseTools/BinPipWrappers/WindowsLike/UPT.bat
> > new file mode 100644
> > index 000000000000..d347d6484467
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/WindowsLike/UPT.bat
> > @@ -0,0 +1,3 @@
> > +@setlocal+@set ToolName=%~n0%+@%PYTHON_COMMAND% -m
> > +edk2basetools.%ToolName%.%ToolName% %*diff --git
> > +a/BaseTools/BinPipWrappers/WindowsLike/build.bat
> > +b/BaseTools/BinPipWrappers/WindowsLike/build.bat
> > new file mode 100644
> > index 000000000000..d347d6484467
> > --- /dev/null
> > +++ b/BaseTools/BinPipWrappers/WindowsLike/build.bat
> > @@ -0,0 +1,3 @@
> > +@setlocal+@set ToolName=%~n0%+@%PYTHON_COMMAND% -m
> > +edk2basetools.%ToolName%.%ToolName% %*diff --git
> > +a/BaseTools/BinWrappers/WindowsLike/win_build_tools_path_env.yaml
> > +b/BaseTools/BinPipWrappers/WindowsLike/win_build_tools_path_env.ya
> > ml
> > similarity index 70%
> > copy from
> > BaseTools/BinWrappers/WindowsLike/win_build_tools_path_env.yaml
> > copy to
> > BaseTools/BinPipWrappers/WindowsLike/win_build_tools_path_env.yaml
> > index 83f5856e75c6..9fdbe1bcb06b 100644
> > --- a/BaseTools/BinWrappers/WindowsLike/win_build_tools_path_env.yaml
> > +++
> > b/BaseTools/BinPipWrappers/WindowsLike/win_build_tools_path_env.yaml
> > @@ -5,6 +5,7 @@
> >  # SPDX-License-Identifier: BSD-2-Clause-Patent ## {-  "scope": "global-win",+
> > "scope": "pipbuild-win",+  "override_id": "binwrappers",   "flags":
> > ["set_path"] }diff --git
> > a/BaseTools/BinWrappers/PosixLike/posix_path_env.yaml
> > b/BaseTools/BinWrappers/PosixLike/posix_path_env.yaml
> > index 8b32e010bb1d..99529235ec9a 100644
> > --- a/BaseTools/BinWrappers/PosixLike/posix_path_env.yaml
> > +++ b/BaseTools/BinWrappers/PosixLike/posix_path_env.yaml
> > @@ -5,6 +5,7 @@
> >  # SPDX-License-Identifier: BSD-2-Clause-Patent ## {+  "id": "binwrappers",
> > "scope": "global-nix",   "flags": ["set_path"] }diff --git
> > a/BaseTools/BinWrappers/WindowsLike/win_build_tools_path_env.yaml
> > b/BaseTools/BinWrappers/WindowsLike/win_build_tools_path_env.yaml
> > index 83f5856e75c6..43da76f354e5 100644
> > --- a/BaseTools/BinWrappers/WindowsLike/win_build_tools_path_env.yaml
> > +++
> > b/BaseTools/BinWrappers/WindowsLike/win_build_tools_path_env.yaml
> > @@ -5,6 +5,7 @@
> >  # SPDX-License-Identifier: BSD-2-Clause-Patent ## {+  "id": "binwrappers",
> > "scope": "global-win",   "flags": ["set_path"] }diff --git a/BaseTools/BuildEnv
> > b/BaseTools/BuildEnv
> > index 5943bb9ef908..275f4c5901aa 100755
> > --- a/BaseTools/BuildEnv
> > +++ b/BaseTools/BuildEnv
> > @@ -46,7 +46,7 @@ RestorePreviousConfiguration() {
> >        done
> >      fi
> >    fi
> > -
> > +
> >    PREVIOUS_CONF_FILE=$CONF_PATH/BuildEnv.sh
> >    if [ -e $PREVIOUS_CONF_FILE ]
> >    then
> > @@ -198,7 +198,17 @@ AddEdkToolsToPath() {
> > 
> >    EDK_TOOLS_PATH_BIN=`GetEdkToolsPathBinDirectory`
> > 
> > -  AddDirToStartOfPath $EDK_TOOLS_PATH/BinWrappers/PosixLike
> > +  # check if the edk2basetools pip package is available  if
> > + $PYTHON_COMMAND -c "import edk2basetools" &> /dev/null; then
> > +    # if it is, use the pip version of the wrappers
> > +    echo "Using Pip Basetools"
> > +    AddDirToStartOfPath $EDK_TOOLS_PATH/BinPipWrappers/PosixLike
> > +  else
> > +    echo "Using EDK2 in-source Basetools"
> > +    AddDirToStartOfPath $EDK_TOOLS_PATH/BinWrappers/PosixLike
> > +  fi
> > +
> > +
> >    AddDirToStartOfPath $EDK_TOOLS_PATH_BIN
> > 
> >  }
> > diff --git a/BaseTools/Scripts/PatchCheck.py
> > b/BaseTools/Scripts/PatchCheck.py index 68c984ed0e4d..80754e763c5a
> > 100755
> > --- a/BaseTools/Scripts/PatchCheck.py
> > +++ b/BaseTools/Scripts/PatchCheck.py
> > @@ -359,6 +359,7 @@ class GitDiffCheck:
> >                  self.force_notabs = True                 if self.filename.endswith('.sh') or
> > \                     self.filename.startswith('BaseTools/BinWrappers/PosixLike/') or
> > \+                    self.filename.startswith('BaseTools/BinPipWrappers/PosixLike/')
> > or \                     self.filename.startswith('BaseTools/Bin/CYGWIN_NT-5.1-
> > i686/') or \                     self.filename == 'BaseTools/BuildEnv':                     #diff
> > --git a/BaseTools/Source/Python/README.md
> > b/BaseTools/Source/Python/README.md
> > new file mode 100644
> > index 000000000000..56f5b0ff027b
> > --- /dev/null
> > +++ b/BaseTools/Source/Python/README.md
> > @@ -0,0 +1,29 @@
> > +# Edk2 Basetools++This folder has traditionally held the source of
> > +Python based tools used by EDK2. +The official repo this source has
> > +moved to https://github.com/tianocore/edk2-basetools.+This folder will
> > +remain in the tree until the next stable release (expected
> > +202102).+There is a new folder under Basetools `BinPipWrappers` that
> > +uses the pip module rather than this tree for Basetools.+By adding the
> > +scope `pipbuild-win` or `pipbuild-unix` (depending on your host
> > +system), the SDE will use the +`BinPipWrappers` instead of the regular
> > +`BinWrappers`.++## Why Move It?++The discussion is on the mailing list.
> > +The RFC is here: https://edk2.groups.io/g/rfc/topic/74009714#270+The
> > +benefits allow for the Basetools project to be used separately from
> > +EDK2 itself as well as offering it in a+globally accessible manner.
> > ++This makes it much easier to build a module using Basetools.
> > ++Separating the Basetools into their own repo allows for easier CI and
> > +contribution process.+Additional pros, cons, and process can be found
> > +on the mailing list.++## How Do I Install It?++By default, EDK2 is tied
> > +to and tested with a specific version of the Basetools through
> > +`pip-requirements.txt`.+You can simply run:++```bash+pip install -r
> > +pip-requirements.txt+```++This will install the required module,
> > +thought we strongly suggest setting up a virtual
> > +environment.+Additionally, you can also install a local clone of the
> > +Basetools as well as a specific git commit.diff --git
> > +a/BaseTools/toolsetup.bat b/BaseTools/toolsetup.bat
> > index 61ebf4ae09bc..4b5256ab6e93 100755
> > --- a/BaseTools/toolsetup.bat
> > +++ b/BaseTools/toolsetup.bat
> > @@ -393,12 +393,31 @@ goto end
> >      goto check_freezer_path   ) ++ :check_freezer_path
> > endlocal++  %PYTHON_COMMAND% -c "import edk2basetools" >NUL 2>NUL+
> > if %ERRORLEVEL% EQU 0 (+    goto use_pip_basetools+  ) else (+    goto
> > use_builtin_basetools+  )++:use_builtin_basetools+  @echo Using EDK2 in-
> > source Basetools   if defined BASETOOLS_PYTHON_SOURCE goto
> > print_python_info   set
> > "PATH=%BASE_TOOLS_PATH%\BinWrappers\WindowsLike;%PATH%"   set
> > BASETOOLS_PYTHON_SOURCE=%BASE_TOOLS_PATH%\Source\Python   set
> > PYTHONPATH=%BASETOOLS_PYTHON_SOURCE%;%PYTHONPATH%+  goto
> > print_python_info++:use_pip_basetools+  @echo Using Pip Basetools+  set
> > "PATH=%BASE_TOOLS_PATH%\BinPipWrappers\WindowsLike;%PATH%"+
> > set BASETOOLS_PYTHON_SOURCE=edk2basetools+  goto
> > print_python_info  :print_python_info   echo                PATH = %PATH%diff --
> > git a/pip-requirements.txt b/pip-requirements.txt
> > index 0fecd37f2a83..aea2e6ece431 100644
> > --- a/pip-requirements.txt
> > +++ b/pip-requirements.txt
> > @@ -14,4 +14,5 @@
> >   edk2-pytool-library==0.10.* edk2-pytool-extensions~=0.13.3+edk2-
> > basetools==0.1.2 antlr4-python3-runtime==4.7.1--
> > 2.29.0.vfs.0.0
> 
> 
> 
> 
> 
> 

      reply	other threads:[~2021-02-09 13:15 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-09  0:50 [PATCH v5 0/1] Use Pip version of BaseTools Matthew Carlson
2021-02-09  0:50 ` [PATCH v5 1/1] BaseTools: Use pip module if available, CI uses it by default Matthew Carlson
2021-02-09  2:31   ` Yuwei Chen
2021-02-09  3:25     ` Bob Feng
2021-02-09 13:15       ` Leif Lindholm [this message]

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=20210209131504.GH1664@vanye \
    --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