Name: IMP Version: @IMP_VERSION@ Release: 1%{?dist} License: LGPLv2+ and GPLv3 Summary: The Integrative Modeling Platform Group: Applications/Engineering Packager: Ben Webb URL: http://www.integrativemodeling.org/ Source0: imp-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-root # Note that RHEL 5 doesn't have a new enough swig to build IMP. If you must # use RHEL 5 (we recommend RHEL 6) you will need to build a newer SWIG package # before building IMP. BuildRequires: swig >= 1.3.40 BuildRequires: python-devel >= 2.3, gsl-devel, fftw-devel, hdf5-devel >= 1.8 BuildRequires: zlib-devel # Needed to build the cnmultifit module; obtain # from http://salilab.org/imp/libTAU.html # (Or, if you don't need cnmultifit, you can comment out this line) BuildRequires: libTAU-devel # The cmake included with RHEL 6 is too old; use cmake28 from EPEL instead. # RHEL 5 doesn't have cmake28; you will need to build this package yourself. %if 0%{?rhel} BuildRequires: cmake28 %define cmake cmake28 %else BuildRequires: cmake >= 2.8 %define cmake cmake %endif # RHEL 5 ships with an ancient version of boost. Require the newer version # that is in EPEL instead %if 0%{?rhel} == 5 BuildRequires: boost141-devel %define boost -DCMAKE_INCLUDE_PATH=/usr/include/boost141 -DCMAKE_LIBRARY_PATH=%{_libdir}/boost141 %else BuildRequires: boost-devel >= 1.41 %define boost %{nil} %endif # RHEL doesn't have a CGAL package, so build without CGAL on RHEL. It also # doesn't have a new enough OpenCV in EPEL, or the eigen package, so # disable em2d and isd modules. # RHEL 5 also doesn't have a new enough HDF5 package (RHEL 6 does) so this # must be upgraded in order to build RMF (to simply install the binary RPM, # you can install the libdhf5-187 package from the Sali lab website to # provide a new enough HDF5 without having to mess with the system # copy of HDF5). # On Fedora, all of these packages are available; add them as dependencies # If you are using RHEL and really want the isd module, add # '-D "rhel_have_eigen3 1"' to your rpmbuild invocation. You will need to # build and install your own eigen3-devel RPM first (get the RPM spec and # patch files from http://svn.salilab.org/imp/trunk/tools/rpm/). # IMP binary RPMs are built this way, since eigen3 is header only and so # this adds no extra dependencies to the binary package. %if 0%{?fedora} BuildRequires: CGAL-devel, opencv-devel, eigen3-devel %else %if 0%{?rhel_have_eigen3} BuildRequires: eigen3-devel %endif %endif # Add compiler flags for C++11 support %if 0%{?fedora} %define cxx_flags -DCMAKE_CXX_FLAGS="-std=c++11" %else %if 0%{?rhel} >= 6 %define cxx_flags -DCMAKE_CXX_FLAGS="-std=gnu++0x" %else %define cxx_flags %{nil} %endif %endif %define cmake_opts %{cxx_flags} %{boost} %description IMP's broad goal is to contribute to a comprehensive structural characterization of biomolecules ranging in size and complexity from small peptides to large macromolecular assemblies. Detailed structural characterization of assemblies is generally impossible by any single existing experimental or computational method. This barrier can be overcome by hybrid approaches that integrate data from diverse biochemical and biophysical experiments (eg, x-ray crystallography, NMR spectroscopy, electron microscopy, immuno-electron microscopy, footprinting, chemical cross-linking, FRET spectroscopy, small angle X-ray scattering, immunoprecipitation, genetic interactions, etc...). We formulate the hybrid approach to structure determination as an optimization problem, the solution of which requires three main components: * the representation of the assembly, * the scoring function and * the optimization method. The ensemble of solutions to the optimization problem embodies the most accurate structural characterization given the available information. We created IMP, the Integrative Modeling Platform, to make it easier to implement such an integrative approach to structural and dynamics problems. IMP is designed to allow mixing and matching of existing modeling components as well as easy addition of new functionality. %package devel Group: Applications/Engineering Summary: Development package for IMP developers. Requires: %{name} = %{version}-%{release} %description devel This package contains the include files for building applications that link against IMP. %prep %setup -n imp-%{version} %build # For now, bundle RMF with IMP (long term, may be better to put in a separate # RPM) mkdir build && cd build %{cmake} .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_DOCDIR=/usr/share/doc/%{name}-%{version} \ -DIMP_DISABLED_MODULES=scratch %{cmake_opts} # Normally make will stop at the first error. Since an RPM cannot be built # if the build did not complete successfully, this is the default here too. # Pass '-D "keep_going 1"' to your rpmbuild invocation if you want it to # keep going; we use this in nightly builds to see every broken module, # not just the first one. %if 0%{?keep_going} mkdir logs ../tools/build/build_all.py --outdir=logs --summary=logs/summary.pck make %else make %endif %install cd build make DESTDIR=${RPM_BUILD_ROOT} install # Note that we currently don't include the documentation in the RPM, since # a) it takes a long time to run doxygen # b) doxygen isn't installed on all of our build systems # c) it is really big # and d) only certain versions of doxygen work correctly # You can build the documentation by running "make IMP-doc" # on the IMP source code. README=${RPM_BUILD_ROOT}/usr/share/doc/%{name}-%{version}/README echo "For full IMP documentation, please go to" > ${README} # Direct nightly build users to most recent nightly build docs if echo ${version} | grep -q git; then echo "http://salilab.org/imp/nightly/doc/html/" >> ${README} else echo "http://salilab.org/imp/%{version}/doc/html/" >> ${README} fi # Bundle libTAU from build machine so users don't have to get it separately cp %{_libdir}/libTAU.so.1 ${RPM_BUILD_ROOT}%{_libdir} # Don't distribute example application, dependency, or system pydir=${RPM_BUILD_ROOT}%{_libdir}/python*/site-packages rm -rf ${RPM_BUILD_ROOT}/usr/bin/example \ ${RPM_BUILD_ROOT}%{_libdir}/libimp_example_system* \ ${RPM_BUILD_ROOT}%{_libdir}/libexample* \ ${RPM_BUILD_ROOT}/usr/include/example* \ ${pydir}/IMP/example_system_local \ ${pydir}/_IMP_example_system_local.so %clean [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf ${RPM_BUILD_ROOT} %files %defattr(-,root,root) %doc /usr/share/doc/%{name}-%{version} /usr/share/IMP /usr/bin/* %{_libdir}/libimp*.so %{_libdir}/libTAU.so.* %{_libdir}/libRMF*.so %{_libdir}/python*/site-packages/IMP %{_libdir}/python*/site-packages/_IMP*so %{_libdir}/python*/site-packages/RMF* %{_libdir}/python*/site-packages/_RMF*so %files devel %defattr(-,root,root) /usr/include/IMP /usr/include/IMP.h /usr/include/RMF %changelog * Mon Mar 08 2010 Ben Webb 1.0-1 - 1.0 release. * Thu May 07 2009 Ben Webb - Initial build.