Hello All, The following patch against Open Babel 2.3.0 bypasses the mkmf-generated makefile for installation of the Ruby bindings. It substitutes a CMake install(FILES ...) stanza, along with a bit of setup. The choice of files to install (only one, actually) and permissions is based on what the mkmf Makefile does. The install location is determined based on RUBY_PREFIX and CMAKE_INSTALL_DIR, as described in the installation docs (and contrary to what the build system actually does in vanilla 2.3.0). This also provides DESTDIR support implicitly.
I tested the changes on CentOS 5.5. ==== diff -Naur openbabel-2.3.0/scripts/CMakeLists.txt openbabel-2.3.0-mod/scripts/CMakeLists.txt --- openbabel-2.3.0/scripts/CMakeLists.txt 2011-01-11 12:12:22.000000000 -0600 +++ openbabel-2.3.0-mod/scripts/CMakeLists.txt 2011-01-11 12:06:03.000000000 -0600 @@ -290,14 +290,20 @@ ) add_dependencies(bindings_ruby pre_bindings_ruby) if (RUBY_PREFIX) - install(CODE "execute_process(COMMAND DESTDIR=${RUBY_PREFIX} make install WORKING_DIRECTORY ${openbabel_BINARY_DIR}/scripts/ruby)") + # It is reasonably safe to assume that RUBY_POSSIBLE_LIB_DIR contains + # no regex metacharacters except possibly '.': + string(REGEX REPLACE ^${RUBY_POSSIBLE_LIB_DIR}/ruby ${RUBY_PREFIX} ruby_install_dir "${RUBY_SITEARCH_DIR}") else (RUBY_PREFIX) - if (${CMAKE_INSTALL_PREFIX} STREQUAL "/usr/local") - install(CODE "execute_process(COMMAND make install WORKING_DIRECTORY ${openbabel_BINARY_DIR}/scripts/ruby)") - else (${CMAKE_INSTALL_PREFIX} STREQUAL "/usr/local") - install(CODE "execute_process(COMMAND DESTDIR=${CMAKE_INSTALL_PREFIX} make install WORKING_DIRECTORY ${openbabel_BINARY_DIR}/scripts/ruby)") - endif (${CMAKE_INSTALL_PREFIX} STREQUAL "/usr/local") + execute_process(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print Config::CONFIG['exec_prefix']" + OUTPUT_VARIABLE ruby_exec_prefix) + # It is reasonably safe to assume that ruby_exec_prefix contains no + # regex metacharacters except possibly '.': + string(REGEX REPLACE ^${ruby_exec_prefix} ${CMAKE_INSTALL_PREFIX} ruby_install_dir "${RUBY_SITEARCH_DIR}") endif (RUBY_PREFIX) + set(ruby_install_dir ${ruby_install_dir} + CACHE PATH "The directory where the Ruby bindings will be installed") + install(FILES ruby/openbabel.so DESTINATION ${ruby_install_dir} + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) else(NOT MSVC) add_library(bindings_ruby MODULE ${openbabel_SOURCE_DIR}/scripts/ruby/openbabel-ruby.cpp) target_link_libraries(bindings_ruby ${RUBY_LIBRARY} ${BABEL_LIBRARY}) ==== I hope this is acceptable. Cheers, John -- John C. Bollinger, Ph.D. Department of Structural Biology St. Jude Children's Research Hospital Email Disclaimer: www.stjude.org/emaildisclaimer ------------------------------------------------------------------------------ Protect Your Site and Customers from Malware Attacks Learn about various malware tactics and how to avoid them. Understand malware threats, the impact they can have on your business, and how you can protect your company and customers by using code signing. http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ OpenBabel-Devel mailing list OpenBabel-Devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openbabel-devel