public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Dong, Eric" <eric.dong@intel.com>
To: "Feng, Bob C" <bob.c.feng@intel.com>,
	"Luo, Heng" <heng.luo@intel.com>,
	"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Ni, Ray" <ray.ni@intel.com>,
	"Gao, Liming" <liming.gao@intel.com>,
	"Chan, Amy" <amy.chan@intel.com>
Subject: Re: [PATCH] Platform/Intel/Tools: Add scripts to set PACKAGES_PATH environment
Date: Wed, 15 Apr 2020 01:06:44 +0000	[thread overview]
Message-ID: <ED077930C258884BBCB450DB737E66225A0235D2@shsmsx102.ccr.corp.intel.com> (raw)
In-Reply-To: <BN6PR11MB006809049D4D724974CAE968C9DB0@BN6PR11MB0068.namprd11.prod.outlook.com>

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 <heng.luo@intel.com>; devel@edk2.groups.io
> Cc: Ni, Ray <ray.ni@intel.com>; Dong, Eric <eric.dong@intel.com>; Gao,
> Liming <liming.gao@intel.com>; Chan, Amy <amy.chan@intel.com>
> 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 <bob.c.feng@intel.com>
> 
> -----Original Message-----
> From: Luo, Heng <heng.luo@intel.com>
> Sent: Friday, April 10, 2020 9:06 AM
> To: devel@edk2.groups.io
> Cc: Ni, Ray <ray.ni@intel.com>; Dong, Eric <eric.dong@intel.com>; Gao,
> Liming <liming.gao@intel.com>; Feng, Bob C <bob.c.feng@intel.com>; Chan,
> Amy <amy.chan@intel.com>
> 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 <ray.ni@intel.com>
> Cc: Eric Dong <eric.dong@intel.com>
> Cc: Liming Gao <liming.gao@intel.com>
> Cc: Bob Feng <bob.c.feng@intel.com>
> Cc: Amy Chan <amy.chan@intel.com>
> Signed-off-by: Heng Luo <heng.luo@intel.com>
> ---
>  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 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
> 


  reply	other threads:[~2020-04-15  1:06 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-10  1:05 [PATCH] Platform/Intel/Tools: Add scripts to set PACKAGES_PATH environment Heng Luo
2020-04-15  1:04 ` Bob Feng
2020-04-15  1:06   ` Dong, Eric [this message]
2020-04-15  1:37     ` Heng Luo
2020-04-15  1:48       ` Dong, Eric
2020-04-15  1:31 ` Ni, Ray

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=ED077930C258884BBCB450DB737E66225A0235D2@shsmsx102.ccr.corp.intel.com \
    --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