lief-0.17.1.ebuild

This commit is contained in:
Anton Bolshakov 2025-10-26 15:04:25 +08:00
parent ab319ab2ce
commit eb950f9f5f
No known key found for this signature in database
GPG key ID: 32BDCED870788F04
2 changed files with 112 additions and 0 deletions

View file

@ -1,2 +1,3 @@
DIST lief-0.16.7.tar.gz 16472050 BLAKE2B 5c07076628a6f7a4fda58d28027e6ecdbb86bc7ffd7a8928d1f08ca78c888e77cb23951642967d57294a2e458922e2a95d082264964516fe4508d4cf8cf1cc4d SHA512 c60d40a8cbe35fb6bc763e962717d12e914641f03f06603084aea9c4b8fd66e9ad974e5369cb68fbac5dbbc56f5e80c19b131633c78d1af4e7b0151ad0006ade
DIST lief-0.17.0.tar.gz 20658138 BLAKE2B 4b248cd2f14e081e78575bbb2d641c554fca4caf0df88fb46fa46f1a28618a4d850e5f95c8cf5a2f6d2838e6b37dea766c7924b653e55f00bb877aecda605913 SHA512 deb81b887f328baa571b8c98d58be48ccc249b9145b241054743e47dae50bf301f62bfd6649647358769c10ca81c990cbd026ac5df45b4ebe5d1bce0f5b90e2d
DIST lief-0.17.1.tar.gz 20658537 BLAKE2B 19fd626e5f24082e78619ef706d16ab7f36c08e38c4e22f1ffdd28aaa40ccfc7a474fead316174e0da998783772bce7e3ac20820cc0749848a06fc766b5e95f8 SHA512 1e00dcb6d4fb06df5bc74c457d846f2d84cb3200679138cb0d87cbe38de27598207cbb159bc4090312d5f299d1541a8aa461b2fc70a6f725440fb9fbf4c35f45

View file

@ -0,0 +1,111 @@
# 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_{12..14} )
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}
}