import sys, os from os.path import abspath, exists import shutil from distutils.sysconfig import get_python_lib from distutils.core import setup, Extension FILES_TO_BE_COPIED = ("_preludedb.c", "preludedb.py") def split_args(s): import re return re.split("\s+", s.strip()) def get_root(): try: return sys.argv[sys.argv.index("--root") + 1] except ValueError: return "" def is_system_wide_install(): return os.access(get_python_lib(), os.W_OK) def builddir_is_srcdir(): return abspath("@top_srcdir@") == abspath("@top_builddir@") def pre_install(): if not is_system_wide_install(): sys.argv.extend(["--prefix", "@prefix@"]) def pre_build(): if not builddir_is_srcdir(): for file in FILES_TO_BE_COPIED: src = "@top_srcdir@/bindings/python/" + file dst = "@top_builddir@/bindings/python/" + file if not exists(dst): shutil.copy(src, dst) def pre_clean(): if not builddir_is_srcdir(): for file in FILES_TO_BE_COPIED: exists(file) and os.remove(file) def uninstall(): if is_system_wide_install(): prefix = None else: prefix = "@prefix@" for f in "preludedb.py", "preludedb.pyc", "_preludedb.so": file = get_root() + "/" + get_python_lib(prefix=prefix) + "/" + f exists(file) and os.remove(file) file = get_root() + "/" + get_python_lib(plat_specific=True, prefix=prefix) + "/" + f exists(file) and os.remove(file) sys.exit(0) commands = { "install": pre_install, "build": pre_build, "clean": pre_clean, "uninstall": uninstall, } if len(sys.argv) > 1 and commands.has_key(sys.argv[1]): commands[sys.argv[1]]() setup(name="preludedb", package_dir={'preludedb': '@top_srcdir@/bindings/python'}, py_modules=["preludedb"], ext_modules=[Extension("_preludedb", ["_preludedb.c"], extra_compile_args=split_args("-I@top_srcdir@/src/include @LIBPRELUDE_CFLAGS@ @LIBPRELUDE_PTHREAD_CFLAGS@"), library_dirs=[ "@top_builddir@/src/.libs/" ], extra_link_args=split_args("@LIBPRELUDE_LDFLAGS@ @LIBPRELUDE_PTHREAD_CFLAGS@ -lpreludedb @LIBPRELUDE_LIBS@"))])