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