Build mpich and openmpi versions
This commit is contained in:
parent
cd300a55fd
commit
43b91c1c5b
295
fftw.spec
295
fftw.spec
@ -1,6 +1,20 @@
|
||||
%bcond_without mpich
|
||||
%ifarch s390 s390x
|
||||
%bcond_with openmpi
|
||||
%else
|
||||
%bcond_without openmpi
|
||||
%endif
|
||||
%if %{with mpich}
|
||||
%global mpi_list %{?mpi_list} mpich
|
||||
%endif
|
||||
%if %{with openmpi}
|
||||
%global mpi_list %{?mpi_list} openmpi
|
||||
%endif
|
||||
|
||||
|
||||
Name: fftw
|
||||
Version: 3.3.5
|
||||
Release: 1%{?dist}
|
||||
Release: 2%{?dist}
|
||||
Summary: A Fast Fourier Transform library
|
||||
Group: System Environment/Libraries
|
||||
License: GPLv2+
|
||||
@ -18,6 +32,12 @@ BuildRequires: gcc-gfortran
|
||||
# For check phase
|
||||
BuildRequires: time
|
||||
BuildRequires: perl
|
||||
%if %{with mpich}
|
||||
BuildRequires: mpich-devel
|
||||
%endif
|
||||
%if %{with openmpi}
|
||||
BuildRequires: openmpi-devel
|
||||
%endif
|
||||
|
||||
Requires(post): info
|
||||
Requires(preun): info
|
||||
@ -37,11 +57,11 @@ Obsoletes: fftw-libs-threads < %{version}-%{release}
|
||||
Obsoletes: fftw-libs-openmp < %{version}-%{release}
|
||||
|
||||
# Pull in the actual libraries
|
||||
Requires: %{name}-libs-single%{?_isa} = %{version}-%{release}
|
||||
Requires: %{name}-libs-double%{?_isa} = %{version}-%{release}
|
||||
Requires: %{name}-libs-long%{?_isa} = %{version}-%{release}
|
||||
Requires: %{name}-libs-single%{?_isa} = %{version}-%{release}
|
||||
Requires: %{name}-libs-double%{?_isa} = %{version}-%{release}
|
||||
Requires: %{name}-libs-long%{?_isa} = %{version}-%{release}
|
||||
%if %{quad}
|
||||
Requires: %{name}-libs-quad%{?_isa} = %{version}-%{release}
|
||||
Requires: %{name}-libs-quad%{?_isa} = %{version}-%{release}
|
||||
%endif
|
||||
|
||||
%description libs
|
||||
@ -109,6 +129,150 @@ Provides: fftw3-static = %{version}-%{release}
|
||||
The fftw-static package contains the statically linkable version of
|
||||
the FFTW fast Fourier transform library.
|
||||
|
||||
%if %{with mpich}
|
||||
%package mpich-libs
|
||||
Summary: FFTW MPICH run-time library
|
||||
Group: System Environment/Libraries
|
||||
Provides: fftw3-mpich = %{version}-%{release}
|
||||
|
||||
# Pull in the actual libraries
|
||||
Requires: %{name}-mpich-libs-single%{?_isa} = %{version}-%{release}
|
||||
Requires: %{name}-mpich-libs-double%{?_isa} = %{version}-%{release}
|
||||
Requires: %{name}-mpich-libs-long%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description mpich-libs
|
||||
This is a dummy package package, pulling in the individual FFTW
|
||||
MPICH run-time libraries.
|
||||
|
||||
|
||||
%package mpich-devel
|
||||
Summary: Headers, libraries and docs for the FFTW MPICH library
|
||||
Group: Development/Libraries
|
||||
Requires: mpich-devel
|
||||
Requires: pkgconfig
|
||||
Requires: %{name}-devel%{?_isa} = %{version}-%{release}
|
||||
Requires: %{name}-mpich-libs%{?_isa} = %{version}-%{release}
|
||||
Provides: fftw3-mpich-devel%{?_isa} = %{version}-%{release}
|
||||
Provides: fftw3-mpich-devel = %{version}-%{release}
|
||||
|
||||
%description mpich-devel
|
||||
FFTW is a C subroutine library for computing the Discrete Fourier
|
||||
Transform (DFT) in one or more dimensions, of both real and complex
|
||||
data, and of arbitrary input size.
|
||||
|
||||
This package contains header files and development libraries needed to
|
||||
develop programs using the FFTW fast Fourier transform library for MPICH.
|
||||
|
||||
%package mpich-libs-double
|
||||
Summary: FFTW MPICH library, double precision
|
||||
Group: Development/Libraries
|
||||
Requires: %{name}-libs-double%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description mpich-libs-double
|
||||
This package contains the FFTW MPICH library compiled in double precision.
|
||||
|
||||
%package mpich-libs-single
|
||||
Summary: FFTW MPICH library, single precision
|
||||
Group: Development/Libraries
|
||||
Requires: %{name}-libs-single%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description mpich-libs-single
|
||||
This package contains the FFTW MPICH library compiled in single precision.
|
||||
|
||||
%package mpich-libs-long
|
||||
Summary: FFTW MPICH library, long double precision
|
||||
Group: Development/Libraries
|
||||
Requires: %{name}-libs-long%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description mpich-libs-long
|
||||
This package contains the FFTW MPICH library compiled in long double
|
||||
precision.
|
||||
|
||||
%package mpich-static
|
||||
Summary: Static versions of the FFTW MPICH libraries
|
||||
Group: Development/Libraries
|
||||
Requires: %{name}-mpich-devel%{?_isa} = %{version}-%{release}
|
||||
Requires: %{name}-static%{?_isa} = %{version}-%{release}
|
||||
Provides: fftw3-mpich-static%{?_isa} = %{version}-%{release}
|
||||
Provides: fftw3-mpich-static = %{version}-%{release}
|
||||
|
||||
%description mpich-static
|
||||
The fftw-mpich-static package contains the statically linkable version of
|
||||
the FFTW fast Fourier transform library for MPICh.
|
||||
%endif
|
||||
|
||||
%if %{with openmpi}
|
||||
%package openmpi-libs
|
||||
Summary: FFTW OpenMPI run-time library
|
||||
Group: System Environment/Libraries
|
||||
Provides: fftw3-openmpi = %{version}-%{release}
|
||||
|
||||
# Pull in the actual libraries
|
||||
Requires: %{name}-openmpi-libs-single%{?_isa} = %{version}-%{release}
|
||||
Requires: %{name}-openmpi-libs-double%{?_isa} = %{version}-%{release}
|
||||
Requires: %{name}-openmpi-libs-long%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description openmpi-libs
|
||||
This is a dummy package package, pulling in the individual FFTW
|
||||
OpenMPI run-time libraries.
|
||||
|
||||
|
||||
%package openmpi-devel
|
||||
Summary: Headers, libraries and docs for the FFTW OpenMPI library
|
||||
Group: Development/Libraries
|
||||
Requires: openmpi-devel
|
||||
Requires: pkgconfig
|
||||
Requires: %{name}-devel%{?_isa} = %{version}-%{release}
|
||||
Requires: %{name}-openmpi-libs%{?_isa} = %{version}-%{release}
|
||||
Provides: fftw3-openmpi-devel%{?_isa} = %{version}-%{release}
|
||||
Provides: fftw3-openmpi-devel = %{version}-%{release}
|
||||
|
||||
%description openmpi-devel
|
||||
FFTW is a C subroutine library for computing the Discrete Fourier
|
||||
Transform (DFT) in one or more dimensions, of both real and complex
|
||||
data, and of arbitrary input size.
|
||||
|
||||
This package contains header files and development libraries needed to
|
||||
develop programs using the FFTW fast Fourier transform library for OpenMPI.
|
||||
|
||||
%package openmpi-libs-double
|
||||
Summary: FFTW OpenMPI library, double precision
|
||||
Group: Development/Libraries
|
||||
Requires: %{name}-libs-double%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description openmpi-libs-double
|
||||
This package contains the FFTW OpenMPI library compiled in double precision.
|
||||
|
||||
%package openmpi-libs-single
|
||||
Summary: FFTW OpenMPI library, single precision
|
||||
Group: Development/Libraries
|
||||
Requires: %{name}-libs-single%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description openmpi-libs-single
|
||||
This package contains the FFTW OpenMPI library compiled in single precision.
|
||||
|
||||
%package openmpi-libs-long
|
||||
Summary: FFTW OpenMPI library, long double precision
|
||||
Group: Development/Libraries
|
||||
Requires: %{name}-libs-long%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description openmpi-libs-long
|
||||
This package contains the FFTW OpenMPI library compiled in long double
|
||||
precision.
|
||||
|
||||
%package openmpi-static
|
||||
Summary: Static versions of the FFTW OpenMPI libraries
|
||||
Group: Development/Libraries
|
||||
Requires: %{name}-openmpi-devel%{?_isa} = %{version}-%{release}
|
||||
Requires: %{name}-static%{?_isa} = %{version}-%{release}
|
||||
Provides: fftw3-openmpi-static%{?_isa} = %{version}-%{release}
|
||||
Provides: fftw3-openmpi-static = %{version}-%{release}
|
||||
|
||||
%description openmpi-static
|
||||
The fftw-openmpi-static package contains the statically linkable version of
|
||||
the FFTW fast Fourier transform library for MPICh.
|
||||
%endif
|
||||
|
||||
%package doc
|
||||
Summary: FFTW library manual
|
||||
Group: Documentation
|
||||
@ -179,6 +343,32 @@ do
|
||||
cd ..
|
||||
done
|
||||
|
||||
# MPI Builds - this duplicates the non-mpi builds, but oh well
|
||||
for mpi in %{mpi_list}
|
||||
do
|
||||
module load mpi/${mpi}-%{_arch}
|
||||
# Loop over precisions - no quad precision support with MPI
|
||||
for((iprec=0;iprec<3;iprec++))
|
||||
do
|
||||
mkdir ${mpi}-${prec_name[iprec]}${ver_name[iver]}
|
||||
cd ${mpi}-${prec_name[iprec]}${ver_name[iver]}
|
||||
ln -s ../configure .
|
||||
# Force linking the _mpi.so libraries with the mpi libs. This works because
|
||||
# we get rid of all of the non-mpi components of these builds
|
||||
export CC=mpicc
|
||||
%{configure} ${BASEFLAGS} ${prec_flags[iprec]} --enable-mpi \
|
||||
--libdir=%{_libdir}/$mpi/lib \
|
||||
--bindir=%{_libdir}/$mpi/bin \
|
||||
--sbindir=%{_libdir}/$mpi/sbin \
|
||||
--includedir=%{_includedir}/$mpi-%{_arch} \
|
||||
--mandir=%{_libdir}/$mpi/share/man
|
||||
make %{?_smp_mflags}
|
||||
cd ..
|
||||
done
|
||||
module unload mpi/${mpi}-%{_arch}
|
||||
done
|
||||
|
||||
|
||||
%install
|
||||
%if %{quad}
|
||||
for ver in single double long quad
|
||||
@ -188,8 +378,21 @@ for ver in single double long
|
||||
do
|
||||
make -C $ver install DESTDIR=%{buildroot}
|
||||
done
|
||||
# MPI
|
||||
for mpi in %{mpi_list}
|
||||
do
|
||||
module load mpi/${mpi}-%{_arch}
|
||||
for ver in single double long
|
||||
do
|
||||
make -C ${mpi}-${ver} install DESTDIR=%{buildroot}
|
||||
# Remove duplicated non-mpi libraries, binaries, and data
|
||||
find %{buildroot}%{_libdir}/${mpi}/lib -name libfftw\* -a \! -name \*_mpi.\* -delete
|
||||
rm -r %{buildroot}%{_libdir}/${mpi}/{bin,share}
|
||||
done
|
||||
module unload mpi/${mpi}-%{_arch}
|
||||
done
|
||||
rm -f %{buildroot}%{_infodir}/dir
|
||||
rm -f %{buildroot}%{_libdir}/*.la
|
||||
find %{buildroot} -name \*.la -delete
|
||||
|
||||
%check
|
||||
bdir=`pwd`
|
||||
@ -200,7 +403,18 @@ for ver in single double long
|
||||
%endif
|
||||
do
|
||||
export LD_LIBRARY_PATH=$bdir/$ver/.libs:$bdir/$ver/threads/.libs
|
||||
make -C $ver check
|
||||
make %{?_smp_mflags} -C $ver check
|
||||
done
|
||||
# MPI
|
||||
for mpi in %{mpi_list}
|
||||
do
|
||||
module load mpi/${mpi}-%{_arch}
|
||||
for ver in single double long
|
||||
do
|
||||
export LD_LIBRARY_PATH=$bdir/$ver/.libs:$bdir/$ver/threads/.libs
|
||||
make %{?_smp_mflags} -C ${mpi}-${ver}/mpi check
|
||||
done
|
||||
module unload mpi/${mpi}-%{_arch}
|
||||
done
|
||||
|
||||
%post libs-single -p /sbin/ldconfig
|
||||
@ -223,7 +437,7 @@ if [ "$1" = 0 ]; then
|
||||
fi
|
||||
|
||||
%files
|
||||
%doc %{_mandir}/man1/fftw*.1.*
|
||||
%{_mandir}/man1/fftw*.1*
|
||||
%{_bindir}/fftw*-wisdom*
|
||||
|
||||
%files libs
|
||||
@ -265,13 +479,72 @@ fi
|
||||
%{_libdir}/pkgconfig/fftw3*.pc
|
||||
%{_libdir}/libfftw3*.so
|
||||
|
||||
%files doc
|
||||
%doc doc/*.pdf doc/html/
|
||||
|
||||
%files static
|
||||
%{_libdir}/libfftw3*.a
|
||||
|
||||
%files doc
|
||||
%doc doc/*.pdf doc/html/
|
||||
|
||||
%if %{with mpich}
|
||||
%files mpich-libs
|
||||
|
||||
%files mpich-libs-single
|
||||
%license COPYING COPYRIGHT
|
||||
%doc AUTHORS ChangeLog NEWS README* TODO
|
||||
%{_libdir}/mpich/lib/libfftw3f_mpi.so.*
|
||||
|
||||
%files mpich-libs-double
|
||||
%license COPYING COPYRIGHT
|
||||
%doc AUTHORS ChangeLog NEWS README* TODO
|
||||
%{_libdir}/mpich/lib/libfftw3_mpi.so.*
|
||||
|
||||
%files mpich-libs-long
|
||||
%license COPYING COPYRIGHT
|
||||
%doc AUTHORS ChangeLog NEWS README* TODO
|
||||
%{_libdir}/mpich/lib/libfftw3l_mpi.so.*
|
||||
|
||||
%files mpich-devel
|
||||
%doc doc/FAQ/fftw-faq.html/
|
||||
%{_includedir}/mpich-%{_arch}
|
||||
%{_libdir}/mpich/lib/pkgconfig/fftw3*.pc
|
||||
%{_libdir}/mpich/lib/libfftw3*.so
|
||||
|
||||
%files mpich-static
|
||||
%{_libdir}/mpich/lib/libfftw3*.a
|
||||
%endif
|
||||
|
||||
%if %{with openmpi}
|
||||
%files openmpi-libs
|
||||
|
||||
%files openmpi-libs-single
|
||||
%license COPYING COPYRIGHT
|
||||
%doc AUTHORS ChangeLog NEWS README* TODO
|
||||
%{_libdir}/openmpi/lib/libfftw3f_mpi.so.*
|
||||
|
||||
%files openmpi-libs-double
|
||||
%license COPYING COPYRIGHT
|
||||
%doc AUTHORS ChangeLog NEWS README* TODO
|
||||
%{_libdir}/openmpi/lib/libfftw3_mpi.so.*
|
||||
|
||||
%files openmpi-libs-long
|
||||
%license COPYING COPYRIGHT
|
||||
%doc AUTHORS ChangeLog NEWS README* TODO
|
||||
%{_libdir}/openmpi/lib/libfftw3l_mpi.so.*
|
||||
|
||||
%files openmpi-devel
|
||||
%doc doc/FAQ/fftw-faq.html/
|
||||
%{_includedir}/openmpi-%{_arch}
|
||||
%{_libdir}/openmpi/lib/pkgconfig/fftw3*.pc
|
||||
%{_libdir}/openmpi/lib/libfftw3*.so
|
||||
|
||||
%files openmpi-static
|
||||
%{_libdir}/openmpi/lib/libfftw3*.a
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Fri Oct 7 2016 Orion Poplawski <orion@cora.nwra.com> - 3.3.5-2
|
||||
- Build mpich and openmpi versions
|
||||
|
||||
* Wed Oct 5 2016 Orion Poplawski <orion@cora.nwra.com> - 3.3.5-1
|
||||
- Update to 3.3.5
|
||||
- Cleanup spec
|
||||
|
Loading…
Reference in New Issue
Block a user