91 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
#!/usr/bin/env python
 | 
						|
 | 
						|
# 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.
 | 
						|
 | 
						|
import glob
 | 
						|
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)
 | 
						|
    with open(file_path) as f:
 | 
						|
        return f.read()
 | 
						|
 | 
						|
 | 
						|
def exec_file(path_segments):
 | 
						|
    """Execute a single python file to get the variables defined in it"""
 | 
						|
    result = {}
 | 
						|
    code = read_file(path_segments)
 | 
						|
    exec(code, result)
 | 
						|
    return result
 | 
						|
 | 
						|
 | 
						|
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)
 | 
						|
        else:
 | 
						|
            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",))
 | 
						|
 | 
						|
setup(
 | 
						|
    name="matrix-synapse",
 | 
						|
    version=version,
 | 
						|
    packages=find_packages(exclude=["tests", "tests.*"]),
 | 
						|
    description="Reference Synapse Home Server",
 | 
						|
    install_requires=dependencies['requirements'](include_conditional=True).keys(),
 | 
						|
    dependency_links=dependencies["DEPENDENCY_LINKS"].values(),
 | 
						|
    include_package_data=True,
 | 
						|
    zip_safe=False,
 | 
						|
    long_description=long_description,
 | 
						|
    scripts=["synctl"] + glob.glob("scripts/*"),
 | 
						|
    cmdclass={'test': Tox},
 | 
						|
)
 |