6210f94 Handle backends with colon, fallback to setuptools.build_meta:__legacy__

Authored and Committed by churchyard 4 years ago
    Handle backends with colon, fallback to setuptools.build_meta:__legacy__
    
    Falling back to setuptools.build_meta:__legacy__ is the standard behavior,
    not setuptools.build_meta. See PEP 517:
    
    https://www.python.org/dev/peps/pep-0517/
    
    > If the pyproject.toml file is absent, or the build-backend key is missing,
    > the source tree is not using this specification, and tools should revert
    > to the legacy behaviour of running setup.py (either directly, or by
    > implicitly invoking the setuptools.build_meta:__legacy__ backend).
    
    Falling back to setuptools.build_meta had very similar results so far.,
    but the behavior might change in the feature.
    
    While working on this, I have uncovered a problem in our code.
    It was not able to handle backends with ":". Looking at PEP 517 again:
    
    > build-backend is a string naming a Python object that will be used to
    > perform the build. This is formatted following the same module:object syntax
    > as a setuptools entry point. For instance, if the string is "flit.api:main",
    > this object would be looked up by executing the equivalent of:
    >
    >    import flit.api
    >    backend = flit.api.main
    >
    > It's also legal to leave out the :object part, e.g.
    >
    >    build-backend = "flit.api"
    >
    > which acts like:
    >
    >    import flit.api
    >    backend = flit.api
    
    We now handle such cases properly. Witch the change of the default backend,
    we also test a backend with colon in our tests.
    
        
file modified
+5 -1
file modified
+14 -3