From ae831088123d62a0ca741792afd9a05f42b17025 Mon Sep 17 00:00:00 2001 From: Andre Anjos <andre.dos.anjos@gmail.com> Date: Tue, 5 Feb 2013 12:26:23 +0100 Subject: [PATCH] Simplified setup infrastructure --- buildout.cfg | 35 ++++++------------- setup.py | 96 ++++++---------------------------------------------- 2 files changed, 22 insertions(+), 109 deletions(-) diff --git a/buildout.cfg b/buildout.cfg index 299753e..ccb5790 100644 --- a/buildout.cfg +++ b/buildout.cfg @@ -3,32 +3,19 @@ ; Mon 16 Apr 08:29:18 2012 CEST [buildout] -parts = env flandmark external tests python -eggs = bob - xbob.flandmark +parts = xbob.flandmark scripts +extensions = mr.developer +auto-checkout = * newest = false +eggs = xbob.flandmark +prefixes = /Users/andre/work/bob/b/dbg -; Path to Bob's root - No need setting this if Bob is installed centrally -bob = /idiap/group/torch5spro/nightlies/last/install/linux-x86_64-release +[sources] +xbob.buildout = git git@github.com:bioidiap/xbob.buildout -[env] -recipe = collective.recipe.environment -PKG_CONFIG_PATH = ${buildout:bob}/lib/pkgconfig +[xbob.flandmark] +recipe = xbob.buildout:develop -[flandmark] -recipe = zc.recipe.egg:develop -setup = . - -[external] -recipe = xbob.buildout:external -egg-directories = ${buildout:bob}/lib - -[tests] -recipe = xbob.buildout:nose -eggs = ${buildout:eggs} -script = tests.py - -[python] -recipe = zc.recipe.egg +[scripts] +recipe = xbob.buildout:scripts interpreter = python -eggs = ${buildout:eggs} diff --git a/setup.py b/setup.py index 62f72f4..a73c0d8 100644 --- a/setup.py +++ b/setup.py @@ -6,90 +6,8 @@ """Bindings for flandmark """ -import sys -import subprocess from setuptools import setup, find_packages -from distutils.extension import Extension - -def pkgconfig(package): - - def uniq(seq, idfun=None): - # order preserving - if idfun is None: - def idfun(x): return x - seen = {} - result = [] - for item in seq: - marker = idfun(item) - # in old Python versions: - # if seen.has_key(marker) - # but in new ones: - if marker in seen: continue - seen[marker] = 1 - result.append(item) - return result - - flag_map = { - '-I': 'include_dirs', - '-L': 'library_dirs', - '-l': 'libraries', - } - - cmd = [ - 'pkg-config', - '--libs', - '--cflags', - package, - ] - - proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) - - output = proc.communicate()[0] - - if proc.returncode != 0: - raise RuntimeError, "PkgConfig did not find package %s. Output:\n%s" % \ - (package, output.strip()) - - kw = {} - - for token in output.split(): - if flag_map.has_key(token[:2]): - kw.setdefault(flag_map.get(token[:2]), []).append(token[2:]) - - elif token[0] == '-': # throw others to extra_link_args - kw.setdefault('extra_compile_args', []).append(token) - - else: # these are maybe libraries - if os.path.exists(token): - dirname = os.path.dirname(token) - if dirname not in kw.get('library_dirs', []): - kw.setdefault('library_dirs', []).append(dirname) - - bname = os.path.splitext(os.path.basename(token))[0][3:] - if bname not in kw.get('libraries', []): - kw.setdefault('libraries', []).append(bname) - - for k, v in kw.iteritems(): # remove duplicated - kw[k] = uniq(v) - - return kw - -def setup_bob_extension(ext_name, sources): - """Sets up a given C++ extension that depends on Bob""" - - bob = pkgconfig('bob-python') - ocv = pkgconfig('opencv') - - return Extension( - ext_name, - sources=sources, - language="c++", - include_dirs=bob.get('include_dirs',[]) + ocv.get('include_dirs',[]), - library_dirs=bob.get('library_dirs',[]) + ocv.get('library_dirs', []), - runtime_library_dirs=bob.get('library_dirs',[]) + ocv.get('library_dirs', []), - libraries=bob.get('libraries',[]) + ocv.get('libraries',[]), - ) +from xbob.extension import Extension setup( @@ -110,6 +28,10 @@ setup( "xbob", ], + setup_requires=[ + 'xbob.extension', + ], + install_requires=[ 'setuptools', 'bob', @@ -122,12 +44,16 @@ setup( }, ext_modules=[ - setup_bob_extension("xbob.flandmark._flandmark", + Extension("xbob.flandmark._flandmark", [ "xbob/flandmark/ext/flandmark_detector.cpp", "xbob/flandmark/ext/liblbp.cpp", "xbob/flandmark/ext/ext.cpp", - ]) + ], + bob_modules = [ + 'opencv', + ] + ) ], classifiers = [ -- GitLab