summaryrefslogtreecommitdiff
path: root/python/setup.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/setup.py')
-rwxr-xr-xpython/setup.py316
1 files changed, 0 insertions, 316 deletions
diff --git a/python/setup.py b/python/setup.py
deleted file mode 100755
index a301b3e4cc..0000000000
--- a/python/setup.py
+++ /dev/null
@@ -1,316 +0,0 @@
-#!/usr/bin/env python
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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 os, re, sys, string
-from distutils.core import setup, Command
-from distutils.command.build import build as _build
-from distutils.command.build_py import build_py as _build_py
-from distutils.command.clean import clean as _clean
-from distutils.command.install_lib import install_lib as _install_lib
-from distutils.dep_util import newer
-from distutils.dir_util import remove_tree
-from distutils.dist import Distribution
-from distutils.errors import DistutilsFileError, DistutilsOptionError
-from distutils import log
-from stat import ST_ATIME, ST_MTIME, ST_MODE, S_IMODE
-
-MAJOR, MINOR = sys.version_info[0:2]
-
-class preprocessor:
-
- def copy_file(self, src, dst, preserve_mode=1, preserve_times=1,
- link=None, level=1):
- name, actor = self.actor(src, dst)
- if actor:
- if not os.path.isfile(src):
- raise DistutilsFileError, \
- "can't copy '%s': doesn't exist or not a regular file" % src
-
- if os.path.isdir(dst):
- dir = dst
- dst = os.path.join(dst, os.path.basename(src))
- else:
- dir = os.path.dirname(dst)
-
- if not self.force and not newer(src, dst):
- return dst, 0
-
- if os.path.basename(dst) == os.path.basename(src):
- log.info("%s %s -> %s", name, src, dir)
- else:
- log.info("%s %s -> %s", name, src, dst)
-
- if self.dry_run:
- return (dst, 1)
- else:
- try:
- fsrc = open(src, 'rb')
- except os.error, (errno, errstr):
- raise DistutilsFileError, \
- "could not open '%s': %s" % (src, errstr)
-
- if os.path.exists(dst):
- try:
- os.unlink(dst)
- except os.error, (errno, errstr):
- raise DistutilsFileError, \
- "could not delete '%s': %s" % (dst, errstr)
-
- try:
- fdst = open(dst, 'wb')
- except os.error, (errno, errstr):
- raise DistutilsFileError, \
- "could not create '%s': %s" % (dst, errstr)
-
- try:
- fdst.write(actor(fsrc.read()))
- finally:
- fsrc.close()
- fdst.close()
-
- if preserve_mode or preserve_times:
- st = os.stat(src)
-
- if preserve_times:
- os.utime(dst, (st[ST_ATIME], st[ST_MTIME]))
- if preserve_mode:
- os.chmod(dst, S_IMODE(st[ST_MODE]))
-
- return (dst, 1)
- else:
- return Command.copy_file(self, src, dst, preserve_mode, preserve_times,
- link, level)
-
-doc_option = [('build-doc', None, 'build directory for documentation')]
-
-class build(_build):
-
- user_options = _build.user_options + doc_option
-
- def initialize_options(self):
- _build.initialize_options(self)
- self.build_doc = None
-
- def finalize_options(self):
- _build.finalize_options(self)
- if self.build_doc is None:
- self.build_doc = "%s/doc" % self.build_base
-
- def get_sub_commands(self):
- return _build.get_sub_commands(self) + ["build_doc"]
-
-class build_doc(Command):
-
- user_options = doc_option
-
- def initialize_options(self):
- self.build_doc = None
-
- def finalize_options(self):
- self.set_undefined_options('build', ('build_doc', 'build_doc'))
-
- def run(self):
- try:
- from epydoc.docbuilder import build_doc_index
- from epydoc.docwriter.html import HTMLWriter
- except ImportError, e:
- log.warn('%s -- skipping build_doc', e)
- return
-
- names = ["qpid.messaging"]
- doc_index = build_doc_index(names, True, True)
- html_writer = HTMLWriter(doc_index)
- self.mkpath(self.build_doc)
- log.info('epydoc %s to %s' % (", ".join(names), self.build_doc))
- html_writer.write(self.build_doc)
-
-class clean(_clean):
-
- user_options = _clean.user_options + doc_option
-
- def initialize_options(self):
- _clean.initialize_options(self)
- self.build_doc = None
-
- def finalize_options(self):
- _clean.finalize_options(self)
- self.set_undefined_options('build', ('build_doc', 'build_doc'))
-
- def run(self):
- if self.all:
- if os.path.exists(self.build_doc):
- remove_tree(self.build_doc, dry_run=self.dry_run)
- else:
- log.debug("%s doesn't exist -- can't clean it", self.build_doc)
- _clean.run(self)
-
-if MAJOR <= 2 and MINOR <= 3:
- from glob import glob
- from distutils.util import convert_path
- class distclass(Distribution):
-
- def __init__(self, *args, **kwargs):
- self.package_data = None
- Distribution.__init__(self, *args, **kwargs)
-else:
- distclass = Distribution
-
-ann = re.compile(r"([ \t]*)@([_a-zA-Z][_a-zA-Z0-9]*)([ \t\n\r]+def[ \t]+)([_a-zA-Z][_a-zA-Z0-9]*)")
-line = re.compile(r"\n([ \t]*)[^ \t\n#]+")
-
-class build_py(preprocessor, _build_py):
-
- if MAJOR <= 2 and MINOR <= 3:
- def initialize_options(self):
- _build_py.initialize_options(self)
- self.package_data = None
-
- def finalize_options(self):
- _build_py.finalize_options(self)
- self.package_data = self.distribution.package_data
- self.data_files = self.get_data_files()
-
- def get_data_files (self):
- data = []
- if not self.packages:
- return data
- for package in self.packages:
- # Locate package source directory
- src_dir = self.get_package_dir(package)
-
- # Compute package build directory
- build_dir = os.path.join(*([self.build_lib] + package.split('.')))
-
- # Length of path to strip from found files
- plen = 0
- if src_dir:
- plen = len(src_dir)+1
-
- # Strip directory from globbed filenames
- filenames = [file[plen:]
- for file in self.find_data_files(package, src_dir)]
- data.append((package, src_dir, build_dir, filenames))
- return data
-
- def find_data_files (self, package, src_dir):
- globs = (self.package_data.get('', [])
- + self.package_data.get(package, []))
- files = []
- for pattern in globs:
- # Each pattern has to be converted to a platform-specific path
- filelist = glob(os.path.join(src_dir, convert_path(pattern)))
- # Files that match more than one pattern are only added once
- files.extend([fn for fn in filelist if fn not in files])
- return files
-
- def build_package_data (self):
- lastdir = None
- for package, src_dir, build_dir, filenames in self.data_files:
- for filename in filenames:
- target = os.path.join(build_dir, filename)
- self.mkpath(os.path.dirname(target))
- self.copy_file(os.path.join(src_dir, filename), target,
- preserve_mode=False)
-
- def build_packages(self):
- _build_py.build_packages(self)
- self.build_package_data()
-
- # end if MAJOR <= 2 and MINOR <= 3
-
- def backport(self, input):
- output = ""
- pos = 0
- while True:
- m = ann.search(input, pos)
- if m:
- indent, decorator, idef, function = m.groups()
- output += input[pos:m.start()]
- output += "%s#@%s%s%s" % (indent, decorator, idef, function)
- pos = m.end()
-
- subst = "\n%s%s = %s(%s)\n" % (indent, function, decorator, function)
- npos = pos
- while True:
- n = line.search(input, npos)
- if not n:
- input += subst
- break
- if len(n.group(1)) <= len(indent):
- idx = n.start()
- input = input[:idx] + subst + input[idx:]
- break
- npos = n.end()
- else:
- break
-
- output += input[pos:]
- return output
-
- def actor(self, src, dst):
- base, ext = os.path.splitext(src)
- if ext == ".py" and MAJOR <= 2 and MINOR <= 3:
- return "backporting", self.backport
- else:
- return None, None
-
-def pclfile(xmlfile):
- return "%s.pcl" % os.path.splitext(xmlfile)[0]
-
-class install_lib(_install_lib):
-
- def get_outputs(self):
- outputs = _install_lib.get_outputs(self)
- extra = []
- for of in outputs:
- if os.path.basename(of) == "amqp-0-10-qpid-errata.xml":
- extra.append(pclfile(of))
- return outputs + extra
-
- def install(self):
- outfiles = _install_lib.install(self)
- extra = []
- for of in outfiles:
- if os.path.basename(of) == "amqp-0-10-qpid-errata.xml":
- tgt = pclfile(of)
- if self.force or newer(of, tgt):
- log.info("caching %s to %s" % (of, os.path.basename(tgt)))
- if not self.dry_run:
- from qpid.ops import load_types
- load_types(of)
- extra.append(tgt)
- return outfiles + extra
-
-setup(name="qpid-python",
- version="0.11",
- author="Apache Qpid",
- author_email="dev@qpid.apache.org",
- packages=["mllib", "qpid", "qpid.messaging", "qpid.tests",
- "qpid.tests.messaging"],
- package_data={"qpid": ["specs/*.dtd", "specs/*.xml"]},
- scripts=["qpid-python-test"],
- url="http://qpid.apache.org/",
- license="Apache Software License",
- description="Python client implementation for Apache Qpid",
- cmdclass={"build": build,
- "build_py": build_py,
- "build_doc": build_doc,
- "clean": clean,
- "install_lib": install_lib},
- distclass=distclass)