101 lines
3.0 KiB
Python
Executable File
101 lines
3.0 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
# Copyright (c) 2001-2009 Twisted Matrix Laboratories.
|
|
# See LICENSE for details.
|
|
|
|
"""
|
|
Distutils installer for Twisted.
|
|
"""
|
|
|
|
try:
|
|
# Load setuptools, to build a specific source package
|
|
import setuptools
|
|
except ImportError:
|
|
pass
|
|
|
|
import sys, os
|
|
|
|
|
|
def getExtensions():
|
|
"""
|
|
Get all extensions from core and all subprojects.
|
|
"""
|
|
extensions = []
|
|
|
|
if not sys.platform.startswith('java'):
|
|
for dir in os.listdir("twisted") + [""]:
|
|
topfiles = os.path.join("twisted", dir, "topfiles")
|
|
if os.path.isdir(topfiles):
|
|
ns = {}
|
|
setup_py = os.path.join(topfiles, "setup.py")
|
|
execfile(setup_py, ns, ns)
|
|
if "extensions" in ns:
|
|
extensions.extend(ns["extensions"])
|
|
|
|
return extensions
|
|
|
|
|
|
def main(args):
|
|
"""
|
|
Invoke twisted.python.dist with the appropriate metadata about the
|
|
Twisted package.
|
|
"""
|
|
if os.path.exists('twisted'):
|
|
sys.path.insert(0, '.')
|
|
from twisted import copyright
|
|
from twisted.python.dist import getDataFiles, getScripts, getPackages, setup
|
|
|
|
# "" is included because core scripts are directly in bin/
|
|
projects = [''] + [x for x in os.listdir('bin')
|
|
if os.path.isdir(os.path.join("bin", x))
|
|
and not x.startswith(".")]
|
|
scripts = []
|
|
for i in projects:
|
|
scripts.extend(getScripts(i))
|
|
|
|
setup_args = dict(
|
|
# metadata
|
|
name="Twisted",
|
|
version=copyright.version,
|
|
description="An asynchronous networking framework written in "
|
|
"Python",
|
|
author="Twisted Matrix Laboratories",
|
|
author_email="twisted-python@twistedmatrix.com",
|
|
maintainer="Glyph Lefkowitz",
|
|
maintainer_email="glyph@twistedmatrix.com",
|
|
url="http://twistedmatrix.com/",
|
|
license="MIT",
|
|
long_description="""\
|
|
An extensible framework for Python programming, with special focus
|
|
on event-based network programming and multiprotocol integration.
|
|
""",
|
|
packages = getPackages('twisted'),
|
|
conditionalExtensions = getExtensions(),
|
|
scripts = scripts,
|
|
data_files=getDataFiles('twisted'),
|
|
)
|
|
|
|
if 'setuptools' in sys.modules:
|
|
from pkg_resources import parse_requirements
|
|
requirements = ["zope.interface"]
|
|
try:
|
|
list(parse_requirements(requirements))
|
|
except:
|
|
print """You seem to be running a very old version of setuptools.
|
|
This version of setuptools has a bug parsing dependencies, so automatic
|
|
dependency resolution is disabled.
|
|
"""
|
|
else:
|
|
setup_args['install_requires'] = requirements
|
|
setup_args['include_package_data'] = True
|
|
setup_args['zip_safe'] = False
|
|
setup(**setup_args)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
try:
|
|
main(sys.argv[1:])
|
|
except KeyboardInterrupt:
|
|
sys.exit(1)
|
|
|