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