Upgrade to fftw-3.3.10

Signed-off-by: David Cantrell <david.l.cantrell@gmail.com>
This commit is contained in:
David Cantrell 2021-12-20 12:04:55 -05:00
parent 84a03db2dd
commit 9f430cc911
3 changed files with 75 additions and 84 deletions

1
.gitignore vendored
View File

@ -9,3 +9,4 @@ fftw-3.2.2.tar.gz
/fftw-3.3.4.tar.gz
/fftw-3.3.5.tar.gz
/fftw-3.3.8.tar.gz
/fftw-3.3.10.tar.gz

156
fftw.spec
View File

@ -11,19 +11,15 @@
%global mpi_list %{?mpi_list} openmpi
%endif
Name: fftw
Version: 3.3.8
Release: 11%{?dist}
Version: 3.3.10
Release: 1%{?dist}
Summary: A Fast Fourier Transform library
License: GPLv2+
URL: http://www.fftw.org
Source0: http://www.fftw.org/fftw-%{version}.tar.gz
BuildRequires: gcc-gfortran
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libtool
BuildRequires: gcc-gfortran
%global quad 0
# Quad precision support only available with gcc >= 4.6 (Fedora >= 15)
@ -45,7 +41,7 @@ BuildRequires: openmpi-devel
%if %{with mpich} || %{with openmpi}
BuildRequires: environment-modules
%endif
BuildRequires: make
BuildRequires: make
%description
@ -273,11 +269,8 @@ library.
%build
# Explicitly load shell support for the environment-modules package, used
# below via 'module' pseudo-command.
source /etc/profile.d/modules.sh
. /etc/profile.d/modules.sh
# Regenerate autoconf files using current tools so proper build flags
# from redhat-rpm-config are used
autoreconf -vfi
# Configure uses g77 by default, if present on system
export F77=gfortran
@ -298,113 +291,109 @@ prec_flags[3]=--enable-quad-precision
%ifarch x86_64
# Enable SSE2 and AVX support for x86_64
for((i=0;i<2;i++)); do
prec_flags[i]+=" --enable-sse2 --enable-avx"
for ((i=0; i<2; i++)) ; do
prec_flags[i]+=" --enable-sse2 --enable-avx"
done
%endif
# No NEON run time detection, not all ARM SoCs have NEON
#%ifarch %{arm}
## Compile support for NEON instructions
#for((i=0;i<2;i++)); do
# prec_flags[i]+=" --enable-neon"
#for ((i=0; i<2; i++)) ; do
# prec_flags[i]+=" --enable-neon"
#done
#%endif
#%ifarch ppc ppc64
## Compile support for Altivec instructions
#for((i=0;i<2;i++)); do
#prec_flags[i]+=" --enable-altivec"
#for ((i=0; i<2; i++)) ; do
# prec_flags[i]+=" --enable-altivec"
#done
#%endif
# Loop over precisions
%if %{quad}
for((iprec=0;iprec<4;iprec++))
for ((iprec=0; iprec<4; iprec++)) ; do
%else
for((iprec=0;iprec<3;iprec++))
for ((iprec=0; iprec<3; iprec++)) ; do
%endif
do
mkdir ${prec_name[iprec]}${ver_name[iver]}
cd ${prec_name[iprec]}${ver_name[iver]}
ln -s ../configure .
%{configure} ${BASEFLAGS} ${prec_flags[iprec]}
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
make %{?_smp_mflags}
cd ..
mkdir ${prec_name[iprec]}${ver_name[iver]}
cd ${prec_name[iprec]}${ver_name[iver]}
ln -s ../configure .
%{configure} ${BASEFLAGS} ${prec_flags[iprec]}
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
make %{?_smp_mflags}
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}
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
# Explicitly load shell support for the environment-modules package, used
# below via 'module' pseudo-command.
source /etc/profile.d/modules.sh
%if %{quad}
for ver in single double long quad
for ver in single double long quad ; do
%else
for ver in single double long
for ver in single double long ; do
%endif
do
make -C $ver install DESTDIR=%{buildroot}
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}
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
find %{buildroot} -name \*.la -delete
%check
# Explicitly load shell support for the environment-modules package, used
# below via 'module' pseudo-command.
source /etc/profile.d/modules.sh
. /etc/profile.d/modules.sh
bdir=`pwd`
bdir=$(pwd)
%if %{quad}
for ver in single double long quad
for ver in single double long quad ; do
%else
for ver in single double long
for ver in single double long ; do
%endif
do
export LD_LIBRARY_PATH=$bdir/$ver/.libs:$bdir/$ver/threads/.libs
make %{?_smp_mflags} -C $ver check
export LD_LIBRARY_PATH=$bdir/$ver/.libs:$bdir/$ver/threads/.libs
make %{?_smp_mflags} -C $ver check
done
# MPI
%if %{with openmpi}
%ifarch %{ix86}
@ -413,15 +402,13 @@ done
export OMPI_MCA_btl="^vader"
%endif
%endif
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}
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
%ldconfig_scriptlets libs-single
@ -543,6 +530,9 @@ done
%endif
%changelog
* Mon Dec 20 2021 David Cantrell <dcantrell@redhat.com> - 3.3.10-1
- Upgrade to fftw-3.3.10
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild

View File

@ -1 +1 @@
SHA512 (fftw-3.3.8.tar.gz) = ab918b742a7c7dcb56390a0a0014f517a6dff9a2e4b4591060deeb2c652bf3c6868aa74559a422a276b853289b4b701bdcbd3d4d8c08943acf29167a7be81a38
SHA512 (fftw-3.3.10.tar.gz) = 2d34b5ccac7b08740dbdacc6ebe451d8a34cf9d9bfec85a5e776e87adf94abfd803c222412d8e10fbaa4ed46f504aa87180396af1b108666cde4314a55610b40