Skip to content
Snippets Groups Projects
setup.py 2.62 KiB
Newer Older
  • Learn to ignore specific revisions
  • Matthew Hodgson's avatar
    Matthew Hodgson committed
    # Copyright 2014-2016 OpenMarket Ltd
    
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    
    matrix.org's avatar
    matrix.org committed
    import os
    
    from setuptools import setup, find_packages, Command
    import sys
    
    
    here = os.path.abspath(os.path.dirname(__file__))
    
    
    
    def read_file(path_segments):
    
        """Read a file from the package. Takes a list of strings to join to
        make the path"""
    
        file_path = os.path.join(here, *path_segments)
    
    def exec_file(path_segments):
    
        """Execute a single python file to get the variables defined in it"""
        result = {}
    
        code = read_file(path_segments)
    
    
    class Tox(Command):
        user_options = [('tox-args=', 'a', "Arguments to pass to tox")]
    
        def initialize_options(self):
            self.tox_args = None
    
        def finalize_options(self):
            self.test_args = []
            self.test_suite = True
    
        def run(self):
            #import here, cause outside the eggs aren't loaded
    
            try:
                import tox
            except ImportError:
                try:
                    self.distribution.fetch_build_eggs("tox")
                    import tox
                except:
                    raise RuntimeError(
                        "The tests need 'tox' to run. Please install 'tox'."
                    )
    
            import shlex
            args = self.tox_args
            if args:
                args = shlex.split(self.tox_args)
    
            errno = tox.cmdline(args=args)
            sys.exit(errno)
    
    
    
    version = exec_file(("synapse", "__init__.py"))["__version__"]
    dependencies = exec_file(("synapse", "python_dependencies.py"))
    long_description = read_file(("README.rst",))
    
    matrix.org's avatar
    matrix.org committed
    
    setup(
    
        name="matrix-synapse",
    
    Mark Haines's avatar
    Mark Haines committed
        packages=find_packages(exclude=["tests", "tests.*"]),
    
    matrix.org's avatar
    matrix.org committed
        description="Reference Synapse Home Server",
    
        install_requires=dependencies['requirements'](include_conditional=True).keys(),
    
        dependency_links=dependencies["DEPENDENCY_LINKS"].values(),
    
    matrix.org's avatar
    matrix.org committed
        include_package_data=True,
    
        scripts=["synctl"] + glob.glob("scripts/*"),
    
        cmdclass={'test': Tox},