--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/build/buildutils/generateOdcFile.py Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,110 @@
+#
+# 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
+
+import sys
+import traceback
+import os
+
+
+
+def main():
+ tmpExtension = ".cpp"
+ try:
+ odcFileName = sys.argv[1]
+ javaPeerDll = sys.argv[2]
+ classesDir = sys.argv[3]
+ sysPropsFile = sys.argv[4]
+
+ genOdcFile(odcFileName,
+ javaPeerDll,
+ getClasses(classesDir),
+ getProperties(sysPropsFile))
+
+ except:
+ print "Error during ODC generation!"
+ traceback.print_exc()
+ sys.exit(-1)
+
+def getProperties(sysPropsFile):
+
+ contents = []
+ try:
+ f = open(sysPropsFile, 'r')
+ contents = f.readlines()
+ f.close()
+ except IOError:
+ pass
+ return contents
+
+
+def getClasses(classesDir):
+ startDir = os.path.abspath(classesDir)
+
+ files = []
+ suffix = ".class"
+
+ def callBack(arg, dirname, files):
+ # Remove startDir-part from dirname
+ dirname = dirname[len(startDir) + 1:]
+ for file in files:
+ if file.endswith(suffix):
+ # replace '\' with '/' and strip the class name.
+ res = os.path.join(dirname, file).replace("\\","/").rsplit("/",1)[0]
+ arg.append(res)
+
+ os.path.walk(startDir, callBack, files)
+
+ return files
+
+def genOdcFile( odcFileName,
+ javaPeerDll,
+ classes,
+ properties = []):
+
+ # If a list of classes was given instead of packages, strip class names and
+ # remove duplicates
+ classes = list(set([c for c in classes]))
+
+ lines = [
+ "[container]",
+ "name=" + javaPeerDll,
+ "type=JXESL",
+ "",
+ "[packages]"]
+ lines.extend([p.replace(".", "/") for p in sorted(classes)])
+ lines.append("")
+ lines.append("[properties]")
+
+ # Append system properties, but only if there are classes
+ # (classes may be missing if component sources has been excluded
+ # from release, which means that properties should not be written
+ # either)
+ if classes:
+ for property in properties:
+ property = property.strip()
+ if not property:
+ continue
+ lines.append("-D" + property)
+ lines.append("")
+
+ f = open(odcFileName, 'w')
+ f.write("\n".join(lines))
+ f.close()
+
+
+if __name__ == "__main__":
+ main()