91 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
| #!/usr/bin/env python
 | |
| 
 | |
| # Copyright 2014 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},
 | |
| )
 |