Add Python site-packages dirs to CF include. In CFCHierarchy's constructor, always add include dirs for each site-packages dir.
Project: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/commit/5f53f5a4 Tree: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/tree/5f53f5a4 Diff: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/diff/5f53f5a4 Branch: refs/heads/master Commit: 5f53f5a4c0856c272abc5a202d392a7dd647d69c Parents: a677d8c Author: Marvin Humphrey <[email protected]> Authored: Wed Dec 17 15:49:23 2014 -0800 Committer: Marvin Humphrey <[email protected]> Committed: Wed Jan 6 20:22:53 2016 -0800 ---------------------------------------------------------------------- compiler/python/clownfish/_cfc.c | 25 +++++++++++++++++++++++++ compiler/python/clownfish/cfc/__init__.py | 12 ++++++++++++ 2 files changed, 37 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/5f53f5a4/compiler/python/clownfish/_cfc.c ---------------------------------------------------------------------- diff --git a/compiler/python/clownfish/_cfc.c b/compiler/python/clownfish/_cfc.c index 204ee3e..209f174 100644 --- a/compiler/python/clownfish/_cfc.c +++ b/compiler/python/clownfish/_cfc.c @@ -84,7 +84,32 @@ S_CFCHierarchy_new(PyTypeObject *type, PyObject *args, PyErr_SetString(PyExc_TypeError, "Missing required arg 'dest'"); return NULL; } + PyObject *inc_func = PyObject_GetAttrString(cfc_module, "_get_inc_dirs"); + PyObject *dirs = NULL; + if (PyCallable_Check(inc_func)) { + dirs = PyObject_CallObject(inc_func, NULL); + } + if (dirs == NULL || !PyList_Check(dirs)) { + Py_XDECREF(inc_func); + Py_XDECREF(dirs); + PyErr_SetString(PyExc_RuntimeError, "_get_inc_dirs failed"); + return NULL; + } CFCHierarchy *hierarchy = CFCHierarchy_new(dest); + for (Py_ssize_t i = 0, max = PyList_Size(dirs); i < max; i++) { + PyObject *dir = PyList_GetItem(dirs, i); + if (PyUnicode_Check(dir)) { + char *dir_utf8 = PyUnicode_AsUTF8(dir); + CFCHierarchy_add_include_dir(hierarchy, dir_utf8); + } + else { + PyErr_SetString(PyExc_RuntimeError, "not a string"); + return NULL; + } + } + + Py_XDECREF(inc_func); + Py_XDECREF(dirs); return S_wrap_cfcbase(Hierarchy_pytype, hierarchy); } http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/5f53f5a4/compiler/python/clownfish/cfc/__init__.py ---------------------------------------------------------------------- diff --git a/compiler/python/clownfish/cfc/__init__.py b/compiler/python/clownfish/cfc/__init__.py index 8ab5aaf..f7f3e0b 100644 --- a/compiler/python/clownfish/cfc/__init__.py +++ b/compiler/python/clownfish/cfc/__init__.py @@ -13,5 +13,17 @@ # See the License for the specific language governing permissions and # limitations under the License. +import clownfish._cfc from clownfish._cfc import * +import site +import os.path + +def _get_inc_dirs(): + dirs = [] + for path in site.getsitepackages(): + path = os.path.join(path, "clownfish/_include") + dirs.append(path) + return dirs + +clownfish._cfc._get_inc_dirs = _get_inc_dirs
