apicompatanamdw/compatanalysercmd/checkbc/CheckBC.py
author Maciej Seroka <maciejs@symbian.org>
Mon, 20 Sep 2010 10:04:46 +0100
changeset 11 bdd2944b914b
parent 3 ebe3f8f03b59
child 12 a0eee409ff14
permissions -rw-r--r--
Updated knownissues.xml - wk_37_2010
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     1
#
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     2
# Copyright (c) 2008, 2009 Nokia Corporation and/or its subsidiary(-ies).
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     3
# All rights reserved.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     4
# This component and the accompanying materials are made available
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     5
# under the terms of "Eclipse Public License v1.0"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     6
# which accompanies this distribution, and is available
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     8
#
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     9
# Initial Contributors:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    10
# Nokia Corporation - initial contribution.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    11
#
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    12
# Contributors:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    13
#
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    14
# Description:  End-user Interface for Core Tools execution
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    15
#
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    16
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    17
import sys
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    18
import os
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    19
import re
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    20
#while importing check if all modules are available, else raise error
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    21
try:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    22
	import subprocess
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    23
	import platform
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    24
	import urllib
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    25
	import xml.dom.minidom
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    26
except ImportError:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    27
	python_error()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    28
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    29
#-------------------------Hardcoded values-----------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    30
#tool version denotes the version of the core tools package
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    31
TOOL_VERSION = "2.8.4"
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    32
TOOL_DATE = "16th February 2010"
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    33
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    34
#server to be used for downloading Core tools package and knownissues
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    35
SERVER_PATH = "http://"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    36
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    37
#-------------------------Global values--------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    38
CUR_DIR = os.getcwd()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    39
#used to obtain the path in which checkbc and core tools are placed
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    40
tempStr = os.path.realpath(sys.argv[0]) 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    41
[head,tail] = os.path.split(tempStr )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    42
TOOL_DIR = head + os.sep
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    43
#create the \data and \bin paths which contain the necessary additional headers
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    44
DATA_PATH = TOOL_DIR + "data" + os.sep
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    45
EXEC_PATH = TOOL_DIR + "bin" + os.sep
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    46
REPORT_PATH = TOOL_DIR + "reports" + os.sep
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    47
DEFAULT_ISSUES_FILE = TOOL_DIR + "data" + os.sep + "knownissues.xml"
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    48
GLOBAL_DATA_FILE = TOOL_DIR + "global_data.xml"
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    49
tool_chain = ['gcc','gcce','rvct']
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    50
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    51
DATA_VERSION = ''
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    52
ALL_HEADER_SET = ''
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    53
sdk_version = []
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    54
s60_build_targets = []
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    55
sys_includes = {}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    56
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    57
doc = xml.dom.minidom.parse(GLOBAL_DATA_FILE)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    58
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    59
#data version denotes compatibility between the tool and carbide plugin
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    60
#Read dataversion from global_data.xml
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    61
DATA_VERSION = doc.getElementsByTagName("dataversion")[0].childNodes[0].data
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    62
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    63
#Read supported filetypes in header analyser from global_data.xml
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    64
for filetype in doc.getElementsByTagName("filetypes")[0].getElementsByTagName("type"):
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    65
   if ALL_HEADER_SET != '':
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    66
      ALL_HEADER_SET += ';'
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    67
   ALL_HEADER_SET += filetype.childNodes[0].data
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    68
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    69
#Read supported sdk versions from global_data.xml
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    70
for version in doc.getElementsByTagName("supportedversions")[0].getElementsByTagName("version"):
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    71
   sdk_version.append(version.childNodes[0].data)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    72
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    73
#Read supported build targets from global_data.xml
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    74
for buildtarget in doc.getElementsByTagName("buildtargets")[0].getElementsByTagName("target"):
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    75
   s60_build_targets.append(buildtarget.childNodes[0].data)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    76
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    77
#Read system include paths for supported sdk versions from global_data.xml
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    78
for node in doc.getElementsByTagName("sys_includes"):
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    79
   ver = node.getAttribute("version")
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    80
   includes = []
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    81
   for inc in node.getElementsByTagName("inc"):
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    82
       includes.append(inc.childNodes[0].data)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    83
   sys_includes[ver] = includes     
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    84
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    85
#dictionary elements which hold the platform data(CDS) and forced header(symbian macros) information
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    86
#these are available only when the \data and \bin folders respectively are avaliable
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    87
if os.path.exists( DATA_PATH ):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    88
	platformdata = {
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    89
	"3.0": DATA_PATH + "s60_platform_data_30.xml",
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    90
	"3.1": DATA_PATH + "s60_platform_data_31.xml",
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    91
	"3.2": DATA_PATH + "s60_platform_data_32.xml",
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    92
	"5.0": DATA_PATH + "s60_platform_data_50.xml",
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    93
	"5.1": DATA_PATH + "s60_platform_data_51.xml",
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    94
	"5.2": DATA_PATH + "s60_platform_data_52.xml",
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    95
	"SF1": DATA_PATH + "s60_platform_data_51.xml",
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    96
	"SF2": DATA_PATH + "s60_platform_data_52.xml"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    97
	}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    98
else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    99
	platformdata = {}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   100
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   101
if os.path.exists( EXEC_PATH ):	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   102
	forcedheadersdata = {
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   103
	"3.0": EXEC_PATH + "forced_9.1.h",
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   104
	"3.1": EXEC_PATH + "forced_9.2.h",
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   105
	"3.2": EXEC_PATH + "forced_9.3.h",
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   106
	"5.0": EXEC_PATH + "forced_9.4.h",
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   107
	"5.0v2": EXEC_PATH + "forced_9.4v2.h",
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   108
	"5.1": EXEC_PATH + "forced_9.4v2.h",
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   109
	"5.2": EXEC_PATH + "forced_9.4v2.h",
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   110
	"SF1": EXEC_PATH + "forced_9.4v2.h",
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   111
	"SF2": EXEC_PATH + "forced_9.4v2.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   112
	}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   113
else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   114
	forcedheadersdata = {}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   115
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   116
if os.path.exists( DATA_PATH ):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   117
	dllXMLdata = {
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   118
	"3.0": DATA_PATH + "s60_dll_data_30.xml",
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   119
	"3.1": DATA_PATH + "s60_dll_data_31.xml",
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   120
	"3.2": DATA_PATH + "s60_dll_data_32.xml",
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   121
	"5.0": DATA_PATH + "s60_dll_data_50.xml",
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   122
	"5.1": DATA_PATH + "s60_dll_data_51.xml",
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   123
	"5.2": DATA_PATH + "s60_dll_data_52.xml",
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   124
	"SF1": DATA_PATH + "s60_dll_data_51.xml",
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   125
	"SF2": DATA_PATH + "s60_dll_data_52.xml"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   126
	}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   127
else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   128
	dllXMLdata = {}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   129
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   130
#set of binaries in the Core tools set, this is windows specific, to be added for linux support
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   131
if os.name == 'nt':
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   132
    HA_SET = [ EXEC_PATH+"ha.exe", EXEC_PATH+"ha_gccxml_cc1plus.exe", EXEC_PATH+"libxerces-c2_7_0.dll" ]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   133
    LA_SET = [ EXEC_PATH+"la.exe", EXEC_PATH+"cfilt.exe"  ]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   134
    BCFILTER_SET = [ EXEC_PATH+"bcfilter.exe", EXEC_PATH+"libxerces-c2_7_0.dll" ]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   135
else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   136
    HA_SET = [ EXEC_PATH+"ha", EXEC_PATH+"ha_gccxml_cc1plus", EXEC_PATH+"libxerces-c2_7_0.dll" ]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   137
    LA_SET = [ EXEC_PATH+"la", EXEC_PATH+"cfilt" ]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   138
    BCFILTER_SET = [ EXEC_PATH+"bcfilter", EXEC_PATH+"libxerces-c2_7_0.dll" ]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   139
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   140
#Default report paths
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   141
HEADER_REPORT = "Headers_CompatibilityReport"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   142
LIBRARY_REPORT = "Libraries_CompatibilityReport"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   143
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   144
#true if checkbc is called from carbide plugin,
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   145
#this make additional info available to STDOUT and STDEERR
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   146
CARBIDE_PLUGIN = False
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   147
#-------------------------Error Handling--------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   148
#exhults with a environment error when the installed python version is unsupported
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   149
def python_error():
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   150
	sys.stdout.write("ERROR: Invalid python version")
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   151
	sys.stdout.write("\nPython versions from 2.4 to 3.0 are supported")
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   152
	sys.exit(1)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   153
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   154
#this is the set of possible error values, stored as a dictionary, with the "value" represnting error message
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   155
ErrorCode = {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   156
	"cmdlineIP": [ "\nERROR: Commandline input parameter invalid -- " , 1 ],
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   157
	"cmdlineIS": [ "\nERROR: Commandline parameter syntax invalid -- " , 2 ],
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   158
	"cmdlineMP": [ "\nERROR: Commandline parameter missing -- " , 3 ],
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   159
	"confIS": [ "\nERROR: Invalid syntax in config file -- " , 4 ],
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   160
	"confIP": [ "\nERROR: Invalid parameter in config file -- ", 5 ],
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   161
	"confMP": [ "\nERROR: Missing parameter in config file -- ", 6 ],
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   162
	"confMPath": [ "\nERROR: File/path in config file not found -- ", 7 ],
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   163
	"cmdhelp": [ "", 8],
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   164
	"other": [ "\nGENERAL ERROR: Please recheck the tool inputs.", 9 ]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   165
	}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   166
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   167
#an exception class, need to update this for better error representation
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   168
#value --> holds the error string, #text --> the info text to be displayed
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   169
class InputError(Exception):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   170
	def __init__(self, list):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   171
		self.error = ErrorCode["other"]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   172
		if list[0] in ErrorCode:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   173
			self.error = ErrorCode[ list[0] ]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   174
		self.text = list[1]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   175
		self.use = list[2]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   176
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   177
#the exception handler class which prints out the error message and usage info when required
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   178
class ExHandler:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   179
	def __init__(self, e):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   180
		sys.stdout.write( e.error[0] )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   181
		sys.stdout.write( e.text )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   182
		if e.use:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   183
			usage()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   184
		sys.exit(e.error[1])	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   185
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   186
#displays the usage characteristics for the interface when command is invoked without proper arguments
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   187
def usage():
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   188
	print ""
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   189
	print "Compatibility Analyser v" + TOOL_VERSION + " - " + TOOL_DATE
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   190
	print "Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved."
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   191
	print ""
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   192
	print "Usage: CheckBC <configfile> [-ha/-hm/-hs] [-la/-lm/-ls] [-f] [reportid]"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   193
	print ""
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   194
	print "Where:"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   195
	print "  configfile    Filename of a configuration file"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   196
	print "  -ha           Check all headers"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   197
	print "  -hm FILE      Check multiple headers (FILE = file with list of headers)"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   198
	print "  -hs FILE      Check a single file (FILE = header)"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   199
	print "  -la           Check all libraries"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   200
	print "  -lm FILE      Check multiple libraries (FILE = file with list of libraries)"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   201
	print "  -ls FILE      Check a single file (FILE = library)"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   202
	print "  -f            Filter results after analysis"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   203
	print "  reportid      ID to be used for report files"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   204
	print ""
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   205
	print "Examples:"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   206
	print "  To analyse all headers and libraries and filter results:"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   207
	print "    CheckBC myconfig -ha -la -f MYID"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   208
	print "  To analyse a single header file"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   209
	print "    CheckBC myconfig -hs aknlists.h MYID"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   210
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   211
#-------------------------Header Analysis--------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   212
class HeaderAnalyser:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   213
	# static dict to hold the arguments
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   214
	args = {}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   215
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   216
	#initialization function for HA component	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   217
	def __init__(self, ip_data, set_list, reportid):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   218
		#'args' defines the parametrs required by HA
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   219
		self.args = {"BASELINE_NAME":[], "CURRENT_NAME":[], "BASELINE_DIR":[], "CURRENT_DIR":[], "REPORT_FILE":[],
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   220
				"BASELINE_SYSTEMINCLUDEDIR":[], "CURRENT_SYSTEMINCLUDEDIR":[], "FORCEBASEINCLUDE":[], "FORCECURRENTINCLUDE":[],
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   221
				"RECURSIVE":[], "REPLACE":[], "TEMP":[], "USE_THREAD":[], "USE_PLATFORM_DATA":[], "SET":[], "BUNDLESIZE":['-bundlesize', '50'] }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   222
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   223
		base_sys_include = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   224
		curr_sys_include = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   225
		base_forced = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   226
		curr_forced = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   227
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   228
		#validate SDK versions
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   229
		validateSDKVersion(ip_data["BASELINE_SDK_S60_VERSION"],ip_data["CURRENT_SDK_S60_VERSION"])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   230
		#validate USE_PLATFORM_DATA entry 'true' or 'false'
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   231
		if( getdata( ip_data, "USE_PLATFORM_DATA") ):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   232
			if( not('true' == ip_data["USE_PLATFORM_DATA"].lower()) and not('false' == ip_data["USE_PLATFORM_DATA"].lower()) ):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   233
				raise InputError(["confIP", "USE_PLATFORM_DATA\n", False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   234
				
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   235
		#validate USE_THREAD entry 'true' or 'false'
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   236
		if( getdata( ip_data, "USE_THREAD") ):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   237
			if( not('true' == ip_data["USE_THREAD"].lower()) and not('false' == ip_data["USE_THREAD"].lower()) ):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   238
				raise InputError(["confIP", "USE_THREAD\n", False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   239
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   240
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   241
		# specify the basline and current names
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   242
		if not getdata(ip_data, "BASELINE_NAME"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   243
			raise InputError(["confMP", "baseline name missing\n", False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   244
		self.args["BASELINE_NAME"] = ["-baselineversion", quote( ip_data["BASELINE_NAME"] )]			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   245
		if not getdata( ip_data, "CURRENT_NAME"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   246
			raise InputError(["confMP", "current name missing\n", False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   247
		self.args["CURRENT_NAME"] = ["-currentversion", quote( ip_data["CURRENT_NAME"] )]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   248
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   249
		# get the analysis directories
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   250
		tmp = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   251
		sdkBaseTmp = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   252
		if getdata( ip_data, "BASELINE_SDK_DIR"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   253
			if(ip_data["BASELINE_SDK_DIR"] == os.sep):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   254
				sdkBaseTmp.append( validate(os.sep + "epoc32" + os.sep + "include"))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   255
			else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   256
			  sdkBaseTmp.append( validate(ip_data["BASELINE_SDK_DIR"] + os.sep + "epoc32" + os.sep + "include") )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   257
		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   258
			raise InputError(["confMP", "baseline header directory missing\n", False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   259
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   260
		if getdata( ip_data, "BASELINE_HEADERS"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   261
			if(ip_data["BASELINE_HEADERS"] == os.sep):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   262
			  tmp = sdkBaseTmp
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   263
			else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   264
			  for i in ip_data["BASELINE_HEADERS"].split(';'):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   265
			  	if not os.path.exists(i):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   266
			  		if(ip_data["BASELINE_SDK_DIR"] == os.sep):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   267
			  		  tmp.append(validate(os.sep + "epoc32" + os.sep + "include" + os.sep + i))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   268
			  		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   269
			  			tmp.append(validate(ip_data["BASELINE_SDK_DIR"] + os.sep + "epoc32" + os.sep + "include" + os.sep + i))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   270
			  	else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   271
				    tmp.append(validate(i))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   272
		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   273
			tmp = sdkBaseTmp
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   274
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   275
		self.args["BASELINE_DIR"] = ["-baselinedir", ';'.join(["%s" % quote(i) for i in tmp]) ]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   276
		base_sys_include.extend(tmp)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   277
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   278
		tmp = []	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   279
		sdkCurrTmp = []	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   280
		if getdata( ip_data, "CURRENT_SDK_DIR"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   281
		  if(ip_data["CURRENT_SDK_DIR"] == os.sep):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   282
		    sdkCurrTmp.append( validate(os.sep+"epoc32" + os.sep + "include" ))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   283
		  else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   284
			  sdkCurrTmp.append( validate(ip_data["CURRENT_SDK_DIR"] + os.sep + "epoc32" + os.sep + "include") )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   285
		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   286
			raise InputError(["confMP", "current header directory missing\n", False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   287
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   288
		if getdata( ip_data, "CURRENT_HEADERS"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   289
		  if(ip_data["CURRENT_HEADERS"] == os.sep):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   290
		    tmp = sdkCurrTmp
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   291
		  else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   292
			  for i in ip_data["CURRENT_HEADERS"].split(';'):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   293
			  	if not os.path.exists(i):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   294
			  		if(ip_data["CURRENT_SDK_DIR"] == os.sep):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   295
			  		  tmp.append(validate(os.sep + "epoc32" + os.sep + "include" + os.sep + i))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   296
			  		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   297
			  			tmp.append(validate(ip_data["CURRENT_SDK_DIR"] + os.sep + "epoc32" + os.sep + "include" + os.sep + i))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   298
			  	else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   299
				    tmp.append(validate(i))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   300
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   301
		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   302
			tmp = sdkCurrTmp
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   303
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   304
		self.args["CURRENT_DIR"] = ["-currentdir", ';'.join(["%s" % quote(i) for i in tmp]) ]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   305
		curr_sys_include.extend(tmp)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   306
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   307
		# get the report file name		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   308
		if not getdata( ip_data, "REPORT_FILE_HEADERS"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   309
			if not reportid:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   310
				ip_data["REPORT_FILE_HEADERS"] = REPORT_PATH + HEADER_REPORT
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   311
			else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   312
				ip_data["REPORT_FILE_HEADERS"] = REPORT_PATH + HEADER_REPORT +'_'+ reportid
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   313
		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   314
			[head, tail] = os.path.split(ip_data["REPORT_FILE_HEADERS"])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   315
			if tail != '':
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   316
				if reportid:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   317
					ip_data["REPORT_FILE_HEADERS"] = ip_data["REPORT_FILE_HEADERS"] +'_'+ reportid
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   318
			else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   319
				if reportid:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   320
					ip_data["REPORT_FILE_HEADERS"] = ip_data["REPORT_FILE_HEADERS"] + HEADER_REPORT +'_'+ reportid
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   321
				else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   322
					ip_data["REPORT_FILE_HEADERS"] = ip_data["REPORT_FILE_HEADERS"] + HEADER_REPORT
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   323
			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   324
		ip_data["REPORT_FILE_HEADERS"] = ip_data["REPORT_FILE_HEADERS"] + ".xml"		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   325
		self.args["REPORT_FILE"] = ["-reportfile", quote( ip_data["REPORT_FILE_HEADERS"])]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   326
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   327
		tmp = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   328
		# get the base system include directories		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   329
		if getdata( ip_data, "BASELINE_SYSTEMINCLUDEDIR"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   330
			for term in ip_data["BASELINE_SYSTEMINCLUDEDIR"].split(';'):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   331
			  if not os.path.exists(term):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   332
			  	if(ip_data["BASELINE_SDK_DIR"] == os.sep):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   333
			  	  tmp.append(os.sep + "epoc32" + os.sep + "include" + os.sep + term)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   334
			  	else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   335
			  	  tmp.append(ip_data["BASELINE_SDK_DIR"] + os.sep + "epoc32" + os.sep + "include" + os.sep + term)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   336
			  else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   337
			  	tmp.append(term);			  	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   338
			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   339
		for i in sys_includes[ip_data["BASELINE_SDK_S60_VERSION"]]:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   340
			if(ip_data["BASELINE_SDK_DIR"] == os.sep):
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   341
			  tmp.append( os.sep + i )
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   342
			else:
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   343
			  tmp.append( ip_data["BASELINE_SDK_DIR"] + os.sep + i )
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   344
			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   345
		for i in tmp:	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   346
			try:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   347
				term = validate(i)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   348
			except InputError, e:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   349
				sys.stderr.write(os.linesep + "WARNING: Baseline system include path "+ i +" not found")
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   350
			else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   351
				if term not in base_sys_include:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   352
					base_sys_include.append(term)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   353
		self.args["BASELINE_SYSTEMINCLUDEDIR"] = ["-baseplatformheaders", quote( ';'.join(["%s" % quote(i) for i in base_sys_include]) ) ]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   354
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   355
		tmp = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   356
		# get the current system include directories		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   357
		if getdata( ip_data, "CURRENT_SYSTEMINCLUDEDIR"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   358
			for term in ip_data["CURRENT_SYSTEMINCLUDEDIR"].split(';'):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   359
				if not os.path.exists(term):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   360
					if(ip_data["CURRENT_SDK_DIR"] == os.sep):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   361
						tmp.append(os.sep + "epoc32" + os.sep + "include" + os.sep + term)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   362
					else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   363
						 tmp.append(ip_data["CURRENT_SDK_DIR"] + os.sep + "epoc32" + os.sep + "include" + os.sep + term)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   364
				else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   365
					tmp.append(term);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   366
					
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   367
		for i in sys_includes[ip_data["CURRENT_SDK_S60_VERSION"]]:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   368
			if(ip_data["CURRENT_SDK_DIR"] == os.sep):
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   369
			  tmp.append( os.sep + i )
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   370
			else:
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   371
			  tmp.append( ip_data["CURRENT_SDK_DIR"] + os.sep + i )
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   372
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   373
		for i in tmp:			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   374
			try:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   375
				term = validate(i)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   376
			except InputError, e:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   377
				sys.stderr.write(os.linesep + "WARNING: Current system include path "+ i +" not found")
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   378
			else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   379
				if term not in curr_sys_include:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   380
					curr_sys_include.append(term)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   381
		self.args["CURRENT_SYSTEMINCLUDEDIR"] = ["-currentplatformheaders", quote( ';'.join(["%s" % quote(i) for i in curr_sys_include]) ) ]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   382
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   383
		# get the forced headers 														 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   384
		if not getdata( ip_data, "BASELINE_SDK_S60_VERSION"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   385
			raise InputError(["confMP", "Baseline SDK version undefined\n", False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   386
		for i in getdata( ip_data, "BASELINE_FORCED_HEADERS").split(';'):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   387
			if i:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   388
				base_forced.append(i)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   389
		if forcedheadersdata.has_key(ip_data["BASELINE_SDK_S60_VERSION"]):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   390
			base_forced.append( self.forcedheaders(ip_data["BASELINE_SDK_S60_VERSION"], self.args["BASELINE_SYSTEMINCLUDEDIR"][1]) )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   391
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   392
		#Validate the existence of base forced header	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   393
		for i in base_forced:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   394
			if not os.path.exists(i):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   395
				tmp = os.path.abspath(i)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   396
				if not os.path.exists(tmp):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   397
					raise InputError(["confIP", "BASELINE_SDK_S60_VERSION < Field "+ i +" is not valid >" + os.linesep,False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   398
										
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   399
		self.args["FORCEBASEINCLUDE"] = ["-forcebaseinclude", ';'.join(["%s" % quotep(i) for i in base_forced ]) ]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   400
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   401
		if not getdata( ip_data, "CURRENT_SDK_S60_VERSION"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   402
			raise InputError(["confMP", "Current SDK version undefined\n", False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   403
		for i in getdata( ip_data, "CURRENT_FORCED_HEADERS").split(';'):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   404
			if i:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   405
				curr_forced.append(i)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   406
		if forcedheadersdata.has_key(ip_data["CURRENT_SDK_S60_VERSION"]):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   407
			curr_forced.append( self.forcedheaders(ip_data["CURRENT_SDK_S60_VERSION"], self.args["CURRENT_SYSTEMINCLUDEDIR"][1]) )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   408
					
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   409
		#Validate the existence of current forced header	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   410
		for i in curr_forced:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   411
			if not os.path.exists(i):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   412
				tmp = os.path.abspath(i)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   413
				if not os.path.exists(tmp):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   414
					raise InputError(["confIP", "CURRENT_SDK_S60_VERSION < Field "+ i +" is not valid >" + os.linesep,False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   415
					
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   416
		self.args["FORCECURRENTINCLUDE"] = ["-forcecurrentinclude", ';'.join(["%s" % quotep(i) for i in curr_forced ]) ]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   417
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   418
		if getdata( ip_data, "USE_THREAD"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   419
			if 'true' == ip_data["USE_THREAD"].lower():
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   420
				self.args["USE_THREAD"] = [ "-usethread" ]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   421
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   422
		# setup the replace and exclude directories
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   423
		self.args["RECURSIVE"] = [ "-recursive" ]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   424
		if getdata( ip_data, "RECURSIVE_HEADERS"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   425
			if 'false' == ip_data["RECURSIVE_HEADERS"].lower():
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   426
				self.args["RECURSIVE"] = [ "" ]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   427
			elif not 'true' == ip_data["RECURSIVE_HEADERS"].lower():
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   428
				raise InputError(["confIP", "RECURSIVE_HEADERS\n", False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   429
				
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   430
		tmp = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   431
		for i in getdata( ip_data, "EXCLUDE_DIR_HEADERS").split(';'):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   432
			if i:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   433
				tmp.append(i)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   434
		if tmp:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   435
			self.args["EXCLUDE_DIR_HEADERS"] = ["-excludedirs", ';'.join(["%s" % quote(i) for i in tmp]) ]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   436
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   437
		self.args["TEMP"] = ["-temp", quotep( ip_data["TEMP"] )]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   438
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   439
		if not getdata( ip_data, "USE_PLATFORM_DATA") or ('true' == ip_data["USE_PLATFORM_DATA"].lower()):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   440
			if getdata(	platformdata, ip_data["BASELINE_SDK_S60_VERSION"] ) and getdata( platformdata, ip_data["CURRENT_SDK_S60_VERSION"] ):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   441
				self.args["USE_PLATFORM_DATA"] = ["-baseplatformdata", quotep( platformdata[ip_data["BASELINE_SDK_S60_VERSION"]] ),
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   442
										 "-currentplatformdata", quotep( platformdata[ip_data["CURRENT_SDK_S60_VERSION"]] )]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   443
			else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   444
				sys.stderr.write( os.linesep + "WARNING: Platform data not available in default paths, continuing without platform data information." )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   445
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   446
		if getdata( ip_data, "REPLACE_HEADERS"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   447
			#separate the sets
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   448
			tlist_1 = ip_data["REPLACE_HEADERS"].split(';')
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   449
			str = ''
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   450
			#seperate the replacement pairs
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   451
			for entry in tlist_1:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   452
				if entry != '':
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   453
					tlist_2 = (entry.split(':'))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   454
					#create a single str, which is input param	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   455
					str = ' '.join(["%s" % i for i in tlist_2])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   456
			self.args["REPLACE"] = ["-replace", str ]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   457
		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   458
			del self.args["REPLACE"]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   459
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   460
		# handling the files provide with 'm' or 's' options on commandline
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   461
		str = ''
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   462
		line = ''
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   463
		tmp = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   464
		if 's' == set_list[0]:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   465
			str = set_list[1]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   466
		elif 'm' == set_list[0]:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   467
			fname = os.path.abspath(set_list[1])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   468
			if not os.path.exists(fname):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   469
				raise InputError(["confIP", "Input list file unavailable" + os.linesep, False])	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   470
			filehandle = open(fname, 'r')
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   471
			for line in filehandle:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   472
				tmp.append(clean(line))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   473
			str = ';'.join(["%s" % i for i in tmp])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   474
			filehandle.close()	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   475
		elif 'a' == set_list[0]:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   476
			str = ALL_HEADER_SET
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   477
		self.args["SET"] = ["-set", quote(str)]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   478
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   479
	#'stringize' all params and invoke the tool
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   480
	def run(self):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   481
		str = ''
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   482
		for i in HA_SET:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   483
			if not os.path.exists(i):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   484
				print os.linesep + i + " does not exist. Please reinstall."
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   485
				sys.exit(1)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   486
		it_tmp = self.args.itervalues()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   487
		for i in xrange(0, len(self.args), 1):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   488
			for val in it_tmp.next():
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   489
				str = str + ' ' + val
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   490
		cmd_file= unquote(self.args["TEMP"][1]) + os.sep + 'ha.txt'
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   491
		file = open(cmd_file,'w')
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   492
		file.write(str)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   493
		file.close()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   494
		cmd_str = ' -commandfile ' + cmd_file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   495
		invokeTool(quote(HA_SET[0]), cmd_str)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   496
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   497
	#verify existence of system hrh files
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   498
	def forcedheaders(self, str, dirs):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   499
		if "5.0" == str:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   500
			dirs = unquote(dirs).split(';')
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   501
			for path in dirs:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   502
				checkpath = os.path.normpath( unquote(path) + os.sep + "variant" + os.sep + "symbian_os_v9.4.hrh" )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   503
				if os.path.exists( checkpath ):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   504
					if forcedheadersdata.has_key(str):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   505
						return forcedheadersdata[str]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   506
			if forcedheadersdata.has_key("5.0v2"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   507
				return forcedheadersdata["5.0v2"]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   508
		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   509
			if forcedheadersdata.has_key(str):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   510
				return forcedheadersdata[str]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   511
		return ''	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   512
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   513
#-------------------------Library Analysis-------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   514
class LibraryAnalyser:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   515
	args = {}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   516
	def __init__(self, ip_data, set_list, reportid):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   517
		#'args' defines the parametrs required by HA, 'optargs' defines optional ones
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   518
		self.args = { "TOOLCHAIN":[], "TOOLCHAIN_PATH":[], "BASELINE_NAME":[], "CURRENT_NAME":[], "BASELINE_DIR":[], "CURRENT_DIR":[],
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   519
				 "REPORT_FILE":[], "CFILT":[], "TEMP":[], "SET":[] }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   520
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   521
		#validate SDK versions
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   522
		validateSDKVersion(ip_data["BASELINE_SDK_S60_VERSION"],ip_data["CURRENT_SDK_S60_VERSION"])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   523
				 	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   524
	  # Validate the user input tool chain
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   525
		if getdata( ip_data, "TOOLCHAIN"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   526
			validChain = False
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   527
			for i in tool_chain:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   528
				if ( i == ip_data["TOOLCHAIN"].lower()):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   529
					validChain = True
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   530
					break
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   531
			if validChain == False:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   532
				raise InputError(["confIP", "TOOLCHAIN\n", False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   533
			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   534
	  #Validate the build target provided
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   535
		if getdata( ip_data, "BASELINE_BUILDTARGET"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   536
			validateBulidTarget(ip_data["BASELINE_BUILDTARGET"],True)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   537
	  		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   538
		if getdata( ip_data, "CURRENT_BUILDTARGET"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   539
			validateBulidTarget(ip_data["CURRENT_BUILDTARGET"],False)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   540
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   541
		if getdata( ip_data, "TOOLCHAIN"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   542
			self.args["TOOLCHAIN"] = [ ip_data["TOOLCHAIN"].upper() ]			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   543
		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   544
			self.args["TOOLCHAIN"] = [ 'GCCE' ]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   545
			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   546
		if getdata( ip_data, "TOOLCHAIN_PATH"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   547
			self.args["TOOLCHAIN_PATH"] = [ '-tools', quotep( ip_data["TOOLCHAIN_PATH"] )]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   548
		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   549
			del self.args["TOOLCHAIN_PATH"]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   550
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   551
		if not getdata( ip_data, "BASELINE_NAME"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   552
			raise InputError(["confMP", "baseline analysis directory missing" + os.linesep, False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   553
		self.args["BASELINE_NAME"] = [ '-baselineversion', quote( ip_data["BASELINE_NAME"] )]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   554
		if not getdata( ip_data, "CURRENT_NAME"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   555
			raise InputError(["confMP", "current analysis directory missing" + os.linesep, False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   556
		self.args["CURRENT_NAME"] = [ '-currentversion', quote( ip_data["CURRENT_NAME"] )]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   557
			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   558
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   559
		#Check if baseline import library is present, import dll should also be present and vice versa.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   560
		libLength = 0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   561
		dllLength = 0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   562
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   563
		if getdata( ip_data, "BASELINE_IMPORTLIBRARIES"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   564
			libLength = len(ip_data["BASELINE_IMPORTLIBRARIES"])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   565
			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   566
		if getdata( ip_data, "BASELINE_IMPORTDLLS"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   567
			dllLength = len(ip_data["BASELINE_IMPORTDLLS"])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   568
			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   569
		if( libLength > 0 and dllLength <= 0 ):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   570
		  raise InputError(["confMP", "BASELINE_IMPORTDLLS Path missing" + os.linesep, False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   571
		if( libLength <= 0 and dllLength > 0 ):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   572
		  raise InputError(["confMP", "BASELINE_IMPORTLIBRARIES Path missing" + os.linesep, False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   573
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   574
		#Check if current import library is present, import dll should also be present and vice versa.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   575
		libLength = 0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   576
		dllLength = 0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   577
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   578
		if getdata( ip_data, "CURRENT_IMPORTLIBRARIES"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   579
			libLength = len(ip_data["CURRENT_IMPORTLIBRARIES"])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   580
			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   581
		if getdata( ip_data, "CURRENT_IMPORTDLLS"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   582
			dllLength = len(ip_data["CURRENT_IMPORTDLLS"])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   583
			  
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   584
		if( libLength > 0 and dllLength <= 0 ):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   585
		  raise InputError(["confMP", "CURRENT_IMPORTDLLS missing" + os.linesep, False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   586
		if( libLength <= 0 and dllLength > 0 ):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   587
		  raise InputError(["confMP", "CURRENT_IMPORTLIBRARIES missing" + os.linesep, False])			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   588
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   589
				
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   590
		if not getdata( ip_data, "BASELINE_SDK_DIR"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   591
			raise InputError(["confMP", "baseline importlib directory missing" + os.linesep, False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   592
		if not getdata( ip_data, "CURRENT_SDK_DIR"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   593
			raise InputError(["confMP", "current importlib directory missing" + os.linesep, False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   594
			
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   595
		self.args["TEMP"] = ["-temp", quotep( ip_data["TEMP"] )]		
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   596
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   597
		if getdata(	dllXMLdata, ip_data["BASELINE_SDK_S60_VERSION"] ):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   598
			baseDlldata = dllXMLdata[ip_data["BASELINE_SDK_S60_VERSION"]]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   599
		if getdata(	dllXMLdata, ip_data["CURRENT_SDK_S60_VERSION"] ):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   600
			currDlldata = dllXMLdata[ip_data["CURRENT_SDK_S60_VERSION"]]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   601
		
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   602
		dbasebuild = GetBuildTarget(ip_data["BASELINE_SDK_DIR"],validate(baseDlldata),ip_data["TEMP"])
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   603
		dcurrentbuild = GetBuildTarget(ip_data["CURRENT_SDK_DIR"],validate(currDlldata),ip_data["TEMP"])
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   604
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   605
		if getdata( ip_data, "BASELINE_BUILDTARGET"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   606
			basebuild = ip_data["BASELINE_BUILDTARGET"]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   607
		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   608
			basebuild = dbasebuild		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   609
			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   610
		if getdata( ip_data, "CURRENT_BUILDTARGET"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   611
			currentbuild = ip_data["CURRENT_BUILDTARGET"]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   612
		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   613
			currentbuild = dcurrentbuild
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   614
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   615
		if 	basebuild == "" and currentbuild == "":
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   616
			basebuild = 'armv5'
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   617
			currentbuild = 'armv5'
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   618
		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   619
			if basebuild == "":
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   620
				basebuild = currentbuild
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   621
			if currentbuild == "":
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   622
				currentbuild = basebuild
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   623
				
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   624
		libBasetmp = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   625
		libtmp = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   626
		for target in basebuild.split(';'):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   627
			if(ip_data["BASELINE_SDK_DIR"] == os.sep):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   628
				libBasetmp.append(os.sep + 'epoc32' + os.sep + 'release' + os.sep + target + os.sep + 'lib')
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   629
			else:			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   630
				libBasetmp.append(ip_data["BASELINE_SDK_DIR"] + os.sep + 'epoc32' + os.sep + 'release' + os.sep + target + os.sep + 'lib')	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   631
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   632
		if getdata( ip_data, "BASELINE_IMPORTLIBRARIES"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   633
			if(ip_data["BASELINE_IMPORTLIBRARIES"] == os.sep):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   634
				for path in libBasetmp:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   635
					libtmp.append(validate(path))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   636
			else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   637
				for i in ip_data["BASELINE_IMPORTLIBRARIES"].split(';'):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   638
					if not os.path.exists(i):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   639
						if(ip_data["BASELINE_SDK_DIR"] == os.sep):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   640
							libtmp.append(validate( os.sep + 'epoc32' + os.sep + 'release' + os.sep + i))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   641
						else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   642
							libtmp.append(validate( ip_data["BASELINE_SDK_DIR"] + os.sep + 'epoc32' + os.sep + 'release' + os.sep + i ))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   643
					else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   644
						libtmp.append(validate(i))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   645
		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   646
			for path in libBasetmp:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   647
				libtmp.append(validate(path))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   648
			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   649
		dllBasetmp = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   650
		dlltmp = []			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   651
		if dbasebuild == "":
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   652
			dllBasetmp.append(baseDlldata)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   653
		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   654
			for target in basebuild.split(';'):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   655
				if(ip_data["BASELINE_SDK_DIR"] == os.sep):
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   656
					dllBasetmp.append(os.sep + 'epoc32' + os.sep + 'release' + os.sep + target + os.sep + 'urel')
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   657
				else:
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   658
					dllBasetmp.append(ip_data["BASELINE_SDK_DIR"] + os.sep + 'epoc32' + os.sep + 'release' + os.sep + target + os.sep + 'urel')	
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   659
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   660
		if getdata( ip_data, "BASELINE_IMPORTDLLS"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   661
			if(ip_data["BASELINE_IMPORTDLLS"] == os.sep):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   662
				for path in dllBasetmp:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   663
					dlltmp.append(validate(path))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   664
			else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   665
				for i in ip_data["BASELINE_IMPORTDLLS"].split(';'):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   666
					if not os.path.exists(i):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   667
						if(ip_data["BASELINE_SDK_DIR"] == os.sep):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   668
							dlltmp.append(validate( os.sep + 'epoc32' + os.sep + 'release' + os.sep + i))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   669
						else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   670
							dlltmp.append(validate( ip_data["BASELINE_SDK_DIR"] + os.sep + 'epoc32' + os.sep + 'release' + os.sep + i ))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   671
					else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   672
						dlltmp.append(validate(i))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   673
		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   674
			for path in dllBasetmp:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   675
				dlltmp.append(validate(path))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   676
				
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   677
		self.args["BASELINE_DIR"] = ["-baselinelibdir", ';'.join(["%s" % quote(i) for i in libtmp])]	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   678
		self.args["BASELINE_DLL_DIR"] = ["-baselinedlldir", ';'.join(["%s" % quote(i) for i in dlltmp])]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   679
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   680
		libCurrTmp = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   681
		libtmp = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   682
		for target in currentbuild.split(';'):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   683
			if(ip_data["CURRENT_SDK_DIR"] == os.sep):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   684
				libCurrTmp.append(os.sep + 'epoc32' + os.sep + 'release' + os.sep + target + os.sep + 'lib')
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   685
			else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   686
			    libCurrTmp.append(ip_data["CURRENT_SDK_DIR"] + os.sep + 'epoc32' + os.sep + 'release' + os.sep + target + os.sep + 'lib')
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   687
		if getdata( ip_data, "CURRENT_IMPORTLIBRARIES"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   688
			if(ip_data["CURRENT_IMPORTLIBRARIES"] == os.sep):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   689
				for target in libCurrTmp:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   690
					libtmp.append(validate(target))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   691
			else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   692
				for i in ip_data["CURRENT_IMPORTLIBRARIES"].split(';'):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   693
					if not os.path.exists(i):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   694
						if(ip_data["CURRENT_SDK_DIR"] == os.sep):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   695
							libtmp.append(validate( os.sep + 'epoc32' + os.sep + 'release' + os.sep + i))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   696
						else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   697
							libtmp.append(validate( ip_data["CURRENT_SDK_DIR"] + os.sep + 'epoc32' + os.sep + 'release' + os.sep + i ))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   698
					else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   699
						libtmp.append(validate(i))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   700
		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   701
			for target in libCurrTmp:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   702
				libtmp.append(validate(target))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   703
			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   704
		#Get baseline and current dll path and provide for analysis	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   705
		dllCurrtmp = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   706
		dlltmp = []	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   707
		if dcurrentbuild == "":
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   708
			dllCurrtmp.append(currDlldata)	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   709
		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   710
			for target in currentbuild.split(';'):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   711
				if(ip_data["CURRENT_SDK_DIR"] == os.sep):
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   712
					dllCurrtmp.append(os.sep + 'epoc32' + os.sep + 'release' + os.sep + target + os.sep + 'urel')
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   713
				else:
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   714
					dllCurrtmp.append(ip_data["CURRENT_SDK_DIR"] + os.sep + 'epoc32' + os.sep + 'release' + os.sep + target + os.sep + 'urel')
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   715
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   716
		if getdata( ip_data, "CURRENT_IMPORTDLLS"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   717
			if(ip_data["CURRENT_IMPORTDLLS"] == os.sep):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   718
				for target in dllCurrtmp:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   719
					dlltmp.append(validate(target))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   720
			else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   721
				for i in ip_data["CURRENT_IMPORTDLLS"].split(';'):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   722
					if not os.path.exists(i):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   723
						if(ip_data["CURRENT_SDK_DIR"] == os.sep):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   724
							dlltmp.append(validate( os.sep + 'epoc32' + os.sep + 'release' + os.sep + i))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   725
						else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   726
							dlltmp.append(validate( ip_data["CURRENT_SDK_DIR"] + os.sep + 'epoc32' + os.sep + 'release' + os.sep + i ))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   727
					else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   728
						dlltmp.append(validate(i))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   729
		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   730
			for target in dllCurrtmp:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   731
				dlltmp.append(validate(target))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   732
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   733
		self.args["CURRENT_DIR"] = ["-currentlibdir", ';'.join(["%s" % quote(i) for i in libtmp])]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   734
		self.args["CURRENT_DLL_DIR"] = ["-currentdlldir", ';'.join(["%s" % quote(i) for i in dlltmp])]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   735
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   736
		# get the report file name		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   737
		if not getdata( ip_data, "REPORT_FILE_LIBRARIES"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   738
			if not reportid:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   739
				ip_data["REPORT_FILE_LIBRARIES"] = REPORT_PATH + LIBRARY_REPORT
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   740
			else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   741
				ip_data["REPORT_FILE_LIBRARIES"] = REPORT_PATH + LIBRARY_REPORT +'_'+ reportid
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   742
		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   743
			[head, tail] = os.path.split(ip_data["REPORT_FILE_LIBRARIES"])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   744
			if tail != '':
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   745
				if reportid:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   746
					ip_data["REPORT_FILE_LIBRARIES"] = ip_data["REPORT_FILE_LIBRARIES"] +'_'+ reportid
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   747
			else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   748
				if reportid:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   749
					ip_data["REPORT_FILE_LIBRARIES"] = ip_data["REPORT_FILE_LIBRARIES"] + LIBRARY_REPORT +'_'+ reportid
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   750
				else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   751
					ip_data["REPORT_FILE_LIBRARIES"] = ip_data["REPORT_FILE_LIBRARIES"] + LIBRARY_REPORT
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   752
					
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   753
		ip_data["REPORT_FILE_LIBRARIES"] = ip_data["REPORT_FILE_LIBRARIES"] + ".xml"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   754
		self.args["REPORT_FILE"] = ["-reportfile", quote( ip_data["REPORT_FILE_LIBRARIES"] )]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   755
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   756
		if 'rvct' == self.args["TOOLCHAIN"][0].lower():
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   757
			self.args["CFILT"] = [ '-cfilt', quotep( LA_SET[1] )]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   758
		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   759
			del self.args["CFILT"]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   760
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   761
		str = ''
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   762
		if 's' == set_list[0]:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   763
			str = unquote(self.args["TEMP"][1]) + os.sep + 'la.txt'
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   764
			file = open( str, 'w')
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   765
			file.write( set_list[1] )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   766
			file.close()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   767
		elif 'm' == set_list[0]:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   768
			str = os.path.abspath( set_list[1] )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   769
			if not os.path.exists(str):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   770
				raise InputError(["confIP", "Input list file unavailable" + os.linesep, False])	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   771
		self.args["SET"] = ["-set", quote(str)]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   772
		if 'a' == set_list[0]:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   773
			del self.args["SET"]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   774
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   775
	#'stringize' all params and invoke the tool
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   776
	def run(self):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   777
		for i in LA_SET:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   778
			if not os.path.exists(i):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   779
				print os.linesep + i + " does not exist. Please reinstall."
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   780
				sys.exit(1)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   781
		str = ' ' + self.args["TOOLCHAIN"][0]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   782
		del self.args["TOOLCHAIN"]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   783
		it_tmp = self.args.itervalues()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   784
		for i in xrange(0, len(self.args), 1):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   785
			for val in it_tmp.next():
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   786
				str = str + ' ' + val
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   787
		invokeTool(quote(LA_SET[0]), str)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   788
			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   789
#-------------------------Report Filter-------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   790
class ReportFilter:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   791
	args = {}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   792
	issueargs = {}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   793
	filterfiles = False
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   794
	def __init__(self, ip_data, cmds, reportid):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   795
		reportlist = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   796
		outputlist = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   797
		issuelist = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   798
		#'args' defines the parametrs required by HA, 'optargs' defines optional ones
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   799
		self.args = { "ISSUES_FILE":[], "REPORT_FILE":[], "OUTPUT_FILE":[] }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   800
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   801
		for val in cmds:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   802
			if 'h' in val:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   803
				if getdata( ip_data, "REPORT_FILE_HEADERS"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   804
					reportlist.append( ip_data["REPORT_FILE_HEADERS"] )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   805
					if getdata( ip_data, "FILTER_FILE_HEADERS"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   806
						if reportid:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   807
							ip_data["FILTER_FILE_HEADERS"] = ip_data["FILTER_FILE_HEADERS"] +'_'+ reportid + ".xml"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   808
						else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   809
							ip_data["FILTER_FILE_HEADERS"] = ip_data["FILTER_FILE_HEADERS"] + ".xml"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   810
					outputlist.append( getdata(ip_data, "FILTER_FILE_HEADERS") )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   811
			if 'l' in val:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   812
				print ""
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   813
				if getdata( ip_data, "REPORT_FILE_LIBRARIES"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   814
					reportlist.append( ip_data["REPORT_FILE_LIBRARIES"] )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   815
					if getdata( ip_data, "FILTER_FILE_LIBRARIES"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   816
						if reportid:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   817
							ip_data["FILTER_FILE_LIBRARIES"] = ip_data["FILTER_FILE_LIBRARIES"] +'_'+ reportid + ".xml"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   818
						else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   819
							ip_data["FILTER_FILE_LIBRARIES"] = ip_data["FILTER_FILE_LIBRARIES"] + ".xml"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   820
					outputlist.append( ip_data["FILTER_FILE_LIBRARIES"] )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   821
			if 'f' in val:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   822
				self.filterfiles=True
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   823
				rtmp = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   824
				otmp = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   825
				if getdata( ip_data, "REPORT_FILE_FILTER"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   826
					rtmp = ip_data["REPORT_FILE_FILTER"].split(';')
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   827
					for i in xrange(0, len(rtmp)):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   828
						if reportid:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   829
							rtmp[i] = rtmp[i] +'_'+ reportid + ".xml"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   830
						else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   831
							rtmp[i] = rtmp[i] + ".xml"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   832
					reportlist.extend( rtmp )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   833
					if getdata( ip_data, "OUTPUT_FILE_FILTER"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   834
						otmp = ip_data["OUTPUT_FILE_FILTER"].split(';')
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   835
						for i in xrange(0, len(otmp)):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   836
							if otmp[i] != "":
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   837
								if reportid:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   838
									otmp[i] = otmp[i] +'_'+ reportid + ".xml"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   839
								else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   840
									otmp[i] = otmp[i] + ".xml"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   841
					outputlist.extend( otmp )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   842
				
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   843
		for term in reportlist:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   844
			if not os.path.exists( term ):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   845
				raise InputError( ["confMP", "report file missing -- " + term, False] )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   846
		self.args["REPORT_FILE"] = reportlist
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   847
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   848
		for term in outputlist:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   849
			if '' != term:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   850
				if not os.path.exists( os.path.dirname(term) ):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   851
					os.makedirs( os.path.dirname(term) )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   852
		self.args["OUTPUT_FILE"] = outputlist
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   853
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   854
		if not getdata( ip_data, "ISSUES_FILE"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   855
			issuelist.append(DEFAULT_ISSUES_FILE)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   856
		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   857
			issuelist = ip_data["ISSUES_FILE"].split(';')
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   858
		for term in issuelist:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   859
			if term.startswith( SERVER_PATH ):									#server path used in issues set
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   860
				i = issuelist.index(term)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   861
				localfile = ip_data["TEMP"] + os.sep + "tmpissues.xml"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   862
				tmp = os.path.splitext(term)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   863
				if '' == tmp[1]:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   864
					term = getlatestfile( term )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   865
				try:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   866
					urllib.urlretrieve( term, localfile )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   867
				except	IOError:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   868
					raise InputError( ["confMPath", "Error in knownissues server path " + term + os.linesep, False] )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   869
				f=open(localfile)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   870
				if ((f.read()).find("404 Not Found") != -1):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   871
					raise InputError( ["confMPath", "Error in knownissues server path " + term + os.linesep, False] )	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   872
				f.close()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   873
				issuelist[i] = localfile
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   874
				self.issueargs[localfile] = term
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   875
			elif os.path.exists( validate(term) ):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   876
				issuelist[issuelist.index(term)] = validate(term)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   877
			elif not os.path.exists( validate(term) ):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   878
				raise InputError( ["confMP", "issues file " + term + " missing" + os.linesep, False] )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   879
		self.args["ISSUES_FILE"] = issuelist
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   880
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   881
	#'stringize' all params and invoke the tool
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   882
	def run(self):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   883
		report = ''
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   884
		output = ''
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   885
		issue = ''
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   886
		num = 1
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   887
		for i in BCFILTER_SET:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   888
			if not os.path.exists(i):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   889
				print os.linesep + i + " does not exist. Please reinstall."
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   890
				sys.exit(1)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   891
		total = len(self.args["REPORT_FILE"]) * len(self.args["ISSUES_FILE"])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   892
		for i in range(0, len(self.args["REPORT_FILE"]), 1):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   893
			for j in xrange(0, len(self.args["ISSUES_FILE"]), 1):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   894
				report = self.args["REPORT_FILE"][i]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   895
				if i < len(self.args["OUTPUT_FILE"]):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   896
					output = self.args["OUTPUT_FILE"][i]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   897
				else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   898
					output = ""
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   899
				issue = self.args["ISSUES_FILE"][j]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   900
				str = " " + quote(report) + " " + quote(issue)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   901
				if getdata( self.issueargs, issue):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   902
					issue = self.issueargs[issue]		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   903
				if self.filterfiles:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   904
					dispstr =  "\nprocessing (" + `num` + "/" + `total` +") files >>\nReport File: " + report + "\nKnown Issues File: " + issue + "\nOutput File: "				
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   905
				else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   906
					dispstr =  "\nprocessing file >>\nReport File: " + report + "\nKnown Issues File: " + issue + "\nOutput File: "
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   907
				if not output:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   908
					dispstr = dispstr + "None(inplace filtration)"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   909
				else:	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   910
					dispstr = dispstr + output
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   911
					str = str + " " + quote(output)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   912
				print dispstr
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   913
				invokeTool(quote(BCFILTER_SET[0]), str)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   914
				num = num + 1
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   915
				
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   916
#----------------------CONFIGURATION PARSER-------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   917
class ConfigParser:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   918
	reportstr = ''
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   919
	data = {}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   920
	#read the config values into a data structure
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   921
	def __init__(self, cmd):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   922
		self.data = {"BASELINE_NAME":'', "BASELINE_SDK_DIR":'', "BASELINE_SDK_S60_VERSION":'', "CURRENT_NAME":'', "CURRENT_SDK_DIR":'', "CURRENT_SDK_S60_VERSION":'', "TEMP":'', 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   923
						"BASELINE_HEADERS":'', "CURRENT_HEADERS":'', "BASELINE_SYSTEMINCLUDEDIR":'', "CURRENT_SYSTEMINCLUDEDIR":'', "BASELINE_FORCED_HEADERS":'', "CURRENT_FORCED_HEADERS":'', "USE_PLATFORM_DATA":'', "RECURSIVE_HEADERS":'',
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   924
						"EXCLUDE_DIR_HEADERS":'', "REPLACE_HEADERS":'', "REPORT_FILE_HEADERS":'', "FILTER_FILE_HEADERS":'', "TOOLCHAIN":'', "TOOLCHAIN_PATH":'', "BASELINE_BUILDTARGET":'',
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   925
						"CURRENT_BUILDTARGET":'',"BASELINE_BUILDTYPE":'',"CURRENT_BUILDTYPE":'', "BASELINE_IMPORTLIBRARIES":'', "CURRENT_IMPORTLIBRARIES":'', "BASELINE_IMPORTDLLS":'', "CURRENT_IMPORTDLLS":'',
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   926
						"REPORT_FILE_LIBRARIES":'', "FILTER_FILE_LIBRARIES":'', "REPORT_FILE_FILTER":'',"OUTPUT_FILE_FILTER":'', "ISSUES_FILE":'', "EXCLUDE_DIR":'', "USE_THREAD":''}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   927
		file = open(cmd.conffile)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   928
		for input in file:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   929
			if not input.startswith("#") and input != '\n':			# process non-comment lines
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   930
				pair = input.split('=')
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   931
				if len(pair) == 1:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   932
					pair.append("")
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   933
				if not self.data.has_key(clean(pair[0])):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   934
					raise InputError(["confIP", clean(pair[0]) + " is not valid" + os.linesep, False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   935
				self.data[clean(pair[0])] = clean(pair[1])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   936
		file.close()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   937
		if self.data.has_key("EXCLUDE_DIR"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   938
			if getdata( self.data,"EXCLUDE_DIR"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   939
				self.data["EXCLUDE_DIR_HEADERS"] = self.data["EXCLUDE_DIR"]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   940
			del self.data["EXCLUDE_DIR"]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   941
		self.reportstr = cmd.reportstr
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   942
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   943
	#updates the report path/file names, creates dirs if they do not exist
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   944
	def __updatereport(self,key):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   945
		tmp = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   946
		if getdata( self.data, key ):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   947
		#if field is empty raise an error		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   948
			for term in self.data[key].split(';'):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   949
				if '' != term:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   950
					[head, tail] = os.path.split(term)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   951
					try:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   952
						term = validate(head) + os.sep + os.path.splitext(tail)[0]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   953
					except InputError, e:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   954
						os.makedirs(os.path.abspath(head))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   955
					tmp.append(term)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   956
				else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   957
					raise InputError(["confIS", key + " syntax incorrect" + os.linesep, False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   958
		#assign the updated report file str back to dict			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   959
			self.data[key] = ';'.join([ "%s" % i for i in tmp])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   960
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   961
	#updates the filter output path/file names, creates dirs if they do not exist
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   962
	def __updateoutput(self, key):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   963
		tmp = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   964
		if getdata( self.data, key ):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   965
		#if field is empty raise an error		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   966
			for term in self.data[key].split(';'):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   967
				if '' != term:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   968
					[head, tail] = os.path.split(term)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   969
					try:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   970
						term = validate(head) + os.sep + os.path.splitext(tail)[0]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   971
					except InputError, e:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   972
						os.makedirs(os.path.abspath(head))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   973
				tmp.append(term)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   974
		#assign the updated report file str back to dict			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   975
			self.data[key] = ';'.join(["%s" % i for i in tmp])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   976
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   977
	#update necessary values
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   978
	def parse(self, cmds):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   979
		for val in cmds:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   980
			if 'h' in val:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   981
				self.__updatereport("REPORT_FILE_HEADERS")
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   982
				self.__updateoutput("FILTER_FILE_HEADERS")
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   983
			if 'l' in val:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   984
				self.__updatereport("REPORT_FILE_LIBRARIES")
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   985
				self.__updateoutput("FILTER_FILE_LIBRARIES")
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   986
			if 'f' in val:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   987
				self.__updatereport("REPORT_FILE_FILTER")
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   988
				self.__updateoutput("OUTPUT_FILE_FILTER")
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   989
				
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   990
		if not getdata( self.data, "TEMP"):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   991
			self.data["TEMP"] = TOOL_DIR + "temp"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   992
		if not os.path.exists(self.data["TEMP"]):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   993
			os.makedirs(self.data["TEMP"])	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   994
		return self.data			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   995
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   996
#-------------------------Utility Analysis-------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   997
class CmdLineParser:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   998
	#these are data interfaces that are exposed
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   999
	cmd = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1000
	conffile = ''
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1001
	reportstr = ''
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1002
	def __init__(self, argv):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1003
		self.__check_help(argv)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1004
		self.__check_carbide(argv)								
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1005
		self.__check_versions(argv)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1006
		self.__parsecmd(argv)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1007
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1008
	#create a list of commands to be executed
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1009
	def __addcmd(self, str):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1010
		if (not 0 < len(str) < 3) or (len(str) == 1 and str != 'f'):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1011
			raise InputError(["cmdlineIP", "Parameter -" + str + " incorrect" + os.linesep, True])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1012
		if (str[0] in ['h', 'l']) and (str[1] in ['s', 'm', 'a']):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1013
			self.cmd.insert(0, [ str[0], str[1] ])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1014
		elif str[0] in ['f']:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1015
			self.cmd.append([ str[0], "" ])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1016
		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1017
			raise InputError(["cmdlineIP", "Parameter - " + str + " incorrect" + os.linesep, True])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1018
			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1019
	#check if input parameter is a 'help' command
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1020
	def __check_help(self, argv):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1021
		for term in ["-?", "--help", "-h", "/h", "/?"]:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1022
			if term in argv:					            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1023
				raise InputError( ["cmdhelp", "", True] )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1024
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1025
	#check if any tool version inputs are required
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1026
	def __check_versions(self, argv):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1027
		errstr = "Cannot combine version parameter with others"+ os.linesep +"Please reissue command without '-v'"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1028
		if "-v" in argv:									
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1029
			sys.stdout.write( gettoolversion() )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1030
			if len(argv) > 1:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1031
				raise InputError(["cmdlineIP", errstr, False] )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1032
			sys.exit(0)	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1033
		if "-dv" in argv:									
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1034
			sys.stdout.write( getdataversion() )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1035
			if len(argv) > 1:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1036
				raise InputError(["cmdlineIP", errstr, False] )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1037
			sys.exit(0)	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1038
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1039
	#check if interface has been invoked from carbide	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1040
	def __check_carbide(self, argv):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1041
		global CARBIDE_PLUGIN
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1042
		if "-c" in argv:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1043
			CARBIDE_PLUGIN = True
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1044
			argv.remove("-c")
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1045
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1046
	#check if input is proper else raise exception
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1047
	def __parsecmd(self, argv):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1048
		#if no parameters present
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1049
		if not len(argv):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1050
			raise InputError(["cmdlineMP", "None specified" + os.linesep, True])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1051
		#check if config file exists
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1052
		if os.path.exists( os.path.abspath(argv[0]) ):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1053
			self.conffile = os.path.abspath(argv[0])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1054
			argv.pop(0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1055
		else:	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1056
			raise InputError(["cmdlineMP", "Config file not found" + os.linesep, True])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1057
		#parse the -xx type inputs, add them to command string
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1058
		for term in argv:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1059
			if term[0] == "-":
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1060
				self.__addcmd(term[1:])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1061
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1062
		#append additional args to cmd string
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1063
		i = 0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1064
		for val in self.cmd:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1065
			param = "-" + val[0] + val[1]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1066
		#filter and 'a'- all option do not need any additional input	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1067
			if ('f' != val[0]) and ('a' != val[1]):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1068
				nxtterm = argv[ argv.index(param) + 1 ]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1069
		#if next term is not an option string, append it as filename, to the command		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1070
				if nxtterm[0] != "-":
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1071
					self.cmd[i].append(nxtterm)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1072
					argv.remove(nxtterm)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1073
				else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1074
					raise InputError(["cmdlineMP", "Input error -" + self.cmd[i][0] + self.cmd[i][1] + os.linesep, True])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1075
			argv.remove(param)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1076
			i = i + 1
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1077
			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1078
		#if any additional param are defined, it is the report string
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1079
		if len(argv) == 1:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1080
			self.reportstr = os.path.splitext(argv[0])[0]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1081
		#if more then 1 additonal param, then raise error condition	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1082
		elif len(argv) > 1:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1083
			raise InputError(["cmdlineIP", "Error in input" + os.linesep, True])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1084
		if not len(self.cmd):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1085
			raise InputError(["cmdlineMP", "No command specified" + os.linesep, True])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1086
										
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1087
#-------------------------Utility functions-------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1088
#cleans the whitespace and trailing '\n', '\t'
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1089
def clean(str):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1090
	return str.strip('\r\n\t ')
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1091
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1092
#used to wrap a string argument provided to checkbc in quotes
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1093
def quote(str):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1094
	return "\"" + str + "\""
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1095
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1096
#validate the path provided
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1097
def validate(str):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1098
	if not os.path.exists(str):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1099
		tmp = os.path.abspath(str)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1100
		if not os.path.exists(tmp):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1101
			raise InputError(["confMPath", "Field "+ str +" is not valid" + os.linesep,False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1102
		str = tmp
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1103
	return os.path.normpath(os.path.abspath(str))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1104
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1105
#used to wrap a string argument provided to checkbc in quotes
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1106
def quotep(str):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1107
	return quote(validate(str))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1108
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1109
#return an unquoted version of input string
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1110
def unquote(str):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1111
	if str[0] == '\"':
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1112
		str = str[1:]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1113
	if str[len(str)-1] == '\"':
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1114
		str = str[:len(str)-1]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1115
	return str	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1116
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1117
def getdata( mydict, key):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1118
	if mydict.has_key(key):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1119
		if '' != mydict[key]:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1120
			return mydict[key]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1121
	return ''
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1122
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1123
#return default build target from Rnd SDK and "" from Public SDK
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
  1124
def GetBuildTarget(sdk,dlldata,temp_path):
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1125
	bldtarget = ""
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1126
	path = ""
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1127
	xmlFile = open (dlldata);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1128
	dllcases = xmlFile.readlines()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1129
	xmlFile.close()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1130
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1131
	dll_file = temp_path + os.sep + "dll.txt"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1132
	dir_err_file = temp_path + os.sep + "dir_err.txt"	
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
  1133
	
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1134
	for target in s60_build_targets:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1135
		if sdk == os.sep:
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
  1136
			path = quote(os.sep+'epoc32'+os.sep+'release'+os.sep+target+os.sep+'urel'+os.sep)
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1137
		else:
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
  1138
			path = quote(validateTargetPath(sdk+os.sep+'epoc32'+os.sep+'release'+os.sep+target+os.sep+'urel')+os.sep)
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1139
		if not os.path.exists(path):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1140
			pass
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1141
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1142
		if os.name =='nt':
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1143
			cmd = "dir /b " + path + "*.dll > " + quote(dll_file) + " 2> " + quote (dir_err_file)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1144
		else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1145
			cmd = "ls --format=single-column " + path + "*.dll > " + quote(dll_file) + " 2> " + quote( dir_err_file)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1146
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1147
		os.system(cmd)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1148
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1149
		file = open (dll_file)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1150
		cases = file.readlines()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1151
		file.close()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1152
		os.remove(dll_file)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1153
		os.remove(dir_err_file)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1154
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1155
		matchFound = 0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1156
		#Get no of dll present in xml file, 2 lines are for </dll_list> tag and each dll has 8 fileds.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1157
		dllCount = 0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1158
		for dll in dllcases:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1159
			temp = dll.find ('<dllname>')
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1160
			if temp != -1 :
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1161
				dllCount = dllCount + 1
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1162
				exe = dll.lower().split('<dllname>')[1]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1163
				exe = exe.split('</dllname>')[0]
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1164
				for en in cases:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1165
					if (en.lower().find (exe.lower()) != -1) :
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1166
						matchFound = matchFound + 1
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1167
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1168
		if(matchFound > (dllCount /2) ):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1169
			bldtarget = target
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1170
			break
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1171
			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1172
	return bldtarget
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1173
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1174
def validateSDKVersion(baseversion, curversion):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1175
	baseValid = False
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1176
	curValid = False
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1177
	for i in sdk_version:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1178
		if( i == baseversion.lower()):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1179
			baseValid = True
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1180
			break
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1181
	if(baseValid == False):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1182
		raise InputError(["confIP", "Baseline SDK version\n", False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1183
	for i in sdk_version:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1184
		if(i == curversion.lower()):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1185
			curValid = True
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1186
	if (curValid == False):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1187
		raise InputError(["confIP", "Current SDK version\n", False])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1188
	return True 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1189
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1190
def validateBulidTarget(bldtarget,baseline):                       
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1191
	for target in bldtarget.split(';'):                               
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1192
		targetFound = False                                              
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1193
		for i in s60_build_targets:                                     
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1194
			if ( i == target.lower()):                                    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1195
				targetFound = True                                           
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1196
				break                                                       
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1197
		if(targetFound == False ):   
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1198
			if( baseline == True):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1199
				raise InputError(["confIP", "BASELINE_BUILDTARGET\n", False]) 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1200
			else:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1201
				raise InputError(["confIP", "CURRENT_BUILDTARGET\n", False]) 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1202
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
  1203
def validateTargetPath(path):
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
  1204
	if not os.path.exists(path):
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
  1205
		tmp = os.path.abspath(path)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
  1206
		path = tmp
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
  1207
	return os.path.normpath(os.path.abspath(path))
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1208
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1209
			 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1210
#---------------------------Other funcs---------------------------------------------	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1211
def getdataversion():
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1212
	return DATA_VERSION
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1213
 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1214
def gettoolversion():
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1215
	return TOOL_VERSION + ' - ' + TOOL_DATE
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1216
 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1217
#check the metadata file in server path and retrieve the latest file mentioned there
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1218
def getlatestfile( path ):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1219
	if not path.endswith('/'):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1220
		path = path + '/'
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1221
	try:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1222
		file = urllib.urlopen( path + "knownissues_metadata" )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1223
	except IOError:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1224
		return path
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1225
	else:	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1226
		knfile = (file.readline()).strip(' \t\n\r')
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1227
		if (knfile.find("DOCTYPE") != -1):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1228
			return path
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1229
		return path + knfile
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1230
			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1231
#all arguments have been assembled, now call the executable
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1232
#print process-id and exit-code only if invoked form carbide client
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1233
def invokeTool(exe, args):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1234
	os.chdir(EXEC_PATH)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1235
	val= True
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1236
	sys.stderr.write(os.linesep)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1237
	sys.stderr.flush()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1238
	sys.stdout.flush()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1239
	print exe+args
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1240
	if os.name == 'nt':
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1241
		val = False
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1242
	process = subprocess.Popen(exe+args, shell=val)	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1243
	if CARBIDE_PLUGIN:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1244
		sys.stdout.write("PID:" + str(process.pid) + os.linesep)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1245
	sys.stdout.flush()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1246
#wait for current child to complete before executing next one	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1247
	exitcode = process.wait()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1248
	if CARBIDE_PLUGIN:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1249
		sys.stdout.write(os.linesep+ os.path.splitext((os.path.split(exe)[1]))[0] +" exitCode:" + str(exitcode) + os.linesep)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1250
		sys.stdout.flush()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1251
	os.chdir(TOOL_DIR)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1252
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1253
#main function which performs the dispatch logic
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1254
def main(argv):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1255
	try:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1256
		cmd = CmdLineParser(argv)						#parse command line input
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1257
	except InputError, e:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1258
		ExHandler(e)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1259
	os.chdir(TOOL_DIR)									#change to checkbc path, to parse relative paths	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1260
	try:	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1261
		cfg = ConfigParser(cmd)							#takes the commandline parsed input
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1262
		args = cfg.parse(cmd.cmd)						#create key-value pair of inputs form the config file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1263
	except InputError, e:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1264
		ExHandler(e)	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1265
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1266
	isFilterTrue = False
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1267
	if 'f' in cmd.cmd[len(cmd.cmd)-1]:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1268
		isFilterTrue = True
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1269
		Fcmd = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1270
		Fcmd.append(cmd.cmd[len(cmd.cmd)-1])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1271
		try:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1272
			r = ReportFilter(args, Fcmd, cmd.reportstr)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1273
		except InputError, e:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1274
			ExHandler(e)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1275
		r.run()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1276
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1277
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1278
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1279
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1280
	for val in cmd.cmd:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1281
		if 'h' in val:									#verify headers
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1282
			try:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1283
				h = HeaderAnalyser(args, val[1:], cmd.reportstr)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1284
			except InputError, e:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1285
				ExHandler(e)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1286
			h.run()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1287
			if isFilterTrue:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1288
				HFcmd = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1289
				HFcmd.append(val)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1290
				try:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1291
					r = ReportFilter(args, HFcmd, cmd.reportstr)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1292
				except InputError, e:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1293
					ExHandler(e)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1294
				r.run()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1295
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1296
		if 'l' in val:									#verify libraries
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1297
			try:			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1298
				o = LibraryAnalyser(args, val[1:], cmd.reportstr)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1299
			except InputError, e:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1300
				ExHandler(e)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1301
			o.run()			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1302
			if isFilterTrue:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1303
				LFcmd = []
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1304
				LFcmd.append(val)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1305
				try:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1306
					r = ReportFilter(args, LFcmd, cmd.reportstr)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1307
				except InputError, e:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1308
					ExHandler(e)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1309
				r.run()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1310
				
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1311
						
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1312
					
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1313
if __name__=="__main__":
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1314
	#Check for proper python version and then continue execution
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1315
	if not "2.4" <= platform.python_version() < "3.0":
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1316
		python_error()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1317
	main(sys.argv[1:])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1318