Changeset tfkyle@gmail.com-20070321045932-a6awecmgz2bpveer


Ignore:
Timestamp:
03/21/07 04:59:32 (3 years ago)
Author:
Kyle McFarland <tfkyle@…>
branch-nick:
snakeoil
Message:

different approach to stop compiling other modules, use build_ext and a custom OptionalExtension? class instead of overriding build (would have to override install too in that case it seems)

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • setup.cfg

    rtfkyle@gmail.com-20070321040818-y4l7nm56kv9kzk3a rtfkyle@gmail.com-20070321045932-a6awecmgz2bpveer  
    1 [build] 
     1[build_ext] 
    22# uncomment if you don't want to build the extension modules 
    3 #build-c=false 
     3#build-optional=false 
  • setup.py

    rtfkyle@gmail.com-20070321045225-atzkx2ln35refrqy rtfkyle@gmail.com-20070321045932-a6awecmgz2bpveer  
    88 
    99from distutils import core, ccompiler, log, errors 
    10 from distutils.command import build, sdist, build_py, build_scripts, install, build 
     10from distutils.command import build, sdist, build_ext, build_py, build_scripts, install 
    1111from stat import ST_MODE 
     12 
     13class OptionalExtension(core.Extension): 
     14        pass 
    1215 
    1316if os.name == "nt": 
     
    108111                self.byte_compile([bzr_ver]) 
    109112 
    110 class snakeoil_build(build.build): 
    111  
    112     user_options = build.build.user_options + [ 
    113         ("build-c=", "o", "build optional C modules for extra speed"), 
     113class snakeoil_build_ext(build_ext.build_ext): 
     114 
     115    user_options = build_ext.build_ext.user_options + [ 
     116        ("build-optional=", "o", "build optional C modules"), 
    114117    ] 
    115118 
    116     boolean_options = build.build.boolean_options + ["build-c"] 
     119    boolean_options = build.build.boolean_options + ["build-optional"] 
    117120 
    118121    def initialize_options(self): 
    119         build.build.initialize_options(self) 
    120         self.build_c = None 
     122        build_ext.build_ext.initialize_options(self) 
     123        self.build_optional = None 
    121124 
    122125    def finalize_options(self): 
    123         build.build.finalize_options(self) 
    124         if self.build_c is None: 
    125             self.build_c = True 
    126  
    127     def has_ext_modules(self): 
    128         return bool(self.build_c) and build.build.has_ext_modules(self) 
    129  
    130     sub_commands = [(name, pre) for name, pre in build.build.sub_commands if name != "build_ext"] 
    131     sub_commands += [("build_ext", has_ext_modules)] 
     126        build_ext.build_ext.finalize_options(self) 
     127        if self.build_optional is None: 
     128            self.build_optional = True 
     129 
     130    def build_extension(self, ext): 
     131                if isinstance(ext, OptionalExtension) and not self.build_optional: 
     132                        return 
     133                build_ext.build_ext.build_extension(self, ext) 
    132134 
    133135class TestLoader(unittest.TestLoader): 
     
    203205if sys.version_info < (2, 5): 
    204206    # Almost unmodified copy from the python 2.5 source. 
    205     extensions.append(core.Extension( 
     207    extensions.append(OptionalExtension( 
    206208            'snakeoil._functools', ['src/functoolsmodule.c'], 
    207209            extra_compile_args=extra_flags, depends=common_includes)) 
     
    217219    packages=packages, 
    218220    ext_modules=[ 
    219         core.Extension( 
     221        OptionalExtension( 
    220222            'snakeoil.osutils._posix', ['src/posix.c'], 
    221223            extra_compile_args=extra_flags, depends=common_includes), 
    222         core.Extension( 
     224        OptionalExtension( 
    223225            'snakeoil._klass', ['src/klass.c'], 
    224226            extra_compile_args=extra_flags, depends=common_includes), 
    225         core.Extension( 
     227        OptionalExtension( 
    226228            'snakeoil._caching', ['src/caching.c'], 
    227229            extra_compile_args=extra_flags, depends=common_includes), 
    228         core.Extension( 
     230        OptionalExtension( 
    229231            'snakeoil._lists', ['src/lists.c'], 
    230232            extra_compile_args=extra_flags, depends=common_includes), 
    231         core.Extension( 
     233        OptionalExtension( 
    232234            'snakeoil.osutils._readdir', ['src/readdir.c'], 
    233235            extra_compile_args=extra_flags, depends=common_includes), 
     
    235237    cmdclass={ 
    236238        'sdist': mysdist, 
    237         'build': snakeoil_build, 
     239        'build_ext': snakeoil_build_ext, 
    238240        'build_py': snakeoil_build_py, 
    239241        'test': test, 
Note: See TracChangeset for help on using the changeset viewer.