diff -r 87cfa131b535 -r e7e0ae78773e configurationengine/source/plugins/symbian/ConeCRMLPlugin/CRMLPlugin/crml_impl.py --- a/configurationengine/source/plugins/symbian/ConeCRMLPlugin/CRMLPlugin/crml_impl.py Fri Mar 12 08:30:17 2010 +0200 +++ b/configurationengine/source/plugins/symbian/ConeCRMLPlugin/CRMLPlugin/crml_impl.py Tue Aug 10 14:29:28 2010 +0300 @@ -34,19 +34,43 @@ self.configuration = configuration self.logger = logging.getLogger('cone.crml(%s)' % self.resource_ref) self.repository = repository - + + def __getstate__(self): + state = super(CrmlImpl, self).__getstate__() + state['repository'] = self.__dict__.get('repository',None) + return state + + def generate(self, context=None): # Quick fix if context: self.generation_context = context + + # See if delta CenReps should be generated + delta_cenrep = context and context.changed_refs is not None \ + and 'deltacenrep' in context.tags.get('crml', []) + + changed_refs = None + if delta_cenrep: + changed_refs = context.changed_refs + + # Hard-coded output for delta CenReps for now + self.output_subdir = 'deltacenreps' + self.plugin_output = '' + file_path = self._get_cenrep_txt_file_path() self.logger.debug("Generating file '%s'..." % file_path) # Generate CenRep text data and write it to the output file - writer = crml_writer.CrmlTxtWriter(self.configuration, self.logger) - data = writer.get_cenrep_txt_data(self.repository).encode('UTF-16') + writer = crml_writer.CrmlTxtWriter(context, self.logger) + data = writer.get_cenrep_txt_data(self.repository, changed_refs).encode('UTF-16') self._write_to_file(file_path, data) + # Add to the generated files list + KEY = 'crml_generated_cenrep_files' + lst = context.impl_data_dict.setdefault(KEY, []) + lst.append((os.path.basename(file_path), os.path.abspath(file_path))) + # Collect the record for cenrep_rfs.txt generation in post_generate() if self.generation_context is not None: @@ -137,12 +161,8 @@ return 'core' in targets or 'rofs2' in targets def _write_to_file(self, file_path, data): - # Create directories for the file if necessary - file_dir = os.path.dirname(file_path) - if file_dir != '' and not os.path.exists(file_dir): - os.makedirs(file_dir) # Write data - f = open(file_path, "wb") + f = self.generation_context.create_file(file_path, implementation=self) try: f.write(data) finally: f.close()