mirror of https://github.com/acidanthera/audk.git
BaseTools/build/build: refactor and move functions
Move DataDump and DataRestore from Common.Misc to this file. There were no other consumers of these 2 functions. Import threading since that module is used in build. Cc: Bob Feng <bob.c.feng@intel.com> Cc: Liming Gao <liming.gao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Jaben Carsey <jaben.carsey@intel.com> Reviewed-by: Bob Feng <bob.c.feng@intel.com>
This commit is contained in:
parent
dd1988cf01
commit
b298567268
|
@ -487,43 +487,6 @@ def SaveFileOnChange(File, Content, IsBinaryFile=True):
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
## Make a Python object persistent on file system
|
|
||||||
#
|
|
||||||
# @param Data The object to be stored in file
|
|
||||||
# @param File The path of file to store the object
|
|
||||||
#
|
|
||||||
def DataDump(Data, File):
|
|
||||||
Fd = None
|
|
||||||
try:
|
|
||||||
Fd = open(File, 'wb')
|
|
||||||
pickle.dump(Data, Fd, pickle.HIGHEST_PROTOCOL)
|
|
||||||
except:
|
|
||||||
EdkLogger.error("", FILE_OPEN_FAILURE, ExtraData=File, RaiseError=False)
|
|
||||||
finally:
|
|
||||||
if Fd is not None:
|
|
||||||
Fd.close()
|
|
||||||
|
|
||||||
## Restore a Python object from a file
|
|
||||||
#
|
|
||||||
# @param File The path of file stored the object
|
|
||||||
#
|
|
||||||
# @retval object A python object
|
|
||||||
# @retval None If failure in file operation
|
|
||||||
#
|
|
||||||
def DataRestore(File):
|
|
||||||
Data = None
|
|
||||||
Fd = None
|
|
||||||
try:
|
|
||||||
Fd = open(File, 'rb')
|
|
||||||
Data = pickle.load(Fd)
|
|
||||||
except Exception as e:
|
|
||||||
EdkLogger.verbose("Failed to load [%s]\n\t%s" % (File, str(e)))
|
|
||||||
Data = None
|
|
||||||
finally:
|
|
||||||
if Fd is not None:
|
|
||||||
Fd.close()
|
|
||||||
return Data
|
|
||||||
|
|
||||||
## Retrieve and cache the real path name in file system
|
## Retrieve and cache the real path name in file system
|
||||||
#
|
#
|
||||||
# @param Root The root directory of path relative to
|
# @param Root The root directory of path relative to
|
||||||
|
|
|
@ -32,6 +32,7 @@ import multiprocessing
|
||||||
|
|
||||||
from struct import *
|
from struct import *
|
||||||
from threading import *
|
from threading import *
|
||||||
|
import threading
|
||||||
from optparse import OptionParser
|
from optparse import OptionParser
|
||||||
from subprocess import *
|
from subprocess import *
|
||||||
from Common import Misc as Utils
|
from Common import Misc as Utils
|
||||||
|
@ -71,6 +72,43 @@ gToolsDefinition = "tools_def.txt"
|
||||||
TemporaryTablePattern = re.compile(r'^_\d+_\d+_[a-fA-F0-9]+$')
|
TemporaryTablePattern = re.compile(r'^_\d+_\d+_[a-fA-F0-9]+$')
|
||||||
TmpTableDict = {}
|
TmpTableDict = {}
|
||||||
|
|
||||||
|
## Make a Python object persistent on file system
|
||||||
|
#
|
||||||
|
# @param Data The object to be stored in file
|
||||||
|
# @param File The path of file to store the object
|
||||||
|
#
|
||||||
|
def _DataDump(Data, File):
|
||||||
|
Fd = None
|
||||||
|
try:
|
||||||
|
Fd = open(File, 'wb')
|
||||||
|
pickle.dump(Data, Fd, pickle.HIGHEST_PROTOCOL)
|
||||||
|
except:
|
||||||
|
EdkLogger.error("", FILE_OPEN_FAILURE, ExtraData=File, RaiseError=False)
|
||||||
|
finally:
|
||||||
|
if Fd is not None:
|
||||||
|
Fd.close()
|
||||||
|
|
||||||
|
## Restore a Python object from a file
|
||||||
|
#
|
||||||
|
# @param File The path of file stored the object
|
||||||
|
#
|
||||||
|
# @retval object A python object
|
||||||
|
# @retval None If failure in file operation
|
||||||
|
#
|
||||||
|
def _DataRestore(File):
|
||||||
|
Data = None
|
||||||
|
Fd = None
|
||||||
|
try:
|
||||||
|
Fd = open(File, 'rb')
|
||||||
|
Data = pickle.load(Fd)
|
||||||
|
except Exception as e:
|
||||||
|
EdkLogger.verbose("Failed to load [%s]\n\t%s" % (File, str(e)))
|
||||||
|
Data = None
|
||||||
|
finally:
|
||||||
|
if Fd is not None:
|
||||||
|
Fd.close()
|
||||||
|
return Data
|
||||||
|
|
||||||
## Check environment PATH variable to make sure the specified tool is found
|
## Check environment PATH variable to make sure the specified tool is found
|
||||||
#
|
#
|
||||||
# If the tool is found in the PATH, then True is returned
|
# If the tool is found in the PATH, then True is returned
|
||||||
|
@ -2163,19 +2201,19 @@ class Build():
|
||||||
def DumpBuildData(self):
|
def DumpBuildData(self):
|
||||||
CacheDirectory = os.path.dirname(GlobalData.gDatabasePath)
|
CacheDirectory = os.path.dirname(GlobalData.gDatabasePath)
|
||||||
Utils.CreateDirectory(CacheDirectory)
|
Utils.CreateDirectory(CacheDirectory)
|
||||||
Utils.DataDump(Utils.gFileTimeStampCache, os.path.join(CacheDirectory, "gFileTimeStampCache"))
|
Utils._DataDump(Utils.gFileTimeStampCache, os.path.join(CacheDirectory, "gFileTimeStampCache"))
|
||||||
Utils.DataDump(Utils.gDependencyDatabase, os.path.join(CacheDirectory, "gDependencyDatabase"))
|
Utils._DataDump(Utils.gDependencyDatabase, os.path.join(CacheDirectory, "gDependencyDatabase"))
|
||||||
|
|
||||||
def RestoreBuildData(self):
|
def RestoreBuildData(self):
|
||||||
FilePath = os.path.join(os.path.dirname(GlobalData.gDatabasePath), "gFileTimeStampCache")
|
FilePath = os.path.join(os.path.dirname(GlobalData.gDatabasePath), "gFileTimeStampCache")
|
||||||
if Utils.gFileTimeStampCache == {} and os.path.isfile(FilePath):
|
if Utils.gFileTimeStampCache == {} and os.path.isfile(FilePath):
|
||||||
Utils.gFileTimeStampCache = Utils.DataRestore(FilePath)
|
Utils.gFileTimeStampCache = Utils._DataRestore(FilePath)
|
||||||
if Utils.gFileTimeStampCache is None:
|
if Utils.gFileTimeStampCache is None:
|
||||||
Utils.gFileTimeStampCache = {}
|
Utils.gFileTimeStampCache = {}
|
||||||
|
|
||||||
FilePath = os.path.join(os.path.dirname(GlobalData.gDatabasePath), "gDependencyDatabase")
|
FilePath = os.path.join(os.path.dirname(GlobalData.gDatabasePath), "gDependencyDatabase")
|
||||||
if Utils.gDependencyDatabase == {} and os.path.isfile(FilePath):
|
if Utils.gDependencyDatabase == {} and os.path.isfile(FilePath):
|
||||||
Utils.gDependencyDatabase = Utils.DataRestore(FilePath)
|
Utils.gDependencyDatabase = Utils._DataRestore(FilePath)
|
||||||
if Utils.gDependencyDatabase is None:
|
if Utils.gDependencyDatabase is None:
|
||||||
Utils.gDependencyDatabase = {}
|
Utils.gDependencyDatabase = {}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue