commit: 3a3806c5f1e60a1d79067ceb5a7588206457bd4a Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> AuthorDate: Mon Dec 8 20:52:20 2025 +0000 Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> CommitDate: Wed Dec 10 22:47:11 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3a3806c5
sci-chemistry/openbabel: Switch make_desktop_entry to --eapi9 Bug: https://bugs.gentoo.org/967238 Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org> .../openbabel/openbabel-3.1.1_p20241221-r4.ebuild | 247 +++++++++++++++++++++ 1 file changed, 247 insertions(+) diff --git a/sci-chemistry/openbabel/openbabel-3.1.1_p20241221-r4.ebuild b/sci-chemistry/openbabel/openbabel-3.1.1_p20241221-r4.ebuild new file mode 100644 index 000000000000..8041167e8fcc --- /dev/null +++ b/sci-chemistry/openbabel/openbabel-3.1.1_p20241221-r4.ebuild @@ -0,0 +1,247 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +GENTOO_DEPEND_ON_PERL="no" +PYTHON_COMPAT=( python3_{11..14} ) +WX_GTK_VER=3.2-gtk3 + +inherit cmake desktop flag-o-matic perl-module python-r1 toolchain-funcs wxwidgets xdg + +DESCRIPTION="Interconverts file formats used in molecular modeling" +HOMEPAGE="https://openbabel.org/ https://github.com/openbabel/openbabel/" + +if [[ "${PV}" == *9999* ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/openbabel/${PN}.git" +else + if [[ "${PV}" == *_p* ]]; then # eg., openbabel-3.1.1_p20210325 + # Set to commit hash + OPENBABEL_COMMIT="889c350feb179b43aa43985799910149d4eaa2bc" + SRC_URI="https://github.com/${PN}/${PN}/archive/${OPENBABEL_COMMIT}.tar.gz -> ${P}.tar.gz" + S="${WORKDIR}/${PN}-${OPENBABEL_COMMIT}" + else + MY_P="${PN}-$(ver_rs 1- -)" + SRC_URI="https://github.com/${PN}/${PN}/archive/${MY_P}.tar.gz -> ${P}.tar.gz" + S="${WORKDIR}/${PN}-${MY_P}" + fi + KEYWORDS="~amd64 ~arm ~x86 ~amd64-linux ~x86-linux ~ppc-macos" +fi + +LICENSE="GPL-2" +# See src/CMakeLists.txt for LIBRARY_VERSION +SLOT="0/7.0.0" +IUSE="cpu_flags_arm_neon cpu_flags_x86_sse2 cpu_flags_x86_sse4_2 doc examples +inchi json minimal openmp perl png python test wxwidgets ${GENTOO_PERL_USESTRING}" +RESTRICT="!test? ( test )" +REQUIRED_USE=" + python? ( ${PYTHON_REQUIRED_USE} ) + test? ( inchi !minimal python? ( json png ) ${PYTHON_REQUIRED_USE} ) +" + +RDEPEND=" + dev-cpp/eigen:3 + virtual/zlib:= + inchi? ( sci-libs/inchi ) + json? ( >=dev-libs/rapidjson-1.1.0 ) + !minimal? ( + dev-libs/libxml2:2= + png? ( x11-libs/cairo ) + ) + perl? ( + ${GENTOO_PERL_DEPSTRING} + dev-lang/perl:= + ) + python? ( ${PYTHON_DEPS} ) + wxwidgets? ( x11-libs/wxGTK:${WX_GTK_VER}=[X] ) +" +DEPEND="${RDEPEND}" +BDEPEND=" + dev-lang/perl + doc? ( + app-text/doxygen + dev-texlive/texlive-latex + ) + perl? ( dev-lang/swig ) + python? ( dev-lang/swig ) + test? ( dev-lang/python ) +" + +PATCHES=( + # Set include dir only for global implementation + "${FILESDIR}"/${PN}-3.1.1_p2024-fix_pybind.patch + # prevent installation of examples in /usr/bin + "${FILESDIR}"/${PN}-3.1.1_p2024-fix_examples.patch + # cmake4-compat + "${FILESDIR}"/${PN}-3.1.1_p2024-cmake4.patch +) + +pkg_pretend() { + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp +} + +pkg_setup() { + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp +} + +gen_python_bindings() { + mkdir -p scripts/${EPYTHON} || die + # Appends to scripts/CMakeLists.txt, substituting the correct tags, for + # each valid python implementation, + cat "${FILESDIR}"/${PN}-python-r2.cmake | \ + sed -e "s|@@EPYTHON@@|${EPYTHON}|" \ + -e "s|@@PYTHON_INCLUDE_DIR@@|$(python_get_includedir)|" \ + -e "s|@@PYTHON_LIBS@@|$(python_get_LIBS)|" \ + -e "s|@@PYTHON_SITEDIR@@|$(python_get_sitedir)|" >> \ + scripts/CMakeLists.txt || die +} + +src_prepare() { + cmake_src_prepare + + # Prevent bundled inchi as fallback + rm -r include/inchi || die + + use python && python_foreach_impl gen_python_bindings +} + +src_configure() { + if use json; then + # -DOPTIMIZE_NATIVE=ON also forces -march=native so use + # cpu_flags to set defines instead + use cpu_flags_x86_sse2 && append-cppflags -DRAPIDJSON_SSE2 + use cpu_flags_x86_sse4_2 && append-cppflags -DRAPIDJSON_SSE42 + use cpu_flags_arm_neon && append-cppflags -DRAPIDJSON_NEON + fi + + use wxwidgets && setup-wxwidgets + + use_bindings() { + (use perl || use python) && (echo 'yes' || die) || (echo 'no' || die) + } + + local mycmakeargs=( + $(cmake_use_find_package png Cairo) + $(cmake_use_find_package wxwidgets wxWidgets) + -DCMAKE_SKIP_RPATH=ON + -DBUILD_DOCS=$(usex doc) + -DBUILD_EXAMPLES=$(usex examples) + -DBUILD_GUI=$(usex wxwidgets) + -DENABLE_OPENMP=$(usex openmp) + -DENABLE_TESTS=$(usex test) + -DMINIMAL_BUILD=$(usex minimal) + # All three required to comply w/ useflag and prevent bundled lib + -DOPENBABEL_USE_SYSTEM_INCHI=$(usex inchi) + -DADD_INCHI_FORMAT=$(usex inchi) + -DWITH_INCHI=$(usex inchi) + -DOPTIMIZE_NATIVE=OFF + -DPERL_BINDINGS=$(usex perl) + -DPYTHON_BINDINGS=$(usex python) + -DRUN_SWIG=$(use_bindings) + -DWITH_COORDGEN=false + -DWITH_JSON=$(usex json) + # MEAPARSER + -DCMAKE_DISABLE_FIND_PACKAGE_Boost=ON + -DWITH_MAEPARSER=false + ) + + if use perl; then + perl_set_version + mycmakeargs+=( + -DPERL_INSTDIR="${VENDOR_ARCH}" + ) + fi + + if use test; then + # Help cmake find the python interpreter when dev-lang/python-exec is built + # without native-symlinks support. + python_setup + mycmakeargs+=( + -DPYTHON_EXECUTABLE="${PYTHON}" + ) + fi + + cmake_src_configure +} + +src_compile() { + # Avoid perl-module_src_compile (bug #963096) + cmake_src_compile +} + +src_test() { + local CMAKE_SKIP_TESTS=( + # https://github.com/openbabel/openbabel/issues/2766 + test_align_{4,5} + ) + ! use wxwidgets && CMAKE_SKIP_TESTS+=( + test_tautomer_{22,27} + ) + + # Weird deadlock causes system_load to keep rising + cmake_src_test -j1 +} + +openbabel-optimize() { + python_optimize "${D}/$(python_get_sitedir)"/openbabel || die +} + +src_install() { + cmake_src_install + + docinto html + for x in doc/*.html; do + [[ ${x} != doc/api*.html ]] && dodoc ${x} + done + + if use doc; then + cmake_src_install docs + docinto html/API + dodoc -r doc/API/html/. + fi + + if use examples; then + # no compression since we want ready-to-run scripts + docompress -x /usr/share/doc/${PF}/examples + + # ${PV} doesn't correspond to the internal BABEL_VERSION for + # live or patch release builds so we grep it + local babel_ver=$( + grep '^#define BABEL_VERSION' < \ + "${BUILD_DIR}"/include/openbabel/babelconfig.h | \ + cut -d \" -f 2 || die + ) + docinto examples/povray + dodoc doc/dioxin.* doc/README*.pov* + # Needed by the povray example + dosym ../../../../${PN}/${babel_ver}/babel_povray3.inc \ + /usr/share/doc/${PF}/examples/povray/babel31.inc + fi + + if use perl; then + docinto / + newdoc scripts/perl/Changes Changes.perl + newdoc scripts/perl/README README.perl + if use examples; then + docinto examples/perl + dodoc -r scripts/perl/examples/. + fi + fi + + if use python; then + python_foreach_impl openbabel-optimize + docinto / + newdoc scripts/python/README.rst README.python.rst + docinto html + dodoc scripts/python/*.html + if use examples; then + docinto examples/python + dodoc -r scripts/python/examples/. + fi + fi + + if use wxwidgets; then + make_desktop_entry --eapi9 obgui -n "Open Babel" -i ${PN} + newicon "${S}"/src/GUI/babel.xpm ${PN}.xpm + fi +}
