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

Reply via email to