commit:     a7168ef5c9ef4798fe1f7176c8eea95b33e8d103
Author:     Alexey Shvetsov <alexxy <AT> gentoo <DOT> org>
AuthorDate: Fri Apr 15 10:00:00 2022 +0000
Commit:     Alexey Shvetsov <alexxy <AT> gentoo <DOT> org>
CommitDate: Fri Apr 15 10:00:38 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a7168ef5

sci-chemistry/openbabel: Resurect opebabel[python]

File ${FILESDIR}/openbabel-python.cmake was accidently removed
by astrum in 3b032e0f3d0d837c2faf2051da6257844e7ced55

Closes: https://bugs.gentoo.org/837254
Package-Manager: Portage-3.0.30, Repoman-3.0.3
Signed-off-by: Alexey Shvetsov <alexxy <AT> gentoo.org>

 .../openbabel/files/openbabel-python.cmake         | 104 +++++++++++++++++++++
 1 file changed, 104 insertions(+)

diff --git a/sci-chemistry/openbabel/files/openbabel-python.cmake 
b/sci-chemistry/openbabel/files/openbabel-python.cmake
new file mode 100644
index 000000000000..425b4656a9d2
--- /dev/null
+++ b/sci-chemistry/openbabel/files/openbabel-python.cmake
@@ -0,0 +1,104 @@
+# The following is a cmake fragment taken from scripts/CMakeLists.txt and
+# edited for Gentoo python multibuild compatibility.
+
+if (PYTHON_BINDINGS)
+       # Tags should be edited to reflect the active python implementation
+       set(EPYTHON @@EPYTHON@@)
+       set(PYTHON_INCUDE_DIR @@PYTHON_INCUDE_DIR@@)
+       set(PYTHON_LIBS @@PYTHON_LIBS@@)
+       set(PYTHON_SITEDIR @@PYTHON_SITEDIR@@)
+
+       include_directories(${PYTHON_INCUDE_DIR})
+
+       add_custom_command(
+               OUTPUT 
${CMAKE_SOURCE_DIR}/scripts/${EPYTHON}/openbabel-python.cpp 
${CMAKE_SOURCE_DIR}/scripts/${EPYTHON}/openbabel.py
+               COMMAND ${SWIG_EXECUTABLE} -python -c++ -small -O 
-templatereduce -naturalvar -I${CMAKE_SOURCE_DIR}/include 
-I${CMAKE_BINARY_DIR}/include -o 
${CMAKE_SOURCE_DIR}/scripts/${EPYTHON}/openbabel-python.cpp ${eigen_define} 
-outdir ${CMAKE_SOURCE_DIR}/scripts/${EPYTHON} 
${CMAKE_SOURCE_DIR}/scripts/openbabel-python.i
+               MAIN_DEPENDENCY openbabel-python.i
+               VERBATIM
+       )
+
+       
configure_file(${CMAKE_SOURCE_DIR}/scripts/python/openbabel/__init__.py.in
+               ${CMAKE_BINARY_DIR}/scripts/${EPYTHON}/openbabel/__init__.py)
+
+       add_library(bindings_python_${EPYTHON} MODULE 
${CMAKE_SOURCE_DIR}/scripts/${EPYTHON}/openbabel-python.cpp)
+       target_link_libraries(bindings_python_${EPYTHON} ${PYTHON_LIBS} 
${BABEL_LIBRARY})
+
+       set_target_properties(bindings_python_${EPYTHON}
+               PROPERTIES
+               OUTPUT_NAME _openbabel
+               LIBRARY_OUTPUT_DIRECTORY 
${CMAKE_BINARY_DIR}/scripts/${EPYTHON}/openbabel
+               PREFIX ""
+               SUFFIX .so )
+
+       add_dependencies(bindings_python_${EPYTHON} openbabel)
+
+       install(TARGETS bindings_python_${EPYTHON}
+               LIBRARY DESTINATION ${PYTHON_SITEDIR}/openbabel
+               COMPONENT bindings_python)
+       install(FILES 
${CMAKE_BINARY_DIR}/scripts/${EPYTHON}/openbabel/__init__.py
+               DESTINATION ${PYTHON_SITEDIR}/openbabel
+               COMPONENT bindings_python)
+       install(FILES ${CMAKE_SOURCE_DIR}/scripts/${EPYTHON}/openbabel.py
+               DESTINATION ${PYTHON_SITEDIR}/openbabel
+               COMPONENT bindings_python)
+       install(FILES ${CMAKE_SOURCE_DIR}/scripts/python/openbabel/pybel.py
+               DESTINATION ${PYTHON_SITEDIR}/openbabel
+               COMPONENT bindings_python)
+
+       if (ENABLE_TESTS)
+               # Make sure all module files are together in the same directory 
for testing
+               add_custom_command(TARGET bindings_python_${EPYTHON} POST_BUILD
+                       COMMAND ${CMAKE_COMMAND} -E copy 
${CMAKE_SOURCE_DIR}/scripts/${EPYTHON}/openbabel.py 
${CMAKE_BINARY_DIR}/scripts/${EPYTHON}/openbabel/
+                       COMMAND ${CMAKE_COMMAND} -E copy 
${CMAKE_SOURCE_DIR}/scripts/python/openbabel/pybel.py 
${CMAKE_BINARY_DIR}/scripts/${EPYTHON}/openbabel/)
+               set(TEST_SOURCE_DIR ${CMAKE_SOURCE_DIR}/test)
+               # define TESTDATADIR for tests that need input files
+               add_definitions(-DTESTDATADIR="${TEST_SOURCE_DIR}/files/")
+               # define FORMATDIR for location of format plugin binaries
+               set(FORMATDIR "${CMAKE_BINARY_DIR}/lib${LIB_SUFFIX}/")
+               add_definitions(-DFORMATDIR="${FORMATDIR}/")
+               include_directories(${TEST_SOURCE_DIR})
+
+               # The macro is modified from cmake/modules/UsePythonTest.cmake
+               MACRO(ADD_PYTHON_TEST TESTNAME FILENAME)
+                       GET_SOURCE_FILE_PROPERTY(loc ${FILENAME} LOCATION)
+                       STRING(REGEX REPLACE ";" " " wo_semicolumn "${ARGN}")
+                       FILE(WRITE ${CMAKE_BINARY_DIR}/test/${TESTNAME}.cmake
+"
+       MESSAGE(\"${PYTHONPATH}\")
+       EXECUTE_PROCESS(
+               COMMAND ${EPYTHON} ${loc} ${wo_semicolumn}
+               RESULT_VARIABLE import_res
+               OUTPUT_VARIABLE import_output
+               ERROR_VARIABLE  import_output
+       )
+
+       # Pass the output back to ctest
+       IF(import_output)
+               MESSAGE(\${import_output})
+       ENDIF(import_output)
+       IF(import_res)
+               MESSAGE(SEND_ERROR \${import_res})
+       ENDIF(import_res)
+"
+                       )
+                       ADD_TEST(${TESTNAME} ${CMAKE_COMMAND} -P 
${CMAKE_BINARY_DIR}/test/${TESTNAME}.cmake)
+               ENDMACRO(ADD_PYTHON_TEST)
+
+               set(pybindtests
+                       bindings
+                       _pybel
+                       example 
+                       obconv_writers
+                       cdjsonformat
+                       pcjsonformat
+                       roundtrip
+                       )
+               foreach(pybindtest ${pybindtests})
+                       ADD_PYTHON_TEST(pybindtest_${pybindtest}_${EPYTHON} 
${TEST_SOURCE_DIR}/test${pybindtest}.py)
+                       
set_tests_properties(pybindtest_${pybindtest}_${EPYTHON} PROPERTIES
+                               ENVIRONMENT 
"PYTHONPATH=${CMAKE_BINARY_DIR}/scripts/${EPYTHON}:${CMAKE_BINARY_DIR}/lib${LIB_SUFFIX};LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/scripts/${EPYTHON}:${CMAKE_BINARY_DIR}/lib${LIB_SUFFIX}:\$ENV{LD_LIBRARY_PATH};BABEL_LIBDIR=${CMAKE_BINARY_DIR}/lib${LIB_SUFFIX}/;BABEL_DATADIR=${CMAKE_SOURCE_DIR}/data"
+                               FAIL_REGULAR_EXPRESSION "ERROR;FAIL;Test failed"
+                       )
+               endforeach(pybindtest ${pybindtests})
+       endif (ENABLE_TESTS)
+endif(PYTHON_BINDINGS)

Reply via email to