123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- #!/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},
- )
|