From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.136; helo=mga12.intel.com; envelope-from=liming.gao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id F3B5C209605BF for ; Mon, 4 Jun 2018 00:04:26 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Jun 2018 00:04:26 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,475,1520924400"; d="scan'208";a="45052374" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by fmsmga008.fm.intel.com with ESMTP; 04 Jun 2018 00:04:26 -0700 Received: from fmsmsx155.amr.corp.intel.com (10.18.116.71) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 4 Jun 2018 00:04:26 -0700 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by FMSMSX155.amr.corp.intel.com (10.18.116.71) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 4 Jun 2018 00:04:25 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.87]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.116]) with mapi id 14.03.0319.002; Mon, 4 Jun 2018 15:04:23 +0800 From: "Gao, Liming" To: "Guo, Dongao" , "edk2-devel@lists.01.org" Thread-Topic: [edk2] [PATCH v2] Formalize source files to follow DOS format Thread-Index: AQHT9yNt2CAvP3aP4Eyl5AsXBvwWOaRPtXSQ Date: Mon, 4 Jun 2018 07:04:22 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E292400@SHSMSX104.ccr.corp.intel.com> References: <1527580881-18168-1-git-send-email-dongao.guo@intel.com> In-Reply-To: <1527580881-18168-1-git-send-email-dongao.guo@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH v2] Formalize source files to follow DOS format X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 Jun 2018 07:04:27 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Dongao: I just meet with the case that is not expected to be modified, such as th= e third party openssl code in CryptoPkg. So, I suggest to add one option to= describe the exception direction name or file name.=20 Thanks Liming >-----Original Message----- >From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of >Dongao Guo >Sent: Tuesday, May 29, 2018 4:01 PM >To: edk2-devel@lists.01.org >Cc: Gao, Liming >Subject: [edk2] [PATCH v2] Formalize source files to follow DOS format > >From: Liming Gao > >V2: >add version,description,copyright. >add flag -v,-q,--append-extensions,--override-extensions,--debug. >-q will omit default output,-v and --debug are not implemented. >add default file extensions. >support input of file path. >support muliple input path. >simplify comment. >change 'pattern'.encode() to b'pattern',I think this will be better. >change naming of variable and function to keep the same with BinToPcd.py > >V1: >FormatDosFiles.py is added to clean up dos source files. It bases on >the rules defined in EDKII C Coding Standards Specification. >5.1.2 Do not use tab characters >5.1.6 Only use CRLF (Carriage Return Line Feed) line endings. >5.1.7 All files must end with CRLF >No trailing white space in one line. (To be added in spec) > >The source files in edk2 project with the below postfix are dos format. >.h .c .nasm .nasmb .asm .S .inf .dec .dsc .fdf .uni .asl .aslc .vfr .idf >.txt .bat .py > >The package maintainer can use this script to clean up all files in his >package. The prefer way is to create one patch per one package. > >Contributed-under: TianoCore Contribution Agreement 1.1 >Signed-off-by: Liming Gao >Signed-off-by: Dongao Guo > >--- > BaseTools/Scripts/FormatDosFiles.py | 94 >+++++++++++++++++++++++++++++++++++++ > 1 file changed, 94 insertions(+) > create mode 100644 BaseTools/Scripts/FormatDosFiles.py > >diff --git a/BaseTools/Scripts/FormatDosFiles.py >b/BaseTools/Scripts/FormatDosFiles.py >new file mode 100644 >index 0000000..fa969ed >--- /dev/null >+++ b/BaseTools/Scripts/FormatDosFiles.py >@@ -0,0 +1,94 @@ >+# @file FormatDosFiles.py >+# This script format the source files to follow dos style. >+# It supports Python2.x and Python3.x both. >+# >+# Copyright (c) 2018, Intel Corporation. All rights reserved.
>+# >+# This program and the accompanying materials >+# are licensed and made available under the terms and conditions of the >BSD License >+# which accompanies this distribution. The full text of the license may= be >found at >+# http://opensource.org/licenses/bsd-license.php >+# >+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" >BASIS, >+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER >EXPRESS OR IMPLIED. >+# >+ >+# >+# Import Modules >+# >+import argparse >+import os >+import os.path >+import re >+import sys >+import copy >+ >+__prog__ =3D 'FormatDosFiles' >+__version__ =3D '%s Version %s' % (__prog__, '0.12 ') >+__copyright__ =3D 'Copyright (c) 2018 3, Intel Corporation. All rights = reserved.' >+__description__ =3D 'Convert source files to meet the EDKII C Coding >Standards Specification.\n' >+DEFAULT_EXT_LIST =3D ['.h', '.c', '.nasm', '.nasmb', '.asm', '.S', '.inf'= , '.dec', '.dsc', >'.fdf', '.uni', '.asl', '.aslc', '.vfr', '.idf', '.txt', '.bat', '.py'] >+ >+#For working in python2 and python3 environment, re pattern should use >binary string, which is bytes type in python3. >+#Because in python3,read from file in binary mode will return bytes type,= and >in python3 bytes type can not be mixed with str type. >+def FormatFile(FilePath, Args): >+ with open(FilePath, 'rb') as Fd: >+ Content =3D Fd.read() >+ Fd.close() >+ # Convert the line endings to CRLF >+ Content =3D re.sub(br'([^\r])\n', br'\1\r\n', Content) >+ Content =3D re.sub(br'^\n', br'\r\n', Content, flags=3Dre.MULTILI= NE) >+ # Add a new empty line if the file is not end with one >+ Content =3D re.sub(br'([^\r\n])$', br'\1\r\n', Content) >+ # Remove trailing white spaces >+ Content =3D re.sub(br'[ \t]+(\r\n)', br'\1', Content, flags=3Dre.= MULTILINE) >+ # Replace '\t' with two spaces >+ Content =3D re.sub(b'\t', b' ', Content) >+ with open(FilePath, 'wb') as Fd: >+ Fd.write(Content) >+ Fd.close() >+ if not Args.Quiet: >+ print(FilePath) >+ >+def FormatFilesInDir(DirPath, ExtList, Args): >+ >+ FileList =3D [] >+ for DirPath, DirNames, FileNames in os.walk(DirPath): >+ for FileName in [f for f in FileNames if any(f.endswith(ext) for = ext in >ExtList)]: >+ FileList.append(os.path.join(DirPath, FileName)) >+ for File in FileList: >+ FormatFile(File, Args) >+ >+if __name__ =3D=3D "__main__": >+ parser =3D >argparse.ArgumentParser(prog=3D__prog__,description=3D__description__ + >__copyright__, conflict_handler =3D 'resolve') >+ >+ parser.add_argument('Path', nargs=3D'+', >+ help=3D'the path for files to be converted.It cou= ld be directory or >file path.') >+ parser.add_argument('--version', action=3D'version', version=3D__vers= ion__) >+ parser.add_argument('--append-extensions', dest=3D'AppendExt', nargs= =3D'+', >+ help=3D'append file extensions filter to default = extensions. >(Example: .txt .c .h)') >+ parser.add_argument('--override-extensions', dest=3D'OverrideExt', >nargs=3D'+', >+ help=3D'override file extensions filter on defaul= t extensions. >(Example: .txt .c .h)') >+ parser.add_argument('-v', '--verbose', dest=3D'Verbose', action=3D'st= ore_true', >+ help=3D'increase output messages') >+ parser.add_argument('-q', '--quiet', dest=3D'Quiet', action=3D'store_= true', >+ help=3D'reduce output messages') >+ parser.add_argument('--debug', dest=3D'Debug', type=3Dint, metavar=3D= '[0-9]', >choices=3Drange(0, 10), default=3D0, >+ help=3D'set debug level') >+ >+ args =3D parser.parse_args() >+ DefaultExt =3D copy.copy(DEFAULT_EXT_LIST) >+ >+ if args.OverrideExt is not None: >+ DefaultExt =3D args.OverrideExt >+ if args.AppendExt is not None: >+ DefaultExt =3D list(set(DefaultExt + args.AppendExt)) >+ >+ for Path in args.Path: >+ if not os.path.exists(Path): >+ print("not exists path: {0}".format(Path)) >+ sys.exit(1) >+ if os.path.isdir(Path): >+ FormatFilesInDir(Path, DefaultExt, args) >+ elif os.path.isfile(Path): >+ FormatFile(Path, args) >-- >2.6.1.windows.1 > >_______________________________________________ >edk2-devel mailing list >edk2-devel@lists.01.org >https://lists.01.org/mailman/listinfo/edk2-devel