EAPI=7 PYTHON_COMPAT=( python3_{5,6,7} ) inherit eutils multilib python-single-r1 cmake-utils vim-plugin git-r3 EGIT_REPO_URI="https://github.com/Valloric/YouCompleteMe.git" DESCRIPTION="vim plugin: a code-completion engine for Vim" HOMEPAGE="https://valloric.github.io/YouCompleteMe/" LICENSE="GPL-3" IUSE="+clang test" REQUIRED_USE="${PYTHON_REQUIRED_USE}" COMMON_DEPEND=" ${PYTHON_DEPS} clang? ( >=sys-devel/clang-3.3 ) $(python_gen_cond_dep ' dev-libs/boost[python,threads,${PYTHON_MULTI_USEDEP}] ') || ( app-editors/vim[python,${PYTHON_SINGLE_USEDEP}] app-editors/gvim[python,${PYTHON_SINGLE_USEDEP}] ) " RDEPEND=" ${COMMON_DEPEND} $(python_gen_cond_dep ' dev-python/bottle[${PYTHON_MULTI_USEDEP}] virtual/python-futures[${PYTHON_MULTI_USEDEP}] dev-python/future[${PYTHON_MULTI_USEDEP}] dev-python/sh[${PYTHON_MULTI_USEDEP}] dev-python/waitress[${PYTHON_MULTI_USEDEP}] dev-python/requests[${PYTHON_MULTI_USEDEP}] >=dev-python/jedi-0.17.0[${PYTHON_MULTI_USEDEP}] >=dev-python/parso-0.7.0[${PYTHON_MULTI_USEDEP}] dev-python/watchdog[${PYTHON_MULTI_USEDEP}] ') " DEPEND=" ${COMMON_DEPEND} test? ( $(python_gen_cond_dep ' >=dev-python/mock-1.0.1[${PYTHON_MULTI_USEDEP}] >=dev-python/nose-1.3.0[${PYTHON_MULTI_USEDEP}] ') dev-cpp/gmock >=dev-cpp/gtest-1.8.0 ) " CMAKE_IN_SOURCE_BUILD=1 CMAKE_USE_DIR=${S}/third_party/ycmd/cpp VIM_PLUGIN_HELPFILES="${PN}" src_prepare() { if ! use test ; then sed -i '/^add_subdirectory( tests )/d' third_party/ycmd/cpp/ycm/CMakeLists.txt || die fi sed -i '/^#! python3.7/d' third_party/ycmd/third_party/cregex/tools/build_regex_unicode.py for third_party_module in bottle waitress; do rm -r "${S}"/third_party/ycmd/third_party/${third_party_module} || die "Failed to remove third party module ${third_party_module}" done for third_party_module in jedi parso numpydoc; do rm -r "${S}"/third_party/ycmd/third_party/jedi_deps/${third_party_module} || die "Failed to remove third party module ${third_party_module}" done for third_party_module in requests idna certifi chardet urllib3; do rm -r "${S}"/third_party/requests_deps/${third_party_module} || die "Failed to remove third party module ${third_party_module}" rm -r "${S}"/third_party/ycmd/third_party/requests_deps/${third_party_module} || die "Failed to remove third party module ${third_party_module}" done rm -r "${S}"/third_party/ycmd/cpp/BoostParts || die "Failed to remove bundled boost" cmake-utils_src_prepare eapply_user } src_configure() { local mycmakeargs=( -DUSE_CLANG_COMPLETER="$(usex clang)" -DUSE_SYSTEM_LIBCLANG="$(usex clang)" -DUSE_SYSTEM_BOOST=ON -DUSE_SYSTEM_GMOCK=ON ) cmake-utils_src_configure } src_test() { cd "${S}/third_party/ycmd/cpp/ycm/tests" || die LD_LIBRARY_PATH="${EROOT}"/usr/$(get_libdir)/llvm \ ./ycm_core_tests || die cd "${S}"/python/ycm || die local dirs=( "${S}"/third_party/*/ "${S}"/third_party/ycmd/third_party/*/ ) local -x PYTHONPATH=${PYTHONPATH}:$(IFS=:; echo "${dirs[*]}") nosetests --verbose || die } src_install() { dodoc *.md third_party/ycmd/*.md rm -r *.md *.sh COPYING.txt third_party/ycmd/cpp || die rm -r third_party/ycmd/{*.md,*.sh,examples} || die find python third_party -name '*test*' -exec rm -rf {} + || die find python third_party -name '*doc*' -exec rm -rf {} + || die egit_clean rm third_party/ycmd/third_party/clang/lib/libclang.so* || die vim-plugin_src_install python_optimize "${ED}" python_fix_shebang "${ED}" }