X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Fpybind%2Frados%2Fsetup.py;fp=src%2Fceph%2Fsrc%2Fpybind%2Frados%2Fsetup.py;h=0000000000000000000000000000000000000000;hb=7da45d65be36d36b880cc55c5036e96c24b53f00;hp=c30318d15818fe8e601c89b14135c84d54a90eeb;hpb=691462d09d0987b47e112d6ee8740375df3c51b2;p=stor4nfv.git diff --git a/src/ceph/src/pybind/rados/setup.py b/src/ceph/src/pybind/rados/setup.py deleted file mode 100755 index c30318d..0000000 --- a/src/ceph/src/pybind/rados/setup.py +++ /dev/null @@ -1,207 +0,0 @@ -from __future__ import print_function - -import os -import pkgutil -import shutil -import subprocess -import sys -import tempfile -import textwrap - -if not pkgutil.find_loader('setuptools'): - from distutils.core import setup - from distutils.extension import Extension -else: - from setuptools import setup - from setuptools.extension import Extension - -from distutils.ccompiler import new_compiler -from distutils.errors import CompileError, LinkError -from distutils.sysconfig import customize_compiler - -# PEP 440 versioning of the Rados package on PyPI -# Bump this version, after every changeset -# NOTE: This version is not the same as get_ceph_version() - -__version__ = '2.0.0' - - -def get_ceph_version(): - try: - for line in open(os.path.join(os.path.dirname(__file__), "..", "..", "ceph_ver.h")): - if "CEPH_GIT_NICE_VER" in line: - return line.split()[2].strip('"') - else: - return "0" - except IOError: - return "0" - - -def get_python_flags(): - cflags = {'I': [], 'extras': []} - ldflags = {'l': [], 'L': [], 'extras': []} - - if os.environ.get('VIRTUAL_ENV', None): - python = "python" - else: - python = 'python' + str(sys.version_info.major) + '.' + str(sys.version_info.minor) - - python_config = python + '-config' - - for cflag in subprocess.check_output( - [python_config, "--cflags"] - ).strip().decode('utf-8').split(): - if cflag.startswith('-I'): - cflags['I'].append(cflag.replace('-I', '')) - else: - cflags['extras'].append(cflag) - - for ldflag in subprocess.check_output( - [python_config, "--ldflags"] - ).strip().decode('utf-8').split(): - if ldflag.startswith('-l'): - ldflags['l'].append(ldflag.replace('-l', '')) - if ldflag.startswith('-L'): - ldflags['L'].append(ldflag.replace('-L', '')) - else: - ldflags['extras'].append(ldflag) - - return { - 'cflags': cflags, - 'ldflags': ldflags - } - - -def check_sanity(): - """ - Test if development headers and library for rados is available by compiling a dummy C program. - """ - CEPH_SRC_DIR = os.path.join( - os.path.dirname(os.path.abspath(__file__)), - '..', - '..' - ) - - tmp_dir = tempfile.mkdtemp(dir=os.environ.get('TMPDIR', os.path.dirname(__file__))) - tmp_file = os.path.join(tmp_dir, 'rados_dummy.c') - - with open(tmp_file, 'w') as fp: - dummy_prog = textwrap.dedent(""" - #include - - int main(void) { - rados_t cluster; - rados_create(&cluster, NULL); - return 0; - } - """) - fp.write(dummy_prog) - - compiler = new_compiler() - customize_compiler(compiler) - - if {'MAKEFLAGS', 'MFLAGS', 'MAKELEVEL'}.issubset(set(os.environ.keys())): - # The setup.py has been invoked by a top-level Ceph make. - # Set the appropriate CFLAGS and LDFLAGS - - compiler.set_include_dirs([os.path.join(CEPH_SRC_DIR, 'include')]) - compiler.set_library_dirs([os.environ.get('CEPH_LIBDIR')]) - - try: - link_objects = compiler.compile( - sources=[tmp_file], - output_dir=tmp_dir - ) - compiler.link_executable( - objects=link_objects, - output_progname=os.path.join(tmp_dir, 'rados_dummy'), - libraries=['rados'], - output_dir=tmp_dir, - ) - - except CompileError: - print('\nCompile Error: RADOS development headers not found', file=sys.stderr) - return False - except LinkError: - print('\nLink Error: RADOS library not found', file=sys.stderr) - return False - else: - return True - finally: - shutil.rmtree(tmp_dir) - - -if 'BUILD_DOC' in os.environ.keys(): - pass -elif check_sanity(): - pass -else: - sys.exit(1) - -cmdclass = {} -try: - from Cython.Build import cythonize - from Cython.Distutils import build_ext - - cmdclass = {'build_ext': build_ext} -except ImportError: - print("WARNING: Cython is not installed.") - - if not os.path.isfile('rados.c'): - print('ERROR: Cannot find Cythonized file rados.c', file=sys.stderr) - sys.exit(1) - else: - def cythonize(x, **kwargs): - return x - - source = "rados.c" -else: - source = "rados.pyx" - -# Disable cythonification if we're not really building anything -if (len(sys.argv) >= 2 and - any(i in sys.argv[1:] for i in ('--help', 'clean', 'egg_info', '--version') - )): - def cythonize(x, **kwargs): - return x - -flags = get_python_flags() - -setup( - name='rados', - version=__version__, - description="Python bindings for the Ceph librados library", - long_description=( - "This package contains Python bindings for interacting with Ceph's " - "RADOS library. RADOS is a reliable, autonomic distributed object " - "storage cluster developed as part of the Ceph distributed storage " - "system. This is a shared library allowing applications to access " - "the distributed object store using a simple file-like interface." - ), - url='https://github.com/ceph/ceph/tree/master/src/pybind/rados', - license='LGPLv2+', - platforms='Linux', - ext_modules=cythonize( - [ - Extension( - "rados", - [source], - include_dirs=flags['cflags']['I'], - library_dirs=flags['ldflags']['L'], - libraries=["rados"] + flags['ldflags']['l'], - extra_compile_args=flags['cflags']['extras'] + flags['ldflags']['extras'], - ) - ], build_dir=os.environ.get("CYTHON_BUILD_DIR", None) - ), - classifiers=[ - 'Intended Audience :: Developers', - 'Intended Audience :: System Administrators', - 'License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)', - 'Operating System :: POSIX :: Linux', - 'Programming Language :: Cython', - 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 3.4', - 'Programming Language :: Python :: 3.5' - ], - cmdclass=cmdclass, -)