Blob Blame History Raw
%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}

Name: apbs
Summary: Adaptive Poisson Boltzmann Solver
Version: 1.1.0
Release: 7%{?dist}
# License of pmgZ, aqua and contrib/blas/mblasd.f is LGPLv2+, the rest is BSD.
License: LGPLv2+ and BSD
Group: Applications/Engineering
URL: http://apbs.sourceforge.net/
Source0: http://downloads.sourceforge.net/apbs/%{name}-%{version}-source.tar.gz
Source1: LGPL_V2
# adds blas_lib to AC_SUBST so Makefiles are complete
Patch0: apbs-configure.ac.patch
# removes hardcoded prefix setting so DESTDIR works
Patch1: apbs-makefile.am.patch
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libtool
BuildRequires: arpack-devel
BuildRequires: atlas-devel
BuildRequires: blas-devel
BuildRequires: maloc-devel
BuildRequires: python-devel
Requires: python-ZSI

%description
APBS is a software package for the numerical solution of the
Poisson-Boltzmann equation (PBE), one of the most popular continuum
models for describing electrostatic interactions between molecular
solutes in salty, aqueous media.  APBS was designed to efficiently
evaluate electrostatic properties for such simulations for a wide
range of length scales to enable the investigation of molecules with
tens to millions of atoms. It is also widely used in molecular
visualization (in such applications as PyMOL).

%package tools
Summary: utility programs that utilize the APBS package
Group: Applications/Engineering
Requires: %{name} = %{version}-%{release}

%description tools

The apbs-tools package contains several utility programs for
conversion, analysis and preparation of files that use the adaptive
poisson boltzmann solver library.

%package devel
Summary: Libraries and header files for the APBS package
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}

%description devel

The apbs-devel package contains the header files and libraries
necessary for developing programs using the adaptive poisson boltzmann
(APBS) solver library.

%package doc
Summary: Documentation for the APBS package
Group: Applications/Engineering
Requires: %{name} = %{version}-%{release}

%description doc

The apbs-doc package contains API reference inforemation for
development using the adaptive poisson boltzmann (APBS) solver
library.

%prep
%setup -q -n %{name}-%{version}-source
%patch0 -p0
%patch1 -p0
libtoolize --automake
aclocal
autoheader
automake --gnu
autoconf

install -p -m 644 %{SOURCE1} .

# ensure maloc isn't built
rm -rf contrib/maloc

rm doc/programmer/cooc-filter.sh
rm doc/programmer/apbs.css
rm doc/programmer/html/apbs.css
rm doc/programmer/html/vcap_8h__incl.map
rm doc/programmer/html/vpee_8h__incl.map
rm doc/programmer/html/dummy_8c__incl.map

%build
%configure --with-blas='-L%{_libdir}/atlas -lf77blas -latlas -lblas' --with-fetk-include=%{_includedir} --with-fetk-library=%{_libdir} --with-arpack=%{_libdir}/atlas --enable-python --enable-shared --disable-static FFLAGS="-I/usr/include/atlas"
# die, rpath, die.
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool

sed -i 's|\"/usr/local/apbs-1.1.0\"|\"%{python_sitelib}/apbs\"|g' bin/ApbsClient.py

make %{?_smp_mflags}

%install
rm -rf %{buildroot}

make install DESTDIR=%{buildroot} INSTALL='install -p' CPPROG="cp -p"

install -p -m 755 bin/ApbsClient.py %{buildroot}%{_bindir}/

mkdir -p ${RPM_BUILD_ROOT}%{python_sitelib}/apbs
cp -p contrib/opal/opal-py-1.9.3/wsdl/*.py ${RPM_BUILD_ROOT}%{python_sitelib}/apbs/

mkdir -p %{buildroot}%{_includedir}/apbs
install -p -m 644 src/aaa_inc/apbs/*.h %{buildroot}%{_includedir}/apbs/

# tools
for bin in tools/manip/{psize.py,coulomb,born} tools/mesh/{mgmesh,dxmath,mergedx2,mergedx,value,uhbd_asc2bin,smooth,dx2mol,dx2uhbd,similarity,multivalue,benchmark,analysis} tools/arpack/driver; do
    install -p -m 755 $bin %{buildroot}%{_bindir}/apbs-`basename $bin`
done

# remove unpackaged files from buildroot
rm -f %{buildroot}%{_libdir}/*.la

%clean
rm -rf %{buildroot}

%post -p /sbin/ldconfig

%postun -p /sbin/ldconfig

%files
%defattr(-,root,root,-)
%doc AUTHORS COPYING LGPL_V2 README ChangeLog
%{_bindir}/apbs
%{_bindir}/ApbsClient.py
%if 0%{?fedora}<11 || 0%{?rhel} == 4 || 0%{?rhel} == 5
%exclude %{_bindir}/*.pyc
%exclude %{_bindir}/*.pyo
%endif
%{_libdir}/libapbs.so.*
%{_libdir}/libapbsmainroutines.so.*
%{python_sitelib}/apbs/

%files tools
%defattr(-,root,root,-)
%{_bindir}/apbs-psize.py
%{_bindir}/apbs-coulomb
%{_bindir}/apbs-born
%{_bindir}/apbs-mgmesh
%{_bindir}/apbs-dxmath
%{_bindir}/apbs-mergedx2
%{_bindir}/apbs-mergedx
%{_bindir}/apbs-value
%{_bindir}/apbs-uhbd_asc2bin
%{_bindir}/apbs-smooth
%{_bindir}/apbs-dx2mol
%{_bindir}/apbs-dx2uhbd
%{_bindir}/apbs-similarity
%{_bindir}/apbs-multivalue
%{_bindir}/apbs-benchmark
%{_bindir}/apbs-analysis
%{_bindir}/apbs-driver

%files devel
%defattr(-,root,root,-)
%{_libdir}/libapbs.so
%{_libdir}/libapbsmainroutines.so
%{_includedir}/apbs

%files doc
%defattr(-,root,root,-)
%doc doc/programmer/

%changelog
* Mon Jul 27 2009 Tim Fenn <fenn@stanford.edu> - 1.1.0-7
- remove python byte compiled files in bindir
- loop to add tools

* Sun Jul 26 2009 Tim Fenn <fenn@stanford.edu> - 1.1.0-6
- remove check macro

* Fri Jul 24 2009 Tim Fenn <fenn@stanford.edu> - 1.1.0-5
- enable and add arpack, python to buildrequires, fix files section accordingly
- add check macro
- move tools to a subpackage
- move doc into subpackage
- spec cleanup

* Thu Jul 23 2009 Tim Fenn <fenn@stanford.edu> - 1.1.0-4
- merge aqua and pmgZ into libapbs

* Fri Jul 10 2009 Tim Fenn <fenn@stanford.edu> - 1.1.0-3
- separate aqua and pmgZ into separate libraries/packages
- add maloc BuildRequires

* Mon May 04 2009 Tim Fenn <fenn@stanford.edu> - 1.1.0-2
- fix RPM_BUILD_ROOT
- rename patches
- add "-q" to setup
- add README to doc
- edit description
- edit license

* Fri Apr 24 2009 Tim Fenn <fenn@stanford.edu> - 1.1.0-1
- initial build