Ryan H. Lewis 0ddb14d
Name:	elemental
Ryan H. Lewis 99bbbcc
Version:	0.87.7
dd95cf8
Release:	7%{?dist}
Ryan H. Lewis 0ddb14d
Summary:	Library for distributed-memory dense/sparse-direct linear algebra 
Ryan H. Lewis 0ddb14d
Group:	Development/Libraries
Ryan H. Lewis 0ddb14d
License:	BSD and Boost and MIT and LGPLv2
Ryan H. Lewis 0ddb14d
URL:	http://libelemental.org
Ryan H. Lewis 0ddb14d
Source0:	https://github.com/elemental/Elemental/archive/v%{version}.tar.gz
Ryan H. Lewis 0ddb14d
#This is excluded to due a compiler bug in PPC:
Ryan H. Lewis 0ddb14d
#gcc.gnu.org/bugzilla/show_bug.cgi?id=78636
Ryan H. Lewis 0ddb14d
ExcludeArch: %{power64}
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
BuildRequires: environment-modules
Ryan H. Lewis 0ddb14d
BuildRequires: cmake
Ryan H. Lewis 0ddb14d
BuildRequires: metis-devel >= 5.1.0
Ryan H. Lewis 0ddb14d
BuildRequires: openblas-devel
Ryan H. Lewis 0ddb14d
BuildRequires: python2-devel 
Ryan H. Lewis 0ddb14d
BuildRequires: qd-devel
Ryan H. Lewis 0ddb14d
BuildRequires: qt5-qtbase-devel
Ryan H. Lewis 0ddb14d
BuildRequires: gmp-devel
Ryan H. Lewis 0ddb14d
BuildRequires: mpfr-devel
Ryan H. Lewis 0ddb14d
BuildRequires: libmpc-devel
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%{?el6:BuildRequires:  devtoolset-4-toolchain}
Ryan H. Lewis 0ddb14d
%{?el7:BuildRequires:  devtoolset-4-toolchain}
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%description 
Ryan H. Lewis 0ddb14d
A modern C++ library for distributed-memory linear algebra.
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%package common
Ryan H. Lewis 0ddb14d
Summary: Files in common between mpich and openmpi
Ryan H. Lewis 0ddb14d
Group: Development/Libraries
Ryan H. Lewis 0ddb14d
BuildArch: noarch
Ryan H. Lewis 0ddb14d
Requires: qt5-qtbase
Ryan H. Lewis 0ddb14d
%description common 
Ryan H. Lewis 0ddb14d
Files not specific to mpich or openmpi
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%package devel 
Ryan H. Lewis 0ddb14d
Summary: Elemental C/C++ Header Files
Ryan H. Lewis 0ddb14d
Group: Development/Libraries
Ryan H. Lewis 0ddb14d
%description devel
Ryan H. Lewis 0ddb14d
Use this package for building off of Elemental
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
## OpenMPI Subpackages
Ryan H. Lewis 0ddb14d
%package openmpi
Ryan H. Lewis 0ddb14d
Summary: OpenMPI variant of Elemental
Ryan H. Lewis 0ddb14d
Group: Development/Libraries
Ryan H. Lewis 0ddb14d
BuildRequires: openmpi-devel
Ryan H. Lewis 0ddb14d
Requires: openmpi
Ryan H. Lewis 0ddb14d
Requires: %{name}-common = %{version}-%{release}
Ryan H. Lewis 0ddb14d
%description openmpi
Ryan H. Lewis 0ddb14d
Contains the library, built against OpenMPI
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%package openmpi-devel
Ryan H. Lewis 0ddb14d
Summary: OpenMPI variant of Elemental
Ryan H. Lewis 0ddb14d
Group: Development/Libraries
Ryan H. Lewis 0ddb14d
Requires: %{name}-openmpi%{?_isa} = %{version}-%{release}
Ryan H. Lewis 0ddb14d
%description openmpi-devel
Ryan H. Lewis 0ddb14d
Contains the library, built against OpenMPI
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%package openmpi-examples
Ryan H. Lewis 0ddb14d
Summary: OpenMPI variant of Elemental
Ryan H. Lewis 0ddb14d
Group: Development/Libraries
Ryan H. Lewis 0ddb14d
Requires: %{name}-openmpi%{?_isa} = %{version}-%{release}
Ryan H. Lewis 0ddb14d
%description openmpi-examples
Ryan H. Lewis 0ddb14d
Contains the example drivers built against OpenMPI
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%package -n python2-elemental-openmpi 
Ryan H. Lewis 0ddb14d
Summary: Python 2 Bindings 
Ryan H. Lewis 0ddb14d
Group: Development/Libraries
Ryan H. Lewis 0ddb14d
Requires: %{name}-openmpi%{?_isa} = %{version}-%{release}
Ryan H. Lewis 0ddb14d
%description -n python2-elemental-openmpi
Ryan H. Lewis 0ddb14d
This package contains the python bindings for using Elemental through a python shell with OpenMPI
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
## MPICH Subpackages
Ryan H. Lewis 0ddb14d
%package mpich
Ryan H. Lewis 0ddb14d
Summary: MPICH variant of Elemental
Ryan H. Lewis 0ddb14d
Group: Development/Libraries
Ryan H. Lewis 0ddb14d
BuildRequires: mpich-devel
Ryan H. Lewis 0ddb14d
Requires: mpich
Ryan H. Lewis 0ddb14d
Requires: %{name}-common = %{version}-%{release}
Ryan H. Lewis 0ddb14d
%description mpich
Ryan H. Lewis 0ddb14d
Contains the library, and example drivers built against MPICH
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%package mpich-devel
Ryan H. Lewis 0ddb14d
Summary: MPICH variant of Elemental
Ryan H. Lewis 0ddb14d
Group: Development/Libraries
Ryan H. Lewis 0ddb14d
BuildRequires: mpich-devel
Ryan H. Lewis 0ddb14d
Requires: mpich
Ryan H. Lewis 0ddb14d
Requires: %{name}-mpich%{?_isa} = %{version}-%{release}
Ryan H. Lewis 0ddb14d
%description mpich-devel
Ryan H. Lewis 0ddb14d
Contains the library built against MPICH
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%package mpich-examples
Ryan H. Lewis 0ddb14d
Summary: MPICH variant of Elemental
Ryan H. Lewis 0ddb14d
Group: Development/Libraries
Ryan H. Lewis 0ddb14d
Requires: %{name}-mpich%{?_isa} = %{version}-%{release}
Ryan H. Lewis 0ddb14d
%description mpich-examples
Ryan H. Lewis 0ddb14d
Contains the example drivers built against MPICH
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%package -n python2-elemental-mpich
Ryan H. Lewis 0ddb14d
Summary: Python 2 Bindings 
Ryan H. Lewis 0ddb14d
Group: Development/Libraries
Ryan H. Lewis 0ddb14d
Requires: %{name}-mpich%{?_isa} = %{version}-%{release}
Ryan H. Lewis 0ddb14d
%description -n python2-elemental-mpich
Ryan H. Lewis 0ddb14d
This package contains the python bindings for using Elemental through a python shell with MPICH
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%prep
Ryan H. Lewis 0ddb14d
%autosetup -c -n Elemental-%{version}
Ryan H. Lewis 0ddb14d
mv $(ls -d */|head -n 1)/* . 
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%build
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%if 0%{?rhel}
Ryan H. Lewis 0ddb14d
source /opt/rh/devtoolset-4/enable
Ryan H. Lewis 0ddb14d
%endif
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%define dobuild() \
Ryan H. Lewis 0ddb14d
mkdir $MPI_COMPILER; \
Ryan H. Lewis 0ddb14d
cd $MPI_COMPILER;  \
Ryan H. Lewis 0ddb14d
export CXXFLAGS="%{optflags} -Wl,--as-needed"; \
Ryan H. Lewis 0ddb14d
%cmake -DINSTALL_CMAKE_DIR="%{_libdir}/cmake/" -DCMAKE_C_COMPILER="mpicc" -DCMAKE_CXX_COMPILER="mpic++" -DCMAKE_BUILD_TYPE=Release -DBUILD_METIS=OFF -DEL_USE_QT5=ON -DBINARY_SUBDIRECTORIES=False -DEL_TESTS=ON -DEL_EXAMPLES=ON -DINSTALL_PYTHON_PACKAGE=ON -DGFORTRAN_LIB="$(gfortran -print-file-name=libgfortran.so)" -DEL_DISABLE_PARMETIS=ON -DCMAKE_INSTALL_BINDIR="$MPI_BIN" -DCMAKE_INSTALL_LIBDIR="$MPI_LIB" -DPYTHON_SITE_PACKAGES="$MPI_PYTHON_SITEARCH" .. ; \
Ryan H. Lewis 0ddb14d
make %{?_smp_mflags}; \
Ryan H. Lewis 0ddb14d
cd .. ; \
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
# Set compiler variables to MPI wrappers
Ryan H. Lewis 0ddb14d
export CC=mpicc
Ryan H. Lewis 0ddb14d
export CXX=mpicxx
Ryan H. Lewis 0ddb14d
export FC=mpif90
Ryan H. Lewis 0ddb14d
export F77=mpif77
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
## Build OpenMPI version
Ryan H. Lewis 0ddb14d
%{_openmpi_load}
Ryan H. Lewis 0ddb14d
%dobuild
Ryan H. Lewis 0ddb14d
%{_openmpi_unload}
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
# Build mpich version
Ryan H. Lewis 0ddb14d
%{_mpich_load}
Ryan H. Lewis 0ddb14d
%dobuild
Ryan H. Lewis 0ddb14d
%{_mpich_unload}
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%check 
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%define docheck() \
Ryan H. Lewis 0ddb14d
export  CTEST_OUTPUT_ON_FAILURE=1; \
Ryan H. Lewis 0ddb14d
cd $MPI_COMPILER ; \
Ryan H. Lewis 0ddb14d
export OLD_LD_LIBRARY_PATH=$LD_LIBRARY_PATH; \
Ryan H. Lewis 0ddb14d
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd):$(pwd)/external/pmrrr:$(pwd)/external/suite_sparse; \
Ryan H. Lewis 0ddb14d
ctest -V %{?_smp_mflags}; \
Ryan H. Lewis 0ddb14d
export LD_LIBRARY_PATH=$OLD_LD_LIBRARY_PATH; \
Ryan H. Lewis 0ddb14d
cd .. ; \
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
## Build OpenMPI version
Ryan H. Lewis 0ddb14d
%{_openmpi_load}
Ryan H. Lewis 0ddb14d
%docheck
Ryan H. Lewis 0ddb14d
%{_openmpi_unload}
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
# Build mpich version
Ryan H. Lewis 0ddb14d
%{_mpich_load}
Ryan H. Lewis 0ddb14d
%docheck
Ryan H. Lewis 0ddb14d
%{_mpich_unload}
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%install
Ryan H. Lewis 0ddb14d
## Install OpenMPI version
Ryan H. Lewis 0ddb14d
%{_openmpi_load}
Ryan H. Lewis 0ddb14d
make -C $MPI_COMPILER install/fast DESTDIR=%{buildroot} INSTALL="install -p" CPPROG="cp -p"
Ryan H. Lewis 0ddb14d
rm -f %{buildroot}/$MPI_BIN/tests-*
Ryan H. Lewis 0ddb14d
%{_openmpi_unload}
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
# Install MPICH2 version
Ryan H. Lewis 0ddb14d
%{_mpich_load}
Ryan H. Lewis 0ddb14d
make -C $MPI_COMPILER install/fast DESTDIR=%{buildroot} INSTALL="install -p" CPPROG="cp -p"
Ryan H. Lewis 0ddb14d
rm -f ${buildroot}/$MPI_BIN/tests-*
Ryan H. Lewis 0ddb14d
%{_mpich_unload}
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
mv %{buildroot}%{_docdir}/Elemental %{buildroot}%_pkgdocdir
Ryan H. Lewis 0ddb14d
rm -rf %{buildroot}/%{_prefix}/conf
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
#The Elemental headers
Ryan H. Lewis 0ddb14d
%files devel
Ryan H. Lewis 0ddb14d
%{_includedir}/*
dd95cf8
%{_libdir}/cmake/elemental/
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
# All files shared between the serial and different MPI versions
Ryan H. Lewis 0ddb14d
%files common 
dd95cf8
%{_datadir}/elemental/
dd95cf8
%doc %_pkgdocdir/
Ryan H. Lewis 0ddb14d
%license debian/copyright
Ryan H. Lewis 0ddb14d
%license LICENSE
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
# All openmpi linked files
Ryan H. Lewis 0ddb14d
%files openmpi 
Ryan H. Lewis 0ddb14d
%{_libdir}/openmpi/lib/*.so.*
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%files openmpi-devel
Ryan H. Lewis 0ddb14d
%{_libdir}/openmpi/lib/*.so
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%files openmpi-examples
Ryan H. Lewis 0ddb14d
%{_libdir}/openmpi/bin/*
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%files -n python2-elemental-openmpi
Ryan H. Lewis 0ddb14d
%{python2_sitearch}/openmpi/*
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
# All mpich files
Ryan H. Lewis 0ddb14d
%files mpich 
Ryan H. Lewis 0ddb14d
%{_libdir}/mpich/lib/*.so.*
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%files mpich-devel
Ryan H. Lewis 0ddb14d
%{_libdir}/mpich/lib/*.so
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%files mpich-examples
Ryan H. Lewis 0ddb14d
%{_libdir}/mpich/bin/*
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%files -n python2-elemental-mpich 
Ryan H. Lewis 0ddb14d
%{python2_sitearch}/mpich/*
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%license debian/copyright
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
%changelog
dd95cf8
* Sun Aug 06 2017 Björn Esser <besser82@fedoraproject.org> - 0.87.7-7
dd95cf8
- Rebuilt for AutoReq cmake-filesystem
dd95cf8
1f1d594
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.87.7-6
1f1d594
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
1f1d594
f7a1c96
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.87.7-5
f7a1c96
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
f7a1c96
Ryan H. Lewis 99bbbcc
* Wed Feb 15 2017 me@ryanlewis.net - 0.87.7-4
Ryan H. Lewis 99bbbcc
- Bumped to 0.87.7 
Ryan H. Lewis 99bbbcc
c4c622b
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.87.5-3
c4c622b
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
c4c622b
Ryan H. Lewis 0ddb14d
* Sat Oct 29 2016 Ryan H. Lewis <me@ryanlewis.net> - 0.87-1
Ryan H. Lewis 0ddb14d
- Dropped Scalapack 
Ryan H. Lewis 0ddb14d
- Enabled Qt5
Ryan H. Lewis 0ddb14d
- updated Source0 to master
Ryan H. Lewis 0ddb14d
Ryan H. Lewis 0ddb14d
* Thu Jul 28 2016 Ryan H. Lewis <me@ryanlewis.net> - 0.86-1
Ryan H. Lewis 0ddb14d
- Initial RPM