# Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 DISTUTILS_OPTIONAL=1 #DISTUTILS_USE_PEP517=scikit-build-core DISTUTILS_USE_PEP517=standalone DISTUTILS_EXT=1 PYTHON_COMPAT=( python3_{10..12} ) inherit distutils-r1 cmake DESCRIPTION="Library to instrument executable formats" HOMEPAGE="https://lief.quarkslab.com/" SRC_URI="https://github.com/lief-project/LIEF/archive/${PV}.tar.gz -> ${P}.tar.gz" # https://files.pythonhosted.org/packages/cp311/${P:0:1}/${PN}/${P}-cp311-cp311-manylinux_2_28_x86_64.manylinux_2_27_x86_64.whl -> ${P}_x86_64.zip" # whl: https://pypi.org/pypi/lief/json S=${WORKDIR}/LIEF-${PV} LICENSE="Apache-2.0" SLOT="0" KEYWORDS="amd64 x86" IUSE="examples +python static-libs" # lief requires a forked version of nanobind, see LIEF-0.15.1/api/python/CMakeLists.txt # So don't try to use a standard one RDEPEND="python? ( ${PYTHON_DEPS} dev-python/pydantic[${PYTHON_USEDEP}] dev-python/pydantic-core[${PYTHON_USEDEP}] dev-python/tomli[${PYTHON_USEDEP}] dev-python/xtract[${PYTHON_USEDEP}] )" DEPEND="${RDEPEND} python? ( dev-python/scikit-build-core[${PYTHON_USEDEP}] )" BDEPEND="${DISTUTILS_DEPS}" REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" #FIXME: LIEF_TESTS RESTRICT="test" QA_PRESTRIPPED="/usr/lib/python3.*/site-packages/lief/_lief.so" wrap_python() { if use python; then pushd "./api/python" >/dev/null || die distutils-r1_${1} "$@" popd >/dev/null fi } src_prepare() { #fix multilib sed -i "s|CMAKE_INSTALL_LIBDIR \"lib\"|CMAKE_INSTALL_LIBDIR \"$(get_libdir)\"|" CMakeLists.txt || die # sed -i '/COMMAND ${CMAKE_STRIP}/d' CMakeLists.txt || die # sed -i "s|\"setup\"|\"scikit_build_core.build\"|" api/python/pyproject.toml || die cmake_src_prepare wrap_python ${FUNCNAME} eapply_user } src_configure() { #cmake/LIEFOptions.cmake local FORCE32=NO use x86 && FORCE32=YES local PYTHON_API=NO # local NANOBIND_DIR if use python; then #set EPYTHON variable for python_get_sitedir python_setup PYTHON_API=YES # NANOBIND_DIR=$(python_get_sitedir)/nanobind/cmake fi local mycmakeargs=( -DBUILD_SHARED_LIBS="$(usex static-libs OFF ON)" -DLIEF_EXAMPLES="$(usex examples ON OFF)" -DLIEF_PYTHON_API="$PYTHON_API" -DLIEF_MACHO=OFF # -DLIEF_PY_LIEF_EXT=ON # -DLIEF_PYTHON_STATIC=OFF # -DLIEF_PY_LIEF_EXT_SHARED=ON # -DBUILD_SHARED_LIBS=ON # -DLIEF_FORCE_API_EXPORTS=ON -DLIEF_FORCE32="$FORCE32" ) # use python && mycmakeargs+=( # -DLIEF_OPT_NANOBIND_EXTERNAL=1 # -Dnanobind_DIR="${NANOBIND_DIR}" # ) cmake_src_configure wrap_python ${FUNCNAME} } src_compile() { cmake_src_compile wrap_python ${FUNCNAME} } src_install() { cmake_src_install wrap_python ${FUNCNAME} }