configurationengine/source/plugins/symbian/ConeCRMLPlugin/CRMLPlugin/crml_impl.py
changeset 3 e7e0ae78773e
parent 0 2e8eeb919028
--- 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()