Skip to content

Commit

Permalink
cmake: specify distutils build path explicitly
Browse files Browse the repository at this point in the history
so we don't need to replicate the logic in distutils/command/build.py
at different places.

Signed-off-by: Kefu Chai <kchai@redhat.com>
  • Loading branch information
tchaikov committed Aug 4, 2016
1 parent f62f7ab commit 25e5b74
Show file tree
Hide file tree
Showing 6 changed files with 9 additions and 18 deletions.
2 changes: 1 addition & 1 deletion cmake/modules/AddCephTest.cmake
Expand Up @@ -13,7 +13,7 @@ function(add_ceph_test test_name test_path)
CEPH_BUILD_DIR=${CMAKE_BINARY_DIR}
LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/lib
PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}:${CMAKE_SOURCE_DIR}/src:$ENV{PATH}
PYTHONPATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/cython_modules/lib.linux-x86_64-2.7:${CMAKE_SOURCE_DIR}/src/pybind
PYTHONPATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/cython_modules:${CMAKE_SOURCE_DIR}/src/pybind
CEPH_BUILD_VIRTUALENV=${CEPH_BUILD_VIRTUALENV})
# none of the tests should take more than 1 hour to complete
set_property(TEST
Expand Down
5 changes: 3 additions & 2 deletions cmake/modules/Distutils.cmake
Expand Up @@ -46,7 +46,8 @@ function(distutils_add_cython_module name src)
CYTHON_BUILD_DIR=${CMAKE_CURRENT_BINARY_DIR}
CEPH_LIBDIR=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
CFLAGS=\"-iquote ${CMAKE_SOURCE_DIR}/src/include\"
${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/setup.py build --build-base ${CYTHON_MODULE_DIR} --verbose
${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/setup.py
build --build-base ${CYTHON_MODULE_DIR} --build-platlib ${CYTHON_MODULE_DIR} --verbose
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS ${src})
endfunction(distutils_add_cython_module)
Expand All @@ -70,7 +71,7 @@ function(distutils_install_cython_module name)
CPPFLAGS=\"-iquote${CMAKE_SOURCE_DIR}/src/include\"
LDFLAGS=\"-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}\"
${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/setup.py
build --build-base ${CYTHON_MODULE_DIR} --verbose
build --build-base ${CYTHON_MODULE_DIR} --build-platlib ${CYTHON_MODULE_LIB} --verbose
build_ext --cython-c-in-temp --build-temp ${CMAKE_CURRENT_BINARY_DIR} --cython-include-dirs ${PROJECT_SOURCE_DIR}/src/pybind/rados
install \${options} --single-version-externally-managed --record /dev/null
egg_info --egg-base ${CMAKE_CURRENT_BINARY_DIR}
Expand Down
17 changes: 2 additions & 15 deletions src/ceph.in
Expand Up @@ -66,20 +66,12 @@ def respawn_in_path(lib_path, pybind_path, pythonlib_path):
sys.path.insert(0, os.path.join(MYDIR, pybind_path))
sys.path.insert(0, os.path.join(MYDIR, pythonlib_path))

def get_pythonlib_dir():
"""Returns the name of a distutils build directory"""
import sysconfig
f = "lib.{platform}-{version[0]}.{version[1]}"
name = f.format(platform=sysconfig.get_platform(),
version=sys.version_info)
return name

if MYDIR.endswith('src') and \
os.path.exists(os.path.join(MYDIR, '.libs')) and \
os.path.exists(os.path.join(MYDIR, 'pybind')) and \
os.path.exists(os.path.join(MYDIR, 'build')):

python_libpath = os.path.join(MYDIR, 'build', get_pythonlib_dir())
python_libpath = os.path.join(MYDIR, 'build')
respawn_in_path(os.path.join(MYDIR, '.libs'), 'pybind', python_libpath)
if 'PATH' in os.environ and MYDIR not in os.environ['PATH']:
os.environ['PATH'] += ':' + MYDIR
Expand All @@ -100,12 +92,7 @@ elif os.path.exists(os.path.join(os.getcwd(), "CMakeCache.txt")) \
lib_path = os.path.join(os.getcwd(), "lib")
bin_path = os.path.join(os.getcwd(), "bin")
pybind_path = os.path.join(src_path, "src", "pybind")

import sysconfig
f = "lib.{platform}-{version[0]}.{version[1]}"
name = f.format(platform=sysconfig.get_platform(),
version=sys.version_info)
pythonlib_path = os.path.join(os.getcwd(), "lib/cython_modules", name)
pythonlib_path = os.path.join(lib_path, "cython_modules")

respawn_in_path(lib_path, pybind_path, pythonlib_path)

Expand Down
1 change: 1 addition & 0 deletions src/pybind/cephfs/Makefile.am
Expand Up @@ -23,6 +23,7 @@ cephfs-pybind-install-exec: ${srcdir}/ceph_ver.h
fi ; \
cd $(srcdir)/pybind/cephfs; $(PY_DISTUTILS) build \
--build-base $(shell readlink -f $(builddir))/build \
--build-platlib $(shell readlink -f $(builddir))/build \
install \
$$options $$root \
--single-version-externally-managed \
Expand Down
1 change: 1 addition & 0 deletions src/pybind/rados/Makefile.am
Expand Up @@ -23,6 +23,7 @@ rados-pybind-install-exec: ${srcdir}/ceph_ver.h
fi ; \
cd $(srcdir)/pybind/rados; $(PY_DISTUTILS) build \
--build-base $(shell readlink -f $(builddir))/build \
--build-platlib $(shell readlink -f $(builddir))/build \
install \
$$options $$root \
--single-version-externally-managed \
Expand Down
1 change: 1 addition & 0 deletions src/pybind/rbd/Makefile.am
Expand Up @@ -23,6 +23,7 @@ rbd-pybind-install-exec: ${srcdir}/ceph_ver.h
fi ; \
cd $(srcdir)/pybind/rbd; $(PY_DISTUTILS) build \
--build-base $(shell readlink -f $(builddir))/build \
--build-platlib $(shell readlink -f $(builddir))/build \
install \
$$options $$root \
--single-version-externally-managed \
Expand Down

0 comments on commit 25e5b74

Please sign in to comment.