Changeset 3679

Show
Ignore:
Timestamp:
29/11/08 23:40:05 (6 weeks ago)
Author:
tack
Message:

Remove Extension.del which caused config.h unlink to sometimes fail
due to the unpredictability of how objects get destroyed on shutdown.
Reimplement instead as an explicit Extension.clean() method.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/base/src/distribution/core.py

    r3645 r3679  
    358358            libraries.extend(lib.libraries) 
    359359 
    360         return distutils.core.Extension(self.output, self.files, 
    361                                         library_dirs=library_dirs, 
    362                                         include_dirs=include_dirs, 
    363                                         libraries=libraries, 
    364                                         extra_compile_args=self.extra_compile_args) 
    365  
    366     def __del__(self): 
     360        ext = distutils.core.Extension(self.output, self.files, 
     361                                       library_dirs=library_dirs, 
     362                                       include_dirs=include_dirs, 
     363                                       libraries=libraries, 
     364                                       extra_compile_args=self.extra_compile_args) 
     365 
     366        # Keep a reference to self in the distutils Extension object, so that 
     367        # after distutils.setup() is run, we can clean() the kaa Extension  
     368        # object. 
     369        ext._kaa_ext = self 
     370        return ext 
     371 
     372 
     373    def clean(self): 
    367374        """ 
    368375        Delete the config file. 
     
    589596 
    590597    # run the distutils.setup function 
    591     return distutils.core.setup(**kwargs) 
     598    result = distutils.core.setup(**kwargs) 
     599    # Run cleanup on extensions (for example to delete config.h) 
     600    for ext in kwargs['ext_modules']: 
     601        ext._kaa_ext.clean()