Reviewed-by: Ashley DeSimone <ashley.e.desim...@intel.com>

-----Original Message-----
From: Desimone, Nathaniel L 
Sent: Wednesday, October 30, 2019 4:48 PM
To: devel@edk2.groups.io
Cc: Desimone, Ashley E <ashley.e.desim...@intel.com>; Pandya, Puja 
<puja.pan...@intel.com>
Subject: [edk2-staging/EdkRepo] [PATCH] EdkRepo: Python 2.x deprecation warning 
in pip breaks EdkRepoInstaller

Newer versions of pip add the following output in addition to the JSON output 
when running on Python 2.7:

DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. 
Please upgrade your Python as Python 2.7 won't be maintained after that date. A 
future version of pip will drop support for Python 2.7.

This breaks machine parsing of the JSON output from pip.
Adding logic to strip the deprecation warning to fix this issue.

Signed-off-by: Nate DeSimone <nathaniel.l.desim...@intel.com>
Cc: Ashley E Desimone <ashley.e.desim...@intel.com>
Cc: Puja Pandya <puja.pan...@intel.com>
---
 .../EdkRepoInstaller/PythonOperations.cs      | 37 +++++++++++++++++--
 1 file changed, 34 insertions(+), 3 deletions(-)

diff --git a/edkrepo_installer/EdkRepoInstaller/PythonOperations.cs 
b/edkrepo_installer/EdkRepoInstaller/PythonOperations.cs
index f96502c..73d5bec 100644
--- a/edkrepo_installer/EdkRepoInstaller/PythonOperations.cs
+++ b/edkrepo_installer/EdkRepoInstaller/PythonOperations.cs
@@ -600,17 +600,48 @@ namespace TianoCore.EdkRepoInstaller
             return PythonPackages;         } +        private static string 
SanitizePipOutput(string PipOutput)+        {+            StringBuilder 
Sanitized = new StringBuilder();+            IEnumerable<string> PipLines = 
PipOutput.SplitLines();+            foreach(string line in PipLines)+           
 {+                if(line.StartsWith("DEPRECATION:"))+                {+       
             continue;+                }+                if 
(string.IsNullOrWhiteSpace(line))+                {+                    
continue;+                }+                Sanitized.Append(line.Trim());+     
           Sanitized.Append("\r\n");+            }+            return 
Sanitized.ToString().Trim();+        }+         public static 
List<PythonPackage> GetInstalledPythonPackages(string PythonPath)         {     
        List<PythonPackage> PythonPackages = new List<PythonPackage>();         
    SilentProcess.StdoutDataCapture dataCapture = new 
SilentProcess.StdoutDataCapture();             SilentProcess process = 
SilentProcess.StartConsoleProcessSilently(PythonPath, "-m pip list 
--format=\"json\" --no-index", dataCapture.DataReceivedHandler);             
process.WaitForExit();+            bool TryLegacy = true;             if 
(process.ExitCode == 0)             {-                PythonPackages = 
ParseJsonPipList(dataCapture.GetData());+                try+                {+ 
                   PythonPackages = 
ParseJsonPipList(SanitizePipOutput(dataCapture.GetData()));+                    
TryLegacy = false;+                }+                catch(Exception e)+        
        {+                    InstallLogger.Log("Error occurred while trying to 
parse pip JSON:");+                    InstallLogger.Log(e.ToString());+        
            InstallLogger.Log("Falling back to legacy mode");+                } 
            }-            else+            if(TryLegacy)             {          
       //                 // Older versions of pip don't support the --format 
flag, parse the legacy format@@ -620,7 +651,7 @@ namespace 
TianoCore.EdkRepoInstaller
                 process.WaitForExit();                 if (process.ExitCode == 
0)                 {-                    PythonPackages = 
ParseLegacyPipList(dataCapture.GetData());+                    PythonPackages = 
ParseLegacyPipList(SanitizePipOutput(dataCapture.GetData()));                 } 
            }             return PythonPackages;-- 
2.23.0.windows.1


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

View/Reply Online (#49781): https://edk2.groups.io/g/devel/message/49781
Mute This Topic: https://groups.io/mt/40038547/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to