On 2016-03-08 06:22:28, Carsey, Jaben wrote:
>
>
> > On Mar 7, 2016, at 7:16 PM, Jordan Justen <[email protected]> wrote:
> >
> > The script is updated to support both python 2.7 and python 3.
> >
> > Contributed-under: TianoCore Contribution Agreement 1.0
> > Signed-off-by: Jordan Justen <[email protected]>
> > Cc: Yonghong Zhu <[email protected]>
> > Cc: Liming Gao <[email protected]>
> > Cc: Erik Bjorge <[email protected]>
> > ---
> > BaseTools/Scripts/ConvertMasmToNasm.py | 87
> > ++++++++++++++++++----------------
> > 1 file changed, 46 insertions(+), 41 deletions(-)
> >
> > diff --git a/BaseTools/Scripts/ConvertMasmToNasm.py
> > b/BaseTools/Scripts/ConvertMasmToNasm.py
> > index 8288972..98e1fac 100755
> > --- a/BaseTools/Scripts/ConvertMasmToNasm.py
> > +++ b/BaseTools/Scripts/ConvertMasmToNasm.py
> > @@ -12,15 +12,18 @@
> > # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR
> > IMPLIED.
> > #
> >
> > +from __future__ import print_function
> > +
> > #
> > # Import Modules
> > #
> > import argparse
> > +import io
> > import os.path
> > import re
> > -import StringIO
> > import subprocess
> > import sys
> > +from io import open
>
> Why import all of io, then import some again?
>
This allows the code to call the function as open(), rather than
io.open(). I can update all the calls to io.open() pretty easily
instead.
-Jordan
> >
> >
> > class UnsupportedConversion(Exception):
> > @@ -152,12 +155,12 @@ class CommonUtils:
> > (stdout, stderr) = p.communicate(pipeIn)
> > if checkExitCode:
> > if p.returncode != 0:
> > - print 'command:', ' '.join(cmd)
> > - print 'stdout:', stdout
> > - print 'stderr:', stderr
> > - print 'return:', p.returncode
> > + print('command:', ' '.join(cmd))
> > + print('stdout:', stdout)
> > + print('stderr:', stderr)
> > + print('return:', p.returncode)
> > assert p.returncode == 0
> > - return stdout
> > + return stdout.decode('utf-8', 'ignore')
> >
> > def FileUpdated(self, path):
> > if not self.git or not self.gitdir:
> > @@ -181,7 +184,7 @@ class CommonUtils:
> > return
> >
> > if not self.args.quiet:
> > - print 'Committing: Conversion of', dst
> > + print('Committing: Conversion of', dst)
> >
> > prefix = ' '.join(filter(lambda a: a, [pkg, module]))
> > message = ''
> > @@ -195,6 +198,7 @@ class CommonUtils:
> > message += 'Contributed-under: TianoCore Contribution Agreement
> > 1.0\n'
> > assert(self.gitemail is not None)
> > message += 'Signed-off-by: %s\n' % self.gitemail
> > + message = message.encode('utf-8', 'ignore')
> >
> > cmd = ('git', 'commit', '-F', '-')
> > self.RunAndCaptureOutput(cmd, pipeIn=message)
> > @@ -226,21 +230,20 @@ class ConvertAsmFile(CommonUtils):
> >
> > self.inputFileBase = os.path.basename(self.inputFilename)
> > self.outputFileBase = os.path.basename(self.outputFilename)
> > - if self.outputFilename == '-' and not self.diff:
> > - self.output = sys.stdout
> > - else:
> > - self.output = StringIO.StringIO()
> > + self.output = io.BytesIO()
> > if not self.args.quiet:
> > dirpath, src = os.path.split(self.inputFilename)
> > dirpath = self.RootRelative(dirpath)
> > dst = os.path.basename(self.outputFilename)
> > - print 'Converting:', dirpath, src, '->', dst
> > + print('Converting:', dirpath, src, '->', dst)
> > lines = open(self.inputFilename).readlines()
> > self.Convert(lines)
> > - if self.outputFilename == '-':
> > - if self.diff:
> > - sys.stdout.write(self.output.getvalue())
> > - self.output.close()
> > + if self.outputFilename == '-' and not self.diff:
> > + output_data = self.output.getvalue()
> > + if sys.version_info >= (3, 0):
> > + output_data = output_data.decode('utf-8', 'ignore')
> > + sys.stdout.write(output_data)
> > + self.output.close()
> > else:
> > f = open(self.outputFilename, 'wb')
> > f.write(self.output.getvalue())
> > @@ -521,18 +524,18 @@ class ConvertAsmFile(CommonUtils):
> > return '.%d' % count
> >
> > def EmitString(self, string):
> > - self.output.write(string)
> > + self.output.write(string.encode('utf-8', 'ignore'))
> >
> > def EmitLineWithDiff(self, old, new):
> > newLine = (self.indent + new).rstrip()
> > if self.diff:
> > if old is None:
> > - print '+%s' % newLine
> > + print('+%s' % newLine)
> > elif newLine != old:
> > - print '-%s' % old
> > - print '+%s' % newLine
> > + print('-%s' % old)
> > + print('+%s' % newLine)
> > else:
> > - print '', newLine
> > + print('', newLine)
> > if newLine != '':
> > self.newAsmEmptyLineCount = 0
> > self.EmitString(newLine + '\r\n')
> > @@ -565,7 +568,7 @@ class ConvertAsmFile(CommonUtils):
> > if emitNewLine:
> > self.EmitLine(newLine.rstrip())
> > elif self.diff:
> > - print '-%s' % self.originalLine
> > + print('-%s' % self.originalLine)
> >
> > leaRe = re.compile(r'''
> > (lea \s+) ([\w@][\w@0-9]*) \s* , \s* (\S
> > (?:.*\S)?)
> > @@ -759,7 +762,7 @@ class ConvertInfFile(CommonUtils):
> > def ScanInfAsmFiles(self):
> > src = self.inf
> > assert os.path.isfile(src)
> > - f = open(src)
> > + f = open(src, 'rt')
> > self.lines = f.readlines()
> > f.close()
> >
> > @@ -801,17 +804,16 @@ class ConvertInfFile(CommonUtils):
> > unsupportedArchCount = 0
> > for dst in self:
> > didSomething = False
> > - fileChanged = self.UpdateInfAsmFile(dst)
> > try:
> > self.UpdateInfAsmFile(dst)
> > didSomething = True
> > except UnsupportedConversion:
> > if not self.args.quiet:
> > - print 'MASM=>NASM conversion unsupported for', dst
> > + print('MASM=>NASM conversion unsupported for', dst)
> > notConverted.append(dst)
> > except NoSourceFile:
> > if not self.args.quiet:
> > - print 'Source file missing for', reldst
> > + print('Source file missing for', reldst)
> > notConverted.append(dst)
> > except UnsupportedArch:
> > unsupportedArchCount += 1
> > @@ -821,9 +823,9 @@ class ConvertInfFile(CommonUtils):
> > if len(notConverted) > 0 and not self.args.quiet:
> > for dst in notConverted:
> > reldst = self.RootRelative(dst)
> > - print 'Unabled to convert', reldst
> > + print('Unabled to convert', reldst)
> > if unsupportedArchCount > 0 and not self.args.quiet:
> > - print 'Skipped', unsupportedArchCount, 'files based on
> > architecture'
> > + print('Skipped', unsupportedArchCount, 'files based on
> > architecture')
> >
> > def UpdateInfAsmFile(self, dst, IgnoreMissingAsm=False):
> > infPath = os.path.split(os.path.realpath(self.inf))[0]
> > @@ -842,8 +844,9 @@ class ConvertInfFile(CommonUtils):
> >
> > lastLine = ''
> > fileChanged = False
> > - for i in range(len(self.lines)):
> > - line = self.lines[i].rstrip()
> > + i = 0
> > + for line in self.lines:
> > + line = line.rstrip()
> > updatedLine = line
> > for src in self.dstToSrc[dst]:
> > assert self.srcToDst[src] == dst
> > @@ -855,22 +858,24 @@ class ConvertInfFile(CommonUtils):
> > if lastLine.strip() == updatedLine.strip():
> > self.lines[i] = None
> > else:
> > - self.lines[i] = updatedLine + '\r\n'
> > + self.lines[i] = updatedLine + '\n'
> >
> > if self.diff:
> > if lineChanged:
> > - print '-%s' % line
> > + print('-%s' % line)
> > if self.lines[i] is not None:
> > - print '+%s' % updatedLine
> > + print('+%s' % updatedLine)
> > else:
> > - print '', line
> > + print('', line)
> >
> > fileChanged |= lineChanged
> > if self.lines[i] is not None:
> > lastLine = self.lines[i]
> >
> > + i += 1
> > +
> > if fileChanged:
> > - self.lines = filter(lambda l: l is not None, self.lines)
> > + self.lines = list(filter(lambda l: l is not None, self.lines))
> >
> > for src in self.dstToSrc[dst]:
> > if not src.endswith('.asm'):
> > @@ -879,7 +884,7 @@ class ConvertInfFile(CommonUtils):
> > self.RemoveFile(fullSrc)
> >
> > if fileChanged:
> > - f = open(self.inf, 'wb')
> > + f = open(self.inf, 'w', newline='\r\n')
> > f.writelines(self.lines)
> > f.close()
> > self.FileUpdated(self.inf)
> > @@ -917,11 +922,11 @@ class ConvertInfFiles(CommonUtils):
> > didSomething = True
> > except UnsupportedConversion:
> > if not self.args.quiet:
> > - print 'MASM=>NASM conversion unsupported for', reldst
> > + print('MASM=>NASM conversion unsupported for', reldst)
> > notConverted.append(dst)
> > except NoSourceFile:
> > if not self.args.quiet:
> > - print 'Source file missing for', reldst
> > + print('Source file missing for', reldst)
> > notConverted.append(dst)
> > except UnsupportedArch:
> > unsupportedArchCount += 1
> > @@ -931,9 +936,9 @@ class ConvertInfFiles(CommonUtils):
> > if len(notConverted) > 0 and not self.args.quiet:
> > for dst in notConverted:
> > reldst = self.RootRelative(dst)
> > - print 'Unabled to convert', reldst
> > + print('Unabled to convert', reldst)
> > if unsupportedArchCount > 0 and not self.args.quiet:
> > - print 'Skipped', unsupportedArchCount, 'files based on
> > architecture'
> > + print('Skipped', unsupportedArchCount, 'files based on
> > architecture')
> >
> >
> > class ConvertDirectories(CommonUtils):
> > @@ -968,7 +973,7 @@ class ConvertAsmApp(CommonUtils):
> > src = self.args.source
> > dst = self.args.dest
> > if self.infmode:
> > - ConvertInfFiles(src, self)
> > + ConvertInfFiles((src,), self)
> > elif self.dirmode:
> > ConvertDirectories((src,), self)
> > elif not self.dirmode:
> > --
> > 2.7.0
> >
> > _______________________________________________
> > edk2-devel mailing list
> > [email protected]
> > https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel