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
|
Name: fftw
|
||||||
Version: 3.3.5
|
Version: 3.3.5
|
||||||
Release: 1%{?dist}
|
Release: 2%{?dist}
|
||||||
Summary: A Fast Fourier Transform library
|
Summary: A Fast Fourier Transform library
|
||||||
Group: System Environment/Libraries
|
Group: System Environment/Libraries
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
@ -18,6 +32,12 @@ BuildRequires: gcc-gfortran
|
|||||||
# For check phase
|
# For check phase
|
||||||
BuildRequires: time
|
BuildRequires: time
|
||||||
BuildRequires: perl
|
BuildRequires: perl
|
||||||
|
%if %{with mpich}
|
||||||
|
BuildRequires: mpich-devel
|
||||||
|
%endif
|
||||||
|
%if %{with openmpi}
|
||||||
|
BuildRequires: openmpi-devel
|
||||||
|
%endif
|
||||||
|
|
||||||
Requires(post): info
|
Requires(post): info
|
||||||
Requires(preun): info
|
Requires(preun): info
|
||||||
@ -37,11 +57,11 @@ Obsoletes: fftw-libs-threads < %{version}-%{release}
|
|||||||
Obsoletes: fftw-libs-openmp < %{version}-%{release}
|
Obsoletes: fftw-libs-openmp < %{version}-%{release}
|
||||||
|
|
||||||
# Pull in the actual libraries
|
# Pull in the actual libraries
|
||||||
Requires: %{name}-libs-single%{?_isa} = %{version}-%{release}
|
Requires: %{name}-libs-single%{?_isa} = %{version}-%{release}
|
||||||
Requires: %{name}-libs-double%{?_isa} = %{version}-%{release}
|
Requires: %{name}-libs-double%{?_isa} = %{version}-%{release}
|
||||||
Requires: %{name}-libs-long%{?_isa} = %{version}-%{release}
|
Requires: %{name}-libs-long%{?_isa} = %{version}-%{release}
|
||||||
%if %{quad}
|
%if %{quad}
|
||||||
Requires: %{name}-libs-quad%{?_isa} = %{version}-%{release}
|
Requires: %{name}-libs-quad%{?_isa} = %{version}-%{release}
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%description libs
|
%description libs
|
||||||
@ -109,6 +129,150 @@ Provides: fftw3-static = %{version}-%{release}
|
|||||||
The fftw-static package contains the statically linkable version of
|
The fftw-static package contains the statically linkable version of
|
||||||
the FFTW fast Fourier transform library.
|
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
|
%package doc
|
||||||
Summary: FFTW library manual
|
Summary: FFTW library manual
|
||||||
Group: Documentation
|
Group: Documentation
|
||||||
@ -179,6 +343,32 @@ do
|
|||||||
cd ..
|
cd ..
|
||||||
done
|
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
|
%install
|
||||||
%if %{quad}
|
%if %{quad}
|
||||||
for ver in single double long quad
|
for ver in single double long quad
|
||||||
@ -188,8 +378,21 @@ for ver in single double long
|
|||||||
do
|
do
|
||||||
make -C $ver install DESTDIR=%{buildroot}
|
make -C $ver install DESTDIR=%{buildroot}
|
||||||
done
|
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}%{_infodir}/dir
|
||||||
rm -f %{buildroot}%{_libdir}/*.la
|
find %{buildroot} -name \*.la -delete
|
||||||
|
|
||||||
%check
|
%check
|
||||||
bdir=`pwd`
|
bdir=`pwd`
|
||||||
@ -200,7 +403,18 @@ for ver in single double long
|
|||||||
%endif
|
%endif
|
||||||
do
|
do
|
||||||
export LD_LIBRARY_PATH=$bdir/$ver/.libs:$bdir/$ver/threads/.libs
|
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
|
done
|
||||||
|
|
||||||
%post libs-single -p /sbin/ldconfig
|
%post libs-single -p /sbin/ldconfig
|
||||||
@ -223,7 +437,7 @@ if [ "$1" = 0 ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%doc %{_mandir}/man1/fftw*.1.*
|
%{_mandir}/man1/fftw*.1*
|
||||||
%{_bindir}/fftw*-wisdom*
|
%{_bindir}/fftw*-wisdom*
|
||||||
|
|
||||||
%files libs
|
%files libs
|
||||||
@ -265,13 +479,72 @@ fi
|
|||||||
%{_libdir}/pkgconfig/fftw3*.pc
|
%{_libdir}/pkgconfig/fftw3*.pc
|
||||||
%{_libdir}/libfftw3*.so
|
%{_libdir}/libfftw3*.so
|
||||||
|
|
||||||
%files doc
|
|
||||||
%doc doc/*.pdf doc/html/
|
|
||||||
|
|
||||||
%files static
|
%files static
|
||||||
%{_libdir}/libfftw3*.a
|
%{_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
|
%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
|
* Wed Oct 5 2016 Orion Poplawski <orion@cora.nwra.com> - 3.3.5-1
|
||||||
- Update to 3.3.5
|
- Update to 3.3.5
|
||||||
- Cleanup spec
|
- Cleanup spec
|
||||||
|
Loading…
Reference in New Issue
Block a user