buildframework/helium/tools/localisation/create_variant_cenrep.py
author Richard Taylor <richard.i.taylor@nokia.com>
Tue, 02 Mar 2010 17:13:53 +0000
branchfix
changeset 372 e6d6373c0c3a
parent 1 be27ed110b50
permissions -rw-r--r--
merge

#============================================================================ 
#Name        : create_variant_cenrep.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:
#===============================================================================

""" MC Localisation Framework
    Generate cenrep for all declared variants
"""
import configuration
import bsf
import localisation
import sys
import os
import shutil
import re

def main():
    """ Main function, run customisation tools on all found variants.
    """
    if len(sys.argv)<3:
        print("create_variant_cenrep.py productname configfile.xml type id")
        sys.exit(-1)
    
    product = sys.argv[1]
    configfile = sys.argv[2]
    vtype = sys.argv[3]
    vid = None
    if len(sys.argv)>4:
        vid = sys.argv[4]

    try:
        builder = configuration.NestedConfigurationBuilder(open(configfile, 'r'))
        config_set = builder.getConfiguration()    
    
        bsfs = bsf.read_all()
        if not bsfs.has_key(product):
            raise Exception("Product not defined, could not find %s.bsf" % product)
    
        for variant in config_set.getConfigurations(product):
            if variant.type != vtype:
                continue
            if vid != None and vid != variant["%s.id" % variant.type]:
                continue
            vpath = localisation.find_variant_path(variant, "%s.id" % variant.type)
            if vpath is not None and os.path.exists(os.path.join(vpath, 'data')):
                print "Generating Cenrep for %s variant %s in %s" % (variant.type, variant["%s.id" % variant.type], vpath)
                os.system("perl \\tools\\cenrep_scripts\\CTCenrep.pl -p %s -output %s" % (os.path.basename(vpath), vpath))
                # os.system("set VARIANTFOLDER=%s & \\s60\\tools\\CustomizationTool\\CustomizationTool.exe generate -%s -%s" % (os.path.dirname(vpath), os.path.splitdrive(os.getcwd())[0], os.path.basename(vpath)))
                for filename in os.listdir(os.path.join(vpath, 'data')):
                    result = re.match(r"(.+)_%s.iby" % variant["%s.id" % variant.type], filename)
                    if result != None:                        
                        shutil.copyfile(os.path.join(vpath, 'data', filename), os.path.join(vpath, "%s.iby" % result.groups(1)))
            else:
                print "Could not find %s variant %s variation path" % (variant.type, variant["%s.id" % variant.type])
    except IOError, exc:
        print "ERROR: %s" % exc
        sys.exit(-1)
    sys.exit(0)

if __name__ == "__main__":
    main()