Attach the patch.
Thank Bob and Eric.

Best Regards
Heng

> -----Original Message-----
> From: Dong, Eric <[email protected]>
> Sent: Wednesday, April 15, 2020 9:07 AM
> To: Feng, Bob C <[email protected]>; Luo, Heng <[email protected]>;
> [email protected]
> Cc: Ni, Ray <[email protected]>; Gao, Liming <[email protected]>; Chan,
> Amy <[email protected]>
> Subject: RE: [PATCH] Platform/Intel/Tools: Add scripts to set
> PACKAGES_PATH environment
> 
> Thanks bob.
> 
> 
> Heng,
> 
> Please help to update the patch and send it to me, I will  help to push it.
> 
> Thanks,
> Eric
> 
> > -----Original Message-----
> > From: Feng, Bob C
> > Sent: Wednesday, April 15, 2020 9:05 AM
> > To: Luo, Heng <[email protected]>; [email protected]
> > Cc: Ni, Ray <[email protected]>; Dong, Eric <[email protected]>; Gao,
> > Liming <[email protected]>; Chan, Amy <[email protected]>
> > Subject: RE: [PATCH] Platform/Intel/Tools: Add scripts to set
> > PACKAGES_PATH environment
> >
> > A typo in the Readme.md. Others are fine for me.
> > **:+The old PACKAGES_PATH will be replaced by new one.s
> >
> > After fix that typo,
> > Reviewed-by: Bob Feng <[email protected]>
> >
> > -----Original Message-----
> > From: Luo, Heng <[email protected]>
> > Sent: Friday, April 10, 2020 9:06 AM
> > To: [email protected]
> > Cc: Ni, Ray <[email protected]>; Dong, Eric <[email protected]>; Gao,
> > Liming <[email protected]>; Feng, Bob C <[email protected]>;
> > Chan, Amy <[email protected]>
> > Subject: [PATCH] Platform/Intel/Tools: Add scripts to set
> > PACKAGES_PATH environment
> >
> > Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2656
> >
> > 1. Add GetPackagesPath.py, it will be used to get package pathes from
> >   special directories. A sub directory is a qualified package path
> >   when an EDKII Package can be found under it.
> > 2. Add AppendPackagesPath.bat and AppendPackagesPath.sh, these scripts
> >   call GetPackagesPath.py to collect all package paths under specified
> >   directories and append them to PACKAGES_PATH environment variable.
> >
> > Cc: Ray Ni <[email protected]>
> > Cc: Eric Dong <[email protected]>
> > Cc: Liming Gao <[email protected]>
> > Cc: Bob Feng <[email protected]>
> > Cc: Amy Chan <[email protected]>
> > Signed-off-by: Heng Luo <[email protected]>
> > ---
> >  Platform/Intel/Tools/AppendPackagesPath/AppendPackagesPath.bat | 33
> > +++++++++++++++++++++++++++++++++
> > Platform/Intel/Tools/AppendPackagesPath/AppendPackagesPath.sh  | 42
> > ++++++++++++++++++++++++++++++++++++++++++
> >  Platform/Intel/Tools/AppendPackagesPath/GetPackagesPath.py     | 98
> > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> > ++++++++++++++++++++++++++++++++++++++++
> >  Platform/Intel/Tools/AppendPackagesPath/Readme.md              | 28
> > ++++++++++++++++++++++++++++
> >  4 files changed, 201 insertions(+)
> >
> > diff --git
> > a/Platform/Intel/Tools/AppendPackagesPath/AppendPackagesPath.bat
> > b/Platform/Intel/Tools/AppendPackagesPath/AppendPackagesPath.bat
> > new file mode 100644
> > index 0000000000..da15d9c451
> > --- /dev/null
> > +++
> b/Platform/Intel/Tools/AppendPackagesPath/AppendPackagesPath.bat
> > @@ -0,0 +1,33 @@
> > +@REM @file+@REM Windows batch file to set PACKAGES_PATH
> > environment+@REM+@REM Copyright (c) 2020, Intel Corporation. All
> > environment+rights
> > reserved.<BR>+@REM SPDX-License-Identifier: BSD-2-Clause-
> > Patent+@REM+@REM This script calls GetPackagesPath.py to collect all
> > package paths under+@REM specified directories and appends them to
> > PACKAGES_PATH environment+@REM variable. A sub directory is a
> > qualified package path when an EDKII+@REM Package can be found under
> > it.++@echo off+@if /I "%1"=="" @goto Usage+@if /I "%1"=="-h" @goto
> > Usage+@if /I "%1"=="--help" @goto Usage+@if /I "%1"=="/?" @goto
> > Usage++for /f %%i in ('python %~dp0\GetPackagesPath.py %*') do (+    if
> > defined PACKAGES_PATH (+        set
> > "PACKAGES_PATH=%PACKAGES_PATH%;%%i"+    ) else (+        set
> > "PACKAGES_PATH=%%i"+    )+)+@goto End++:Usage+@echo Usage:
> > AppendPackagesPath.bat directory [directory ...]+@echo Copyright(c) 2020,
> > Intel Corporation. All rights reserved.+@echo Options:+@echo   --help, -h
> > Print this help screen and exit++:Enddiff --git
> > a/Platform/Intel/Tools/AppendPackagesPath/AppendPackagesPath.sh
> > b/Platform/Intel/Tools/AppendPackagesPath/AppendPackagesPath.sh
> > new file mode 100644
> > index 0000000000..599c8d073b
> > --- /dev/null
> > +++ b/Platform/Intel/Tools/AppendPackagesPath/AppendPackagesPath.sh
> > @@ -0,0 +1,42 @@
> > +#!/bin/bash
> > +
> > +#
> > +# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR> #
> > +SPDX-License-Identifier: BSD-2-Clause-Patent # # This script calls
> > +GetPackagesPath.py to collect all package paths under # specified
> > +directories and appends them to PACKAGES_PATH environment # variable.
> > A
> > +sub directory is a qualified package path when an EDKII # Package can
> > +be found under it.
> > +#
> > +# Note: This script must be \'sourced\' so the environment can be
> changed:
> > +# source SetPackagesPath.sh
> > +# . AppendPackagesPath.sh
> > +
> > +function Usage()
> > +{
> > +    echo "Usage: source AppendPackagesPath.sh directory [directory ...]"
> > +    echo "Copyright(c) 2020, Intel Corporation. All rights reserved."
> > +    echo "Options:"
> > +    echo "  --help, -h     Print this help screen and exit"
> > +    echo "Please note: This script must be \'sourced\' so the
> > +environment can
> > be changed."
> > +    echo ". AppendPackagesPath.sh"
> > +    echo "source AppendPackagesPath.sh"
> > +}
> > +
> > +function SetEnv()
> > +{
> > +    local tool_path=$(dirname "$BASH_SOURCE")
> > +    local paths=$(python $tool_path/GetPackagesPath.py $@)
> > +    if [ "$PACKAGES_PATH" ]; then
> > +        PACKAGES_PATH=$PACKAGES_PATH:$paths
> > +    else
> > +        PACKAGES_PATH=$paths
> > +    fi
> > +}
> > +
> > +if [ $# -eq 0 -o "$1" == "-h" -o "$1" == "--help" -o "$1" == "/?" ]; then
> > +    Usage
> > +else
> > +    SetEnv $@
> > +fi
> > diff --git
> > a/Platform/Intel/Tools/AppendPackagesPath/GetPackagesPath.py
> > b/Platform/Intel/Tools/AppendPackagesPath/GetPackagesPath.py
> > new file mode 100644
> > index 0000000000..31ed44cfa3
> > --- /dev/null
> > +++ b/Platform/Intel/Tools/AppendPackagesPath/GetPackagesPath.py
> > @@ -0,0 +1,98 @@
> > +## @file+# Get all recursive package paths from special
> > +directories.+#+#
> > Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>+#
> > SPDX-
> > License-Identifier: BSD-2-Clause-Patent+#++import os+import
> > glob+import
> > argparse++#+# Globals for help information+#+__prog__ =
> > 'GetPackagesPath.py'+__copyright__ = 'Copyright (c) 2020, Intel
> Corporation.
> > All rights reserved.'+__description__ = 'Gets all recursive package paths in
> > specified directory.\n'++def __get_packages_path(root):+    """ Gets all
> > recursive package paths in specified directory.+        A directory is a 
> > package
> > path if it satisfies conditions below:+        1. it is a directory+        
> > 2. it is not
> an
> > EDK II Package. An EDK II Package (directory) is+           a directory that
> > contains an EDK II package declaration (DEC) file.+        3. it contains 
> > at least
> > one first level EDK II Package.+        Note: A directory is not package 
> > path but
> > its subdirectory could be.+        Example: edk2-platforms/Features is not
> > package path+        but edk2-platforms/Features/Intel is.++        :param 
> > root:
> > The specified directory to find package paths in it,+            the caller 
> > should
> > ensure it is an valid directory+        :type root: String+        
> > :returns: Return all
> > recursive package paths+        :rtype: String list+    """++    paths = []+
> > contain_package = False+    for filename in os.listdir(root):+        # 
> > skip files
> > whose name starts with ".", such as ".git"+        if 
> > filename.startswith('.'):+
> > continue+        filepath = os.path.join(root, filename)+        if
> > os.path.isdir(filepath):+            if glob.glob(os.path.join(filepath, 
> > '*.dec')):+
> > # it is an EDK II Package+                contain_package = True+           
> >  else:+
> > # get package paths for subdirectory if it is not package+                
> > paths =
> > paths + __get_packages_path(filepath)++    if contain_package:+        # 
> > root
> is
> > a package path because it contains EDK II Package+        # in first level 
> > folder,
> > inset it to head of list+        paths.insert(0, root)++    # return 
> > package paths+
> > return paths++def get_packages_path(directories):+    """ For each direcory
> > in directories, gets all recursive package paths+        in this directory 
> > and
> joins
> > them into one string.++        :param directories: the list of
> directory+        :type
> > directories: String list+        :returns: Return string of package
> paths+        :rtype:
> > String+    """++    packages_path = ''+    for directory in directories:+
> > directory = os.path.abspath(directory)+        if (not 
> > os.path.exists(directory))
> > or (not os.path.isdir(directory)):+            continue++        if
> > glob.glob(os.path.join(directory, '*.dec')):+            # it is an EDK II 
> > Package+
> > continue++        paths = __get_packages_path(directory)+        for path in
> > paths:+            if packages_path == '':+                packages_path = 
> > path+
> > else:+                packages_path += os.pathsep + path+    return
> > packages_path++if __name__ == '__main__':+    # Create command line
> > argument parser object+    parser = argparse.ArgumentParser(+
> > prog=__prog__,+            description=__description__ + __copyright__,+
> > conflict_handler='resolve'+    )+    parser.add_argument('directory',
> > nargs='+',+            help='Specified directory where package packages are 
> > got
> > from')+    args = parser.parse_args()+
> > print(get_packages_path(args.directory))diff --git
> > a/Platform/Intel/Tools/AppendPackagesPath/Readme.md
> > b/Platform/Intel/Tools/AppendPackagesPath/Readme.md
> > new file mode 100644
> > index 0000000000..66aebee7cf
> > --- /dev/null
> > +++ b/Platform/Intel/Tools/AppendPackagesPath/Readme.md
> > @@ -0,0 +1,28 @@
> > ++# How to use AppendPackagesPath++## Overview++This script calls
> > GetPackagesPath.py to collect all package paths under specified
> > directories and appends them to PACKAGES_PATH environment variable. A
> > sub directory is a qualified package path when an EDKII Package can be
> > found under it.++**Notice**:+The old PACKAGES_PATH will be replaced by
> > new one.s++## The usage of the tool++### Windows++Usage:
> > AppendPackagesPath.bat directory [directory ...]+Copyright(c) 2020, Intel
> > Corporation. All rights reserved.+Options:+  --help, -h     Print this help
> screen
> > and exit++### Ubuntu++Usage: source AppendPackagesPath.sh directory
> > [directory ...]+Copyright(c) 2020, Intel Corporation. All rights
> > reserved.+Options:+  --help, -h     Print this help screen and exit+Please
> note:
> > This script must be \'sourced\' so the environment can be changed.+.
> > AppendPackagesPath.sh+source AppendPackagesPath.sh--
> > 2.24.0.windows.2
> >


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

View/Reply Online (#57389): https://edk2.groups.io/g/devel/message/57389
Mute This Topic: https://groups.io/mt/72911539/21656
Group Owner: [email protected]
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Attachment: 0001-Platform-Intel-Tools-Add-scripts-to-set-PACKAGES_PAT.patch
Description: 0001-Platform-Intel-Tools-Add-scripts-to-set-PACKAGES_PAT.patch

Reply via email to