diff --git a/.gitignore b/.gitignore index d4c2162..5abb7c2 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ openbabel-2.0.2.tar.gz +/openbabel-2.3.0b2-20100803-r3942.tar.gz +/openbabel-2.3.0.tar.gz diff --git a/openbabel-inchi.patch b/openbabel-inchi.patch index 3074201..88d538e 100644 --- a/openbabel-inchi.patch +++ b/openbabel-inchi.patch @@ -1,65 +1,37 @@ -diff -up openbabel-2.2.3/configure.in.inchi openbabel-2.2.3/configure.in ---- openbabel-2.2.3/configure.in.inchi 2009-07-29 03:05:04.000000000 +0200 -+++ openbabel-2.2.3/configure.in 2009-09-14 01:14:49.000000000 +0200 -@@ -239,8 +239,11 @@ AC_SUBST(LIBDL) - AM_PATH_XML2(2.6.5) - AM_CONDITIONAL(BUILD_XML, test x"$XML_LIBS" != "x") +diff -up openbabel-2.3.0/cmake/modules/FindInchi.cmake.r openbabel-2.3.0/cmake/modules/FindInchi.cmake +--- openbabel-2.3.0/cmake/modules/FindInchi.cmake.r 2010-10-13 02:37:01.000000000 +0200 ++++ openbabel-2.3.0/cmake/modules/FindInchi.cmake 2010-11-23 01:56:55.081622107 +0100 +@@ -13,7 +13,7 @@ if(INCHI_INCLUDE_DIR AND INCHI_LIBRARY) + # in cache already + set(INCHI_FOUND TRUE) + else() +- find_path(INCHI_INCLUDE_DIR NAMES inchi_api.h) ++ find_path(INCHI_INCLUDE_DIR NAMES inchi_api.h PATHS /usr/include/inchi ) + find_library(INCHI_LIBRARY NAMES inchi Inchi) + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(INCHI DEFAULT_MSG INCHI_LIBRARY +diff -up openbabel-2.3.0/include/CMakeLists.txt.r openbabel-2.3.0/include/CMakeLists.txt +--- openbabel-2.3.0/include/CMakeLists.txt.r 2010-09-25 17:05:05.000000000 +0200 ++++ openbabel-2.3.0/include/CMakeLists.txt 2010-11-23 01:56:55.082628237 +0100 +@@ -4,7 +4,9 @@ file(GLOB math_headers openbabel/ma + file(GLOB stereo_headers openbabel/stereo/*.h) + file(GLOB depict_headers openbabel/stereo/*.h) -+AC_CHECK_LIB(stdinchi, GetStdINCHI, LIBSTDINCHI="-lstdinchi", LIBSTDINCHI="") - AC_CHECK_LIB(inchi, GetINCHI, LIBINCHI="-linchi", LIBINCHI="") --AM_CONDITIONAL(BUILD_INCHI, test x"$LIBINCHI" = "x" -o "$inchi" = "yes") -+AM_CONDITIONAL(HAVE_INCHI, test x"$LIBINCHI" != "x" -o x"$LIBSTDINCHI" != "x" -o "$inchi" = "yes") -+AM_CONDITIONAL(HAVE_STDINCHI, test x"$LIBSTDINCHI" != "x") -+AM_CONDITIONAL(BUILD_INCHI, test "$inchi" = "yes") ++if(NOT OPENBABEL_USE_SYSTEM_INCHI) + install(FILES inchi_api.h DESTINATION include/inchi) ++endif(NOT OPENBABEL_USE_SYSTEM_INCHI) + install(FILES chemdrawcdx.h DESTINATION ${OB_INCLUDE_DIRS}/openbabel) + install(FILES ${openbabel_headers} DESTINATION ${OB_INCLUDE_DIRS}/openbabel) + install(FILES ${math_headers} DESTINATION ${OB_INCLUDE_DIRS}/openbabel/math) +diff -up openbabel-2.3.0/scripts/ruby/extconf.rb.r openbabel-2.3.0/scripts/ruby/extconf.rb +--- openbabel-2.3.0/scripts/ruby/extconf.rb.r 2010-10-23 03:54:40.000000000 +0200 ++++ openbabel-2.3.0/scripts/ruby/extconf.rb 2010-11-23 01:56:55.083627521 +0100 +@@ -17,7 +17,7 @@ dir_config('openbabel') + # Find a trivial header in order to add the proper include path + # to the build flags. + here = File.dirname(__FILE__) +-find_header('inchi_api.h', here + '/../../include') ++find_header('inchi_api.h', '/usr/include/inchi', '/usr/include', here + '/../../include') - AC_CHECK_LIB(z, inflateEnd, [zlib_cv_libz=yes], [zlib_cv_libz=no]) - AC_CHECK_HEADER(zlib.h, [zlib_cv_zlib_h=yes], [zlib_cv_zlib_h=no]) -diff -up openbabel-2.2.3/src/formats/Makefile.am.inchi openbabel-2.2.3/src/formats/Makefile.am ---- openbabel-2.2.3/src/formats/Makefile.am.inchi 2009-07-09 15:05:02.000000000 +0200 -+++ openbabel-2.2.3/src/formats/Makefile.am 2009-09-14 01:15:55.000000000 +0200 -@@ -39,11 +39,17 @@ endif - - if !BUILD_SHARED - noinst_LTLIBRARIES = libformats.la -+if HAVE_INCHI - if BUILD_INCHI - libformats_la_LIBADD = inchi102/libinchi.la - else -+if HAVE_STDINCHI -+libformats_la_LIBADD = -lstdinchi -+else - libformats_la_LIBADD = -linchi - endif -+endif -+endif - libformats_la_SOURCES = \ - APIInterface.cpp MCDLformat.cpp \ - CSRformat.cpp PQSformat.cpp alchemyformat.cpp \ -@@ -124,7 +130,7 @@ if HAVE_SHARED_POINTER - formats_LTLIBRARIES += chemdrawcdxformat.la chemkinformat.la \ - rxnformat.la rsmiformat.la - endif --if BUILD_INCHI -+if HAVE_INCHI - formats_LTLIBRARIES += inchiformat.la - endif - if BUILD_ZLIB -@@ -261,12 +267,18 @@ hinformat_la_SOURCES = hinformat.cpp - hinformat_la_LDFLAGS = -module -avoid-version -no-undefined $(win32ldflags) ../libopenbabel.la - - inchiformat_la_SOURCES = inchiformat.cpp getinchi.cpp -+if HAVE_INCHI - if BUILD_INCHI - inchiformat_la_LDFLAGS = -module -avoid-version -no-undefined $(win32ldflags) ../libopenbabel.la inchi102/libinchi.la - else - inchiformat_la_LDFLAGS = -module -avoid-version -no-undefined $(win32ldflags) ../libopenbabel.la -+if HAVE_STDINCHI -+inchiformat_la_LIBADD = -lstdinchi -+else - inchiformat_la_LIBADD = -linchi - endif -+endif -+endif - - jaguarformat_la_SOURCES = jaguarformat.cpp - jaguarformat_la_LDFLAGS = -module -avoid-version -no-undefined $(win32ldflags) ../libopenbabel.la + # Prevent Ruby 1.8.x from trying to compile and link the extension + # using gcc. diff --git a/openbabel-rpm.patch b/openbabel-rpm.patch index b386b89..3f7d1a1 100644 --- a/openbabel-rpm.patch +++ b/openbabel-rpm.patch @@ -1,15 +1,91 @@ -diff -up openbabel-2.2.1b3-20090215-r2890/scripts/Makefile.am.r openbabel-2.2.1b3-20090215-r2890/scripts/Makefile.am -diff -up openbabel-2.2.1b3-20090215-r2890/scripts/perl/Makefile.PL.r openbabel-2.2.1b3-20090215-r2890/scripts/perl/Makefile.PL ---- openbabel-2.2.1b3-20090215-r2890/scripts/perl/Makefile.PL.r 2008-12-01 18:41:42.000000000 +0100 -+++ openbabel-2.2.1b3-20090215-r2890/scripts/perl/Makefile.PL 2009-03-01 10:43:01.000000000 +0100 -@@ -3,8 +3,8 @@ use ExtUtils::MakeMaker; - use lib 'inc'; - use Devel::CheckLib; +diff -up openbabel-2.3.0/scripts/CMakeLists.txt.r openbabel-2.3.0/scripts/CMakeLists.txt +--- openbabel-2.3.0/scripts/CMakeLists.txt.r 2010-10-25 19:37:42.000000000 +0200 ++++ openbabel-2.3.0/scripts/CMakeLists.txt 2010-11-24 22:53:29.250004683 +0100 +@@ -82,6 +82,7 @@ if (DO_PYTHON_BINDINGS) + COMMAND ${CMAKE_COMMAND} -E copy ob.py ${openbabel_SOURCE_DIR}/scripts/python/openbabel.py + COMMAND ${CMAKE_COMMAND} -E remove ob.py + VERBATIM) ++ add_dependencies(_openbabel openbabel) --check_lib_or_exit( lib => 'openbabel' , libpath => --@ENV{"LD_LIBRARY_PATH"}); -+#check_lib_or_exit( lib => 'openbabel' , libpath => -+#@ENV{"LD_LIBRARY_PATH"}); + if (PYTHON_PREFIX) + install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} ${openbabel_SOURCE_DIR}/scripts/python/setup.py install --prefix=${PYTHON_PREFIX} WORKING_DIRECTORY ${openbabel_BINARY_DIR}/scripts)") +@@ -89,7 +90,7 @@ if (DO_PYTHON_BINDINGS) + if (${CMAKE_INSTALL_PREFIX} STREQUAL "/usr/local") + install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} ${openbabel_SOURCE_DIR}/scripts/python/setup.py install WORKING_DIRECTORY ${openbabel_BINARY_DIR}/scripts)") + else (${CMAKE_INSTALL_PREFIX} STREQUAL "/usr/local") +- install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} ${openbabel_SOURCE_DIR}/scripts/python/setup.py install --prefix=${CMAKE_INSTALL_PREFIX} WORKING_DIRECTORY ${openbabel_BINARY_DIR}/scripts)") ++ install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} ${openbabel_SOURCE_DIR}/scripts/python/setup.py install --prefix=$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX} WORKING_DIRECTORY ${openbabel_BINARY_DIR}/scripts)") + endif (${CMAKE_INSTALL_PREFIX} STREQUAL "/usr/local") + endif (PYTHON_PREFIX) + +@@ -228,8 +229,8 @@ if (DO_PERL_BINDINGS) + DEPENDS ${openbabel_SOURCE_DIR}/scripts/perl/openbabel-perl.cpp + WORKING_DIRECTORY ${openbabel_BINARY_DIR}/scripts/perl + ) +- add_dependencies(bindings_perl pre_bindings_perl) +- install(CODE "execute_process(COMMAND make install WORKING_DIRECTORY ${openbabel_BINARY_DIR}/scripts/perl)") ++ add_dependencies(bindings_perl pre_bindings_perl openbabel) ++ install(CODE "execute_process(COMMAND make install_vendor WORKING_DIRECTORY ${openbabel_BINARY_DIR}/scripts/perl)") + + else (NOT MSVC) + add_library(bindings_perl MODULE ${openbabel_SOURCE_DIR}/scripts/perl/openbabel-perl.cpp) +@@ -282,20 +283,20 @@ if (DO_RUBY_BINDINGS) + COMMAND ${CMAKE_COMMAND} -E make_directory ${openbabel_BINARY_DIR}/scripts/ruby + ) + add_custom_target(bindings_ruby ALL +- COMMAND ${RUBY_EXECUTABLE} ${openbabel_SOURCE_DIR}/scripts/ruby/extconf.rb --with-openbabel-lib=${BABEL_LIBRARY} --with-openbabel-include=${openbabel_BINARY_DIR}/include ++ COMMAND ${RUBY_EXECUTABLE} ${openbabel_SOURCE_DIR}/scripts/ruby/extconf.rb --with-openbabel-lib=${openbabel_BINARY_DIR}/lib${LIB_SUFFIX} --with-openbabel-include=${openbabel_BINARY_DIR}/include + COMMAND ${CMAKE_COMMAND} -E echo "Compiling Ruby bindings" + COMMAND make + DEPENDS ${openbabel_SOURCE_DIR}/scripts/ruby/openbabel-ruby.cpp + WORKING_DIRECTORY ${openbabel_BINARY_DIR}/scripts/ruby + ) +- add_dependencies(bindings_ruby pre_bindings_ruby) ++ add_dependencies(bindings_ruby pre_bindings_ruby openbabel) + if (RUBY_PREFIX) + install(CODE "execute_process(COMMAND DESTDIR=${RUBY_PREFIX} make install WORKING_DIRECTORY ${openbabel_BINARY_DIR}/scripts/ruby)") + 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)") ++ install(CODE "execute_process(COMMAND make DESTDIR=$ENV{DESTDIR} install WORKING_DIRECTORY ${openbabel_BINARY_DIR}/scripts/ruby)") + endif (${CMAKE_INSTALL_PREFIX} STREQUAL "/usr/local") + endif (RUBY_PREFIX) + else(NOT MSVC) +diff -up openbabel-2.3.0/scripts/perl/Makefile.PL.r openbabel-2.3.0/scripts/perl/Makefile.PL +--- openbabel-2.3.0/scripts/perl/Makefile.PL.r 2010-10-23 03:44:58.000000000 +0200 ++++ openbabel-2.3.0/scripts/perl/Makefile.PL 2010-11-24 22:53:46.417249628 +0100 +@@ -12,6 +12,9 @@ $cmakebindir = @ENV{"OBJ_DIR"}; + if (-e "$cmakebindir/lib/libopenbabel.so" || -e "$cmakebindir/lib/libopenbabel.dylib") { + check_lib_or_exit( lib => 'openbabel' , libpath => "$cmakebindir/lib"); + } ++elsif (-e "$cmakebindir/lib64/libopenbabel.so") { ++ check_lib_or_exit( lib => 'openbabel' , libpath => "$cmakebindir/lib64"); ++} + else { + check_lib_or_exit( lib => 'openbabel' , libpath => @ENV{"LD_LIBRARY_PATH"}); + } +@@ -21,6 +24,8 @@ $ldfrom = "\$(OBJECT) -L$cmakebindir/lib + if (-r "$cmakebindir/lib/libopenbabel.dylib") and (-s _) and (-B _); + $ldfrom = "\$(OBJECT) -L$cmakebindir/lib -lopenbabel" + if (-r "$cmakebindir/lib/libopenbabel.so") and (-s _) and (-B _); ++$ldfrom = "\$(OBJECT) -L$cmakebindir/lib64 -lopenbabel" ++ if (-r "$cmakebindir/lib64/libopenbabel.so") and (-s _) and (-B _); + + # See lib/ExtUtils/MakeMaker.pm for details of how to influence + # the contents of the Makefile that is written. +diff -up openbabel-2.3.0/scripts/python/setup.py.r openbabel-2.3.0/scripts/python/setup.py +--- openbabel-2.3.0/scripts/python/setup.py.r 2010-10-26 16:39:01.000000000 +0200 ++++ openbabel-2.3.0/scripts/python/setup.py 2010-11-23 01:56:55.083627521 +0100 +@@ -17,7 +17,9 @@ obExtension = Extension('_openbabel', + [os.path.join(srcdir, "openbabel-python.cpp")], + include_dirs=[os.path.join(srcdir, "..", "..", "include"), + os.path.join("..", "include")], +- library_dirs=[os.path.join("..", "lib")], ++ library_dirs=[os.path.join(srcdir, "..", "..", "lib"), ++ os.path.join(srcdir, "..", "..", "lib64"), ++ os.path.join("..", "lib")], + libraries=['openbabel'] + ) - $CC = 'g++'; - $srcdir = '../../src'; diff --git a/openbabel.spec b/openbabel.spec index 68cec6e..9f598ae 100644 --- a/openbabel.spec +++ b/openbabel.spec @@ -6,10 +6,11 @@ %define beta_ver %{nil} %define beta_str %{nil} +%define beta_dir %{nil} Name: openbabel -Version: 2.2.3 -Release: 4%{beta_ver}%{?dist} +Version: 2.3.0 +Release: 1%{beta_ver}%{?dist} Summary: Chemistry software file format converter License: GPLv2 Group: Applications/File @@ -18,8 +19,9 @@ Source: http://downloads.sourceforge.net/sourceforge/openbabel/%{name}-%{version Patch1: %{name}-rpm.patch Patch3: %{name}-inchi.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildRequires: cmake +BuildRequires: eigen2-devel BuildRequires: inchi-devel >= 1.0.3 -BuildRequires: libtool BuildRequires: libxml2-devel BuildRequires: perl(ExtUtils::MakeMaker) BuildRequires: python @@ -27,8 +29,7 @@ BuildRequires: python-devel BuildRequires: ruby BuildRequires: ruby-devel BuildRequires: swig -#TODO: enable when GUI is functional -#BuildRequires: wxGTK-devel +BuildRequires: wxGTK-devel BuildRequires: zlib-devel %description @@ -38,17 +39,44 @@ Babel left off, as a cross-platform program and library designed to interconvert between many file formats used in molecular modeling, computational chemistry, and many related areas. -Open Babel includes two components, a command-line utility and a C++ -library. The command-line utility is intended to be used as a replacement -for the original babel program, to translate between various chemical file -formats. The C++ library includes all of the file-translation code as well -as a wide variety of utilities to foster development of other open source -scientific software. +This package contains the command-line utility, which is intended to +be used as a replacement for the original babel program, to translate +between various chemical file formats as well as a wide variety of +utilities to foster development of other open source scientific +software. + +%package gui +Summary: Chemistry software file format converter - GUI version +Group: Applications/File + +%description gui +Open Babel is a free, open-source version of the Babel chemistry file +translation program. Open Babel is a project designed to pick up where +Babel left off, as a cross-platform program and library designed to +interconvert between many file formats used in molecular modeling, +computational chemistry, and many related areas. + +This package contains the graphical interface. + +%package libs +Summary: Chemistry software file format converter - libraries +Group: System Environment/Libraries +Obsoletes: %{name} < 2.3.0-1 + +%description libs +Open Babel is a free, open-source version of the Babel chemistry file +translation program. Open Babel is a project designed to pick up where +Babel left off, as a cross-platform program and library designed to +interconvert between many file formats used in molecular modeling, +computational chemistry, and many related areas. + +This package contains the C++ library, which includes all of the +file-translation code. %package devel Summary: Development tools for programs which will use the Open Babel library Group: Development/Libraries -Requires: %{name} = %{version}-%{release} +Requires: %{name}-libs = %{version}-%{release} Requires: pkgconfig %description devel @@ -88,74 +116,64 @@ Requires: %{name} = %{version}-%{release} Ruby wrapper for the Open Babel library. %prep -%setup -q -n %{name}-%{version}%{beta_str} +%setup -q -n %{name}-%{version}%{beta_dir} %patch1 -p1 -b .r %patch3 -p1 -b .inchi -chmod 644 src/formats/mmcifformat.cpp +chmod 644 src/formats/{fchk,genbank,mmcif}format.cpp +chmod 644 src/math/align.cpp +chmod 644 include/openbabel/{graphsym.h,math/align.h} %build -autoreconf --force --install -%configure --enable-shared=yes --enable-static=no --disable-inchi --enable-maintainer-mode -%{__make} %{?_smp_mflags} - -pushd scripts/perl -perl Makefile.PL INSTALLDIRS="vendor" -%{__make} %{?_smp_mflags} OPTIMIZE="$RPM_OPT_FLAGS" -popd - -pushd scripts/python -python setup.py build -popd - -pushd scripts/ruby -ruby extconf.rb --with-openbabel-include=../../include --with-openbabel-lib=../../src/.libs -%{__make} %{?_smp_mflags} -popd +%cmake \ + -DCMAKE_SKIP_RPATH:BOOL=ON \ + -DBUILD_GUI:BOOL=ON \ + -DPYTHON_BINDINGS:BOOL=ON \ + -DPERL_BINDINGS:BOOL=ON \ + -DRUBY_BINDINGS:BOOL=ON \ + -DOPENBABEL_USE_SYSTEM_INCHI=true \ + . +make VERBOSE=1 %{?_smp_mflags} %install %{__rm} -rf $RPM_BUILD_ROOT +touch scripts/CMakeLists.txt +make VERBOSE=1 DESTDIR=$RPM_BUILD_ROOT install -%{__make} install DESTDIR=$RPM_BUILD_ROOT - -%{__rm} $RPM_BUILD_ROOT%{_libdir}{,/%{name}/%{version}%{beta_ver}}/*.la - -pushd scripts/perl -%{__make} install DESTDIR=$RPM_BUILD_ROOT -popd -%{__rm} -f $RPM_BUILD_ROOT%{perl_archlib}/perllocal.pod -%{__rm} -f $RPM_BUILD_ROOT%{perl_vendorarch}/*/Chemistry/OpenBabel/{.packlist,OpenBabel.bs} -chmod 755 $RPM_BUILD_ROOT%{perl_vendorarch}/*/Chemistry/OpenBabel/OpenBabel.so - -pushd scripts/python -%{__python} setup.py install --skip-build --root $RPM_BUILD_ROOT -%{__python} setup.py install -O1 --skip-build --root $RPM_BUILD_ROOT -popd -chmod 755 $RPM_BUILD_ROOT%{python_sitearch}/_openbabel.so - -pushd scripts/ruby -%{__make} install DESTDIR=$RPM_BUILD_ROOT -popd +rm $RPM_BUILD_ROOT%{perl_archlib}/perllocal.pod +rm -f $RPM_BUILD_ROOT%{perl_vendorarch}/auto/Chemistry/OpenBabel/{.packlist,OpenBabel.bs} +chmod 755 $RPM_BUILD_ROOT%{perl_vendorarch}/auto/Chemistry/OpenBabel/OpenBabel.so %clean %{__rm} -rf $RPM_BUILD_ROOT +%if 0 %check -%{__make} check +%{__make} test +%endif -%post -p /sbin/ldconfig +%post libs -p /sbin/ldconfig -%postun -p /sbin/ldconfig +%postun libs -p /sbin/ldconfig %files %defattr(-,root,root,-) +%{_bindir}/babel +%{_bindir}/ob* +%{_bindir}/roundtrip +%{_mandir}/man1/* + +%files gui +%defattr(-,root,root,-) +%{_bindir}/OBGUI + +%files libs +%defattr(-,root,root,-) %doc AUTHORS COPYING ChangeLog README THANKS %doc doc/*.html -%doc doc/README* doc/babel*.inc doc/dioxin.* -%{_bindir}/* -%{_mandir}/man1/* -%{_datadir}/%{name} +%doc doc/README* doc/dioxin.* %{_libdir}/libopenbabel.so.* %{_libdir}/%{name} +%{_datadir}/%{name} %files devel %defattr(-,root,root,-) @@ -181,6 +199,15 @@ popd %{ruby_sitearch}/openbabel.so %changelog +* Sun Nov 21 2010 Dominik Mierzejewski 2.3.0-1 +- build system switched to cmake +- enabled GUI +- enabled Eigen2 +- updated to 2.3.0 final +- patched to fix various build issues +- split libs and GUI into separate subpackages +- fixed rpmlint warnings about strange file permissions + * Wed Jul 21 2010 David Malcolm - 2.2.3-4 - Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild diff --git a/sources b/sources index 0d3f2ba..351778d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -7ea8845c54d6d3a9be378c78088af804 openbabel-2.2.3.tar.gz +effda01ed4a31d18d8e3d08191799608 openbabel-2.3.0.tar.gz