## @file\r
# This file is used to be the main entrance of ECC tool\r
#\r
-# Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
# This program and the accompanying materials\r
# are licensed and made available under the terms and conditions of the BSD License\r
# which accompanies this distribution. The full text of the license may be found at\r
##\r
# Import Modules\r
#\r
+from __future__ import absolute_import\r
import Common.LongFilePathOs as os, time, glob, sys\r
import Common.EdkLogger as EdkLogger\r
-import Database\r
-import EccGlobalData\r
-from MetaDataParser import *\r
+from . import Database\r
+from . import EccGlobalData\r
+from .MetaDataParser import *\r
from optparse import OptionParser\r
-from Configuration import Configuration\r
-from Check import Check\r
+from .Configuration import Configuration\r
+from .Check import Check\r
import Common.GlobalData as GlobalData\r
\r
-from Common.String import NormPath\r
+from Common.StringUtils import NormPath\r
from Common.BuildVersion import gBUILD_VERSION\r
from Common import BuildToolError\r
from Common.Misc import PathClass\r
from Common.Misc import DirCache\r
-from MetaFileWorkspace.MetaFileParser import DscParser\r
-from MetaFileWorkspace.MetaFileParser import DecParser\r
-from MetaFileWorkspace.MetaFileParser import InfParser\r
-from MetaFileWorkspace.MetaFileParser import Fdf\r
-from MetaFileWorkspace.MetaFileTable import MetaFileStorage\r
-import c\r
+from .MetaFileWorkspace.MetaFileParser import DscParser\r
+from .MetaFileWorkspace.MetaFileParser import DecParser\r
+from .MetaFileWorkspace.MetaFileParser import InfParser\r
+from .MetaFileWorkspace.MetaFileParser import Fdf\r
+from .MetaFileWorkspace.MetaFileTable import MetaFileStorage\r
+from . import c\r
import re, string\r
-from Exception import *\r
+from .Exception import *\r
from Common.LongFilePathSupport import OpenLongFilePath as open\r
from Common.MultipleWorkspace import MultipleWorkspace as mws\r
\r
class Ecc(object):\r
def __init__(self):\r
# Version and Copyright\r
- self.VersionNumber = ("1.0" + " Build " + gBUILD_VERSION)
+ self.VersionNumber = ("1.0" + " Build " + gBUILD_VERSION)\r
self.Version = "%prog Version " + self.VersionNumber\r
- self.Copyright = "Copyright (c) 2009 - 2016, Intel Corporation All rights reserved."
+ self.Copyright = "Copyright (c) 2009 - 2018, Intel Corporation All rights reserved."\r
\r
self.InitDefaultConfigIni()\r
self.OutputFile = 'output.txt'\r
\r
# Parse the options and args\r
self.ParseOption()\r
- EdkLogger.info(time.strftime("%H:%M:%S, %b.%d %Y ", time.localtime()) + "[00:00]" + "\n")
- \r
+ EdkLogger.info(time.strftime("%H:%M:%S, %b.%d %Y ", time.localtime()) + "[00:00]" + "\n")\r
+\r
#\r
# Check EFI_SOURCE (Edk build convention). EDK_SOURCE will always point to ECP\r
#\r
WorkspaceDir = os.path.normcase(os.path.normpath(os.environ["WORKSPACE"]))\r
os.environ["WORKSPACE"] = WorkspaceDir\r
- \r
+\r
# set multiple workspace\r
PackagesPath = os.getenv("PACKAGES_PATH")\r
mws.setWs(WorkspaceDir, PackagesPath)\r
- \r
+\r
if "ECP_SOURCE" not in os.environ:\r
os.environ["ECP_SOURCE"] = mws.join(WorkspaceDir, GlobalData.gEdkCompatibilityPkg)\r
if "EFI_SOURCE" not in os.environ:\r
EfiSourceDir = os.path.normcase(os.path.normpath(os.environ["EFI_SOURCE"]))\r
EdkSourceDir = os.path.normcase(os.path.normpath(os.environ["EDK_SOURCE"]))\r
EcpSourceDir = os.path.normcase(os.path.normpath(os.environ["ECP_SOURCE"]))\r
- \r
+\r
os.environ["EFI_SOURCE"] = EfiSourceDir\r
os.environ["EDK_SOURCE"] = EdkSourceDir\r
os.environ["ECP_SOURCE"] = EcpSourceDir\r
- \r
+\r
GlobalData.gWorkspace = WorkspaceDir\r
GlobalData.gEfiSource = EfiSourceDir\r
GlobalData.gEdkSource = EdkSourceDir\r
GlobalData.gGlobalDefines["EFI_SOURCE"] = EfiSourceDir\r
GlobalData.gGlobalDefines["EDK_SOURCE"] = EdkSourceDir\r
GlobalData.gGlobalDefines["ECP_SOURCE"] = EcpSourceDir\r
- \r
- EdkLogger.info("Loading ECC configuration ... done")
+\r
+ EdkLogger.info("Loading ECC configuration ... done")\r
# Generate checkpoints list\r
EccGlobalData.gConfig = Configuration(self.ConfigFile)\r
\r
# Get files real name in workspace dir\r
#\r
GlobalData.gAllFiles = DirCache(GlobalData.gWorkspace)\r
- \r
+\r
# Build ECC database\r
# self.BuildDatabase()\r
self.DetectOnlyScanDirs()\r
- \r
+\r
# Start to check\r
self.Check()\r
\r
EdkLogger.error("ECC", BuildToolError.OPTION_VALUE_INVALID, ExtraData="Use -f option need to fill specific folders in config.ini file")\r
else:\r
self.BuildDatabase()\r
- \r
- \r
+\r
+\r
## BuildDatabase\r
#\r
# Build the database for target\r
EccGlobalData.gDb.TblReport.Create()\r
\r
# Build database\r
- if self.IsInit: \r
+ if self.IsInit:\r
if self.ScanMetaData:\r
EdkLogger.quiet("Building database for Meta Data File ...")\r
self.BuildMetaDataFileDatabase(SpeciDirs)\r
if self.ScanSourceCode:\r
EdkLogger.quiet("Building database for Meta Data File Done!")\r
- if SpeciDirs == None:\r
+ if SpeciDirs is None:\r
c.CollectSourceCodeDataIntoDB(EccGlobalData.gTarget)\r
else:\r
for specificDir in SpeciDirs:\r
#\r
def BuildMetaDataFileDatabase(self, SpecificDirs = None):\r
ScanFolders = []\r
- if SpecificDirs == None:\r
+ if SpecificDirs is None:\r
ScanFolders.append(EccGlobalData.gTarget)\r
else:\r
- for specificDir in SpecificDirs: \r
+ for specificDir in SpecificDirs:\r
ScanFolders.append(os.path.join(EccGlobalData.gTarget, specificDir))\r
EdkLogger.quiet("Building database for meta data files ...")\r
Op = open(EccGlobalData.gConfig.MetaDataFileCheckPathOfGenerateFileList, 'w+')\r
# symlinks to directories are treated as directories\r
Dirs.remove(Dir)\r
Dirs.append(Dirname)\r
- \r
+\r
for File in Files:\r
if len(File) > 4 and File[-4:].upper() == ".DEC":\r
Filename = os.path.normpath(os.path.join(Root, File))\r
self.SetLogLevel(Options)\r
\r
# Set other options\r
- if Options.ConfigFile != None:\r
+ if Options.ConfigFile is not None:\r
self.ConfigFile = Options.ConfigFile\r
- if Options.OutputFile != None:\r
+ if Options.OutputFile is not None:\r
self.OutputFile = Options.OutputFile\r
- if Options.ReportFile != None:\r
+ if Options.ReportFile is not None:\r
self.ReportFile = Options.ReportFile\r
- if Options.ExceptionFile != None:\r
+ if Options.ExceptionFile is not None:\r
self.ExceptionFile = Options.ExceptionFile\r
- if Options.Target != None:\r
+ if Options.Target is not None:\r
if not os.path.isdir(Options.Target):\r
EdkLogger.error("ECC", BuildToolError.OPTION_VALUE_INVALID, ExtraData="Target [%s] does NOT exist" % Options.Target)\r
else:\r
else:\r
EdkLogger.warn("Ecc", EdkLogger.ECC_ERROR, "The target source tree was not specified, using current WORKSPACE instead!")\r
EccGlobalData.gTarget = os.path.normpath(os.getenv("WORKSPACE"))\r
- if Options.keepdatabase != None:\r
+ if Options.keepdatabase is not None:\r
self.IsInit = False\r
- if Options.metadata != None and Options.sourcecode != None:\r
+ if Options.metadata is not None and Options.sourcecode is not None:\r
EdkLogger.error("ECC", BuildToolError.OPTION_CONFLICT, ExtraData="-m and -s can't be specified at one time")\r
- if Options.metadata != None:\r
+ if Options.metadata is not None:\r
self.ScanSourceCode = False\r
- if Options.sourcecode != None:\r
+ if Options.sourcecode is not None:\r
self.ScanMetaData = False\r
- if Options.folders != None:\r
+ if Options.folders is not None:\r
self.OnlyScan = True\r
\r
## SetLogLevel\r
# @param Option: The option list including log level setting\r
#\r
def SetLogLevel(self, Option):\r
- if Option.verbose != None:\r
+ if Option.verbose is not None:\r
EdkLogger.SetLevel(EdkLogger.VERBOSE)\r
- elif Option.quiet != None:\r
+ elif Option.quiet is not None:\r
EdkLogger.SetLevel(EdkLogger.QUIET)\r
- elif Option.debug != None:\r
+ elif Option.debug is not None:\r
EdkLogger.SetLevel(Option.debug + 1)\r
else:\r
EdkLogger.SetLevel(EdkLogger.INFO)\r