[edk2] [patch] BaseTools/UPT: Fix an issue in subst command

hesschen posted 1 patch 7 years, 7 months ago
Failed in applying to current master (apply log)
.../UPT/Parser/InfGuidPpiProtocolSectionParser.py    |  7 ++++---
BaseTools/Source/Python/UPT/UPT.py                   | 20 +++++++++++---------
2 files changed, 15 insertions(+), 12 deletions(-)
[edk2] [patch] BaseTools/UPT: Fix an issue in subst command
Posted by hesschen 7 years, 7 months ago
UPT used to use "B:" as the temp directory which may cause conflict,
now it will choose a valid volume. Also UPT now accepts empty sections.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: hesschen <hesheng.chen@intel.com>
---
 .../UPT/Parser/InfGuidPpiProtocolSectionParser.py    |  7 ++++---
 BaseTools/Source/Python/UPT/UPT.py                   | 20 +++++++++++---------
 2 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/BaseTools/Source/Python/UPT/Parser/InfGuidPpiProtocolSectionParser.py b/BaseTools/Source/Python/UPT/Parser/InfGuidPpiProtocolSectionParser.py
index 10a82cb..12ffeda 100644
--- a/BaseTools/Source/Python/UPT/Parser/InfGuidPpiProtocolSectionParser.py
+++ b/BaseTools/Source/Python/UPT/Parser/InfGuidPpiProtocolSectionParser.py
@@ -1,7 +1,7 @@
 ## @file
 # This file contained the parser for [Guids], [Ppis], [Protocols] sections in INF file 
 #
-# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2011 - 2017, Intel Corporation. All rights reserved.<BR>
 #
 # This program and the accompanying materials are licensed and made available 
 # under the terms and conditions of the BSD License which accompanies this 
@@ -217,8 +217,9 @@ class InfGuidPpiProtocolSectionParser(InfParserSectionRoot):
         for Line in SectionString:
             LineContent = Line[0]
 
-            if LineContent.strip() == '':
-                continue
+# Comment the code to support user extension without any statement just the section header in []
+#             if LineContent.strip() == '':
+#                 continue
 
             UserExtensionContent += LineContent + DT.END_OF_LINE
             continue
diff --git a/BaseTools/Source/Python/UPT/UPT.py b/BaseTools/Source/Python/UPT/UPT.py
index 8dd949a..873492d 100644
--- a/BaseTools/Source/Python/UPT/UPT.py
+++ b/BaseTools/Source/Python/UPT/UPT.py
@@ -2,7 +2,7 @@
 #
 # This file is the main entry for UPT 
 #
-# Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2011 - 2017, Intel Corporation. All rights reserved.<BR>
 #
 # This program and the accompanying materials are licensed and made available 
 # under the terms and conditions of the BSD License which accompanies this 
@@ -179,15 +179,16 @@ def Main():
             Logger.Quiet(ST.MSG_PYTHON_ON % (python_version(), platform) + format_exc())
         return XExcept.args[0]
 
-    # Start *********************************************
     # Support WORKSPACE is a long path
-    # Only work well on windows
-    # Linux Solution TBD
+    # Only works for windows system
     if pf.system() == 'Windows':
-        os.system('@echo off\nsubst b: /D')
-        os.system('subst b: "%s"' % GlobalData.gWORKSPACE)
-        GlobalData.gWORKSPACE = 'B:\\'
-    # End ***********************************************
+        Vol = 'B:'
+        for Index in range(90, 65, -1):
+            Vol = chr(Index) + ':'
+            if not os.path.isdir(Vol):
+                os.system('subst %s "%s"' % (Vol, GlobalData.gWORKSPACE))
+                break
+        GlobalData.gWORKSPACE = '%s\\' % Vol
 
     WorkspaceDir = GlobalData.gWORKSPACE
 
@@ -304,8 +305,9 @@ def Main():
         except StandardError:
             Logger.Quiet(ST.MSG_RECOVER_FAIL)
         GlobalData.gDB.CloseDb()
+
         if pf.system() == 'Windows':
-            os.system('subst b: /D')
+            os.system('subst %s /D' % GlobalData.gWORKSPACE.replace('\\',''))
 
     return ReturnCode
 
-- 
2.7.2.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [patch] BaseTools/UPT: Fix an issue in subst command
Posted by Zhu, Yonghong 7 years, 7 months ago
Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com> 

Best Regards,
Zhu Yonghong


-----Original Message-----
From: Chen, Hesheng 
Sent: Friday, March 10, 2017 8:25 AM
To: edk2-devel@lists.01.org
Cc: Zhu, Yonghong <yonghong.zhu@intel.com>
Subject: [patch] BaseTools/UPT: Fix an issue in subst command

UPT used to use "B:" as the temp directory which may cause conflict, now it will choose a valid volume. Also UPT now accepts empty sections.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: hesschen <hesheng.chen@intel.com>
---
 .../UPT/Parser/InfGuidPpiProtocolSectionParser.py    |  7 ++++---
 BaseTools/Source/Python/UPT/UPT.py                   | 20 +++++++++++---------
 2 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/BaseTools/Source/Python/UPT/Parser/InfGuidPpiProtocolSectionParser.py b/BaseTools/Source/Python/UPT/Parser/InfGuidPpiProtocolSectionParser.py
index 10a82cb..12ffeda 100644
--- a/BaseTools/Source/Python/UPT/Parser/InfGuidPpiProtocolSectionParser.py
+++ b/BaseTools/Source/Python/UPT/Parser/InfGuidPpiProtocolSectionParser
+++ .py
@@ -1,7 +1,7 @@
 ## @file
 # This file contained the parser for [Guids], [Ppis], [Protocols] sections in INF file  # -# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2011 - 2017, Intel Corporation. All rights 
+reserved.<BR>
 #
 # This program and the accompanying materials are licensed and made available  # under the terms and conditions of the BSD License which accompanies this @@ -217,8 +217,9 @@ class InfGuidPpiProtocolSectionParser(InfParserSectionRoot):
         for Line in SectionString:
             LineContent = Line[0]
 
-            if LineContent.strip() == '':
-                continue
+# Comment the code to support user extension without any statement just the section header in []
+#             if LineContent.strip() == '':
+#                 continue
 
             UserExtensionContent += LineContent + DT.END_OF_LINE
             continue
diff --git a/BaseTools/Source/Python/UPT/UPT.py b/BaseTools/Source/Python/UPT/UPT.py
index 8dd949a..873492d 100644
--- a/BaseTools/Source/Python/UPT/UPT.py
+++ b/BaseTools/Source/Python/UPT/UPT.py
@@ -2,7 +2,7 @@
 #
 # This file is the main entry for UPT
 #
-# Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2011 - 2017, Intel Corporation. All rights 
+reserved.<BR>
 #
 # This program and the accompanying materials are licensed and made available  # under the terms and conditions of the BSD License which accompanies this @@ -179,15 +179,16 @@ def Main():
             Logger.Quiet(ST.MSG_PYTHON_ON % (python_version(), platform) + format_exc())
         return XExcept.args[0]
 
-    # Start *********************************************
     # Support WORKSPACE is a long path
-    # Only work well on windows
-    # Linux Solution TBD
+    # Only works for windows system
     if pf.system() == 'Windows':
-        os.system('@echo off\nsubst b: /D')
-        os.system('subst b: "%s"' % GlobalData.gWORKSPACE)
-        GlobalData.gWORKSPACE = 'B:\\'
-    # End ***********************************************
+        Vol = 'B:'
+        for Index in range(90, 65, -1):
+            Vol = chr(Index) + ':'
+            if not os.path.isdir(Vol):
+                os.system('subst %s "%s"' % (Vol, GlobalData.gWORKSPACE))
+                break
+        GlobalData.gWORKSPACE = '%s\\' % Vol
 
     WorkspaceDir = GlobalData.gWORKSPACE
 
@@ -304,8 +305,9 @@ def Main():
         except StandardError:
             Logger.Quiet(ST.MSG_RECOVER_FAIL)
         GlobalData.gDB.CloseDb()
+
         if pf.system() == 'Windows':
-            os.system('subst b: /D')
+            os.system('subst %s /D' % 
+ GlobalData.gWORKSPACE.replace('\\',''))
 
     return ReturnCode
 
--
2.7.2.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel