diff -r 5d007b20cfd0 -r cd2778e5acfe qtecomplugins/supplements/xqecom/xqecom.py --- a/qtecomplugins/supplements/xqecom/xqecom.py Tue Aug 31 16:02:37 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,255 +0,0 @@ -#!/usr/bin/env python -""" -This is part of qtextensions/qtecomplugins extension. It pregenerates few files needed during compilation of ecom plugins. -Those includes: - * registration resource file - * stubs - * pkg file - * iby file -""" - -import logging -import datetime -import sys -from optparse import OptionParser - -class Generator(object): - def __init__(self, args): - if len(args)==5: - if args[2]=="": - interfaceValue = args[0]+".dll" - else: - interfaceValue = args[2] - self.args = { - 'target': args[0], - 'uid3': args[1], - 'interface': interfaceValue, - 'configuration': args[3], - 'configurationFile': args[4], - 'timestamp': datetime.datetime.now() - } - else: - logging.fatal("illegal number of arguments: %d" % len(args)) - sys.exit(1) - def generate(self): - logging.warning("%s is not generating anything useful" % self.__class__.__name__) - def strip(self, s): - l = len(s) - len(s.lstrip()) - def stripOrNot(x): - x = x + '\n' - if l>=len(x): - return x - else: - return x[l:] - return ''.join(map(stripOrNot, s.splitlines(False))) - -class RssGenerator(Generator): - """ - RSS generator. - """ - def __init__(self, args): - super(self.__class__, self).__init__(args) - def generate(self): - fileName = self.args['target'] + ".rss" - dllName = self.args['target'] + ".dll" - - if self.args['interface'] == "": - self.args['interface'] = dllName - - if self.args['configurationFile'] != "": - opaqueDataFile = file(self.args['configurationFile']) - self.args['opaqueData'] = ((''.join(opaqueDataFile.readlines())).replace('\n', '').replace('"', '\\"'))[:255]; - else: - self.args['opaqueData'] = self.args['configuration'] - - output = file(fileName, "w") - header = """\ - // ============================================================================== - // Generated by xqecom on %(timestamp)s - // This file is generated by xqecom and should not be modified by the user. - // Name : %(target)s.rss - // Part of : - // Description : Fixes common plugin symbols to known ordinals - // Version : - // ============================================================================== - - - #include - - #include - - #include - - RESOURCE REGISTRY_INFO theInfo - { - resource_format_version = RESOURCE_FORMAT_VERSION_2; - dll_uid = %(uid3)s; - interfaces = - { - INTERFACE_INFO - { - interface_uid = KQtEcomPluginInterfaceUID; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = KQtEcomPluginImplementationUid; - version_no = 1; - display_name = "%(target)s.dll"; - // SERVICE.INTERFACE_NAME - default_data = "%(interface)s"; - // SERVICE.CONFIGURATION - opaque_data = "%(opaqueData)s"; - } - }; - } - }; - }""" - - output.write(self.strip(header) % self.args ) - - -class PkgGenerator(Generator): - """ - PKG generator. - """ - def __init__(self, args): - super(self.__class__, self).__init__(args) - def generate(self): - content='''\ - // ============================================================================ - // Generated by xqecom on %(timestamp)s - // This file is generated by xqecom and should not be modified by the user. - // ============================================================================ - - ; Language - &EN - - ; SIS header: name, uid, version - #{%(target)s},(%(uid3)s),1,0,0 - - ; Localised Vendor name - %%{"Nokia, Qt Software"} - - ; Unique Vendor name - :"Nokia, Qt Software" - - ; Dependencies - [0x101F7961],0,0,0,{"S60ProductID"} - [0x102032BE],0,0,0,{"S60ProductID"} - [0x102752AE],0,0,0,{"S60ProductID"} - [0x1028315F],0,0,0,{"S60ProductID"} - (0x2001E61C), 4, 5, 0, {"QtLibs pre-release"} - - ;files - "\\epoc32\\release\\armv5\\urel\\%(target)s.dll" - "!:\\sys\\bin\\%(target)s.dll" - "\\epoc32\\data\\Z\\resource\\plugins\\%(target)s.rsc" - "!:\\resource\\plugins\\%(target)s.rsc"''' - - fileName = self.args['target'] + ".pkg" - output = file(fileName, "w") - output.write(self.strip(content) % self.args) - - -class IbyGenerator(Generator): - """ - IBY generator. - """ - def __init__(self, args): - super(self.__class__, self).__init__(args) - def generate(self): - self.args['TARGET']=self.args['target'].upper() - content="""\ - // ============================================================================ - // Generated by xqecom on %(timestamp)s - // This file is generated by xqecom and should not be modified by the user. - // ============================================================================ - - #ifndef %(TARGET)s_IBY - #define %(TARGET)s_IBY - - #include - - ECOM_PLUGIN( %(target)s.dll, %(target)s.rsc ) - - #endif //%(TARGET)s_IBY""" - - fileName = self.args['target'] + ".iby" - output = file(fileName, "w") - output.write(self.strip(content) % self.args) - -class StubsGenerator(Generator): - """ - Stubs generator. - """ - def __init__(self, args): - super(self.__class__, self).__init__(args) - def generate(self): - contentHrh="""\ - // ============================================================================ - // Generated by xqecom on %(timestamp)s - // This file is generated by xqecom and should not be modified by the user. - // ============================================================================ - - #ifndef ECOMSTUB_%(uid3)s_HRH - #define ECOMSTUB_%(uid3)s_HRH - #define KQtEcomPluginImplementationUid %(uid3)s - #endif //ECOMSTUB_%(uid3)s_HRH""" - - fileName = "ecomstub_" + self.args['uid3'] + ".hrh" - output = file(fileName, "w") - output.write(self.strip(contentHrh) % self.args) - - contentCpp="""\ - // ============================================================================ - // Generated by xqecom on %(timestamp)s - // This file is generated by xqecom and should not be modified by the user. - // ============================================================================ - - #include - #include - #include - XQ_PLUGIN_ECOM_HEADER(%(target)s) - const TImplementationProxy implementationTable[] = - { - IMPLEMENTATION_PROXY_ENTRY(%(uid3)s, C%(target)sFactory::NewL) - }; - - EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) - { - aTableCount = sizeof( implementationTable ) / sizeof( TImplementationProxy ); - return implementationTable; - }""" - - fileName = "ecomstub_" + self.args['uid3'] + ".cpp" - output = file(fileName, "w") - output.write(self.strip(contentCpp) % self.args) - - -def runGenerators(generators, args): - for g in generators: - logging.debug("about to run generator: %s" % g.__name__) - try: - instance = g(args) - instance.generate() - except Exception, ex: - logging.error("Exception in %s: '%s'" % (g.__name__, ex)) - logging.error("Exception in %s: '%s'" % (g.__name__, ex)) - raise - -if (__name__=="__main__"): - arguments = sys.argv[1:] - - op = OptionParser() - op.usage="%prog [options] [ ]" - -# op.add_option("-t", "--target", help="plugin target name") -# op.add_option("-u", "--uid3", help="plugin uid3") -# op.add_option("-i", "--interface", help="interface name") -# op.add_option("-c", "--configuration", help="configuration") -# op.add_option("-f", "--configuration-file", help="configuration file") - - (options, args) = op.parse_args(arguments) - - generators = [RssGenerator, PkgGenerator, IbyGenerator, StubsGenerator] - runGenerators(generators, args) -