From 4234283c3acb8c35014acc1546621fbc2621b095 Mon Sep 17 00:00:00 2001 From: lgao4 Date: Fri, 26 Aug 2011 07:46:26 +0000 Subject: Sync BaseTools Branch (version r2271) to EDKII main trunk. BaseTool Branch: https://edk2-buildtools.svn.sourceforge.net/svnroot/edk2-buildtools/branches/Releases/BaseTools_r2100 Signed-off-by: lgao4 Reviewed-by: hchen30 git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12214 6f19259b-4bc3-4df7-8a09-765794883524 --- BaseTools/Source/Python/Common/BuildToolError.py | 2 ++ BaseTools/Source/Python/Common/Misc.py | 14 +++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) (limited to 'BaseTools/Source/Python/Common') diff --git a/BaseTools/Source/Python/Common/BuildToolError.py b/BaseTools/Source/Python/Common/BuildToolError.py index b5dc3712e0..4d4e07bd70 100644 --- a/BaseTools/Source/Python/Common/BuildToolError.py +++ b/BaseTools/Source/Python/Common/BuildToolError.py @@ -68,6 +68,8 @@ IO_UNKNOWN_ERROR = 0x6FFF COMMAND_FAILURE = 0x7000 +PERMISSION_FAILURE = 0x8000 + CODE_ERROR = 0xC0DE AUTOGEN_ERROR = 0xF000 diff --git a/BaseTools/Source/Python/Common/Misc.py b/BaseTools/Source/Python/Common/Misc.py index 7498d9e1ee..0540636988 100644 --- a/BaseTools/Source/Python/Common/Misc.py +++ b/BaseTools/Source/Python/Common/Misc.py @@ -252,7 +252,15 @@ def SaveFileOnChange(File, Content, IsBinaryFile=True): except: EdkLogger.error(None, FILE_OPEN_FAILURE, ExtraData=File) - CreateDirectory(os.path.dirname(File)) + DirName = os.path.dirname(File) + if not CreateDirectory(DirName): + EdkLogger.error(None, FILE_CREATE_FAILURE, "Could not create directory %s" % DirName) + else: + if DirName == '': + 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: @@ -267,8 +275,8 @@ def SaveFileOnChange(File, Content, IsBinaryFile=True): Fd = open(File, "wb") Fd.write(Content) Fd.close() - except: - EdkLogger.error(None, FILE_CREATE_FAILURE, ExtraData=File) + except IOError, X: + EdkLogger.error(None, FILE_CREATE_FAILURE, ExtraData='IOError %s'%X) return True -- cgit v1.2.3