diff -r 59bb7c4d6172 -r 0f5e3a7fb6af buildframework/helium/tools/iad/packageiad.py --- a/buildframework/helium/tools/iad/packageiad.py Fri Feb 05 11:59:41 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,134 +0,0 @@ -#============================================================================ -#Name : packageiad.py -#Part of : Helium - -#Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -#All rights reserved. -#This component and the accompanying materials are made available -#under the terms of the License "Eclipse Public License v1.0" -#which accompanies this distribution, and is available -#at the URL "http://www.eclipse.org/legal/epl-v10.html". -# -#Initial Contributors: -#Nokia Corporation - initial contribution. -# -#Contributors: -# -#Description: -#=============================================================================== - -""" packageIAD.py module """ - -import os -import sys -import xml.dom.minidom -import iadinfo -import zipfile -import encodings.utf_8 - - -class IADPackager : - """ package IAD class " - """ - - def __init__(self) : - """ class init method """ - self.hasStub = False - - def getBldDirs(self, layer, bldDirs) : - """ get the list of build directories """ - units = layer.getElementsByTagName ("unit") - for unit in units : - dir = unit.getAttribute ("bldFile").rstrip ('\\/') - i = dir.rfind ("\\") - if i == - 1 : - i = dir.rfind ("/") - bldDirs.append (dir[:i + 1]) - - def getLayer(self, configuration, layers, bldDirs) : - """ get each layer info """ - layerRef = configuration.getElementsByTagName ("layerRef")[0].getAttribute ("layerName") - for layer in layers : - if layer.getAttribute ("name") == layerRef : - self.getBldDirs (layer, bldDirs) - - def createInfoFiles(self, sisInfo) : - """ create the INfo files depends.xml etc.""" - depends = xml.dom.minidom.parse ("depends.xml") - info = xml.dom.minidom.parseString (sisInfo) - - infoFile = file ("sisinfo.xml", "w") - packageDeps = info.getElementsByTagName("package_dependency") - for packageDep in packageDeps : - pack = depends.createElement ("package") - depends.childNodes[1].appendChild (pack) - for child in packageDep.childNodes : - pack.appendChild (child) - infoFile.write (info.toxml ()) - infoFile.close() - depFile = file ("depends.xml", "w") - depFile.write (depends.toxml ()) - depFile.close() - - def createSis(self, packageDir, packageName, makesis) : - """ create the .sis file """ - sisReader = iadinfo.IADHandler() - os.chdir (packageDir) - sisPackage = packageName + ".sis" - stubPackage = packageName + "_stub.sis" - print "Creating", sisPackage - cmd = makesis + " package.pkg " + sisPackage - os.system (cmd) - self.createInfoFiles (sisReader.getInfo(sisPackage)) - if os.path.exists(stubPackage) : - print "Creating stub SIS file", stubPackage - self.hasStub = True - cmd = makesis + " -s package.pkg " + stubPackage - os.system (cmd) - - def createPackage(self, topDir, packageName) : - """ create the Data Package """ - print "Creating package", packageName - os.chdir (topDir) - zipFile = packageName + ".zip" - sisFile = packageName + '/' + packageName + ".sis" - infoFile = packageName + "/sisinfo.xml" - depFile = packageName + "/depends.xml" - zip = zipfile.ZipFile (zipFile, "w") - zip.write (sisFile, sisFile.encode ("utf-8")) - zip.write (infoFile, infoFile.encode ("utf-8")) - zip.write (depFile, depFile.encode ("utf-8")) - if self.hasStub : - stubFile = packageName + '/' + packageName + "_stub.sis" - zip.write (stubFile, stubFile.encode ("utf-8")) - zip.close() - - - def processSisDir(self, sisDir, makesis) : - """ handle the directory used to create the .sis file """ - for root, dirs, _ in os.walk (sisDir): - for name in dirs : - self.createSis (os.path.join (root, name), name, makesis) - self.createPackage (root, name) - -def main(sysdefFile, sysdefconfigs, bldDrive): - """ main to called when imported """ - makesis = bldDrive + "\\epoc32\\tools\\makesis.exe" - - sysdef = xml.dom.minidom.parse (sysdefFile) - configurations = sysdef.getElementsByTagName ("configuration") - layers = sysdef.getElementsByTagName ("layer") - bldDirs = [] - - packager = IADPackager() - - for configuration in configurations : - if configuration.getAttribute ("name") == sysdefconfigs : - packager.getLayer (configuration, layers, bldDirs) - - - for bldDir in bldDirs : - packager.processSisDir (bldDrive + bldDir + "sis\\", makesis) - -if __name__ == "__main__": - main(sys.argv[1], sys.argv[2], sys.argv[3])