# HG changeset patch # User terytkon # Date 1268319877 -7200 # Node ID 2e8eeb919028a00f0bc83fa10ed6000d784a8819 Adding EPL version of configurationengine. diff -r 000000000000 -r 2e8eeb919028 configurationengine/RELEASE.TXT --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/RELEASE.TXT Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,174 @@ + + + ConE the Configuration Engine + Version cone-1.1.5 + Release Notes, 11.1.2010 + +Release notes: +============= +== Version Cone-1.1.5 == + * Stories: + - #792: Change ConE licenses from SFL to EPL + - #80: As a variant engineer I want to merge my configuration so that "old" content is removed + - #639: As a variant engineer I want that color depth argument for bmconv and mifconv is configurable + - #703: As a SW developer I want to merge my confml and implml to global configuration project easily so that I don't need to manually copy the files and update the root files. + - #765: As a user I want to configure cone logging output so that I can use the cone logs more efficiently + - #785: CommandML does not support tag elements + * Bug fixes: + - #814: ERROR: Content folder in vascos "dummy" layer is not added to CPF when adding layer with -a option + - #763: Selection setting option map does not work properly when option map element is used + - #193: Different configurations open on the same project return the same setting values + - #737: ConE merge produces incorrect output (layer root contains all data) + - #762: ConE: option mapping does not store the mapKey/mapValue to confml file when confml output is written + - #764: ConE must not assume that the executive process will have write access to workdir + - #820: MultiSelection value setting does not work correctly + +== Version Cone-1.1.4 == + * Stories: + - #663: As a variant engineer I want to get resource's size in ruleml. + - #700: As a variant engineer I want to have a rule which automatically sets correct color depth so that I don't need to manually do that. + * Bug fixes: + - #701: ConE crml: cenrep txt generation with sid & capabilities produces incorrect output + +== Version Cone-1.1.3 == + * Stories: + - #696: Factory Settings cannot be restored as phone resets every time the security code is inserted + - #698: cone.cmd returns 0 even if ConE execution fails + * Bug fixes: + - #699: Remove target:core tag from existing implementations so that no content is by default generated to core image. + +== Version Cone-1.1.2 == + +== Version Cone-1.1.2 RC2 == + * Bugfixes: + - Fixed template plug-in bug fix + +== Version Cone-1.1.2 RC1 == + + * Stories: + - #588: As a user I want to run the same command on several configurations in a batch mode + - #611: As a product integrator I want to have info report in csv format so that importing to Excel is easy to made + - #612: As a product integrator I want to see possible values for certain setting so that default values template is easy to made + - #643: Impml harmonization with container concept + - #652: Content plugin refactoring to enable better use + + * Bug fixes: + - #657: Project.create_configuration takes forever with big configuration project + - #659: Content plugins copy operation does not do anything if the file attribute in input has capital letter + - #660: plugins get increased to an insane amount! + +== Version Cone-1.1.1 RC4 == + * Bugfixes: + - cone.cmd fix + +== Version Cone-1.1.1 RC3 == + * Bugfixes: + - GenConfML plugin to use LXML instead of 4Suite + - Changed installation system to make the installation into a sub-directory depending on the current Python version (e.g. cone/2.5/lib/ instead of cone/lib/ etc.) + - Changed cone.cmd so that it chooses the correct base directory based on the Python version + - Added dep-eggs for Python 2.6 + - Updated setuptools to version 0.6c11 from 0.6c9 + - PYTHONCASEOK=1 added to cone.cmd + +== Version Cone-1.1.1 RC2 == + * Bugfixes: + * #640: Tag definitions in TemplateML namespace do not work + * #645: Report generation fails if the changed data contains references to non-existent settings + * #648: TemplateML plug-in does not list output files correctly + * #589: Change ImageML get_refs() to report references used in determining input +== Version Cone-1.1.1 RC1 == + * Features: + * Support for new webstorage (Carbon extapi) + * Export features and data. Supports exporting of features and data from carbon to Configuration project and confml files. + * + * Known issues + * Carbon refs are converted to apropriate confml refs in Cone which will cause problems if the carbon ref + is not a valid confml ref. e.g. refs withs dots or any unicode characters. + * Selection type feature cannot be created with the Carbon extapi (Creation of groups fails). + * Directory separators '/' in configuration names will break the loading of configurations. + * Carbon allows only references in lower case, which is contradicting current confml specification. +== Version Cone-1.1.1 == + * New features + * Templateml plugin + * Command plugin + * CRML DC (Data Compatibility) report into compare action + * Implementation Language parsing changed from file name based to XML namespace based + * It is now possible to have multiple implementations in a single file + * Support for implementation tags, invocation phase and temporary ConfML features added to a common ImplML namespace + * Bugfixes + * Known issues + +== Version Cone-1.0.0 == + * New features + * Bugfixes + * Known issues + * #1556: ConE: sequence prepending works incorrectly + * #1722: Sequence items with extension policy prefix are reversed + * #1726: generate --add doesn't include the included layer's data in generation + * #1729: CO-18: Merged variant layer inclusions are not in the correct order + * #1799: Empty folders are not preserved when importing from a CPF generated by Carbide.ct or Carbide.v + * #1884: Cone: Imageml plugin execution tool setting configuration is relative to the execution folder. + * #1893: ImageML mifconv command doesn't work if tooldir contains spaces + * #1903: ConE rules cannot contain unicode chars + +== Version Cone-1.0.0RC3 == + * New features + * Bugfixes + * #1909: Links to GenConfML output files don't work in the generation report + * #1908: CPF exported with multiple roots and empty folders doesn't work correctly in Carbide.v + +== Version Cone-1.0.0RC2 == + * New features + * Bugfixes + * #1881: Report generation fails if any of the values contains unicode values + * #1890: Generation report doesn't support url encoding in links + * #1904: Cone cannot be executed in directory that contains spaces + * #1889: ImageML output goes under /output/content/content/ + * #1905: ConE: The priority for filenamejoin is incorrect + * #1906: ConE generation fails if report output dir doesn't exist + * Removed import_browserbookmarks action + * #1907: Empty folders are not taken into CPF if they have been defined using -a parameter + +== Version Cone-0.6.1 == + * New features + * #1780: ConE plugin filtering re-factoring, http://configurationtools.nmp.nokia.com/configurationtool/ticket/1759 + * Add support for generic tags for plugin. Adds has_tag function to the plugin api. see http://configurationtools.nmp.nokia.com/builds/cone/docs/epydoc/cone.public.plugin.ImplBase-class.html#has_tag + * Add support for ini file like configuring of ConE. e.g. Plugin paths and tags can be configured in these configuration files. + * #1574: As a variant engineer I want to see generation report so that I know which settings are properly generated and which needs to be modified manually + * See http://configurationtools.nmp.nokia.com/configurationtool/ticket/1574 + * This is a reporting functionality embedded now in generation action. + * Uses jinja2 to make the reporting based on template language + * #1684: As a customization designer I want to be able to use arithmetic operations in rule files so that I can configure MMS settings easily + * See http://configurationtools.nmp.nokia.com/configurationtool/ticket/1684 + * #1104: Empty directories are omited in CPF export: Support for Cone + * See http://configurationtools.nmp.nokia.com/configurationtool/ticket/1104 + * #1784: Include empty folders in ConE merge + * See http://configurationtools.nmp.nokia.com/configurationtool/ticket/1784 + * #1625: Phase support to Cone Content Plugin + * http://configurationtools.nmp.nokia.com/configurationtool/ticket/1625 + * #1487: ConE support for Rules / Relations + * Adds a ruleml implementation language and plugin + * See http://configurationtools.nmp.nokia.com/configurationtool/ticket/1487 + * Bugfixes + * Fixed a bug in view parsing, which expected a id instead of a name. + * Fixed a bug in implementation container creation to a configuration that is not in the root of the storage. + * Fixed file handle leak in acceptance tests. + * Fixed a bug in user story, As a customization designer I want to add rule also for settings that have empty default value. + * #1654: Default extension policy not set correctly in ConE + * #1532: ConE: Removing non existing configuration fails + * #1499: Cone: Projectconversion plugin does not remove old includes from existing data files + + +== Version Cone-0.6.0 == + * Confml support: + * Sequence data supports subsecuences (e.g. file element under sequence) + * Sequence data access via column (e.g. ref fea.sequencefea.column1) returns a list of data values in the column1 of sequencefea. + * Python type casting for confml elements (ConfmlIntSetting,ConfmlBooleanSetting supported) + +== Version Cone-0.5.2 == + * Confml support: + * sequence data support + * view support + +== Version Cone-0.5.1 == + * First version of the ConE public API diff -r 000000000000 -r 2e8eeb919028 configurationengine/build-scripts/export-bat/plugin-integration-test-overlay/__init__.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/build-scripts/export-bat/plugin-integration-test-overlay/__init__.py Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,16 @@ +# +# 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: +# + diff -r 000000000000 -r 2e8eeb919028 configurationengine/build-scripts/export-bat/scripts-tests-overlay/nose_bat.cfg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/build-scripts/export-bat/scripts-tests-overlay/nose_bat.cfg Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,6 @@ +[nosetests] +verbosity=3 +include=unittest +with-xunit=1 +xunit-file=cone-bat.xml +tests=tests,plugin-tests diff -r 000000000000 -r 2e8eeb919028 configurationengine/build-scripts/export-bat/scripts-tests-overlay/readme.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/build-scripts/export-bat/scripts-tests-overlay/readme.txt Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,6 @@ +ConE automated basic acceptance tests +------------------------------------- + +Execution steps: +1. Extract the ConE release to test under cone/ +2. Execute runtests.cmd diff -r 000000000000 -r 2e8eeb919028 configurationengine/build-scripts/export-bat/scripts-tests-overlay/runtests.cmd --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/build-scripts/export-bat/scripts-tests-overlay/runtests.cmd Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,17 @@ +@rem +@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +@rem All rights reserved. +@rem This component and the accompanying materials are made available +@rem under the terms of "Eclipse Public License v1.0" +@rem which accompanies this distribution, and is available +@rem at the URL "http://www.eclipse.org/legal/epl-v10.html". +@rem +@rem Initial Contributors: +@rem Nokia Corporation - initial contribution. +@rem +@rem Contributors: +@rem +@rem Description: +@rem + +python %~dp0%\runtests.py \ No newline at end of file diff -r 000000000000 -r 2e8eeb919028 configurationengine/build-scripts/export-bat/scripts-tests-overlay/runtests.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/build-scripts/export-bat/scripts-tests-overlay/runtests.py Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,108 @@ +# +# 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: +# + +import sys, os, re, unittest + +ROOT_PATH = os.path.abspath(os.path.dirname(__file__)) + +CONE_PATH = os.path.join(ROOT_PATH, 'cone') +EGGS_PATH = os.path.join(ROOT_PATH, 'eggs') + +def add_eggs_to_path(egg_path): + if not os.path.isdir(egg_path): + return + + for name in os.listdir(egg_path): + if name.endswith('.egg'): + path = os.path.normpath(os.path.join(egg_path, name)) + if path not in sys.path: + print "Adding '%s' to path" % name + sys.path.append(path) + + +def _collect_test_suite(base_dir, module_subdir): + # Check that the directory exists + module_dir = os.path.join(base_dir, module_subdir) + if not os.path.exists(module_dir): + raise RuntimeError("'%s' does not exist!" % module_dir) + + # Collect the names of all test modules (of the form "unittest_*.py") + test_modules_names = [] + for name in os.listdir(module_dir): + if re.match(r'^unittest_.*\.py$', name) != None: + test_modules_names.append(name[:-3]) + + # Import the modules + sys.path.insert(0, base_dir) + try: + suite = unittest.TestSuite() + for modname in test_modules_names: + # Load the test module dynamically and add it to the test suite + top_module = __import__(module_subdir + '.' + modname) + + # top_module contains now actually e.g. mymodule.unittest_sometest, + # so get the actual unit test module + module = getattr(top_module, modname) + + suite.addTests(unittest.TestLoader().loadTestsFromModule(module)) + return suite + finally: + del sys.path[0] + +def _run_without_nose(): + suite = unittest.TestSuite() + + # Collect script test suite + suite.addTest(_collect_test_suite(ROOT_PATH, 'tests')) + + # Collect test suites from the plugin-tests/ directory + PLUGIN_TEST_DIR = os.path.join(ROOT_PATH, 'plugin-tests') + if os.path.exists(PLUGIN_TEST_DIR): + for name in os.listdir(PLUGIN_TEST_DIR): + plugin_suite = _collect_test_suite(PLUGIN_TEST_DIR, name) + suite.addTest(plugin_suite) + + # Run the tests + unittest.TextTestRunner(verbosity=2).run(suite) + +def _run_with_nose(): + import nose + import nose.plugins.xunit + + # Configure nose + plugins = nose.plugins.manager.DefaultPluginManager() + allfiles = nose.config.all_config_files() + ['nose_bat.cfg'] + conf = nose.config.Config(files=allfiles, plugins=plugins) + + # Run the tests + nose.run(config=conf, argv=sys.argv[:1]) + +def main(): + if 'CONE_PATH' not in os.environ: + cone_path = os.path.join(ROOT_PATH, 'cone') + print "Setting CONE_PATH to '%s'" % cone_path + os.environ['CONE_PATH'] = cone_path + + add_eggs_to_path(EGGS_PATH) + + if '--with-nose' in sys.argv: + _run_with_nose() + else: + _run_without_nose() + return 0 + +if __name__ == "__main__": + sys.exit(main()) diff -r 000000000000 -r 2e8eeb919028 configurationengine/build-scripts/export-bat/scripts-tests-overlay/tests/__init__.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/build-scripts/export-bat/scripts-tests-overlay/tests/__init__.py Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,16 @@ +# +# 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: +# + diff -r 000000000000 -r 2e8eeb919028 configurationengine/build-scripts/export_bat.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/build-scripts/export_bat.py Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,183 @@ +# +# 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: +# + +import sys, os, shutil, imp +import logging +from optparse import OptionParser + +log = logging.getLogger() + +ROOT_PATH = os.path.abspath(os.path.dirname(__file__)) +SOURCE_ROOT = os.path.normpath(os.path.join(ROOT_PATH, '../source')) +SCRIPTS_SOURCE_ROOT = os.path.normpath(os.path.join(SOURCE_ROOT, 'scripts')) +PLUGIN_SOURCE_ROOT = os.path.normpath(os.path.join(SOURCE_ROOT, 'plugins')) +TESTAUTOMATION_ROOT = os.path.normpath(os.path.join(SOURCE_ROOT, 'testautomation')) +assert os.path.exists(SOURCE_ROOT) +assert os.path.exists(SCRIPTS_SOURCE_ROOT) +assert os.path.exists(PLUGIN_SOURCE_ROOT) +assert os.path.exists(TESTAUTOMATION_ROOT) + +sys.path.append(PLUGIN_SOURCE_ROOT) +import plugin_utils + +sys.path.append(TESTAUTOMATION_ROOT) +import testautomation +from testautomation.copy_dir import copy_dir + +import utils +utils.setup_logging('export_bat.log') + + +def read_export_function_from_file(file_path): + if not os.path.exists(file_path): + return None + + m = imp.load_source( + file_path.replace('\\', '__') + .replace('/', '__') + .replace(':', '_') + .replace('.', '_') + .replace(' ', '_'), + file_path) + + try: + return m.export_standalone + except AttributeError: + return None + +def find_egg_file(dir, name, python_version): + """ + Returns the name of an egg file in the given directory that starts with the + given name and is for the given Python version. + + >>> find_egg_file('dep-eggs', 'simplejson', '2.5') + 'simplejson-2.0.9-py2.5-win32.egg' + >>> find_egg_file('dep-eggs', 'simplejson', '2.6') + 'simplejson-2.0.9-py2.6-win32.egg' + """ + for filename in os.listdir(dir): + if filename.startswith(name) and 'py' + python_version in filename: + return filename + return None + +def main(argv): + # ----------- + # Parse args + # ----------- + + parser = OptionParser() + parser.add_option("-t", "--target-dir", + help="The directory where the test are to be exported.") + parser.add_option("-p", "--plugin-package", + help="The plug-in package for exporting plug-in integration tests.", + default=None) + (options, args) = parser.parse_args() + if options.target_dir is None: + parser.error("Target directory must be given") + + PYTHON_VERSION = utils.get_python_version() + + TARGET_PATH = options.target_dir + PLUGIN_PACKAGE = options.plugin_package + log.info("Target directory: %s" % TARGET_PATH) + log.info("Plug-in package: %r" % PLUGIN_PACKAGE) + log.info("Python version: %s" % PYTHON_VERSION) + + log.info("Cleaning target directory...") + utils.recreate_dir(TARGET_PATH) + + + # ------------------------- + # Export script test files + # ------------------------- + + log.info("Copying script test files...") + SCRIPT_TESTS_DIR = os.path.join(SCRIPTS_SOURCE_ROOT, 'tests') + assert os.path.exists(SCRIPT_TESTS_DIR) + copy_dir(source_dir = SCRIPT_TESTS_DIR, + target_dir = os.path.join(TARGET_PATH, 'tests'), + dir_ignore_functions = [lambda d: d in ('.svn', 'temp', 'export_standalone')], + file_ignore_functions = [lambda f: f == 'cone.log' or f.endswith('.pyc')]) + + log.info("Copying script test overlay files...") + copy_dir(source_dir = os.path.join(ROOT_PATH, "export-bat/scripts-tests-overlay"), + target_dir = TARGET_PATH, + dir_ignore_functions = [lambda d: d == '.svn']) + + + + # -------------------------------------- + # Export plug-in integration test files + # -------------------------------------- + + log.info("Exporting plug-in integration test files...") + subpaths_by_package = plugin_utils.find_plugin_package_subpaths('integration-test', PLUGIN_PACKAGE) + for package_name, tests_path in subpaths_by_package: + log.debug(" Package: %s" % package_name) + log.debug(" Path: %s" % tests_path) + + log.debug(" Copying test files...") + target_path = os.path.join(TARGET_PATH, 'plugin-tests', package_name + '_tests') + copy_dir(source_dir = tests_path, + target_dir = target_path, + dir_ignore_functions = [lambda d: d in ('.svn', 'temp')], + file_ignore_functions = [lambda f: f in ('cone.log', 'export_standalone.py') or f.endswith('.pyc')]) + + log.debug(" Copying overlay files...") + overlay_path = os.path.join('export-bat/plugin-integration-test-overlay') + copy_dir(source_dir = overlay_path, + target_dir = target_path, + dir_ignore_functions = [lambda d: d == '.svn']) + + log.debug(" Exporting extra data...") + func = read_export_function_from_file(os.path.join(tests_path, 'export_standalone.py')) + if func: + log.debug(" Executing export function...") + func(target_path) + + + TARGET_EGGS_DIR = os.path.join(TARGET_PATH, 'eggs') + + # --------------------------- + # Copy needed dependency eggs + # --------------------------- + + log.info("Copying library eggs...") + DEP_EGGS_DIR = os.path.normpath(os.path.join(ROOT_PATH, '../dep-eggs')) + assert os.path.isdir(DEP_EGGS_DIR) + DEPENDENCIES = ['simplejson', 'Jinja2'] + for dep in DEPENDENCIES: + egg_file_name = find_egg_file(DEP_EGGS_DIR, dep, PYTHON_VERSION) + if egg_file_name is None: + log.critical("Could not find egg file for dependency '%s' from '%s'" % (dep, DEP_EGGS_DIR)) + return 1 + source_path = os.path.join(DEP_EGGS_DIR, egg_file_name) + target_path = os.path.join(TARGET_EGGS_DIR, egg_file_name) + utils.copy_file(source_path, target_path) + + + # ------------------ + # Build needed eggs + # ------------------ + + log.info("Building eggs...") + utils.build_egg(os.path.join(SOURCE_ROOT), TARGET_EGGS_DIR) + utils.build_egg(os.path.join(SOURCE_ROOT, 'testautomation'), TARGET_EGGS_DIR) + + return 0 + +if __name__ == "__main__": + sys.exit(main(sys.argv)) diff -r 000000000000 -r 2e8eeb919028 configurationengine/build-scripts/install_cone.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/build-scripts/install_cone.py Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,229 @@ +# +# 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: +# Script for building and installing ConE into a specified directory. +# + +import sys, os, shutil, subprocess, optparse +import logging +log = logging.getLogger() + +import utils +utils.setup_logging('install_cone.log') + +ROOT_PATH = os.path.abspath(os.path.dirname(__file__)) + +SOURCE_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '../source')) +assert os.path.isdir(SOURCE_ROOT) +SCRIPTS_SOURCE_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '../source/scripts')) +assert os.path.isdir(SCRIPTS_SOURCE_ROOT) +PLUGIN_SOURCE_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '../source/plugins')) +assert os.path.isdir(PLUGIN_SOURCE_ROOT) + +sys.path.append(PLUGIN_SOURCE_ROOT) +import plugin_utils + +# Temporary directory where ConE eggs are built into +TEMP_CONE_EGG_DIR = os.path.join(ROOT_PATH, 'install-temp/cone-eggs') +# Temporary directory where dependency lib eggs are copied +TEMP_LIB_EGG_DIR = os.path.join(ROOT_PATH, 'install-temp/dep-eggs') + +class BuildFailedError(RuntimeError): + pass + +def find_cone_egg_sources(plugin_package): + """ + Return a list of paths to the source directories to install. + """ + paths = [SOURCE_ROOT, + SCRIPTS_SOURCE_ROOT] + plugin_paths = plugin_utils.find_plugin_sources_by_package(plugin_package) + paths.extend(plugin_paths) + + log.debug("ConE egg source paths:\n%s" % '\n'.join(paths)) + return paths + + +def build_cone_eggs(source_paths): + log.info("Cleaning temporary ConE egg dir...") + utils.recreate_dir(TEMP_CONE_EGG_DIR) + + log.info("Building ConE eggs...") + for source_path in source_paths: + ok = utils.build_egg(source_path, TEMP_CONE_EGG_DIR) + if not ok: + raise BuildFailedError() + +def retrieve_dep_eggs(plugin_package): + log.info("Cleaning temporary lib egg dir...") + utils.recreate_dir(TEMP_LIB_EGG_DIR) + + log.info("Retrieving dependency eggs...") + def copy_eggs(source_dir): + log.debug("Copying eggs from '%s'..." % source_dir) + for name in os.listdir(source_dir): + if name.endswith('.egg'): + utils.copy_file( + source_path = os.path.join(source_dir, name), + target_path = TEMP_LIB_EGG_DIR) + + dep_dirs_by_package = [(None, os.path.join(ROOT_PATH, '../dep-eggs'))] + dep_dirs_by_package.extend(plugin_utils.find_plugin_package_subpaths('dep-eggs', plugin_package)) + + for package_name, dep_dir in dep_dirs_by_package: + copy_eggs(dep_dir) + +def init_target_dir(target_dir, python_version): + BASE_DIR = os.path.normpath(os.path.join(target_dir, 'cone', python_version)) + LIB_DIR = os.path.join(BASE_DIR, 'lib') + SCRIPT_DIR = os.path.join(BASE_DIR, 'scripts') + + utils.recreate_dir(BASE_DIR) + utils.recreate_dir(LIB_DIR) + utils.recreate_dir(SCRIPT_DIR) + return LIB_DIR, SCRIPT_DIR + +def install_cone_eggs(target_dir, python_version): + """ + Install ConE eggs into the given target directory. + """ + log.info("Installing ConE eggs...") + LIB_DIR, SCRIPT_DIR = init_target_dir(target_dir, python_version) + + # Collect the eggs to install + eggs = ['setuptools'] # Setuptools are needed also + for name in os.listdir(TEMP_CONE_EGG_DIR): + if name.endswith('.egg'): + eggs.append(TEMP_CONE_EGG_DIR + '/' + name) + + # Run easy_install to install the eggs + for egg in eggs: + log.debug(egg) + + if sys.platform == "win32": + platform_args = ["--always-copy"] + else: + platform_args = ["--no-deps"] + + command = ['easy_install', + '--allow-hosts None', + '--find-links install-temp/dep-eggs', + '--install-dir "%s"' % LIB_DIR, + '--script-dir "%s"' % SCRIPT_DIR, + '--site-dirs "%s"' % LIB_DIR] + command.extend(platform_args) + command.append('"' + egg + '"') + command = ' '.join(command) + + log.debug(command) + ok = utils.run_command(command, env_overrides={'PYTHONPATH': LIB_DIR}) + if not ok: + raise BuildFailedError() + +def develop_install_cone_sources(source_paths, target_dir, python_version): + log.info("Installing ConE sources in develop mode...") + LIB_DIR, SCRIPT_DIR = init_target_dir(target_dir, python_version) + + orig_workdir = os.getcwd() + try: + for source_path in source_paths: + os.chdir(source_path) + command = ['python setup.py develop', + '--allow-hosts None', + '--find-links "%s"' % os.path.normpath(os.path.join(ROOT_PATH, 'install-temp/dep-eggs')), + '--install-dir "%s"' % LIB_DIR, + '--script-dir "%s"' % SCRIPT_DIR, + '--site-dirs "%s"' % LIB_DIR, + '--always-copy'] + command = ' '.join(command) + log.debug(command) + ok = utils.run_command(command, env_overrides={'PYTHONPATH': LIB_DIR}) + if not ok: + raise BuildFailedError() + finally: + os.chdir(orig_workdir) + +def perform_build(target_dir, plugin_package, install_type, python_version): + log.info("Target directory: %s" % target_dir) + log.info("Plug-in package: %r" % plugin_package) + log.info("Python version: %s" % python_version) + + # Retrieve dependencies to the correct location + retrieve_dep_eggs(plugin_package) + + # Find paths to the sources to install + source_paths = find_cone_egg_sources(plugin_package) + + log.info("Creating install directory...") + if not os.path.exists(target_dir): + os.makedirs(target_dir) + + if install_type == 'install': + build_cone_eggs(source_paths) + install_cone_eggs(target_dir, python_version) + else: + develop_install_cone_sources(source_paths, target_dir, python_version) + + # Copy RELEASE.txt + utils.copy_file( + source_path = os.path.join(SOURCE_ROOT, '..', 'RELEASE.TXT'), + target_path = os.path.join(target_dir, 'cone', 'RELEASE.TXT')) + + # Copy cone.cmd or cone.sh, depending on the platform + if sys.platform == "win32": + filename = "cone.cmd" + else: + filename = "cone.sh" + log.info("Copying %s" % filename) + utils.copy_file( + source_path = os.path.join(SOURCE_ROOT, filename), + target_path = target_dir) + +def main(): + parser = optparse.OptionParser() + parser.add_option("-t", "--target-dir", + help="The directory where ConE is to be installed.") + parser.add_option("-p", "--plugin-package",\ + help="The plug-in package to include in the installation.",\ + default=None) + parser.add_option("-i", "--install-type",\ + help="The installation type, can be 'install' (the default) or 'develop'.",\ + default='install') + (options, args) = parser.parse_args() + if options.target_dir is None: + parser.error("Target directory must be given") + if options.install_type not in ('install', 'develop'): + parser.error("Invalid install type ('%s')" % options.install_type) + + if not utils.run_command("python --help"): + log.critical("Could not run 'python'. Please make sure that you "\ + "have Python installed and in your path.") + return 1 + + if not utils.run_command("easy_install --help"): + log.critical("Could not run 'easy_install'. Please make sure that you "\ + "have setuptools installed and the Python scripts directory in your path.") + return 1 + + python_version = utils.get_python_version() + + try: + perform_build(options.target_dir, options.plugin_package, options.install_type, python_version) + except BuildFailedError: + return 1 + + return 0 + +if __name__ == "__main__": + sys.exit(main()) diff -r 000000000000 -r 2e8eeb919028 configurationengine/build-scripts/readme.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/build-scripts/readme.txt Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,5 @@ +This directory contains the scripts used to install ConE into a directory +and export standalone tests (BAT). The scripts are intended to be run from +this directory. + +See also the file build_script_tests.txt in the working copy root. \ No newline at end of file diff -r 000000000000 -r 2e8eeb919028 configurationengine/build-scripts/utils.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/build-scripts/utils.py Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,94 @@ +# +# 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: +# Utility functions for use in build scripts. +# + +import sys, os, subprocess, shutil, logging + +log = logging.getLogger() + +def run_command(cmd, env_overrides={}): + env = os.environ.copy() + for key, val in env_overrides.iteritems(): + env[key] = val + + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True, env=env) + out, err = p.communicate() + if p.returncode != 0: + log.error("Could not execute command (%s)" % cmd) + log.debug("Output:\n%s" % out) + return False + else: + return True + +def recreate_dir(path): + log.debug('recreate_dir(%s)' % path) + if os.path.exists(path): + for name in os.listdir(path): + p = os.path.join(path, name) + if os.path.isdir(p): shutil.rmtree(p) + else: os.remove(p) + else: + os.makedirs(path) + +def build_egg(source_dir, target_dir): + """ + Build an egg file from the given source directory (must contain a setup.py) + into the given target directory. + """ + log.debug("Building egg from '%s'" % source_dir) + + orig_workdir = os.getcwd() + os.chdir(source_dir) + try: + cmd = 'python setup.py bdist_egg --dist-dir "%s"' % target_dir + return run_command(cmd) + finally: + os.chdir(orig_workdir) + +def copy_file(source_path, target_path): + log.debug("Copying '%s' -> '%s'" % (source_path, target_path)) + target_dir = os.path.dirname(target_path) + if target_dir != '' and not os.path.exists(target_dir): + os.makedirs(target_dir) + shutil.copy2(source_path, target_path) + +def get_python_version(): + """ + Return the version of the Python that is run when the command 'python' + is run (not the Python where this script is executing). + """ + p = subprocess.Popen('python -c "import sys; print sys.version[:3]"', stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True) + out, err = p.communicate() + if p.returncode != 0: + log.critical("Failed to get python version") + log.critical("Command output: %s" % out) + return 1 + + return out.strip() + +def setup_logging(logfile): + root_logger = logging.getLogger() + root_logger.setLevel(logging.DEBUG) + + console_handler = logging.StreamHandler() + console_handler.setLevel(logging.INFO) + console_handler.setFormatter(logging.Formatter('%(levelname)s - %(message)s')) + root_logger.addHandler(console_handler) + + file_handler = logging.FileHandler(logfile, mode='w') + file_handler.setLevel(logging.DEBUG) + file_handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')) + root_logger.addHandler(file_handler) diff -r 000000000000 -r 2e8eeb919028 configurationengine/build.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/build.xml Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,270 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Revert SVN revision in source/cone/__init__.py + + + + + Determine current working copy revision + + + + SVN revision: ${svn.version} + + + Update SVN revision in __init__.py + + + + + + + + + + + + + + Revert SVN revision in source/cone/__init__.py + + + + + + + + + Installing with first Python version (PATH=${build.dualversioninstall.path1}) + + + + + + Installing with second Python version (PATH=${build.dualversioninstall.path2}) + + + + + + Revert SVN revision in source/cone/__init__.py + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 000000000000 -r 2e8eeb919028 configurationengine/build_script_tests.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/build_script_tests.txt Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,23 @@ +If you make changes to build-scripts/ build.xml, the related .cmd files or +anything else that may affect the build process, you should run the following +commands to check that everything works: + +install C:/cone-build-script-test/install_none +install C:/cone-build-script-test/install_symbian symbian + +clean_pack C:/cone-build-script-test/clean_pack_none +clean_pack C:/cone-build-script-test/clean_pack_symbian symbian + +pack C:/cone-build-script-test/clean_pack_none +pack C:/cone-build-script-test/clean_pack_symbian symbian + +develop C:/cone-build-script-test/develop_none +develop C:/cone-build-script-test/develop_symbian symbian + +export_bat C:/cone-build-script-test/export_bat_none +export_bat C:/cone-build-script-test/export_bat_symbian symbian + +pack_bat C:/cone-build-script-test/pack_bat_none +pack_bat C:/cone-build-script-test/pack_bat_symbian symbian + +ant test diff -r 000000000000 -r 2e8eeb919028 configurationengine/clean_pack.cmd --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/clean_pack.cmd Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,19 @@ +@rem +@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +@rem All rights reserved. +@rem This component and the accompanying materials are made available +@rem under the terms of "Eclipse Public License v1.0" +@rem which accompanies this distribution, and is available +@rem at the URL "http://www.eclipse.org/legal/epl-v10.html". +@rem +@rem Initial Contributors: +@rem Nokia Corporation - initial contribution. +@rem +@rem Contributors: +@rem +@rem Description: +@rem +@echo off + +call ant clean -Dbuild.cone_pack_path=%1 +call ant pack -Dbuild.cone_pack_path=%1 -Dbuild.plugin_package="%2" diff -r 000000000000 -r 2e8eeb919028 configurationengine/common.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/common.properties Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,11 @@ + + +# ConE version that is added to the produced ZIP file +common.version = 1.1 + +common.build_scripts_dir = build-scripts + +document.output =docbuild diff -r 000000000000 -r 2e8eeb919028 configurationengine/debian/changelog --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/debian/changelog Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,15 @@ +python-cone (1.1.0-0) UNRELEASED; urgency=low + + * Follow upstream versioning + * Update packaging to build also source/scripts + * Linux/Unix compatibility fixes + + -- Jari Tenhunen Thu, 23 Jul 2009 14:05:25 +0300 + +python-cone (0.1-1) unstable; urgency=low + + * Initial release + + -- Zoltan Andrasi Thu, 11 Dec 2008 11:57:50 +0200 + + diff -r 000000000000 -r 2e8eeb919028 configurationengine/debian/compat --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/debian/compat Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,1 @@ +5 diff -r 000000000000 -r 2e8eeb919028 configurationengine/debian/cone-tool.install --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/debian/cone-tool.install Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,3 @@ +usr/bin/cone*.py +usr/bin/*.cfg etc/cone +usr/lib/python*/site-packages/cone_scripts-*.egg-info diff -r 000000000000 -r 2e8eeb919028 configurationengine/debian/cone-tool.links --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/debian/cone-tool.links Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,1 @@ +usr/bin/cone_tool.py usr/bin/cone diff -r 000000000000 -r 2e8eeb919028 configurationengine/debian/control --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/debian/control Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,29 @@ +Source: python-cone +Section: python +Priority: extra +Maintainer: Jari Tenhunen +Build-Depends: debhelper (>= 5), python (>=2.4), python-central, python-setuptools +Standards-Version: 3.7.2 +XS-Python-Version: >= 2.4 +Homepage: http://developer.symbian.org/wiki/index.php/Software_Configuration_Middleware + +Package: python-cone +Architecture: all +Depends: ${shlibs:Depends}, ${misc:Depends}, ${python:Depends}, python (>= 2.4), python-simplejson +XB-Python-Version: ${python:Versions} +Description: Configuration Engine python modules + Configuration Engine is a Python implementation for a common configuration + tool. This tool implements support for the confml language and Configuration + Project structure. + This package contains the python modules for cone. + +Package: cone-tool +Architecture: all +Depends: ${shlibs:Depends}, ${misc:Depends}, ${python:Depends}, python (>= 2.4), python-cone +XB-Python-Version: ${python:Versions} +Description: Configuration Engine command line tool + Configuration Engine is a Python implementation for a common configuration + tool. This tool implements support for the confml language and Configuration + Project structure. + This package contains the cone executable command line tool. + diff -r 000000000000 -r 2e8eeb919028 configurationengine/debian/copyright --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/debian/copyright Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,23 @@ +This package was debianized by Zoltan Andrasi on +Thu, 11 Dec 2008 11:57:50 +0200. + +It was downloaded from http://developer.symbian.org/wiki/index.php/Software_Configuration_Middleware + +Upstream Author(s): + + Teemu Rytkonen + +Copyright: + + Copyright (C) 2008 Nokia Corporation + +License: + + 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". + +The Debian packaging is (C) 2008, Zoltan Andrasi . diff -r 000000000000 -r 2e8eeb919028 configurationengine/debian/python-cone.install --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/debian/python-cone.install Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,2 @@ +usr/lib/python*/site-packages/cone +usr/lib/python*/site-packages/cone-*.egg-info diff -r 000000000000 -r 2e8eeb919028 configurationengine/debian/rules --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/debian/rules Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,84 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + + +PYVERS=$(shell pyversions -vr) + +CONE_SOURCES=source source/scripts + +build: build-stamp + +build-stamp: + dh_testdir + + # Add here commands to compile the package. + #docbook-to-man debian/cone.sgml > cone.1 + for i in $(CONE_SOURCES); do cd $(CURDIR)/$$i && python setup.py build; done + cd $(CURDIR) + touch $@ + +clean: + dh_testdir + dh_testroot + rm -f build-stamp + # Add here commands to clean up after the build process. + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + # Add here commands to install the package into debian/cone. + #$(MAKE) DESTDIR=$(CURDIR)/debian/cone install + for i in $(CONE_SOURCES); do cd $(CURDIR)/$$i && python setup.py install --root=$(CURDIR)/debian/tmp; done + cd $(CURDIR) + dh_install --sourcedir=debian/tmp + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs + dh_installdocs + dh_installexamples +# dh_installmenu +# dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_python +# dh_installinit +# dh_installcron +# dh_installinfo +# dh_installman + dh_link +# dh_strip + dh_pycentral +# dh_install + dh_compress -X.py + dh_fixperms +# dh_perl +# dh_makeshlibs + dh_installdeb +# dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install diff -r 000000000000 -r 2e8eeb919028 configurationengine/dep-eggs/Jinja2-2.1.1-py2.5-win32.egg Binary file configurationengine/dep-eggs/Jinja2-2.1.1-py2.5-win32.egg has changed diff -r 000000000000 -r 2e8eeb919028 configurationengine/dep-eggs/Jinja2-2.1.1-py2.6-win32.egg Binary file configurationengine/dep-eggs/Jinja2-2.1.1-py2.6-win32.egg has changed diff -r 000000000000 -r 2e8eeb919028 configurationengine/dep-eggs/lxml-2.2.2-py2.5-win32.egg Binary file configurationengine/dep-eggs/lxml-2.2.2-py2.5-win32.egg has changed diff -r 000000000000 -r 2e8eeb919028 configurationengine/dep-eggs/lxml-2.2.2-py2.6-win32.egg Binary file configurationengine/dep-eggs/lxml-2.2.2-py2.6-win32.egg has changed diff -r 000000000000 -r 2e8eeb919028 configurationengine/dep-eggs/readme.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/dep-eggs/readme.txt Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,6 @@ +This directory contains all library dependencies needed by ConE as egg files. + +Note that if a plug-in requires a library not used in ConE core, the egg +should not be added here, but in source/plugins//dep-eggs/. +This way the egg will not be installed unless the plug-in package requiring +it is installed. diff -r 000000000000 -r 2e8eeb919028 configurationengine/dep-eggs/setuptools-0.6c11-py2.5.egg Binary file configurationengine/dep-eggs/setuptools-0.6c11-py2.5.egg has changed diff -r 000000000000 -r 2e8eeb919028 configurationengine/dep-eggs/setuptools-0.6c11-py2.6.egg Binary file configurationengine/dep-eggs/setuptools-0.6c11-py2.6.egg has changed diff -r 000000000000 -r 2e8eeb919028 configurationengine/dep-eggs/simplejson-2.0.9-py2.5-win32.egg Binary file configurationengine/dep-eggs/simplejson-2.0.9-py2.5-win32.egg has changed diff -r 000000000000 -r 2e8eeb919028 configurationengine/dep-eggs/simplejson-2.0.9-py2.6-win32.egg Binary file configurationengine/dep-eggs/simplejson-2.0.9-py2.6-win32.egg has changed diff -r 000000000000 -r 2e8eeb919028 configurationengine/develop.cmd --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/develop.cmd Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,18 @@ +@rem +@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +@rem All rights reserved. +@rem This component and the accompanying materials are made available +@rem under the terms of "Eclipse Public License v1.0" +@rem which accompanies this distribution, and is available +@rem at the URL "http://www.eclipse.org/legal/epl-v10.html". +@rem +@rem Initial Contributors: +@rem Nokia Corporation - initial contribution. +@rem +@rem Contributors: +@rem +@rem Description: +@rem +@echo off + +call ant develop -Dbuild.cone_install_path=%1 -Dbuild.plugin_package="%2" diff -r 000000000000 -r 2e8eeb919028 configurationengine/doc/api/api.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/doc/api/api.rst Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,13 @@ +Cone API +======== +The Cone API consists of submodules that contain the actual api implementations. The modules are splitted according to the purpose of use. +* public api is the main public interface that Cone offers. +* plugin api is the interface which defines all plugin extension base classes and a general plugin framework. + +modules: + +.. toctree:: + + public + plugin + howto diff -r 000000000000 -r 2e8eeb919028 configurationengine/doc/api/cone_plugin_api.png Binary file configurationengine/doc/api/cone_plugin_api.png has changed diff -r 000000000000 -r 2e8eeb919028 configurationengine/doc/api/cone_public_api.png Binary file configurationengine/doc/api/cone_public_api.png has changed diff -r 000000000000 -r 2e8eeb919028 configurationengine/doc/api/howto.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/doc/api/howto.rst Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,293 @@ +How to use cone APIs +==================== + +The ConE public usage is described here with few common use cases as HowTo guides. + +How to open a Configuration project +----------------------------------- + +To open a project with ConE the api offers a Storage and Project classes. The Storage is the storage +agostic implemenetation for cpf/zip, filestorage and soon also a webstorage. To access anything in ConE +you must a project open. + +.. code-block:: python + + from cone.public import api,exceptions + """ + The Storage access can be given as a extra parameter. It can have values r=read|w=write|a=append. + The default Storage access is read, which will fail if the storage does not exist. + + The Storage.open method will try which of the storage implementations can open that particular path. + So for example the path can be + 'foo/bar' => Opened with FileStorage + 'test.cpf' => Opened with ZipStorage + 'test.zip' => Opened with ZipStorage + """ + + """ Open a storage to current path and give it to the project. """ + prj = api.Project(api.Storage.open('.')) + """ Create a new storage to a cpf file and give it to the project. """ + prj = api.Project(api.Storage.open('test.cpf', 'w')) + + +How to access and manipulate Configurations +------------------------------------------- + +A Configuration normally is presented inside the Configuration project as a .confml file. So when you +are accessing configurations your are actually accessing confml files. The project offers funtionality to +get,add, remove configurations, which acts on root configurations inside the given project. + +How to List configuration's +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code-block:: python + + from cone.public import api,exceptions + """ Create a storage to current path and give it to the project """ + prj = api.Project(api.Storage.open('.')) + """ list and print all root configurations """ + configlist = prj.list_configurations() + for config in configlist: + print config + +How to Open configuration +^^^^^^^^^^^^^^^^^^^^^^^^^ + + +.. code-block:: python + + from cone.public import api,exceptions + """ Create a storage to current path and give it to the project """ + prj = api.Project(api.Storage.open('.')) + """ open a with name """ + """ + get_configuration raises a NotFound exception if the given configuration resource + is not found from Storage + """ + try: + myconfig = prj.get_configuration('myconfig.confml') + except exceptions.NotFound: + print "myconfml is not found from project!" + +How to remove Configuration +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +To remove a Configuration call ``remove_configuration`` method of Configuration. + +.. code-block:: python + + myconfig = prj.get_configuration('myconfig.confml') + myconfig.remove_configuration('my_remove.confml') + """ finally save and close project """ + prj.save() + prj.close() + +How to include a one Configuration to an other Configuration +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +To include a one Configuration to an other call ``include_configuration()`` method of Configuration and pass the filename of Configuration as a parameter. + +.. code-block:: python + + myconfig = prj.get_configuration('myconfig.confml') + myconfig.include_configuration('../data.confml') + +Feature Access and manipulation +------------------------------- + +How to add a Feature to Configuration +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +To add a Feature to Configuration ``add_feature()`` method can be used. + +.. code-block:: python + + conf = api.Configuration("myconf.confml") + conf.add_feature(api.Feature("feature1")) + +How to add a child Feature to Feature +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Childs can be added under Feature by ``add_feature()`` method and passing the parent Feature as a second paremeter: + +.. code-block:: python + + conf = api.Configuration("myconf.confml") + conf.add_feature(api.Feature("feature1")) + conf.add_feature(api.Feature("feature11"),'feature1') + +How to remove Feature from Configuration +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Features can be removed from Configuration by a following way: + +.. code-block:: python + + conf1 = api.Configuration("myconf.confml") + conf1.add_feature('feature1.feature12') # Add feature to Configuration + conf1.remove_feature('feature1.feature12') # and then remove it + """ finally save and close project """ + prj.save() + prj.close() + + +How to get a Feature from Configuration +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Features can be accessed through View: + +.. code-block:: python + + from cone.public import api + """ Create a storage to current path and give it to the project """ + prj = api.Project(api.Storage.open('.')) + """ open the first configuration from the list """ + firstconfig = prj.get_configuration(configlist[0]) + """ get default view of first configuration """ + default_view = firstconfig.get_default_view() + """ fetch example_feature1 from default view """ + feature = default_view.get_feature('example_feature1') + +Feature can be accessed also by a property: + +.. code-block:: python + + from cone.public import api + """ Create a storage to current path and give it to the project """ + prj = api.Project(api.Storage.open('.')) + """ open the first configuration from the list """ + firstconfig = prj.get_configuration(configlist[0]) + """ get default view of first configuration """ + default_view = firstconfig.get_default_view() + """ fetch example_feature1 from default view """ + feature = default_view.example_feature1 + +How to list all Features inside a certain View +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +All Features can listed by calling ``list_all_features()`` method of View. Default view returns always +the view from the Root configuration point of view. + +.. code-block:: python + + from cone.public import api + """ Create a storage to current path and give it to the project """ + prj = api.Project(api.Storage.open('.')) + """ open the first configuration from the list """ + firstconfig = prj.get_configuration(configlist[0]) + """ get default view of first configuration """ + default_view = firstconfig.get_default_view() + """ get all features in list from default view """ + features = default_view.list_all_features() + +All features can be listed also using some custom View: + +.. code-block:: python + + from cone.public import api + """ Create a storage to current path and give it to the project """ + prj = api.Project(api.Storage.open('.')) + """ open the first configuration from the list """ + firstconfig = prj.get_configuration(configlist[0]) + """ get my_view view to first configuration """ + view = firstconfig.get_view("my_view") + """ fetch example_feature1 from my_view view """ + features = view.list_all_features() + +How to list Features inside a certain View +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +To list immediate Features found under the certain View can be done by calling ``list_features()`` method. + +.. code-block:: python + + myconfig = api.Configuration("root.confml") + view = myconfig.get_view("my_view") + features = view.list_features() + +How to list all Features inside a certain Configuration +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +To list all Features found under a certain Configuration can be done by calling ``list_all_features()`` method of Configuration. + +.. code-block:: python + + from cone.public import api + """ Create a storage to current path and give it to the project """ + prj = api.Project(api.Storage.open('.')) + """ open the first configuration from the list """ + firstconfig = prj.get_configuration(configlist[0]) + """ get all features in list from configuration """ + features = firstconfig.list_all_features() + +How to read a value for a specific Feature +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The a value of specific Feature can be read by calling ``get_value()`` method or using value property. + +.. code-block:: python + + value1 = my_feature1.get_value() + value2 = my_feature2.value + +How to read a possible options of selection Feature +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +To list possible options of selection Feature can be done by calling ``get_valueset()`` method of Feature. + +.. code-block:: python + + feature = api.Feature('my_selection_feature',type='selection') + feature.add_option('one', '1') + feature.add_option('two', '2') + value_set = feature.get_valueset() + feature.get_option('1').get_name() #returns 'one' + +How to read a type of specific Feature +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +To read a specific type on Feature ``get_type()`` method or type property can be used. + +.. code-block:: python + + feature = dview.get_feature('my_feature') + feature.get_type() # returns type of the Feature + feature.type # returns type of the Feature + +How to set a value for a specific Feature +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +To set value for a specific Feature can be done by calling ``set_value()`` method or ``value`` property. + +.. code-block:: python + + feature1 = dview.get_feature('my_feature1') + feature2 = dview.get_feature('my_feature2') + feature1.set_value(123) + feature2.value = "my_value" + """ finally save and close project """ + prj.save() + prj.close() + +Data access and manipulation +---------------------------- +The data access inside a configuration is possible, but basically this can be avoided by manipulating the values +of features, which actually modify the data elements inside the configuration. +However if direct data element access is needed, here's how you can do it. + +How to add Data to Configuration +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +To add Data to Configuration can be done by calling ``add_data()`` method of Configuration: + +.. code-block:: python + + conf = api.Configuration("data.confml") + conf.add_data(api.Data(ref='feature1', value=123)) + conf.add_data(api.Data(fqn='feature1.feature12', value="test")) + """ finally save and close project """ + prj.save() + prj.close() + + + diff -r 000000000000 -r 2e8eeb919028 configurationengine/doc/api/plugin.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/doc/api/plugin.rst Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,91 @@ +Plugin API +=============== + +.. module:: cone.public.plugin + :platform: Unix, Windows + :synopsis: Configuration interface. +.. moduleauthor:: Teemu Rytkonen + +The Plugin api is intended for extending the ConE functionality with plugins that can be for example +implementation or relation plugins. See :ref:`plugin-howto` + +.. image:: cone_plugin_api.png + +Classes +------- + +.. class:: ImplBase(ref, configuration) + +The ImplBase class is intended for deriving any implementation plugin in ConE. A single ImplBase +instance is created by ConE for each implml file inside a given Configuration. + +See :ref:`plugin-howto` + + .. method:: list_output_files() + + The list_output_files should return a list of output files with path, with the current configuration. + This mechanism should enable listing of all output files before without actually generating them. + + .. method:: generate() + + The plugin instance is supposed to generate its output with the call of generate(). + + .. method:: has_ref(refs) + + This method receives a list as an attribute and is supposed to return True|False. True if this + particular plugin instance has a reference to a Feature inside the given refs list. Otherwise False. + +.. class:: ImplSet + +The ImplSet is a sets.Set object for a set of ImplBase instances. The main purpose of ImplSet +is to allow operations to a set of ImplBase instances, such as generate, filter, etc. + +.. class:: ImplFactory + +ImplFactory is a constructor class for the plugin instances. + + .. method:: get_impl_by_ext(cls, ext) + + Get the class name by file extension. + + + .. method:: get_impl_by_filename(cls, ref, configuration) + + Get the class name by filename. + +.. class:: Relation(left, right) + + .. method:: execute() + + Executes the rule initiated for this Relation. + + + Relation is a base class for all Relation implementations. The purpose of a Relation instance is to offer a verb or an + action that can be used in a rule. A rule in this context means a textual relation between two or more :class:`Feature`'s. + For example a Depends class could be used to define dependencies between two :class:`Feature` + + :: + + example rule + A depends B + + Where A and B are :class:`Feature` references. + +.. class:: RelationContainer + + RelationContainer is a container object that derives Relation interface, but is meant for storing a set of :class:`Relation` + objects. It can be used to execute a set of rules read to the container. + +.. class:: RelationFactory + + .. method:: get_by_name(name) + + returns a :class:`Relation` if the class that matches the name is found. + + The RelationFactory is intended to be used when the rules are read from some persistent storage. When a rule is found from + :class:`Configuration` ConE will try to create a :class:`Relation` instance of the rule, by trying to get class + by :meth:`RelationFactory.get_by_name` and create an instance of that class. + + + + diff -r 000000000000 -r 2e8eeb919028 configurationengine/doc/api/public.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/doc/api/public.rst Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,147 @@ +Public API +********** +Cone public API is the main interface of Cone. + +.. image:: cone_public_api.png + + +.. module:: cone.public.api + :platform: Unix, Windows + :synopsis: Configuration interface. +.. moduleauthor:: Teemu Rytkonen + +Classes +------- +.. class:: ObjectContainer + + ObjectContainer is a base class for all Configuration related elements. It is container class for a tree structure, + where it can contain other ObjectContainer objects. So basically you can create B-tree type of hiararchy with it. + + The main functionality of ObjectContainer is that **all children of an object container are accessible as members** + of the container. + + .. _example_member_access: + + Example of ObjectContainer member access: + + ``objcontainer.configuration.get_name()`` + + + .. method:: _add(child) + + Add a ObjectContainer instance to this object. Checks with internal function :meth:`__supported_type__` if the given + child is a supported class for this object. + + .. method:: _add_to_path(path,child) + + Add a ObjectContainer instance to a specific node under this object. It creates any missing nodes between this object + and the path. For example __add_to_path__("foo.fii", obj), would create two nodes (foo and under it fii) if they are + missing (Uses internal :meth:`__default_class__` to retrieve the class which is created in this case). + + .. method:: _remove(path) + + Remove a child from given path. + + .. method:: _get(path) + + get a child from given path. + + .. method:: _list() + + Get a list of names of immediate children of this ObjectContainer instance. + + .. method:: _objects() + + Get a list of immediate children objects of this ObjectContainer instance. + + .. method:: _traverse(filters) + + Get a list of children objects of this ObjectContainer instance, by filtering them with filters. This will cause a + recursive _traverse method call to all children of the ObjectContainer. + + .. method:: _path(toparent=None) + + Return the path to this object up to the toparent object. When toparent=None this will + return a full path to the object in the ObjectContainer hierarhcy. + + .. method:: _supported_type(obj) + + A method that is supposed to be overridden by the deriving classed if they need to change, which classes can be added + under each class. + Return True if the type of the obj is supported. + + .. method:: _default_class(obj) + + A method that is supposed to be overridden by the deriving classed if they need to change, what class is + the default class that is created with __add_to_path__ when objects are missing. + Return a class. + + +.. class:: Base + + Base class for all :class:`~cone.public.api.Configuration` and its child objects. + + .. method:: get_ref() + + return the ref of this object. + + .. method:: get_namepace() + + return the namespace of this object. + +.. class:: Project + + Project is a container for Configuration's. + +.. class:: Configuration + + ConE Configuration is the main interface for all configuration related activities. It is the main interface of ConE + itself as ConE is eventually a python interface to a configuration project. + +Configuration as a Container +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + The Configuration instance itself in ConE is actually just a container for a bunch of different elements. These elements can practically be any elements that exist in a + Configuration Project. + + * :class:`~cone.public.api.Configuration` + * :class:`~cone.public.api.View` + * :class:`~cone.public.api.Feature` + * :class:`~cone.public.api.Resource` + * :class:`~cone.public.plugin.Relation` + * :class:`~cone.public.api.Data` + +.. class:: Feature + + Feature element is the base class for any Configurable item in a Configuration Project. + +.. class:: View + + A :class:`~cone.public.api.Configuration` can contain one or more View elements, which basically can define different type of tree structure of Feature elements that exist in the Configuration. + A View element can contain :class:`~cone.public.api.Group` and :class:`FeaturePoxy` elements. + +.. class:: Group + + Group element can be child element of a :class:`~View`. It can include other Groups and :class:`~FeaturePoxy` elements to define a View hierarhcy. + +.. class:: FeatureProxy + + FeatureProxy element is a linking object inside View that has its own ref, name, etc but it basically just + points to an actual :class:`Feature` instance. + +.. class:: Data + + Data element defines a data value for a :class:`Feature` element. The Data elements can be defined in a + :class:`Configuration` and single configurable :class:`Feature` can have multiple data definitions, in different + configurations. The new definition always overrides the previous one. However the entire data definition hierarchy + is stored and is available from the Cone API. + +.. class:: Storage + + Storage offers platform and persistence independent interface to store :class:`Resource` elements (data files, + configuration files, etc). + +.. class:: Resource + + Resource is an instance of single storable element. Basically on normal filesystem this would be same as one file. + diff -r 000000000000 -r 2e8eeb919028 configurationengine/doc/changelog.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/doc/changelog.rst Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,856 @@ +ChangeLog 09-Feb-2009 +===================== + +Revision: 481 +------------- +Author: teerytko +Date: 13:01:30, 09 February, 2009 +Message: +ASSIGNED - # 1279: ConE: Support for confml data reader/writer +http://configurationtools.nmp.nokia.com/configurationtool/ticket/1279 +-Updated api version 0.5.0 + +Modified : /branches/singleconfiguration/source/cone/__init__.py + + +Revision: 480 +------------- +Author: teerytko +Date: 13:01:03, 09 February, 2009 +Message: +ASSIGNED - # 1279: ConE: Support for confml data reader/writer +http://configurationtools.nmp.nokia.com/configurationtool/ticket/1279 +Updated documentation. + -Version + -Fixed the error in install instructions. + +Modified : /branches/singleconfiguration/doc/conf.py +Modified : /branches/singleconfiguration/doc/design/cone.mdl +Modified : /branches/singleconfiguration/doc/intro.rst + + +Revision: 479 +------------- +Author: teerytko +Date: 12:38:48, 09 February, 2009 +Message: +ASSIGNED - # 1279: ConE: Support for confml data reader/writer +http://configurationtools.nmp.nokia.com/configurationtool/ticket/1279 +-Added a test case to access all features via default_view. +-Fixed a minor bug in adding data to the default_view (if feature is not found) + +Modified : /branches/singleconfiguration/source/cone/core/tests/unittest_configuration.py +Modified : /branches/singleconfiguration/source/cone/public/api.py + + +Revision: 478 +------------- +Author: teerytko +Date: 21:36:52, 08 February, 2009 +Message: +ASSIGNED - # 1279: ConE: Support for confml data reader/writer +http://configurationtools.nmp.nokia.com/configurationtool/ticket/1279 +All functionality in place for the single configurationbranch. + +Modified : /branches/singleconfiguration/source/cone/confml/model.py +Modified : /branches/singleconfiguration/source/cone/confml/persistentconfml.py +Modified : /branches/singleconfiguration/source/cone/confml/tests/__init__.py +Modified : /branches/singleconfiguration/source/cone/confml/tests/unittest_model.py +Modified : /branches/singleconfiguration/source/cone/confml/tests/unittest_persistentconfml.py +Modified : /branches/singleconfiguration/source/cone/core/tests/exported.zip +Modified : /branches/singleconfiguration/source/cone/core/tests/imported.zip +Added : /branches/singleconfiguration/source/cone/core/tests/project +Added : /branches/singleconfiguration/source/cone/core/tests/project/.metadata +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_001 +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_001/confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_001/confml/aknfep.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_001/confml/messaging.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_001/confml/siprfsplugin.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_001/content +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_001/content/file.txt +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_001/root.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_002 +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_002/confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_002/confml/commsdatcreator.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_002/confml/confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_002/confml/content +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_002/confml/doc +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_002/confml/drm5.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_002/confml/helix.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_002/confml/implml +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_002/confml/mediaplayer.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_002/confml/mpxmusicplayer.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_002/confml/xmluifw.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_002/doc +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_002/root.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_003 +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_003/confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_003/confml/confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_003/confml/content +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_003/confml/coreapplicationuis.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_003/confml/doc +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_003/confml/implml +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_003/content +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_003/doc +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_003/implml +Added : /branches/singleconfiguration/source/cone/core/tests/project/gadget_wk32_003/root.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/root.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32 +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/BrowserSettings.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/CarbideV_default_access_point.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/CarbideV_startup.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/DefaultAccessPoint.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/FMRadioEngine.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/PreInstalledAACTones.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/PreInstalledBookmarks.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/PreInstalledContacts.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/PreInstalledContent.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/PreInstalledImages.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/PreInstalledMP3Tones.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/PreInstalledMonophonicTones.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/PreInstalledMusic.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/PreInstalledObjectsToPhotos.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/PreInstalledPolyphonicTones.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/PreInstalledStreamingLinksGallery.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/PreInstalledTrueTones.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/PreInstalledVideos.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/PreInstalledWMATones.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/accessoryserver.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/accesspoints.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/activeidle.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/activeidle2.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/aknfep.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/aknskins.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/application_management.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/audioequalizerutility.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/autolock.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/avkon.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/bluetoothgpspsy.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/browserui.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/bteng.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/calendarUI.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/callui.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/camcorder.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/cbsserver.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/cenrep_iby_configuration.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/clockapp.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/commonengine.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/commonui.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/connectiondialogs.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/contextframework.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/coreapplicationuis.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/ctsy.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/dcl.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/defaultproxy.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/devman.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/dlmgr.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/drm5.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/drmrightsmanager.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/drmsettings.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/enhancedmediaclient.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/environmentalreverbutility.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/featuremanager.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/flashlite_2_0.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/fmpresetutility.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/fotaadapter.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/fotadiskstorage.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/fotaserver.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/gennif.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/helix.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/httpcachemanager.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/httpfilterHttpFilterPipeliningConfig.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/httpfilteracceptheader.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/hwresourceclientfmtx.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/hwresourcesandenhancements.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/ibytest.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/icts.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/imagingconfigmanager.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/imum.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/j2me.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/javainstaller.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/javaruntime.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/landmarks.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/locationsettings.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/locationsuplfw.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/lock.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/locnotprefplugin.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/locsuplsettings.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/logs.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/mediaplayer.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/messaging.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/metadatautility.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/midp.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/mmsengine.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/mobilemedia.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/mtp.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/multimediasharing.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/musicplayer.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/newsticker.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/npppsy.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/nsmldmsync.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/nsmlemailadapter.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/nsmlhttp.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/numbergrouping.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/omasuplconfigparam.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/operator_logo.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/operatormenu.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/pdpcontextmanager2.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/phonebook2.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/pnpms.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/poc.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/pocui.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/pocuiintgr.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/policy_management.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/postcard.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/presenceengine.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/profilesengine.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/psmserver.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/pushmtm.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/remote_storage_fw.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/remotelock.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/s60.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/s60appshell.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/s60contentlistingframework.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/s60filemanager.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/s60icalui.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/s60imageviewer.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/s60impscommonui_ng.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/s60instant_messaging_ui_ng.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/s60mail.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/s60mediagallery2.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/s60ncnlist.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/s60provisioning.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/s60settingsuis.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/s60swinstalleruis.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/s60telephony.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/s60uiacceltk.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/s60videotelephony.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/sat.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/screensaver.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/screensaveranimplugin.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/scutplugin.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/sendui.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/sensor.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/sensorframework.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/sensorplugin.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/simple.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/simulationpsy.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/speeddial.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/srsf.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/startup.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/stereowideningutility.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/suplpsy.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/suplsettings.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/syncmlnotifier.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/sysutil.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/tfxserver.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/theme.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/themes.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/uiklaf.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/upnpmediaserver.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/upnpstack.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/usbengines.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/variant.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/vcommand.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/videoservices.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/voicemailbox.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/voicerecorder.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/webutils.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/widgetinstaller.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/wlanengine.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/wvengine.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/wvsettings20.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/xdmengine.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/confml/xmluifw.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/doc +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/doc/applications_48_nav.png +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/doc/connectivity_48_nav.png +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/doc/hardware_48_nav.png +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/doc/other_48_nav.png +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/doc/preinstalledcontent_48_nav.png +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/doc/system_48_nav.png +Added : /branches/singleconfiguration/source/cone/core/tests/project/s60_3_43_wk32/doc/userinterface_48_nav.png +Added : /branches/singleconfiguration/source/cone/core/tests/project/variant_3_23_wk32 +Added : /branches/singleconfiguration/source/cone/core/tests/project/variant_3_23_wk32/confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/variant_3_23_wk32/confml/confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/variant_3_23_wk32/confml/content +Added : /branches/singleconfiguration/source/cone/core/tests/project/variant_3_23_wk32/confml/data.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/variant_3_23_wk32/confml/doc +Added : /branches/singleconfiguration/source/cone/core/tests/project/variant_3_23_wk32/confml/implml +Added : /branches/singleconfiguration/source/cone/core/tests/project/variant_3_23_wk32/confml/second_view.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/variant_3_23_wk32/confml/variant_view.confml +Added : /branches/singleconfiguration/source/cone/core/tests/project/variant_3_23_wk32/content +Added : /branches/singleconfiguration/source/cone/core/tests/project/variant_3_23_wk32/doc +Added : /branches/singleconfiguration/source/cone/core/tests/project/variant_3_23_wk32/doc/.notes +Added : /branches/singleconfiguration/source/cone/core/tests/project/variant_3_23_wk32/root.confml +Modified : /branches/singleconfiguration/source/cone/core/tests/project.zip +Modified : /branches/singleconfiguration/source/cone/core/tests/tempproject/dummy2.confml +Modified : /branches/singleconfiguration/source/cone/core/tests/unittest_configuration_project_export.py +Modified : /branches/singleconfiguration/source/cone/core/tests/unittest_configuration_project_import.py +Modified : /branches/singleconfiguration/source/cone/public/api.py +Modified : /branches/singleconfiguration/source/cone/public/container.py +Modified : /branches/singleconfiguration/source/cone/public/tests/__init__.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_base.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_configuration.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_data.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_feature.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_layer.py +Added : /branches/singleconfiguration/source/cone/public/tests/unittest_options.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_project.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_utils.py +Added : /branches/singleconfiguration/source/cone/public/tests/unittest_valueset.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_views.py +Modified : /branches/singleconfiguration/source/cone/public/utils.py +Modified : /branches/singleconfiguration/source/cone/storage/filestorage.py +Modified : /branches/singleconfiguration/source/cone/storage/persistentdictionary.py +Modified : /branches/singleconfiguration/source/cone/storage/stringstorage.py +Modified : /branches/singleconfiguration/source/cone/storage/tests/data.zip +Modified : /branches/singleconfiguration/source/cone/storage/tests/unittest_fileresource.py +Modified : /branches/singleconfiguration/source/cone/storage/tests/unittest_filestorage.py +Modified : /branches/singleconfiguration/source/cone/storage/tests/unittest_filestorage_layer.py +Modified : /branches/singleconfiguration/source/cone/storage/tests/unittest_filestorage_with_configurations.py +Modified : /branches/singleconfiguration/source/cone/storage/tests/unittest_zipstorage_with_configurations.py +Modified : /branches/singleconfiguration/source/cone/storage/zipstorage.py + + +Revision: 477 +------------- +Author: teerytko +Date: 15:27:20, 08 February, 2009 +Message: +ASSIGNED - # 1279: ConE: Support for confml data reader/writer +http://configurationtools.nmp.nokia.com/configurationtool/ticket/1279 + +Added : /branches/singleconfiguration/source/cone/storage/tests/temp +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testread.txt + + +Revision: 476 +------------- +Author: teerytko +Date: 14:40:02, 08 February, 2009 +Message: +ASSIGNED - # 1279: ConE: Support for confml data reader/writer +http://configurationtools.nmp.nokia.com/configurationtool/ticket/1279 +Removed temp test files that were accidentally added. + +Deleted : /branches/singleconfiguration/source/cone/storage/tests/data/confml +Deleted : /branches/singleconfiguration/source/cone/storage/tests/data/content +Deleted : /branches/singleconfiguration/source/cone/storage/tests/data/doc +Deleted : /branches/singleconfiguration/source/cone/storage/tests/data/implml +Deleted : /branches/singleconfiguration/source/cone/storage/tests/data/ncp11/doc +Deleted : /branches/singleconfiguration/source/cone/storage/tests/data/ncp11/implml +Deleted : /branches/singleconfiguration/source/cone/storage/tests/data/ncp11/prodX/doc +Deleted : /branches/singleconfiguration/source/cone/storage/tests/data/ncp11/prodX/implml + + +Revision: 475 +------------- +Author: teerytko +Date: 14:51:35, 06 February, 2009 +Message: +ASSIGNED - # 1279: ConE: Support for confml data reader/writer +http://configurationtools.nmp.nokia.com/configurationtool/ticket/1279 +Removed temp test files that were accidentally added. + +Deleted : /branches/singleconfiguration/source/cone/storage/tests/TestProlog.zip +Modified : /branches/singleconfiguration/source/cone/storage/tests/data.zip +Deleted : /branches/singleconfiguration/source/cone/storage/tests/dummytest +Deleted : /branches/singleconfiguration/source/cone/storage/tests/foo +Deleted : /branches/singleconfiguration/source/cone/storage/tests/temp +Deleted : /branches/singleconfiguration/source/cone/storage/tests/testdelete.zip +Deleted : /branches/singleconfiguration/source/cone/storage/tests/testfolder +Deleted : /branches/singleconfiguration/source/cone/storage/tests/testnewfile.zip +Deleted : /branches/singleconfiguration/source/cone/storage/tests/testnonrecurse.zip +Deleted : /branches/singleconfiguration/source/cone/storage/tests/testoverwrite.zip +Deleted : /branches/singleconfiguration/source/cone/storage/tests/testrecurse.zip +Deleted : /branches/singleconfiguration/source/cone/storage/tests/testtemp.zip +Modified : /branches/singleconfiguration/source/cone/storage/tests/unittest_zipstorage_with_configurations.py +Modified : /branches/singleconfiguration/source/cone/storage/zipstorage.py + + +Revision: 474 +------------- +Author: teerytko +Date: 14:50:57, 06 February, 2009 +Message: +ASSIGNED - # 1279: ConE: Support for confml data reader/writer +http://configurationtools.nmp.nokia.com/configurationtool/ticket/1279 +Removed temp test files that were accidentally added. + +Deleted : /branches/singleconfiguration/source/cone/tests/dummytest +Deleted : /branches/singleconfiguration/source/cone/tests/exported.zip +Deleted : /branches/singleconfiguration/source/cone/tests/temp +Deleted : /branches/singleconfiguration/source/cone/tests/tempproject +Deleted : /branches/singleconfiguration/source/cone/tests/tempzipoutput +Deleted : /branches/singleconfiguration/source/cone/tests/testdelete.zip +Deleted : /branches/singleconfiguration/source/cone/tests/testfolder +Deleted : /branches/singleconfiguration/source/cone/tests/testnewfile.zip +Deleted : /branches/singleconfiguration/source/cone/tests/testnonrecurse.zip +Deleted : /branches/singleconfiguration/source/cone/tests/testoverwrite.zip +Deleted : /branches/singleconfiguration/source/cone/tests/testrecurse.zip +Deleted : /branches/singleconfiguration/source/cone/tests/testtemp.zip + + +Revision: 473 +------------- +Author: teerytko +Date: 14:42:22, 06 February, 2009 +Message: +ASSIGNED - # 1279: ConE: Support for confml data reader/writer +http://configurationtools.nmp.nokia.com/configurationtool/ticket/1279 +Major merge efforts. Problems still with ZipStorage regression. + +Modified : /branches/singleconfiguration/source/cone/confml/model.py +Modified : /branches/singleconfiguration/source/cone/confml/persistentconfml.py +Modified : /branches/singleconfiguration/source/cone/confml/tests/unittest_persistentconfml.py +Modified : /branches/singleconfiguration/source/cone/core/__init__.py +Deleted : /branches/singleconfiguration/source/cone/core/configuration.py +Deleted : /branches/singleconfiguration/source/cone/core/layer.py +Deleted : /branches/singleconfiguration/source/cone/core/model.py +Deleted : /branches/singleconfiguration/source/cone/core/project.py +Modified : /branches/singleconfiguration/source/cone/core/tests/__init__.py +Added : /branches/singleconfiguration/source/cone/core/tests/exported.zip +Added : /branches/singleconfiguration/source/cone/core/tests/imported.zip +Added : /branches/singleconfiguration/source/cone/core/tests/temp +Added : /branches/singleconfiguration/source/cone/core/tests/temp2.zip +Added : /branches/singleconfiguration/source/cone/core/tests/tempproject +Added : /branches/singleconfiguration/source/cone/core/tests/tempproject/.metadata +Added : /branches/singleconfiguration/source/cone/core/tests/tempproject/dummy.confml +Added : /branches/singleconfiguration/source/cone/core/tests/tempproject/dummy2.confml +Added : /branches/singleconfiguration/source/cone/core/tests/tempproject/remove.confml +Added : /branches/singleconfiguration/source/cone/core/tests/tempproject/test +Added : /branches/singleconfiguration/source/cone/core/tests/tempproject/test/path +Added : /branches/singleconfiguration/source/cone/core/tests/tempproject/test/path/to +Added : /branches/singleconfiguration/source/cone/core/tests/tempproject/test/path/to/elsewhere +Added : /branches/singleconfiguration/source/cone/core/tests/tempproject/test/path/to/elsewhere/r.confml +Added : /branches/singleconfiguration/source/cone/core/tests/tempproject/test/path/to/somewhere +Added : /branches/singleconfiguration/source/cone/core/tests/tempproject/test/path/to/somewhere/r.confml +Added : /branches/singleconfiguration/source/cone/core/tests/tempzipoutput +Added : /branches/singleconfiguration/source/cone/core/tests/tempzipoutput/prodX.confml +Added : /branches/singleconfiguration/source/cone/core/tests/testtemp +Added : /branches/singleconfiguration/source/cone/core/tests/testtemp/.metadata +Modified : /branches/singleconfiguration/source/cone/core/tests/unittest_configuration.py +Deleted : /branches/singleconfiguration/source/cone/core/tests/unittest_configuration_parse.py +Modified : /branches/singleconfiguration/source/cone/core/tests/unittest_configuration_project_export.py +Modified : /branches/singleconfiguration/source/cone/core/tests/unittest_configuration_project_import.py +Modified : /branches/singleconfiguration/source/cone/core/tests/unittest_configuration_project_on_filestorage.py +Modified : /branches/singleconfiguration/source/cone/core/tests/unittest_configuration_project_on_zipstorage.py +Deleted : /branches/singleconfiguration/source/cone/core/tests/unittest_layer.py +Deleted : /branches/singleconfiguration/source/cone/core/tests/unittest_project.py +Modified : /branches/singleconfiguration/source/cone/public/api.py +Modified : /branches/singleconfiguration/source/cone/public/container.py +Modified : /branches/singleconfiguration/source/cone/public/persistence.py +Modified : /branches/singleconfiguration/source/cone/public/tests/__init__.py +Deleted : /branches/singleconfiguration/source/cone/public/tests/temp/FooStore.pk +Deleted : /branches/singleconfiguration/source/cone/public/tests/temp/exportoutput.pk +Deleted : /branches/singleconfiguration/source/cone/public/tests/temp/exportsource.pk +Deleted : /branches/singleconfiguration/source/cone/public/tests/temp/importoutput.pk +Deleted : /branches/singleconfiguration/source/cone/public/tests/temp/importsource.pk +Deleted : /branches/singleconfiguration/source/cone/public/tests/temp/modified.pk +Deleted : /branches/singleconfiguration/source/cone/public/tests/temp/store.pk +Deleted : /branches/singleconfiguration/source/cone/public/tests/temp/testproject.pk +Deleted : /branches/singleconfiguration/source/cone/public/tests/temp/testproject1.pk +Deleted : /branches/singleconfiguration/source/cone/public/tests/temp/testproject2.pk +Deleted : /branches/singleconfiguration/source/cone/public/tests/temp/testprojectinc2.pk +Deleted : /branches/singleconfiguration/source/cone/public/tests/temp/testprojectinc3.pk +Deleted : /branches/singleconfiguration/source/cone/public/tests/temp/unload.pk +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_configuration.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_container.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_storage.py +Modified : /branches/singleconfiguration/source/cone/storage/filestorage.py +Modified : /branches/singleconfiguration/source/cone/storage/persistentdictionary.py +Modified : /branches/singleconfiguration/source/cone/storage/stringstorage.py +Added : /branches/singleconfiguration/source/cone/storage/tests/TestProlog.zip +Added : /branches/singleconfiguration/source/cone/storage/tests/data/confml +Added : /branches/singleconfiguration/source/cone/storage/tests/data/content +Added : /branches/singleconfiguration/source/cone/storage/tests/data/doc +Added : /branches/singleconfiguration/source/cone/storage/tests/data/implml +Added : /branches/singleconfiguration/source/cone/storage/tests/data/ncp11/doc +Added : /branches/singleconfiguration/source/cone/storage/tests/data/ncp11/implml +Added : /branches/singleconfiguration/source/cone/storage/tests/data/ncp11/prodX/doc +Added : /branches/singleconfiguration/source/cone/storage/tests/data/ncp11/prodX/implml +Added : /branches/singleconfiguration/source/cone/storage/tests/data/platform/s60/doc +Added : /branches/singleconfiguration/source/cone/storage/tests/data/regional/japan/content +Added : /branches/singleconfiguration/source/cone/storage/tests/data/regional/japan/doc +Added : /branches/singleconfiguration/source/cone/storage/tests/data/regional/japan/implml +Modified : /branches/singleconfiguration/source/cone/storage/tests/data.zip +Added : /branches/singleconfiguration/source/cone/storage/tests/dummytest +Added : /branches/singleconfiguration/source/cone/storage/tests/foo +Added : /branches/singleconfiguration/source/cone/storage/tests/foo/faa +Added : /branches/singleconfiguration/source/cone/storage/tests/foo/faa.zip +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/.metadata +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/FooStore +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/FooStore/.metadata +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/FooStore/test1.txt +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/FooStore/test2.txt +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/FooStore/test3.txt +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/FooStore.zip +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/exportoutput +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/exportoutput/.metadata +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/exportoutput/test1.txt +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/exportoutput/test2.txt +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/exportoutput/test3.txt +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/exportoutput.zip +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/exportsource +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/exportsource/.metadata +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/exportsource/test1.txt +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/exportsource/test2.txt +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/exportsource/test3.txt +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/exportsource.zip +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/generic.zip +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/importoutput +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/importoutput/.metadata +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/importoutput/test1.txt +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/importoutput/test2.txt +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/importoutput/test3.txt +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/importoutput.zip +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/importsource +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/importsource/.metadata +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/importsource/test1.txt +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/importsource/test2.txt +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/importsource/test3.txt +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/importsource.zip +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/store +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/store/.metadata +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/store/test1.txt +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/store/test2.txt +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/store/test3.txt +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/store.zip +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/subpath +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/subpath.zip +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testfolder.zip +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testprojectlayersdata +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testprojectlayersdata/.metadata +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testprojectlayersdata/foo +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testprojectlayersdata/foo/confml +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testprojectlayersdata/foo/confml/component.confml +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testprojectlayersdata/foo/confml/component1.confml +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testprojectlayersdata/foo/content +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testprojectlayersdata/foo/content/foobar.txt +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testprojectlayersdata/foo/doc +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testprojectlayersdata/foo/foo.confml +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testprojectlayersdata/foo/implml +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testprojectlayersdata/product.confml +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testprojectlayersdata/s60 +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testprojectlayersdata/s60/confml +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testprojectlayersdata/s60/confml/component1.confml +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testprojectlayersdata/s60/content +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testprojectlayersdata/s60/content/foobar.txt +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testprojectlayersdata/s60/content/s60.txt +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testprojectlayersdata/s60/doc +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testprojectlayersdata/s60/implml +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testprojectlayersdata/s60/root.confml +Added : /branches/singleconfiguration/source/cone/storage/tests/temp/testprojectlayersdata.zip +Added : /branches/singleconfiguration/source/cone/storage/tests/testdelete.zip +Added : /branches/singleconfiguration/source/cone/storage/tests/testfolder +Added : /branches/singleconfiguration/source/cone/storage/tests/testfolder/foo +Added : /branches/singleconfiguration/source/cone/storage/tests/testfolder/foo/foosubdir +Added : /branches/singleconfiguration/source/cone/storage/tests/testfolder/subdir +Added : /branches/singleconfiguration/source/cone/storage/tests/testnewfile.zip +Added : /branches/singleconfiguration/source/cone/storage/tests/testnonrecurse.zip +Added : /branches/singleconfiguration/source/cone/storage/tests/testoverwrite.zip +Added : /branches/singleconfiguration/source/cone/storage/tests/testrecurse.zip +Added : /branches/singleconfiguration/source/cone/storage/tests/testtemp.zip +Added : /branches/singleconfiguration/source/cone/storage/tests/unittest_filestorage_with_configurations.py +Added : /branches/singleconfiguration/source/cone/storage/tests/unittest_stringstorage.py +Modified : /branches/singleconfiguration/source/cone/storage/tests/unittest_zipresource.py +Modified : /branches/singleconfiguration/source/cone/storage/tests/unittest_zipstorage.py +Added : /branches/singleconfiguration/source/cone/storage/tests/unittest_zipstorage_with_configurations.py +Modified : /branches/singleconfiguration/source/cone/storage/zipstorage.py +Added : /branches/singleconfiguration/source/cone/tests/dummytest +Added : /branches/singleconfiguration/source/cone/tests/exported.zip +Added : /branches/singleconfiguration/source/cone/tests/temp +Added : /branches/singleconfiguration/source/cone/tests/temp/FooStore.pk +Added : /branches/singleconfiguration/source/cone/tests/temp/exportoutput.pk +Added : /branches/singleconfiguration/source/cone/tests/temp/exportsource.pk +Added : /branches/singleconfiguration/source/cone/tests/temp/importoutput.pk +Added : /branches/singleconfiguration/source/cone/tests/temp/importsource.pk +Added : /branches/singleconfiguration/source/cone/tests/temp/modified.pk +Added : /branches/singleconfiguration/source/cone/tests/temp/store.pk +Added : /branches/singleconfiguration/source/cone/tests/temp/testproject.pk +Added : /branches/singleconfiguration/source/cone/tests/temp/testproject1.pk +Added : /branches/singleconfiguration/source/cone/tests/temp/testproject2.pk +Added : /branches/singleconfiguration/source/cone/tests/temp/testprojectinc2.pk +Added : /branches/singleconfiguration/source/cone/tests/temp/testprojectinc3.pk +Added : /branches/singleconfiguration/source/cone/tests/temp/unload.pk +Added : /branches/singleconfiguration/source/cone/tests/tempproject +Added : /branches/singleconfiguration/source/cone/tests/tempproject/dummy.confml +Added : /branches/singleconfiguration/source/cone/tests/tempproject/remove.confml +Added : /branches/singleconfiguration/source/cone/tests/tempproject/test +Added : /branches/singleconfiguration/source/cone/tests/tempproject/test/path +Added : /branches/singleconfiguration/source/cone/tests/tempproject/test/path/to +Added : /branches/singleconfiguration/source/cone/tests/tempproject/test/path/to/somewhere +Added : /branches/singleconfiguration/source/cone/tests/tempproject/test/path/to/somewhere/r.confml +Added : /branches/singleconfiguration/source/cone/tests/tempzipoutput +Added : /branches/singleconfiguration/source/cone/tests/testdelete.zip +Added : /branches/singleconfiguration/source/cone/tests/testfolder +Added : /branches/singleconfiguration/source/cone/tests/testfolder/foo +Added : /branches/singleconfiguration/source/cone/tests/testfolder/foo/foosubdir +Added : /branches/singleconfiguration/source/cone/tests/testfolder/subdir +Added : /branches/singleconfiguration/source/cone/tests/testnewfile.zip +Added : /branches/singleconfiguration/source/cone/tests/testnonrecurse.zip +Added : /branches/singleconfiguration/source/cone/tests/testoverwrite.zip +Added : /branches/singleconfiguration/source/cone/tests/testrecurse.zip +Added : /branches/singleconfiguration/source/cone/tests/testtemp.zip + + +Revision: 472 +------------- +Author: teerytko +Date: 09:00:23, 06 February, 2009 +Message: +ASSIGNED - # 1279: ConE: Support for confml data reader/writer +http://configurationtools.nmp.nokia.com/configurationtool/ticket/1279 + +Fixed a very crucial bug in usage of __getattr__, which normally called __getattribute__. This caused that the __getattr__ of the callee, was newer executed. Change of direct __getatribute__ to getattr(obj, name) fixed the problem. + +Modified : /branches/singleconfiguration/source/cone/public/api.py +Modified : /branches/singleconfiguration/source/cone/public/container.py +Modified : /branches/singleconfiguration/source/cone/public/persistence.py +Modified : /branches/singleconfiguration/source/cone/public/tests/__init__.py +Added : /branches/singleconfiguration/source/cone/public/tests/temp/FooStore.pk +Added : /branches/singleconfiguration/source/cone/public/tests/temp/exportoutput.pk +Added : /branches/singleconfiguration/source/cone/public/tests/temp/exportsource.pk +Added : /branches/singleconfiguration/source/cone/public/tests/temp/importoutput.pk +Added : /branches/singleconfiguration/source/cone/public/tests/temp/importsource.pk +Added : /branches/singleconfiguration/source/cone/public/tests/temp/modified.pk +Added : /branches/singleconfiguration/source/cone/public/tests/temp/store.pk +Added : /branches/singleconfiguration/source/cone/public/tests/temp/testproject.pk +Added : /branches/singleconfiguration/source/cone/public/tests/temp/testproject1.pk +Added : /branches/singleconfiguration/source/cone/public/tests/temp/testproject2.pk +Added : /branches/singleconfiguration/source/cone/public/tests/temp/testprojectinc2.pk +Added : /branches/singleconfiguration/source/cone/public/tests/temp/testprojectinc3.pk +Added : /branches/singleconfiguration/source/cone/public/tests/temp/unload.pk +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_configuration.py +Deleted : /branches/singleconfiguration/source/cone/public/tests/unittest_configurationlayer.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_layer.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_project.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_storage.py +Modified : /branches/singleconfiguration/source/cone/public/utils.py + + +Revision: 470 +------------- +Author: teerytko +Date: 17:20:19, 05 February, 2009 +Message: +ASSIGNED - # 1279: ConE: Support for confml data reader/writer +http://configurationtools.nmp.nokia.com/configurationtool/ticket/1279 +- Working persistentconfml.py and test (hierarchical loads/dumps). +- Added ConfmlMeta,ConfmlDesc. + +Modified : /branches/singleconfiguration/source/cone/confml/model.py +Modified : /branches/singleconfiguration/source/cone/confml/persistentconfml.py +Modified : /branches/singleconfiguration/source/cone/confml/tests/__init__.py +Added : /branches/singleconfiguration/source/cone/confml/tests/unittest_model.py +Modified : /branches/singleconfiguration/source/cone/confml/tests/unittest_persistentconfml.py + + +Revision: 469 +------------- +Author: teerytko +Date: 07:49:54, 05 February, 2009 +Message: +ASSIGNED - # 1279: ConE: Support for confml data reader/writer +http://configurationtools.nmp.nokia.com/configurationtool/ticket/1279 + +First version that supports the idea of somewhat incremental confml parsing (with warnings). + +Modified : /branches/singleconfiguration/source/cone/confml/persistentconfml.py +Modified : /branches/singleconfiguration/source/cone/confml/tests/unittest_persistentconfml.py +Modified : /branches/singleconfiguration/source/cone/public/persistence.py +Modified : /branches/singleconfiguration/source/cone/public/tests/Import.pk +Added : /branches/singleconfiguration/source/cone/public/tests/temp +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_container.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_persistence.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_public_api.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_storage.py + + +Revision: 468 +------------- +Author: teerytko +Date: 16:42:50, 03 February, 2009 +Message: +ASSIGNED - # 1279: ConE: Support for confml data reader/writer +http://configurationtools.nmp.nokia.com/configurationtool/ticket/1279 +Added first version of persistentconfml module, that can dump/load Configuration objects. + +Added : /branches/singleconfiguration/source/cone/confml/persistentconfml.py +Modified : /branches/singleconfiguration/source/cone/confml/tests/unittest_implml.py +Added : /branches/singleconfiguration/source/cone/confml/tests/unittest_persistentconfml.py + + +Revision: 467 +------------- +Author: teerytko +Date: 16:41:16, 03 February, 2009 +Message: +Fixed errors after refactoring persistence modules for common module specific dumps/loads functionality. + +Modified : /branches/singleconfiguration/source/cone/storage/filestorage.py +Modified : /branches/singleconfiguration/source/cone/storage/persistentdictionary.py +Modified : /branches/singleconfiguration/source/cone/storage/stringstorage.py + + +Revision: 466 +------------- +Author: teerytko +Date: 16:41:02, 03 February, 2009 +Message: +Fixed errors after refactoring persistence modules for common module specific dumps/loads functionality. + +Modified : /branches/singleconfiguration/source/cone/public/api.py +Modified : /branches/singleconfiguration/source/cone/public/container.py +Modified : /branches/singleconfiguration/source/cone/public/tests/Import.pk +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_project.py + + +Revision: 455 +------------- +Author: teerytko +Date: 13:49:44, 02 February, 2009 +Message: +Refactored the filestorage to support same functionality as stringstorage. + +Modified : /branches/singleconfiguration/source/cone/public/api.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_storage.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_utils.py +Modified : /branches/singleconfiguration/source/cone/public/utils.py +Modified : /branches/singleconfiguration/source/cone/storage/common.py +Modified : /branches/singleconfiguration/source/cone/storage/filestorage.py +Modified : /branches/singleconfiguration/source/cone/storage/stringstorage.py + + +Revision: 454 +------------- +Author: teerytko +Date: 12:01:15, 02 February, 2009 +Message: +-Added support for Data elements under Configuration. + +Modified : /branches/singleconfiguration/source/cone/public/api.py +Modified : /branches/singleconfiguration/source/cone/public/container.py +Modified : /branches/singleconfiguration/source/cone/public/tests/Import.pk +Modified : /branches/singleconfiguration/source/cone/public/tests/__init__.py +Added : /branches/singleconfiguration/source/cone/public/tests/unittest_base.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_configuration.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_container.py +Added : /branches/singleconfiguration/source/cone/public/tests/unittest_data.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_feature.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_project.py +Deleted : /branches/singleconfiguration/source/cone/public/tests/unittest_resource.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_storage.py +Modified : /branches/singleconfiguration/source/cone/storage/__init__.py +Modified : /branches/singleconfiguration/source/cone/storage/persistentdictionary.py +Modified : /branches/singleconfiguration/source/cone/storage/stringstorage.py +Modified : /branches/singleconfiguration/source/cone/storage/tests/__init__.py +Modified : /branches/singleconfiguration/source/cone/storage/tests/unittest_metadata.py +Added : /branches/singleconfiguration/source/cone/storage/tests/unittest_resource.py(Copy from path: /branches/singleconfiguration/source/cone/public/tests/unittest_resource.py, Revision, 448 + + +Revision: 453 +------------- +Author: teerytko +Date: 10:10:37, 30 January, 2009 +Message: +-Added support for folders. +-Added support for Storage agnostic open + +Modified : /branches/singleconfiguration/source/cone/public/api.py +Deleted : /branches/singleconfiguration/source/cone/public/persistentdictionary.py +Deleted : /branches/singleconfiguration/source/cone/public/stringstorage.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_storage.py +Added : /branches/singleconfiguration/source/cone/storage/common.py +Modified : /branches/singleconfiguration/source/cone/storage/filestorage.py +Replacing : /branches/singleconfiguration/source/cone/storage/metadata.py +Added : /branches/singleconfiguration/source/cone/storage/persistentdictionary.py(Copy from path: /branches/singleconfiguration/source/cone/public/persistentdictionary.py, Revision, 448 +Added : /branches/singleconfiguration/source/cone/storage/stringstorage.py(Copy from path: /branches/singleconfiguration/source/cone/public/stringstorage.py, Revision, 449 +Modified : /branches/singleconfiguration/source/cone/storage/tests/__init__.py +Modified : /branches/singleconfiguration/source/cone/storage/tests/data/.metadata +Modified : /branches/singleconfiguration/source/cone/storage/tests/unittest_filestorage.py +Added : /branches/singleconfiguration/source/cone/storage/tests/unittest_filestorage_layer.py +Replacing : /branches/singleconfiguration/source/cone/storage/tests/unittest_metadata.py +Modified : /branches/singleconfiguration/source/cone/storage/tests/unittest_zipstorage.py +Modified : /branches/singleconfiguration/source/cone/storage/zipstorage.py + + +Revision: 449 +------------- +Author: teerytko +Date: 17:21:57, 29 January, 2009 +Message: +Created a Layer object. + +Modified : /branches/singleconfiguration/source/cone/public/api.py +Modified : /branches/singleconfiguration/source/cone/public/container.py +Modified : /branches/singleconfiguration/source/cone/public/persistence.py +Modified : /branches/singleconfiguration/source/cone/public/plugin.py +Modified : /branches/singleconfiguration/source/cone/public/stringstorage.py +Modified : /branches/singleconfiguration/source/cone/public/tests/Import.pk +Modified : /branches/singleconfiguration/source/cone/public/tests/__init__.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_container.py +Added : /branches/singleconfiguration/source/cone/public/tests/unittest_feature.py +Added : /branches/singleconfiguration/source/cone/public/tests/unittest_layer.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_project.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_public_api.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_storage.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_utils.py +Modified : /branches/singleconfiguration/source/cone/public/utils.py + + +Revision: 446 +------------- +Author: teerytko +Date: 10:44:16, 23 January, 2009 +Message: +Added install from source section + +Modified : /branches/singleconfiguration/doc/intro.rst + + +Revision: 445 +------------- +Author: teerytko +Date: 11:52:21, 22 January, 2009 +Message: +Refactored the public API to a single Configuration storage. + +Modified : /branches/singleconfiguration/source/cone/public/api.py +Modified : /branches/singleconfiguration/source/cone/public/container.py +Modified : /branches/singleconfiguration/source/cone/public/persistence.py +Added : /branches/singleconfiguration/source/cone/public/persistentdictionary.py +Added : /branches/singleconfiguration/source/cone/public/stringstorage.py(Copy from path: /branches/singleconfiguration/source/cone/public/tests/stringstorage.py, Revision, 425 +Added : /branches/singleconfiguration/source/cone/public/tests/Import.pk +Modified : /branches/singleconfiguration/source/cone/public/tests/__init__.py +Deleted : /branches/singleconfiguration/source/cone/public/tests/stringstorage.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_configuration.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_container.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_persistence.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_project.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_public_api.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_resource.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_storage.py +Modified : /branches/singleconfiguration/source/cone/public/tests/unittest_views.py +Added : /branches/singleconfiguration/source/cone/storage/configurationpersistence.py +Modified : /branches/singleconfiguration/source/cone/storage/tests/unittest_filestorage_to_filestorage.py + + +Revision: 429 +------------- +Author: teerytko +Date: 17:04:13, 09 January, 2009 +Message: +added makefile mechanism for building cone. + +Added : /branches/singleconfiguration/document +Added : /branches/singleconfiguration/install +Modified : /branches/singleconfiguration/makefile +Added : /branches/singleconfiguration/source/makefile +Added : /branches/singleconfiguration/source/plugins/ConeCliPlugin/makefile +Added : /branches/singleconfiguration/source/plugins/ConeContentPlugin/makefile +Added : /branches/singleconfiguration/source/plugins/ConeCustomConfmlPlugin/makefile +Added : /branches/singleconfiguration/test + diff -r 000000000000 -r 2e8eeb919028 configurationengine/doc/cli/common.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/doc/cli/common.rst Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,63 @@ +Cone command line interface +=========================== + +ConE command line interface is desinged to offer different actions. A action can be anything that utilizes the ConE interface and +somehow interacts with a Configuration Project. Each action has it's own set of command line arguments. + +Calling ConE +------------ + +All ConE commands are wrapped up by the cone.cmd, which executes internally cone_tool.py. The cone_tool.py searches for all conesub_*.py +matching files under the same scripts folder under cone installation. So basically adding a new action is just adding a new conesub_*.py file. + +To get a list of all available cone commands run:: + + cone -h + +or:: + + cone --help + +And you will get something like this as output:: + + Usage: cone_tool.py [action] [options]. + + Available actions + info + compare + merge + export + generate + update + + Use cone_tool.py [action] -h to get action specific help. + + Options: + --version show program's version number and exit + -h, --help show this help message and exit + -c CONFIG, --configuration=CONFIG Define the name of the configuration for the action + -v LEVEL, --verbose=LEVEL Print error, warning and information on system out. + Possible choices: + NONE 0 + CRITICAL 1 + ERROR 2 + WARNING 3 + INFO 4 + DEBUG 5 + Default is 3. + -p STORAGE, --project=STORAGE Defines the location of current project. Default is the current working directory. + + +ConE actions +------------ +.. toctree:: + :maxdepth: 2 + + info + compare + merge + export + generate + update + report + diff -r 000000000000 -r 2e8eeb919028 configurationengine/doc/cli/compare.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/doc/cli/compare.rst Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,96 @@ +ConE compare action +=================== +The compare action is intended to enable comparison of two configurations in different ways. The +compare logic is done in a Jinja template, which makes it quite customizable. There are default +templates for data and API comparison that can be used with the --report-type switch, but a custom +template can also be used with the --template switch (see the examples). + +Examples +-------- + +**Compare two configurations in current storage**:: + + >cd configproject_root + >cone compare -s configuration_root1.confml -t configuration_root2.confml + +By default the output is generated under current folder to compare.html (use switch --report=FILENAME +to change the output file). + +**Compare configurations between the current storage and some remote storage**: + +The target configuration can also include remote storage path, which must be separated from the +configuration root by semicolon:: + + >cd configproject_root + >cone compare -s configuration_root1.confml -t \config_project2;configuration_root2.confml + +**Compare configuration API between two configurations** + +Use the --report-type switch make an API comparison.:: + + >cd configproject_root + >cone compare -s configuration_root1.confml -t \config_project2;configuration_root2.confml --report-type api + +**Compare configurations using a custom template** + +Use the --template switch to specify a custom template file.:: + + >cd configproject_root + >cone compare -s configuration_root1.confml -t \config_project2;configuration_root2.confml --template my_template.html + +Options list +------------ + --version show program's version number and exit + -h, --help show this help message and exit + --print-settings Print all the default settings from the current + setting container. + --print-supported-impls + Print all supported ImplML XML namespaces and file + extension. + -v LEVEL, --verbose=LEVEL + Print error, warning and information on system out. + Possible choices: Default is 3. + NONE (all) 0 + CRITICAL 1 + ERROR 2 + WARNING 3 + INFO 4 + DEBUG 5 + --log-file=FILE Location of the used log file. Default is 'cone.log' + -p STORAGE, --project=STORAGE + defines the location of current project. Default is + the current working directory. + + Compare options: + The generate function will create target files from a specific + configuration.The generate will always work with read-only mode of the + project, so no changes are saved to project + + -s CONFIG, --sourceconfiguration=CONFIG + defines the name of the sourceconfiguration for the + compare action. The configuration is expected to be + located current storage. + -t CONFIG, --targetconfiguration=CONFIG + defines the name of the target configuration for the + compare action. The configuration can be located in + the current storage or it the configurationdefinition + can contain a path to a storage. The storage + definition is given as a pathbefore semicolon. e.g. + x:\data\configproject;productx.confml, + test.cpf;root.confml + --report=FILE The file where the comparison report is written.By + default this value is determined by the used report + type. Example: -r report.html. + --template=FILE Template used in a report generation. By default this + value is determined by the used report type. Example: + -t report_template.html. + --report-type=TYPE The type of the report to generate. This is a + convenience switch for setting the used template. + Possible values: + api - Report changes in feature definitions + data - Report changes in data values + crml_dc - Report CRML data compatibility issues + --impl-filter=PATTERN + The pattern used for filtering implementations for the + comparison. See the switch --impl in action generate + for more info. diff -r 000000000000 -r 2e8eeb919028 configurationengine/doc/cli/export.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/doc/cli/export.rst Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,83 @@ +ConE export action +================== +Running action export +Usage: cone export [options] + +The export functionality exports configurations from the current project to a remote project. Default value for the current project is the currently working directory. A project can be either a folder or a CPF/ZIP file. + +Examples +-------- + +**Export a configuration from folder to a zip file**:: + + >cd configproject_root + >cone export -c configuration_root.confml --remote=exported.zip + +or use the option -p|--project to point to the configuration project root:: + + >cone export --project=configproject_root --remote=exported.zip -c configuration_root.confml + +**Export a configuration from a zip|cpf file to a folder** + +The different to the previous example is that the project parameters are turned otherway around. :: + + >cd configproject_root + >cone export --project exported.zip --remote=. -c configuration_root.confml + +**Export a configuration from a webstorage (carbon) file to a folder** + +The Carbon functionality will be released in ConE 1.2 release and is not yet officially available. +The usage is similar to the previous, but the carbon path is given as http://serverpath/extapi.:: + + >cd configproject_root + >cone export --project http://carbonqa.nokia.com/extapi -r . -c configuration_root.confml + +See the info action for getting a list of available configurations inside Carbon. + +**Export a configuration from a folder to webstorage (carbon)**:: + + >cd configproject_root + >cone export --remote http://carbonqa.nokia.com/extapi -c configuration_root.confml + + + +Options list +------------ + --version show program's version number and exit + -h, --help show this help message and exit + --print-settings Print all the default settings from the current + setting container. + --print-supported-impls + Print all supported ImplML XML namespaces and file + extension. + -v LEVEL, --verbose=LEVEL + Print error, warning and information on system out. + Possible choices: Default is 3. + NONE (all) 0 + CRITICAL 1 + ERROR 2 + WARNING 3 + INFO 4 + DEBUG 5 + --log-file=FILE Location of the used log file. Default is 'cone.log' + -c CONFIG, --configuration=CONFIG + defines the name of the configuration for the action + -p STORAGE, --project=STORAGE + defines the location of current project. Default is + the current working directory. + + Export options: + The export functionality is meant to export configurations between + current project (defined with -p) to an remote project (defined with + -r). Default value for the current project is the currently working + directory. A project can be either a folder or a cpf/zip file. + + -r STORAGE, --remote=STORAGE + defines the location of remote storage. Default name + for remote storage is the source configuration name + -a SET, --add=SET Add a configuration layer to the given configuration + as last element.The add operation can be used several + times in a single command and it can create even an + empty layer.Example --add foo/root.confml --add bar + /root-confml. + --exclude-folders Excludes empty folders from .cpf export diff -r 000000000000 -r 2e8eeb919028 configurationengine/doc/cli/generate.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/doc/cli/generate.rst Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,114 @@ +ConE generate action +==================== +Running action generate +Usage: cone generate [options] + +The generate action is intended to generate output files with different implementation plugins. The +implementation files can be filtered by different mechanism, via the command line options. + +Examples +-------- + +**Generate all files of a configurations**:: + + >cd configproject_root + >cone generate -c configuration_root.confml + +or use the option -p|--project to point to the configuration project root:: + + >cone generate --project=configproject_root -c configuration_root.confml + +**Generate by filtering with values in last layer** + +The data can be located in different layers in configuration project. Quite a common use case is to +generate only output files that have been changed in the last layer.:: + + >cd configproject_root + >cone generate -c configuration_root.confml --layer=-1 + +This will read data value definitions on the last configuration layer (last included confml +file in the root file), and run generate only to implementation files that use one of these +data values. + +Options list +------------ + --version show program's version number and exit + -h, --help show this help message and exit + --print-settings Print all the default settings from the current + setting container. + --print-supported-impls + Print all supported ImplML XML namespaces and file + extensions. + -v LEVEL, --verbose=LEVEL + Print error, warning and information on system out. + Possible choices: Default is 3. + NONE (all) 0 + CRITICAL 1 + ERROR 2 + WARNING 3 + INFO 4 + DEBUG 5 + --log-file=FILE Location of the used log file. Default is 'cone.log' + -c CONFIG, --configuration=CONFIG + defines the name of the configuration for the action + -p STORAGE, --project=STORAGE + defines the location of current project. Default is + the current working directory. + + Generate options: + The generate function will create target files from a specific + configuration.The generate will always work with read-only mode of the + project, so no changes are saved to project + + -o FOLDER, --output=FOLDER + defines the target folder where the files are is + generated or copied + -l LAYER, --layer=LAYER + define layers of the configuration that are included + to the output. The layer operation can be used several + times in a single command.Example -l -1 --layer=-2, + which would append a layers -1 and -2 to the layers => + layers = -1,-2 + --all-layers Include all layers in generation. This switch + overrides all other layer configurations (iMaker API + and using the --layer parameter) + -i IMPLS, --impl=IMPLS + Define a Python regular expression filter for actual + ImplML plugin(s) that needs to be executed. The whole + path to ImplML filename is used in the regexp + matching. The impl operation can be used several times + in a single command. + Example1 --impl crml => matches for any ImplML file + that has a CrML string in the path. Example2 --impl + makeml$ => matches for ImplML file that has ends with + MakeML string. + --impl-tag=TAG define a tag for the implementations that are included + to the output. A tag is name value pair and has the + following format: name:value, e.g. + target:rofs3.Example --impl-tag=target:uda --impl- + tag=target:content, which would include impls include + both tags. + --impl-tag-policy=TAGS_POLICY + Policy for implementation tags. May have one of the + following values: --impl-tag-policy=AND, --impl-tag- + policy=OR. Default is OR. + -s SET, --set=SET Override a ConfML reference in the execution.The set + operation can be used several times in a single + command.Example -s foo.bar=10 -s foo.fea='test'. + --add=CONF Add a given configuration to the given configuration + as last element.The add operation can be used several + times in a single command.Example --add + foo/root.confml --add bar/root-confml. + -r FILE, --report=FILE + Generates a report about settings that are properly + generated.Example -r report.html. + -t FILE, --template=FILE + Template used in report generation.Example -t + report_template.html. + --report-data-output=FILE + Specifies a file where intermediary report data is + generated. + -n, --dryrun Executes generation without generation output. + --add-setting-file=FILE + Generate specific settings in ini format.Example -o + my_generate_settings.cfg. diff -r 000000000000 -r 2e8eeb919028 configurationengine/doc/cli/info.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/doc/cli/info.rst Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,55 @@ +ConE info action +================ +Running action info +Usage: cone info [options] + +The info functionality is meant for printing information about the contents of a CPF/ZIP file or Configuration Project (folder). +Examples +-------- + +**Get a list of root configurations inside the project**:: + + >cd configproject_root + >cone info + +or use the option -p|--project to point to the configuration project root:: + + >cone info --project=configproject_root + +**Get a list of root configurations inside a carbon storage (Available in ConE 1.2)**:: + + >cone info --project=http://carbonqa.nokia.com/extapi + +Options list +------------ + --version show program's version number and exit + -h, --help show this help message and exit + --print-settings Print all the default settings from the current + setting container. + --print-supported-impls + Print all supported ImplML XML namespaces and file + extension. + -v LEVEL, --verbose=LEVEL + Print error, warning and information on system out. + Possible choices: Default is 3. + NONE (all) 0 + CRITICAL 1 + ERROR 2 + WARNING 3 + INFO 4 + DEBUG 5 + --log-file=FILE Location of the used log file. Default is 'cone.log' + -c CONFIG, --configuration=CONFIG + defines the name of the configuration for the action + -p STORAGE, --project=STORAGE + defines the location of current project. Default is + the current working directory. + --dump-api=FILE Write the confml feature api string representation to + a file. + + Info options: + The info functionality is meant for printing information about the + contents of a cpf/zip file or Configuration Project (folder). + + --template=FILE Template used in a report generation.Example -t + report_template.html. \ No newline at end of file diff -r 000000000000 -r 2e8eeb919028 configurationengine/doc/cli/merge.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/doc/cli/merge.rst Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,171 @@ +ConE merge action +================= + +The merge functionality is meant to merge configurations/layers from a +remote project (defined with -r) to the current project (defined with +-p). Default value for the current project is the current working +directory. A project can be either a folder or a CPF/ZIP file. + +There are two ways to use merge: + + #. Merge a configuration root into another + #. Merge a specific source layer into a specific target layer + +These translate to two use cases: + + #. Merging an asset into an existing configuration project + #. Merging a variant data layer from an exported CPF back into the + configuration project + +Examples for these two use cases are given below. + +Examples +-------- + +Files containing the used example data: + + - :download:`config_project.zip ` + - :download:`myasset2.zip ` + +Merging an asset into configuration project +''''''''''''''''''''''''''''''''''''''''''' + +Say that we have a small configuration project that contains the configuration +interface and implementation of some component, and we want to merge this asset +as part of a configuration project, specifically into the ``assets/myassets/`` +layer in the project. This can be done by using the layer -> layer merging +functionality. + +The image below shows what we want to accomplish. You can see that the +``assets/myassets/`` layer already contains asset1, and we want to merge asset2 +there too. + + .. image:: merge/asset_merge.png + +We need to give ConE the layer root .confml files of the layers we want to +merge. To do this, run the following command: + +:: + + > cone merge -p config_project --targetlayer assets/myassets/root.confml -r myasset2 --sourcelayer asset2/root.confml + Running action merge + Target project: config_project + Source project: myasset2 + Target layer: assets/myassets/root.confml + Source layer: asset2/root.confml + Merging layers... + Copying asset2/confml/asset2.confml + Copying asset2/content/asset2_data/dummy.txt + Copying asset2/implml/asset2.templateml + Including confml/asset2.confml in layer root assets/myassets/root.confml + +Now the ``assets/myassets`` layer in the configuration project contains also +the contents of asset2. + +Merging a variant configuration into configuration project +'''''''''''''''''''''''''''''''''''''''''''''''''''''''''' + +Another use case is merging the variant data layer of an exported CPF back +into the configuration project. This is where the configuration root merge +comes in. + +First, using the same example project as in the previous example, export a CPF +containing a variant data layer: + +:: + + > cd config_project + config_project> cone export -c product_x_root.confml -r test.cpf --add variants/variant/root.confml + Running action export + Export product_x_root.confml to test.cpf done! + +Now the CPF can be modified somehow, here we'll add the content files ``foo.txt`` +and ``bar.txt``. After this we can merge it back into the project as a new +configuration root that contains also the variant data layer: + +:: + + config_project> cone merge -c foobar.confml -r test.cpf --rename + Running action merge + Target project: . + Source project: test.cpf + Target config: foobar.confml + Source config: product_x_root.confml + Merging 1 layer(s)... + Merging variants/variant/root.confml -> variants/variant_foobar/root.confml + Copying variants/variant/confml/data.confml + Copying variants/variant/content/bar.txt + Copying variants/variant/content/foo.txt + Including confml/data.confml in layer root variants/variant_foobar/root.confml + +The rename option tells ConE to rename the variant layer based on the given +configuration root name, so that the variant data layer becomes ``variants/variant_foobar/``. +So, now the project looks like this: + + .. image:: merge/project_after_variant_layer_merge.png + +Note that the default merge doesn't overwrite the layers, it only adds/replaces +files from the source layers. If the entire layer should be overwritten, the +option --merge-policy can be used to specify that layers should be entirely +overwritten. For example, if we remove ``foo.txt`` from the variant content +in the CPF and re-merge like this: + +:: + + config_project> cone merge -c foobar.confml -r test.cpf --rename --merge-policy overwrite-layer + Running action merge + Target project: . + Source project: test.cpf + Target config: foobar.confml + Source config: product_x_root.confml + Merging 1 layer(s)... + Merging variants/variant/root.confml -> variants/variant_foobar/root.confml + Copying variants/variant/confml/data.confml + Copying variants/variant/content/bar.txt + Including confml/data.confml in layer root variants/variant_foobar/root.confml + +Now ``variants/variant_foobar/content/`` contains only ``bar.txt``. + +Options list +------------ + -c CONFIG, --configuration=CONFIG + defines the name of the target configuration for the + action + -p STORAGE, --project=STORAGE + defines the location of current project. Default is + the current working directory. + -r STORAGE, --remote=STORAGE + defines the location of remote storage + -s CONFIG, --sourceconfiguration=CONFIG + defines the name of the remote configuration inside + the remote storage for the merge action. Default is + the active root of the remote project. + --sourcelayer=LAYER_ROOT + Defines a specific layer to use as the layer to merge + from the remote project. Must be the layer root + (ConfML file).For example: --sourcelayer + assets/somelayer/root.confml + --targetlayer=LAYER_ROOT + Defines a specific layer (root) to use as the layer to + merge into the target project. Must be the layer root + (ConfML file).For example: --targetlayer + assets/somelayer/root.confml + --rename defines that the merged layers need to be renamed + --all Defines that the entire configuration (all layers) + needs to be merged. This has no effect when merging + layers directly using --sourcelayer and --targetlayer. + -l LAYERS, --layer=LAYERS + Define the layers of the source configuration that are + included to merge action. The layer operation can be + used several times in a single command. Note that this + can only be used when merging configuration roots, not + specific layers using --sourcelayer and --targetlayer. + Example -l -1 --layer=-2, which would append a layers + -1 and -2 to the layers => layers = -1,-2 + --merge-policy=MERGE_POLICY + Specifies the merge policy to use when merging layers. + Possible values: + replace-add - Add/replace files from source layer, but + leave other files in the target as they are. + overwrite-layer - Overwrite the entire layer (remove + all previous content). diff -r 000000000000 -r 2e8eeb919028 configurationengine/doc/cli/merge/asset_merge.png Binary file configurationengine/doc/cli/merge/asset_merge.png has changed diff -r 000000000000 -r 2e8eeb919028 configurationengine/doc/cli/merge/config_project.zip Binary file configurationengine/doc/cli/merge/config_project.zip has changed diff -r 000000000000 -r 2e8eeb919028 configurationengine/doc/cli/merge/myasset2.zip Binary file configurationengine/doc/cli/merge/myasset2.zip has changed diff -r 000000000000 -r 2e8eeb919028 configurationengine/doc/cli/merge/project_after_variant_layer_merge.png Binary file configurationengine/doc/cli/merge/project_after_variant_layer_merge.png has changed diff -r 000000000000 -r 2e8eeb919028 configurationengine/doc/cli/report.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/doc/cli/report.rst Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,61 @@ +ConE report action +================== + +The report action can be used to create a report based on report generation +data created beforehand by the generate action using the switch ``--report-data-output``. +The report can be generated based on a single data file, or by merging multiple files. + +Examples +-------- + +**Creating a report from a single data file**:: + + cone report --input-data report.dat + +This would generate a report based on the data in ``report.dat`` into ``report.html`` +in the current directory. + +**Creating a report from multiple files**:: + + cone report --input-data rofs3.dat --input-data uda.dat --template template.html + +This would generate a report based the data from two generation runs, one for ROFS3 data +and one for UDA data. The used template is overridden using ``--template``. + +Options list +------------ + --version show program's version number and exit + -h, --help show this help message and exit + --print-settings Print all the default settings from the current + setting container. + --print-supported-impls + Print all supported ImplML XML namespaces and file + extension. + -v LEVEL, --verbose=LEVEL + Print error, warning and information on system out. + Possible choices: Default is 3. + NONE (all) 0 + CRITICAL 1 + ERROR 2 + WARNING 3 + INFO 4 + DEBUG 5 + --log-file=FILE Location of the used log file. Default is 'cone.log' + -p STORAGE, --project=STORAGE + defines the location of current project. Default is + the current working directory. + + Report options: + The report function generates a report using previously generated + intermediary report data as input. + + -i FILE, --input-data=FILE + Defines an input file for report generation. If + specified more than once, the data of all specified + report data files is merged. + -r FILE, --report=FILE + Generates a report about settings that are properly + generated.Example -r report.html. + -t FILE, --template=FILE + Template used in report generation.Example -t + report_template.html. diff -r 000000000000 -r 2e8eeb919028 configurationengine/doc/cli/update.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/doc/cli/update.rst Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,55 @@ +ConE update action +=================== +Running action update +Usage: cone update [options] + +The update functionality is meant for ConfML manipulation in current project (defined with -p). Default value for the current project is the currently working directory. A project can be either a folder or a cpf/zip file. + +Options list +------------ + --version show program's version number and exit + -h, --help show this help message and exit + --print-settings Print all the default settings from the current + setting container. + --print-supported-impls + Print all supported ImplML XML namespaces and file + extension. + -v LEVEL, --verbose=LEVEL + Print error, warning and information on system out. + Possible choices: Default is 3. + NONE (all) 0 + CRITICAL 1 + ERROR 2 + WARNING 3 + INFO 4 + DEBUG 5 + --log-file=FILE Location of the used log file. Default is 'cone.log' + -c CONFIG, --configuration=CONFIG + defines the name of the configuration for the action + -p STORAGE, --project=STORAGE + defines the location of current project. Default is + the current working directory. + + Update options: + The update functionality is meant for ConfML manipulation in current + project (defined with -p). Default value for the current project is + the currently working directory. A project can be either a folder or a + cpf/zip file. + + -m META, --add-meta=META + Add given metadata to defined configuration.Example + --add-meta "owner=John Cone" -m product=E75 + --add-cpf-meta=CPFMETA + Add given CPF identification metadata to defined + configuration.Example --add-cpf-meta + "coreplat_name=Platform1" + -d DESC, --add-desc=DESC + Add given description to defined configuration.Example + --add-desc "Customer one CPF" -d Description1 + --remove-meta=META Removes given metadata from defined + configuration.Example --remove-meta owner --remove- + meta coreplat_name + --remove-desc Removes description from defined configuration.Example + --remove-desc + --add-data=DATA Add given ConfML data to defined configuration.Example + --add-data "KCRUidAvkon.KAknDefaultAppOrientation=1" diff -r 000000000000 -r 2e8eeb919028 configurationengine/doc/conf.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/doc/conf.py Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,194 @@ +# -*- coding: utf-8 -*- +# +# 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: + +# +# Cone documentation build configuration file, created by +# sphinx-quickstart on Tue Dec 30 13:51:34 2008. +# +# This file is execfile()d with the current directory set to its containing dir. +# +# The contents of this file are pickled, so don't put values in the namespace +# that aren't pickleable (module imports are okay, they're removed automatically). +# +# All configuration values have a default value; values that are commented out +# serve to show the default value. + +import sys, os + +# If your extensions are in another directory, add it here. If the directory +# is relative to the documentation root, use os.path.abspath to make it +# absolute, like shown here. +#sys.path.append(os.path.abspath('some/directory')) + +# General configuration +# --------------------- + +# Add any Sphinx extension module names here, as strings. They can be extensions +# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. +extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix of source filenames. +source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +# General substitutions. +project = u'ConE' +copyright = u'2008, Nokia Corporation and/or its subsidiary(-ies)' + +# The default replacements for |version| and |release|, also used in various +# other places throughout the built documents. +# +# The short X.Y version. +version = '1.1' +# The full version, including alpha/beta/rc tags. +release = '1.1.5' + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +today_fmt = '%B %d, %Y' + +# List of documents that shouldn't be included in the build. +#unused_docs = [] + +# List of directories, relative to source directories, that shouldn't be searched +# for source files. +exclude_trees = [] + +# The reST default role (used for this markup: `text`) to use for all documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + + +# Options for HTML output +# ----------------------- + +# The style sheet to use for HTML and HTML Help pages. A file of that name +# must exist either in Sphinx' static/ path, or in one of the custom paths +# given in html_static_path. +html_style = 'default.css' + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_use_modindex = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, the reST sources are included in the HTML build as _sources/. +#html_copy_source = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = '' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'Conedoc' + + +# Options for LaTeX output +# ------------------------ + +# The paper size ('letter' or 'a4'). +#latex_paper_size = 'letter' + +# The font size ('10pt', '11pt' or '12pt'). +#latex_font_size = '10pt' + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, author, document class [howto/manual]). +latex_documents = [ + ('index', 'Cone.tex', u'ConE Documentation', + u'Teemu Rytkönen', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# Additional stuff for the LaTeX preamble. +#latex_preamble = '' + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_use_modindex = True diff -r 000000000000 -r 2e8eeb919028 configurationengine/doc/configurationml085.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/doc/configurationml085.rst Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,1965 @@ +####################################### +Configuration ML Specification Document +####################################### + +**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". + + +================== +Table of contents: +================== + +.. contents:: + +=================== +1. Document Control +=================== + +1.1 References +-------------- + +#. Customization tool interoperability Requirements Specification + http://www8.connecting.nokia.com/nmp/msw/tsw/series60/series60dm.nsf/WebAllByID/XXXJ16313-EN +#. XML Inclusions (XInclude) Version 1.0, W3C Recommendation, 20 December 2004 + http://www.w3.org/TR/xinclude/ +#. Extensible Markup Language (XML) 1.0 (Third Edition), W3C Recommendation, + http://www.w3.org/TR/2004/REC-xml-20040204 +#. Modularization of XHTML, W3C Recommendation + http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410 +#. XML Linking Language (XLink) Version 1.0, W3C Recommendation, 27 June 2001 + http://www.w3.org/TR/xlink/ +#. XML Path Language (XPath) Version 1.0, W3C Recommendation, 16 November 1999 + http://www.w3.org/TR/xpath +#. XML Schema Part 2: Datatypes Second Edition, W3C Recommendation, 28 October 2004 + http://www.w3.org/TR/xmlschema-2/ +#. XHTML(TM) 2.0 - W3C Working Draft 22 July 2004 + http://www.w3.org/TR/xhtml2/ +#. Extending and Versioning XML Languages with XML Schema + http://www.pacificspirit.com/Authoring/Compatibility/ExtendingAndVersioningXMLLanguages.html +#. +#. RELAX NG Specification, OASIS Committee Specification, 3 December 2001 + http://www.relaxng.org/spec-20011203.html +#. Uniform Resource Identifiers (URI): Generic Syntax, August 1998 + http://www.ietf.org/rfc/rfc2396.txt +#. S60 Customization Tool + http://s60wiki.nokia.com/S60Wiki/S60_Customization_Tool + +1.2 Glossary +------------ + +.. glossary:: + + Central Repository + `Symbian OS `_ service that provides a user interface to allow one or more clients to open repositories, and to provision and retrieve information from those repositories. + Configuration + Specific values for a collection of settings. Used to configure terminal SW for certain platform release, product or trade customer (for example operator). In Configuration ML the root element of the language and includes also feature and setting definitions. + Configuration element + Defines a `configuration `_ capability of software. Is used to define using one or more settings or features. + Configuration enabler + A software functionality that at runtime implements configurability for one or more setting + Configuration Tool + Tool used for configuring SW build (for example variant) + ConfML + Configuration Markup Language, language defined in this document + Customization Tool + S60 specific tool to configuring SW build (for example variant). Replaced by Configuration Tool. + Extension policy + A mechanism for controlling how sequence item-settings for single setting in multiple configurations are handled. + Feature + A collection of related settings. + Group + For structuring settings in view. + Item-setting + A single item in a data of a sequence setting. Each item-setting defines values for sub-settings. For example, every contact in a data for phone book setting is an item-setting. + lowerCamelCase + Practice of writing `compound words `_ or phrases in which the words are joined without `spaces `_ and are `capitalized `_ with the exception of the first word within the compound (http://en.wikipedia.org/wiki/CamelCase). + Option + Allowed value for a setting. + Restore Factory Settings (RFS) + Feature for reinitialising device data to factory settings stored on ROM. + Setting + Defines a single configurable element (for example mailbox name). + Setting implementation + Information about platform specific implementation. Used when building a configuration. Specific for the used configuration enabler + Sub-configuration + A configuration included in other configuration. + Sub-setting + Individual setting data elements that are available for each item-setting of a sequence data. For example, phone number field of every contact item-setting is a sub-setting. + Value + Defines a value of a setting. Single customizable value of a certain setting. For example Mailbox name. + Variant + A specific kind of configuration. Term used in Customization Tool for customer specific values. + View + For rearranging settings into new structure and redefining their properties regardless how they where defined originally. + +=============== +2. Introduction +=============== + +2.1 Purpose and scope +--------------------- + +Configuration ML (later in document 'Configuration ML' or 'ConfML') is a XML-based markup language (that is, an XML application) for defining SW configuration elements and configuration data of SW product. + +Configuration ML is an evolution of XML language designed and used for S60 Customization Tool. Full compatibility with the tools already supporting so-called variant data files of earlier format was first seen as important. However, it was afterwards seen that compatibility would only make Configuration ML more complicated than needed. Also new features of such as mapping Boolean settings to bitmasks key in Central Repository and enabling incremental definition of sequences would have not been supported by old format. Therefore The Configuration ML is not compatible with variant features or variant data XML formats used by S60 Customization Tool. On the other hand it is possible to develop tools that support reading and/or writing both formats. Configuration ML language itself is not S60 specific and therefore can be used also outside S60. + +2.2 Main concepts +----------------- + +The Configuration ML consists of four plus one main components as shown in Figure 1. + +.. image:: images/configurationml085-f1.gif + +Figure 1 The main components of Configuration ML + +Configuration ML is primarily used to define configurations, features, settings, and data. The fourth component is Restore Factory Settings component, rfs. All these components are optional. Configuration is the top level concept of the language. It groups together relevant configuration features and values for them. Features consist of settings. Configurations are typically defined incrementally, and therefore configuration can be defined by means of any number of other configurations. Chapter 3 explains in detail the main concepts of the language. + +Setting implementation definitions are defined using separate languages, which are defined in separate documents. One of the main goals of Configuration ML is to separate the logical feature definitions from the actual implementation specific details. Setting implementation definitions contain all the required logic to convert values in data part to implementation specific values that are used either at ROM image creation time or by the terminal software at runtime. + +2.3 Applicability +----------------- + +This specification defines how Configuration ML can be used to define all SW related configurability aspects of a software system. + +Configuration ML is most typically used for those local or global functionality and user experience related configuration elements that are used for localization, differentiation and customization purposes. + +When defining configuration elements in using Configuration ML suitable abstraction level should be selected. In complex cases it might be better to use for example domain specific language and external file to describe the fine details, and only then have selection of an external file as a setting in Configuration ML. This approach also enables to build dedicated (possible graphical) tools to define the internal details of the element. + +2.4 Namespace +------------- + +All the elements of Configuration ML are defined in a single versioned namespace called http://www.s60.com/xml/confml/2 . The namespace is updated for major, possibly non-backward compatible versions only. New minor versions must maintain compatibility. The root element of the document, configuration, must contain an xmlns declaration for this namespace. None of the attributes in this specification belong to any namespaces and therefore are never prefixed. + +Example:: + + + +When elements of Configuration ML are stored in a separately included file, namespace needs to be redefined. Refer to chapter 3.2.3 for more information on how to use multiple files to define a configuration. + +The setting implementation information is defined in implementation specific namespace. + +The namespace of Configuration ML must not be used for any other elements than defined in this document. All extensions must be therefore defined in some other namespace. + +2.5 MIME types and file name extensions +--------------------------------------- + +The MIME type for XML files of Configuration ML is 'text/application+xml'. + +It is recommended that all Configuration ML files use file name extension '.confml' (all lowercase) on all platforms. + +The file name extensions of setting implementation XML files are implementation specific. + +2.6 Reuse and Extensibility +--------------------------- + +Configuration ML relies heavily on other existing XML language. Following XML languages are used one way or another: XPATH [6], XInclude [2], and XML schema [7]. + +XPath is a language for addressing parts of an XML document. In support of this primary purpose, it also provides basic facilities for manipulation of strings, numbers, and Booleans. XPath uses a compact, non-XML syntax to facilitate use of XPath within URIs and XML attribute values. XPath operates on the abstract, logical structure of an XML document, rather than its surface syntax. Refer to chapter 3.4 and 3.3.2 for more information on XPath expressions are used in configuration ML. + +XInclude is a standard for assembling XML instances into another XML document through inclusion. It enables larger documents to be dynamically created from smaller XML documents without having to physically duplicate the content of the smaller files in the main file. Refer to chapter 3.2.3 for more information on working with multiple files. + +Configuration ML itself is designed to be extensible meaning that it can be further developed by defining new elements in own namespace. + +2.7 Validation and usage +------------------------ + +This document is the official definition for the Configuration ML XML language. + +All Configuration ML documents must be valid XML 1.0 documents. The applications and tools supporting Configuration ML are assumed to check the well-formedness of the Configuration ML document instances. + +Every Configuration ML document should have XML declaration with version as the first thing in the file. + +The root element of every Configuration ML document must be configuration. The version attribute for this element must be specified as '1.0'. + +Example:: + + + + + + +2.8 Localization +---------------- + +As all XML documents, Configuration ML supports both UTF-8 and UTF-16 encodings. It is recommended to declare used encoding with XML declaration. This declaration is mandatory when other encoding than UTF-8 or UTF-16 is used. By default, UTF-8 encoding should be used, in case there is no good reason to do otherwise. + +Example:: + + + +