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