Please ignore this one, I will separate it into two patches.

Best Regards,
Zhu Yonghong


-----Original Message-----
From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Yonghong 
Zhu
Sent: Monday, September 17, 2018 2:43 PM
To: edk2-devel@lists.01.org
Cc: Gao, Liming <liming....@intel.com>
Subject: [edk2] [Patch] BaseTools: remove PyUtility and open the file with 
unbuffered

the PyUtility is not used, so we remove it.
And update the open file with unbuffered to avoid the case that the file is not 
wrote but directly used in later when the host's multiple thread is very strong.

Cc: Liming Gao <liming....@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Yonghong Zhu <yonghong....@intel.com>
---
 BaseTools/Source/C/PyUtility/Makefile        |  25 -------
 BaseTools/Source/C/PyUtility/PyUtility.c     | 106 ---------------------------
 BaseTools/Source/C/PyUtility/setup.py        |  42 -----------
 BaseTools/Source/Python/Common/Misc.py       |  16 +---
 BaseTools/Source/Python/Common/PyUtility.pyd | Bin 6144 -> 0 bytes
 5 files changed, 3 insertions(+), 186 deletions(-)  delete mode 100644 
BaseTools/Source/C/PyUtility/Makefile
 delete mode 100644 BaseTools/Source/C/PyUtility/PyUtility.c
 delete mode 100644 BaseTools/Source/C/PyUtility/setup.py
 delete mode 100644 BaseTools/Source/Python/Common/PyUtility.pyd

diff --git a/BaseTools/Source/C/PyUtility/Makefile 
b/BaseTools/Source/C/PyUtility/Makefile
deleted file mode 100644
index 5829070..0000000
--- a/BaseTools/Source/C/PyUtility/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
-## @file
-# Makefile
-#
-# Copyright (c) 2007 - 2014, 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 distribution.    The full text of the license may be 
found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# 
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-
-!INCLUDE ..\Makefiles\ms.common
-
-APPNAME = GenSec
-
-LIBS = $(LIB_PATH)\Common.lib
-
-OBJECTS = PyUtility.obj
-
-#CFLAGS = $(CFLAGS) /nodefaultlib:libc.lib
-
-!INCLUDE ..\Makefiles\ms.app
-
diff --git a/BaseTools/Source/C/PyUtility/PyUtility.c 
b/BaseTools/Source/C/PyUtility/PyUtility.c
deleted file mode 100644
index d14b872..0000000
--- a/BaseTools/Source/C/PyUtility/PyUtility.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/** @file
-Python Utility
-
-Copyright (c) 2009 - 2018, 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 
-distribution.  The full text of the license may be found at 
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT 
WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#include <Python.h>
-#include <Windows.h>
-#include <Common/UefiBaseTypes.h>
-
-/*
- SaveFileToDisk(FilePath, Content)
-*/
-STATIC
-PyObject*
-SaveFileToDisk (
-  PyObject    *Self,
-  PyObject    *Args
-  )
-{
-  CHAR8         *File;
-  UINT8         *Data;
-  UINTN         DataLength;
-  UINTN         WriteBytes;
-  UINTN         Status;
-  HANDLE        FileHandle;
-  PyObject      *ReturnValue = Py_False;
-
-  Status = PyArg_ParseTuple(
-            Args,
-            "ss#",
-            &File,
-            &Data,
-            &DataLength
-            );
-  if (Status == 0) {
-    return NULL;
-  }
-
-  FileHandle = CreateFile(
-                File,
-                GENERIC_WRITE,
-                FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_SHARE_DELETE,
-                NULL,
-                CREATE_ALWAYS,
-                FILE_ATTRIBUTE_NORMAL,
-                NULL
-                );
-  if (FileHandle == INVALID_HANDLE_VALUE) {
-    PyErr_SetString(PyExc_Exception, "File creation failure");
-    return NULL;
-  }
-
-  while (WriteFile(FileHandle, Data, DataLength, &WriteBytes, NULL)) {
-    if (DataLength <= WriteBytes) {
-      DataLength = 0;
-      break;
-    }
-
-    Data += WriteBytes;
-    DataLength -= WriteBytes;
-  }
-
-  if (DataLength != 0) {
-    // file saved unsuccessfully
-    PyErr_SetString(PyExc_Exception, "File write failure");
-    goto Done;
-  }
-
-  //
-  // Flush buffer may slow down the whole build performance (average 10s 
slower)
-  //
-  //if (!FlushFileBuffers(FileHandle)) {
-  //  PyErr_SetString(PyExc_Exception, "File flush failure");
-  //  goto Done;
-  //}
-
-  // success!
-  ReturnValue = Py_True;
-
-Done:
-  CloseHandle(FileHandle);
-  return ReturnValue;
-}
-
-STATIC INT8 SaveFileToDiskDocs[] = "SaveFileToDisk(): Make sure the file is 
saved to disk\n";
-
-STATIC PyMethodDef PyUtility_Funcs[] = {
-  {"SaveFileToDisk", (PyCFunction)SaveFileToDisk, METH_VARARGS, 
SaveFileToDiskDocs},
-  {NULL, NULL, 0, NULL}
-};
-
-PyMODINIT_FUNC
-initPyUtility(VOID) {
-  Py_InitModule3("PyUtility", PyUtility_Funcs, "Utilties Module Implemented C 
Language"); -}
-
-
diff --git a/BaseTools/Source/C/PyUtility/setup.py 
b/BaseTools/Source/C/PyUtility/setup.py
deleted file mode 100644
index e4d407d..0000000
--- a/BaseTools/Source/C/PyUtility/setup.py
+++ /dev/null
@@ -1,42 +0,0 @@
-## @file
-# package and install PyEfiCompressor extension -# -#  Copyright (c) 2008, 
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 distribution.  The 
full text of the license may be found at -#  
http://opensource.org/licenses/bsd-license.php
-#
-#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -#  
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-
-##
-# Import Modules
-#
-from distutils.core import setup, Extension -import os
-
-if 'BASE_TOOLS_PATH' not in os.environ:
-    raise "Please define BASE_TOOLS_PATH to the root of base tools tree"
-
-BaseToolsDir = os.environ['BASE_TOOLS_PATH'] -setup(
-    name="PyUtility",
-    version="0.01",
-    ext_modules=[
-        Extension(
-            'PyUtility',
-            sources=[
-                'PyUtility.c'
-                ],
-            include_dirs=[
-                os.path.join(BaseToolsDir, 'Source', 'C', 'Include'),
-                os.path.join(BaseToolsDir, 'Source', 'C', 'Include', 'Ia32'),
-                os.path.join(BaseToolsDir, 'Source', 'C', 'Common')
-                ],
-            )
-        ],
-  )
-
diff --git a/BaseTools/Source/Python/Common/Misc.py 
b/BaseTools/Source/Python/Common/Misc.py
index 430bf6b..3a8e7ca 100644
--- a/BaseTools/Source/Python/Common/Misc.py
+++ b/BaseTools/Source/Python/Common/Misc.py
@@ -470,23 +470,13 @@ def SaveFileOnChange(File, Content, IsBinaryFile=True):
             DirName = os.getcwd()
         if not os.access(DirName, os.W_OK):
             EdkLogger.error(None, PERMISSION_FAILURE, "Do not have write 
permission on directory %s" % DirName)
 
     try:
-        if GlobalData.gIsWindows:
-            try:
-                from .PyUtility import SaveFileToDisk
-                if not SaveFileToDisk(File, Content):
-                    EdkLogger.error(None, FILE_CREATE_FAILURE, ExtraData=File)
-            except:
-                Fd = open(File, "wb")
-                Fd.write(Content)
-                Fd.close()
-        else:
-            Fd = open(File, "wb")
-            Fd.write(Content)
-            Fd.close()
+        Fd = open(File, "wb", 0)
+        Fd.write(Content)
+        Fd.close()
     except IOError as X:
         EdkLogger.error(None, FILE_CREATE_FAILURE, ExtraData='IOError %s' % X)
 
     return True
 
diff --git a/BaseTools/Source/Python/Common/PyUtility.pyd 
b/BaseTools/Source/Python/Common/PyUtility.pyd
deleted file mode 100644
index 
856b508e4ea39a806fbe52264ac5e4db0956a2de..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6144
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
I{@=v?8;(I;UjP6A

--
2.6.1.windows.1

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

Reply via email to