[edk2-devel] [PATCH] BaseTools:Updata the Judgment Method of "--exclude"

Fan, ZhijuX posted 1 patch 4 years, 10 months ago
Failed in applying to current master (apply log)
BaseTools/Scripts/FormatDosFiles.py | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
[edk2-devel] [PATCH] BaseTools:Updata the Judgment Method of "--exclude"
Posted by Fan, ZhijuX 4 years, 10 months ago
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1944

--exclude cannot be used under certain circumstances
1.The value of the parameter USES an absolute path
2.The value of Exclude parameters is based on the value 
  of the Path parameter
Neither of these approaches currently works

This patch is going to fix that issue.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Bob Feng <bob.c.feng@intel.com>
Signed-off-by: Zhiju.Fan <zhijux.fan@intel.com>
---
 BaseTools/Scripts/FormatDosFiles.py | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/BaseTools/Scripts/FormatDosFiles.py b/BaseTools/Scripts/FormatDosFiles.py
index d9a880f299..7a5af209f2 100644
--- a/BaseTools/Scripts/FormatDosFiles.py
+++ b/BaseTools/Scripts/FormatDosFiles.py
@@ -20,7 +20,7 @@ import copy
 
 __prog__        = 'FormatDosFiles'
 __version__     = '%s Version %s' % (__prog__, '0.10 ')
-__copyright__   = 'Copyright (c) 2018, Intel Corporation. All rights reserved.'
+__copyright__   = 'Copyright (c) 2019, Intel Corporation. All rights reserved.'
 __description__ = 'Convert source files to meet the EDKII C Coding Standards Specification.\n'
 DEFAULT_EXT_LIST = ['.h', '.c', '.nasm', '.nasmb', '.asm', '.S', '.inf', '.dec', '.dsc', '.fdf', '.uni', '.asl', '.aslc', '.vfr', '.idf', '.txt', '.bat', '.py']
 
@@ -46,10 +46,22 @@ def FormatFile(FilePath, Args):
 def FormatFilesInDir(DirPath, ExtList, Args):
 
     FileList = []
+    ExcludeDir = DirPath
     for DirPath, DirNames, FileNames in os.walk(DirPath):
         if Args.Exclude:
-            DirNames[:] = [d for d in DirNames if d not in Args.Exclude]
-            FileNames[:] = [f for f in FileNames if f not in Args.Exclude]
+            Continue = False
+            for Path in Args.Exclude:
+                if not os.path.isdir(Path) and not os.path.isfile(Path):
+                    Path = os.path.join(ExcludeDir, Path)
+                if os.path.isdir(Path) and Path.endswith(DirPath):
+                    Continue = True
+                elif os.path.isfile(Path):
+                    for ItemPath in FileNames[:]:
+                        FilePath = os.path.join(DirPath, ItemPath)
+                        if Path.endswith(FilePath):
+                            FileNames.remove(ItemPath)
+            if Continue:
+                continue
         for FileName in [f for f in FileNames if any(f.endswith(ext) for ext in ExtList)]:
                 FileList.append(os.path.join(DirPath, FileName))
     for File in FileList:
-- 
2.14.1.windows.1


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

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

Re: [edk2-devel] [PATCH] BaseTools:Updata the Judgment Method of "--exclude"
Posted by Liming Gao 4 years, 10 months ago
Zhiju:
  Please keep original behavior on --exclude for the directory name or file name. 

> -----Original Message-----
> From: Fan, ZhijuX
> Sent: Thursday, June 27, 2019 10:55 AM
> To: devel@edk2.groups.io
> Cc: Gao, Liming <liming.gao@intel.com>; Feng, Bob C <bob.c.feng@intel.com>
> Subject: [PATCH] BaseTools:Updata the Judgment Method of "--exclude"
> 
> BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1944
> 
> --exclude cannot be used under certain circumstances
> 1.The value of the parameter USES an absolute path
> 2.The value of Exclude parameters is based on the value
>   of the Path parameter
> Neither of these approaches currently works
> 
> This patch is going to fix that issue.
> 
> Cc: Liming Gao <liming.gao@intel.com>
> Cc: Bob Feng <bob.c.feng@intel.com>
> Signed-off-by: Zhiju.Fan <zhijux.fan@intel.com>
> ---
>  BaseTools/Scripts/FormatDosFiles.py | 18 +++++++++++++++---
>  1 file changed, 15 insertions(+), 3 deletions(-)
> 
> diff --git a/BaseTools/Scripts/FormatDosFiles.py b/BaseTools/Scripts/FormatDosFiles.py
> index d9a880f299..7a5af209f2 100644
> --- a/BaseTools/Scripts/FormatDosFiles.py
> +++ b/BaseTools/Scripts/FormatDosFiles.py
> @@ -20,7 +20,7 @@ import copy
> 
>  __prog__        = 'FormatDosFiles'
>  __version__     = '%s Version %s' % (__prog__, '0.10 ')
> -__copyright__   = 'Copyright (c) 2018, Intel Corporation. All rights reserved.'
> +__copyright__   = 'Copyright (c) 2019, Intel Corporation. All rights reserved.'
>  __description__ = 'Convert source files to meet the EDKII C Coding Standards Specification.\n'
>  DEFAULT_EXT_LIST = ['.h', '.c', '.nasm', '.nasmb', '.asm', '.S', '.inf', '.dec', '.dsc', '.fdf', '.uni', '.asl', '.aslc', '.vfr', '.idf', '.txt', '.bat', '.py']
> 
> @@ -46,10 +46,22 @@ def FormatFile(FilePath, Args):
>  def FormatFilesInDir(DirPath, ExtList, Args):
> 
>      FileList = []
> +    ExcludeDir = DirPath
>      for DirPath, DirNames, FileNames in os.walk(DirPath):
>          if Args.Exclude:
> -            DirNames[:] = [d for d in DirNames if d not in Args.Exclude]
> -            FileNames[:] = [f for f in FileNames if f not in Args.Exclude]
> +            Continue = False
> +            for Path in Args.Exclude:
> +                if not os.path.isdir(Path) and not os.path.isfile(Path):
> +                    Path = os.path.join(ExcludeDir, Path)
> +                if os.path.isdir(Path) and Path.endswith(DirPath):
> +                    Continue = True
> +                elif os.path.isfile(Path):
> +                    for ItemPath in FileNames[:]:
> +                        FilePath = os.path.join(DirPath, ItemPath)
> +                        if Path.endswith(FilePath):
> +                            FileNames.remove(ItemPath)
> +            if Continue:
> +                continue
>          for FileName in [f for f in FileNames if any(f.endswith(ext) for ext in ExtList)]:
>                  FileList.append(os.path.join(DirPath, FileName))
>      for File in FileList:
> --
> 2.14.1.windows.1


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

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