public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Zhu, Yonghong" <yonghong.zhu@intel.com>
To: "Zhu, Yonghong" <yonghong.zhu@intel.com>,
	"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Cc: "Gao, Liming" <liming.gao@intel.com>,
	"Zhu, Yonghong" <yonghong.zhu@intel.com>
Subject: Re: [Patch] BaseTools: remove PyUtility and open the file with unbuffered
Date: Mon, 17 Sep 2018 07:22:31 +0000	[thread overview]
Message-ID: <B9726D6DCCFB8B4CA276A9169B02216D520FC532@SHSMSX103.ccr.corp.intel.com> (raw)
In-Reply-To: <1537166586-32980-1-git-send-email-yonghong.zhu@intel.com>

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

Best Regards,
Zhu Yonghong


-----Original Message-----
From: edk2-devel [mailto:edk2-devel-bounces@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.gao@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.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Yonghong Zhu <yonghong.zhu@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


      reply	other threads:[~2018-09-17  7:23 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-17  6:43 [Patch] BaseTools: remove PyUtility and open the file with unbuffered Yonghong Zhu
2018-09-17  7:22 ` Zhu, Yonghong [this message]

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=B9726D6DCCFB8B4CA276A9169B02216D520FC532@SHSMSX103.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