diff -r 0cb2248d0edc -r ebe3f8f03b59 apicompatanamdw/compatanalysercmd/checkbc/CheckBC.py --- a/apicompatanamdw/compatanalysercmd/checkbc/CheckBC.py Thu Apr 22 17:15:08 2010 +0530 +++ b/apicompatanamdw/compatanalysercmd/checkbc/CheckBC.py Mon Apr 26 16:28:13 2010 +0530 @@ -22,16 +22,14 @@ import subprocess import platform import urllib + import xml.dom.minidom except ImportError: python_error() #-------------------------Hardcoded values----------------------------------------- -#Currently hardcoded values, these will be moved to a metadata file later -#data version denotes compatibility between the tool and carbide plugin -DATA_VERSION = "6" #tool version denotes the version of the core tools package -TOOL_VERSION = "2.8.3" -TOOL_DATE = "1st December 2009" +TOOL_VERSION = "2.8.4" +TOOL_DATE = "16th February 2010" #server to be used for downloading Core tools package and knownissues SERVER_PATH = "http://" @@ -47,14 +45,50 @@ EXEC_PATH = TOOL_DIR + "bin" + os.sep REPORT_PATH = TOOL_DIR + "reports" + os.sep DEFAULT_ISSUES_FILE = TOOL_DIR + "data" + os.sep + "knownissues.xml" -s60_build_targets = [ 'armv5', 'armv5_abiv2', 'armv6', 'armv6t2', 'armv7a' ] +GLOBAL_DATA_FILE = TOOL_DIR + "global_data.xml" tool_chain = ['gcc','gcce','rvct'] -sdk_version = [ '5.0','5.1','5.2','sf1','sf2'] + +DATA_VERSION = '' +ALL_HEADER_SET = '' +sdk_version = [] +s60_build_targets = [] +sys_includes = {} + +doc = xml.dom.minidom.parse(GLOBAL_DATA_FILE) + +#data version denotes compatibility between the tool and carbide plugin +#Read dataversion from global_data.xml +DATA_VERSION = doc.getElementsByTagName("dataversion")[0].childNodes[0].data + +#Read supported filetypes in header analyser from global_data.xml +for filetype in doc.getElementsByTagName("filetypes")[0].getElementsByTagName("type"): + if ALL_HEADER_SET != '': + ALL_HEADER_SET += ';' + ALL_HEADER_SET += filetype.childNodes[0].data + +#Read supported sdk versions from global_data.xml +for version in doc.getElementsByTagName("supportedversions")[0].getElementsByTagName("version"): + sdk_version.append(version.childNodes[0].data) + +#Read supported build targets from global_data.xml +for buildtarget in doc.getElementsByTagName("buildtargets")[0].getElementsByTagName("target"): + s60_build_targets.append(buildtarget.childNodes[0].data) + +#Read system include paths for supported sdk versions from global_data.xml +for node in doc.getElementsByTagName("sys_includes"): + ver = node.getAttribute("version") + includes = [] + for inc in node.getElementsByTagName("inc"): + includes.append(inc.childNodes[0].data) + sys_includes[ver] = includes #dictionary elements which hold the platform data(CDS) and forced header(symbian macros) information #these are available only when the \data and \bin folders respectively are avaliable if os.path.exists( DATA_PATH ): platformdata = { + "3.0": DATA_PATH + "s60_platform_data_30.xml", + "3.1": DATA_PATH + "s60_platform_data_31.xml", + "3.2": DATA_PATH + "s60_platform_data_32.xml", "5.0": DATA_PATH + "s60_platform_data_50.xml", "5.1": DATA_PATH + "s60_platform_data_51.xml", "5.2": DATA_PATH + "s60_platform_data_52.xml", @@ -66,6 +100,9 @@ if os.path.exists( EXEC_PATH ): forcedheadersdata = { + "3.0": EXEC_PATH + "forced_9.1.h", + "3.1": EXEC_PATH + "forced_9.2.h", + "3.2": EXEC_PATH + "forced_9.3.h", "5.0": EXEC_PATH + "forced_9.4.h", "5.0v2": EXEC_PATH + "forced_9.4v2.h", "5.1": EXEC_PATH + "forced_9.4v2.h", @@ -78,6 +115,9 @@ if os.path.exists( DATA_PATH ): dllXMLdata = { + "3.0": DATA_PATH + "s60_dll_data_30.xml", + "3.1": DATA_PATH + "s60_dll_data_31.xml", + "3.2": DATA_PATH + "s60_dll_data_32.xml", "5.0": DATA_PATH + "s60_dll_data_50.xml", "5.1": DATA_PATH + "s60_dll_data_51.xml", "5.2": DATA_PATH + "s60_dll_data_52.xml", @@ -87,31 +127,6 @@ else: dllXMLdata = {} -#Lists to hold platform dependant system include paths -sys_hdr_30 = [ '', 'libc', 'oem', 'ecom' ] - -sys_hdr_32 = ['middleware', 'domain'+ os.sep +'middleware', 'osextensions', 'domain'+ os.sep +'osextensions', 'applications', 'domain'+ os.sep +'applications'] -sys_hdr_32.extend(sys_hdr_30) - -sys_hdr_50 = ['domain'+ os.sep +'middleware'+ os.sep + 'loc', 'domain'+ os.sep +'osextensions'+ os.sep +'loc', 'domain'+ os.sep +'applications' + os.sep + 'loc', - 'domain'+ os.sep +'middleware'+ os.sep +'loc'+ os.sep +'sc', 'domain'+ os.sep +'osextensions'+ os.sep +'loc'+ os.sep +'sc', - 'domain'+ os.sep +'applications'+ os.sep +'loc'+ os.sep +'sc'] -sys_hdr_50.extend(sys_hdr_30) -sys_hdr_50.extend(sys_hdr_32) - -sys_hdr_51 = ['mw', 'platform'+ os.sep + 'mw', 'platform', 'app','platform'+ os.sep + 'app', 'platform'+ os.sep + 'loc', 'platform'+ os.sep + 'mw' + os.sep + 'loc', - 'platform'+ os.sep + 'app' + os.sep + 'loc', 'platform'+ os.sep + 'loc' + os.sep + 'sc', 'platform'+ os.sep + 'mw' + os.sep + 'loc' + os.sep +'sc', - 'platform'+ os.sep + 'app' + os.sep + 'loc' + os.sep +'sc'] -sys_hdr_51.extend(sys_hdr_50) - -sys_includes = { - "5.0": sys_hdr_50, - "5.1": sys_hdr_51, - "5.2": sys_hdr_51, - "SF1": sys_hdr_51, - "SF2": sys_hdr_51 - } - #set of binaries in the Core tools set, this is windows specific, to be added for linux support if os.name == 'nt': HA_SET = [ EXEC_PATH+"ha.exe", EXEC_PATH+"ha_gccxml_cc1plus.exe", EXEC_PATH+"libxerces-c2_7_0.dll" ] @@ -126,9 +141,6 @@ HEADER_REPORT = "Headers_CompatibilityReport" LIBRARY_REPORT = "Libraries_CompatibilityReport" -#-------------------------Global Definitions------------------------------------------ -#defines set of file types analysed supported in header analyser -ALL_HEADER_SET = '*.h;*.hrh;*.mbg;*.rsg;*.pan;*.hpp;*.rh' #true if checkbc is called from carbide plugin, #this make additional info available to STDOUT and STDEERR CARBIDE_PLUGIN = False @@ -326,9 +338,9 @@ for i in sys_includes[ip_data["BASELINE_SDK_S60_VERSION"]]: if(ip_data["BASELINE_SDK_DIR"] == os.sep): - tmp.append( os.sep + "epoc32" + os.sep + "include" + os.sep + i ) + tmp.append( os.sep + i ) else: - tmp.append( ip_data["BASELINE_SDK_DIR"] + os.sep + "epoc32" + os.sep + "include" + os.sep + i ) + tmp.append( ip_data["BASELINE_SDK_DIR"] + os.sep + i ) for i in tmp: try: @@ -354,9 +366,9 @@ for i in sys_includes[ip_data["CURRENT_SDK_S60_VERSION"]]: if(ip_data["CURRENT_SDK_DIR"] == os.sep): - tmp.append( os.sep + "epoc32" + os.sep + "include" + os.sep + i ) + tmp.append( os.sep + i ) else: - tmp.append( ip_data["CURRENT_SDK_DIR"] + os.sep + "epoc32" + os.sep + "include" + os.sep + i ) + tmp.append( ip_data["CURRENT_SDK_DIR"] + os.sep + i ) for i in tmp: try: @@ -580,36 +592,15 @@ if not getdata( ip_data, "CURRENT_SDK_DIR"): raise InputError(["confMP", "current importlib directory missing" + os.linesep, False]) - self.args["TEMP"] = ["-temp", quotep( ip_data["TEMP"] )] - - if getdata( ip_data, "BASELINE_BUILDTYPE"): - validateBulidType(ip_data["BASELINE_BUILDTYPE"],True) - basebldtype = ip_data["BASELINE_BUILDTYPE"] - else: - basebldtype = 'urel' - - if getdata( ip_data, "CURRENT_BUILDTYPE"): - validateBulidType(ip_data["CURRENT_BUILDTYPE"],False) - curbldtype = ip_data["CURRENT_BUILDTYPE"] - else: - curbldtype = 'urel' - - if basebldtype == "" and curbldtype == "": - basebldtype = 'urel' - curbldtype = 'urel' - else: - if basebldtype == "": - basebldtype = curbldtype - else: - curbldtype = basebldtype + self.args["TEMP"] = ["-temp", quotep( ip_data["TEMP"] )] if getdata( dllXMLdata, ip_data["BASELINE_SDK_S60_VERSION"] ): baseDlldata = dllXMLdata[ip_data["BASELINE_SDK_S60_VERSION"]] if getdata( dllXMLdata, ip_data["CURRENT_SDK_S60_VERSION"] ): currDlldata = dllXMLdata[ip_data["CURRENT_SDK_S60_VERSION"]] - dbasebuild = GetBuildTarget(ip_data["BASELINE_SDK_DIR"],validate(baseDlldata),ip_data["TEMP"],basebldtype) - dcurrentbuild = GetBuildTarget(ip_data["CURRENT_SDK_DIR"],validate(currDlldata),ip_data["TEMP"],curbldtype) + dbasebuild = GetBuildTarget(ip_data["BASELINE_SDK_DIR"],validate(baseDlldata),ip_data["TEMP"]) + dcurrentbuild = GetBuildTarget(ip_data["CURRENT_SDK_DIR"],validate(currDlldata),ip_data["TEMP"]) if getdata( ip_data, "BASELINE_BUILDTARGET"): basebuild = ip_data["BASELINE_BUILDTARGET"] @@ -662,9 +653,9 @@ else: for target in basebuild.split(';'): if(ip_data["BASELINE_SDK_DIR"] == os.sep): - dllBasetmp.append(os.sep + 'epoc32' + os.sep + 'release' + os.sep + target + os.sep + basebldtype) + dllBasetmp.append(os.sep + 'epoc32' + os.sep + 'release' + os.sep + target + os.sep + 'urel') else: - dllBasetmp.append(ip_data["BASELINE_SDK_DIR"] + os.sep + 'epoc32' + os.sep + 'release' + os.sep + target + os.sep + basebldtype) + dllBasetmp.append(ip_data["BASELINE_SDK_DIR"] + os.sep + 'epoc32' + os.sep + 'release' + os.sep + target + os.sep + 'urel') if getdata( ip_data, "BASELINE_IMPORTDLLS"): if(ip_data["BASELINE_IMPORTDLLS"] == os.sep): @@ -718,9 +709,9 @@ else: for target in currentbuild.split(';'): if(ip_data["CURRENT_SDK_DIR"] == os.sep): - dllCurrtmp.append(os.sep + 'epoc32' + os.sep + 'release' + os.sep + target + os.sep + curbldtype) + dllCurrtmp.append(os.sep + 'epoc32' + os.sep + 'release' + os.sep + target + os.sep + 'urel') else: - dllCurrtmp.append(ip_data["CURRENT_SDK_DIR"] + os.sep + 'epoc32' + os.sep + 'release' + os.sep + target + os.sep + curbldtype) + dllCurrtmp.append(ip_data["CURRENT_SDK_DIR"] + os.sep + 'epoc32' + os.sep + 'release' + os.sep + target + os.sep + 'urel') if getdata( ip_data, "CURRENT_IMPORTDLLS"): if(ip_data["CURRENT_IMPORTDLLS"] == os.sep): @@ -1130,7 +1121,7 @@ return '' #return default build target from Rnd SDK and "" from Public SDK -def GetBuildTarget(sdk,dlldata,temp_path,bld_type): +def GetBuildTarget(sdk,dlldata,temp_path): bldtarget = "" path = "" xmlFile = open (dlldata); @@ -1139,11 +1130,12 @@ dll_file = temp_path + os.sep + "dll.txt" dir_err_file = temp_path + os.sep + "dir_err.txt" + for target in s60_build_targets: if sdk == os.sep: - path = quote(os.sep+'epoc32'+os.sep+'release'+os.sep+target+os.sep+bld_type+os.sep) + path = quote(os.sep+'epoc32'+os.sep+'release'+os.sep+target+os.sep+'urel'+os.sep) else: - path = quote(sdk+os.sep+'epoc32'+os.sep+'release'+os.sep+target+os.sep+bld_type+os.sep) + path = quote(validateTargetPath(sdk+os.sep+'epoc32'+os.sep+'release'+os.sep+target+os.sep+'urel')+os.sep) if not os.path.exists(path): pass @@ -1208,24 +1200,11 @@ else: raise InputError(["confIP", "CURRENT_BUILDTARGET\n", False]) -def validateBulidType(buildtype,baseline): - bldTypelist = ['urel','udeb'] - found = False - for i in bldTypelist: - if(i == buildtype.lower()): - found = True - break - if found == False: - if( baseline == True): - raise InputError(["confIP", "BASELINE_BUILDTYPE\n", False]) - else: - raise InputError(["confIP", "CURRENT_BUILDTYPE\n", False]) - - - - - - +def validateTargetPath(path): + if not os.path.exists(path): + tmp = os.path.abspath(path) + path = tmp + return os.path.normpath(os.path.abspath(path)) #---------------------------Other funcs---------------------------------------------