from Common.ToolDefClassObject import ToolDefDict\r
from AutoGen.BuildEngine import ToolBuildRule\r
import Common.DataType as DataType\r
-from Common.Misc import PathClass\r
+from Common.Misc import PathClass,CreateDirectory\r
from Common.LongFilePathSupport import OpenLongFilePath as open\r
from Common.MultipleWorkspace import MultipleWorkspace as mws\r
import Common.GlobalData as GlobalData\r
+from Common.BuildToolError import *\r
\r
## Global variables\r
#\r
GenFdsGlobalVariable.SecCmdList.append(' '.join(Cmd).strip())\r
else:\r
SectionData = array('B', [0, 0, 0, 0])\r
- SectionData.fromstring(Ui.encode("utf_16_le"))\r
+ SectionData.fromlist(array('B',Ui.encode('utf-16-le')).tolist())\r
SectionData.append(0)\r
SectionData.append(0)\r
Len = len(SectionData)\r
GenFdsGlobalVariable.SectionHeader.pack_into(SectionData, 0, Len & 0xff, (Len >> 8) & 0xff, (Len >> 16) & 0xff, 0x15)\r
- SaveFileOnChange(Output, SectionData.tostring())\r
+\r
+\r
+ DirName = os.path.dirname(Output)\r
+ if not CreateDirectory(DirName):\r
+ EdkLogger.error(None, FILE_CREATE_FAILURE, "Could not create directory %s" % DirName)\r
+ else:\r
+ if DirName == '':\r
+ DirName = os.getcwd()\r
+ if not os.access(DirName, os.W_OK):\r
+ EdkLogger.error(None, PERMISSION_FAILURE, "Do not have write permission on directory %s" % DirName)\r
+\r
+ try:\r
+ with open(Output, "wb") as Fd:\r
+ SectionData.tofile(Fd)\r
+ Fd.flush()\r
+ except IOError as X:\r
+ EdkLogger.error(None, FILE_CREATE_FAILURE, ExtraData='IOError %s' % X)\r
\r
elif Ver:\r
Cmd += ("-n", Ver)\r