78 lines
2.4 KiB
Python
78 lines
2.4 KiB
Python
import os
|
|
import sys
|
|
from distutils.core import setup, Extension
|
|
|
|
# --with-zlib: use zlib for compressing and decompressing
|
|
# --without-zlib: ^ negated
|
|
# --with-zlib=<dir>: path to zlib if needed
|
|
# --with-libmemcached=<dir>: path to libmemcached package if needed
|
|
|
|
cmd = None
|
|
use_zlib = True
|
|
pkgdirs = [] # incdirs and libdirs get these
|
|
libs = ["memcached"]
|
|
defs = []
|
|
incdirs = []
|
|
libdirs = []
|
|
|
|
def append_env(L, e):
|
|
v = os.environ.get(e)
|
|
if v and os.path.exists(v):
|
|
L.append(v)
|
|
|
|
append_env(pkgdirs, "LIBMEMCACHED")
|
|
append_env(pkgdirs, "ZLIB")
|
|
|
|
# Hack up sys.argv, yay
|
|
unprocessed = []
|
|
for arg in sys.argv[1:]:
|
|
if arg == "--with-zlib":
|
|
use_zlib = True
|
|
continue
|
|
elif arg == "--without-zlib":
|
|
use_zlib = False
|
|
continue
|
|
elif arg == "--gen-setup":
|
|
cmd = arg[2:]
|
|
elif "=" in arg:
|
|
if arg.startswith("--with-libmemcached=") or \
|
|
arg.startswith("--with-zlib="):
|
|
pkgdirs.append(arg.split("=", 1)[1])
|
|
continue
|
|
unprocessed.append(arg)
|
|
sys.argv[1:] = unprocessed
|
|
|
|
for pkgdir in pkgdirs:
|
|
incdirs.append(os.path.join(pkgdir, "include"))
|
|
libdirs.append(os.path.join(pkgdir, "lib"))
|
|
|
|
if use_zlib:
|
|
libs.append("z")
|
|
defs.append(("USE_ZLIB", None))
|
|
|
|
pylibmc_ext = Extension("_pylibmc", ["_pylibmcmodule.c"],
|
|
libraries=libs, include_dirs=incdirs,
|
|
library_dirs=libdirs, define_macros=defs)
|
|
|
|
# Hidden secret: if environment variable GEN_SETUP is set, generate Setup file.
|
|
if cmd == "gen-setup":
|
|
line = " ".join((
|
|
pylibmc_ext.name,
|
|
" ".join("-l" + lib for lib in pylibmc_ext.libraries),
|
|
" ".join("-I" + incdir for incdir in pylibmc_ext.include_dirs),
|
|
" ".join("-L" + libdir for libdir in pylibmc_ext.library_dirs),
|
|
" ".join("-D" + name + ("=" + str(value), "")[value is None] for (name, value) in pylibmc_ext.define_macros)))
|
|
open("Setup", "w").write(line + "\n")
|
|
sys.exit(0)
|
|
|
|
readme_text = open("README.rst", "U").read()
|
|
version = open("pylibmc-version.h", "U").read().strip().split("\"")[1]
|
|
|
|
setup(name="pylibmc", version=version,
|
|
url="http://sendapatch.se/projects/pylibmc/",
|
|
author="Ludvig Ericson", author_email="ludvig@lericson.se",
|
|
license="3-clause BSD <http://www.opensource.org/licenses/bsd-license.php>",
|
|
description="Quick and small memcached client for Python",
|
|
long_description=readme_text,
|
|
ext_modules=[pylibmc_ext], packages=["pylibmc"])
|