diff -r e8e63152f320 -r 2a9601315dfc build/buildutils/extractJavaLocFiles.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/build/buildutils/extractJavaLocFiles.py Mon May 03 12:27:20 2010 +0300 @@ -0,0 +1,107 @@ +# +# 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 "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: +# +#!/usr/bin/python +# +# This script creates java specific loc zip files from S60 loc zip files +# and also creates a "resources.jar" file where all the java loc files +# are collected. +# +# Usage: extractJavaLocFiles.py +# +# Script reads S60 loc zip files from directory and writes +# java loc zip files and "resources.jar" to directory. +# +# This script uses external "jar" command for handling zip files and +# thus is not optimized for speed. +# + +import os, re, shutil, sys, zipfile +import traceback +from optparse import OptionParser + +# Base names for java loc files. +JAVA_LOC_FILES = [ + 'javafileconnection', + 'javainstallation', + 'javasensor', + 'javassl', + 'javausermessages', + 'javaapplicationsettings', + ] + +# Pattern for loc zip file names. +LOC_ZIP_FILE = re.compile("^\d+\.zip$", re.IGNORECASE) + +# Path for java loc files inside RESOURCES_FILE. +RESOURCES_PATH = os.path.join("resources", "com", "nokia", "mj", "impl") + +def main(): + parser = OptionParser( + usage = "Usage: %prog [args] ") + (opts, args) = parser.parse_args() + + try: + inputDir = args[0] + outputDir = args[1] + resourcesFilename = os.path.join(outputDir, args[2]) + + print "Processing loc files from %s to %s" % (inputDir, outputDir) + locFileCount = 0; + for dirname, _, filenames in os.walk(inputDir): + for file in filenames: + inFilename = os.path.join(dirname, file) + if LOC_ZIP_FILE.match(file) and zipfile.is_zipfile(inFilename): + outFilename = os.path.join(outputDir, file.lower()) + (fileIndex, fileExt) = os.path.splitext(file) + print "Extracting %s" % inFilename + extractJavaLocFiles(fileIndex, inFilename) + print "Creating %s" % outFilename + os.system("jar cfM " + outFilename + " " + fileIndex) + print "Updating %s" % resourcesFilename + updateResources(fileIndex, resourcesFilename) + # Remove temporary fileIndex directory. + if os.path.isdir(fileIndex): + shutil.rmtree(fileIndex) + locFileCount = locFileCount + 1 + print "Processed %d loc files" % (locFileCount) + + except: + print "Usage: %s " % sys.argv[0] + traceback.print_exc() + sys.exit(1) + +def extractJavaLocFiles(index, inFilename): + javaLocFiles = "" + for javaLocFile in JAVA_LOC_FILES: + javaLocFilename = os.path.join(index, javaLocFile + "_" + index + ".loc") + javaLocFiles = javaLocFiles + " " + javaLocFilename + os.system("jar xf " + inFilename + javaLocFiles) + +def updateResources(index, resourcesFilename): + resourcesDir = os.path.join(index, RESOURCES_PATH) + if not os.path.isdir(resourcesDir): + os.makedirs(resourcesDir) + for dirname, _, filenames in os.walk(index): + for file in filenames: + os.rename(os.path.join(dirname, file), + os.path.join(resourcesDir, file)) + if os.path.isfile(resourcesFilename): + os.system("jar ufM " + resourcesFilename + " -C " + index + " .") + else: + os.system("jar cfM " + resourcesFilename + " -C " + index + " .") + +if __name__ == "__main__": + main()