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.4.tar.gz
/fftw-3.3.5.tar.gz /fftw-3.3.5.tar.gz
/fftw-3.3.8.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 %global mpi_list %{?mpi_list} openmpi
%endif %endif
Name: fftw Name: fftw
Version: 3.3.8 Version: 3.3.10
Release: 11%{?dist} Release: 1%{?dist}
Summary: A Fast Fourier Transform library Summary: A Fast Fourier Transform library
License: GPLv2+ License: GPLv2+
URL: http://www.fftw.org URL: http://www.fftw.org
Source0: http://www.fftw.org/fftw-%{version}.tar.gz Source0: http://www.fftw.org/fftw-%{version}.tar.gz
BuildRequires: gcc-gfortran
BuildRequires: autoconf BuildRequires: gcc-gfortran
BuildRequires: automake
BuildRequires: libtool
%global quad 0 %global quad 0
# Quad precision support only available with gcc >= 4.6 (Fedora >= 15) # Quad precision support only available with gcc >= 4.6 (Fedora >= 15)
@ -45,7 +41,7 @@ BuildRequires: openmpi-devel
%if %{with mpich} || %{with openmpi} %if %{with mpich} || %{with openmpi}
BuildRequires: environment-modules BuildRequires: environment-modules
%endif %endif
BuildRequires: make BuildRequires: make
%description %description
@ -273,11 +269,8 @@ library.
%build %build
# Explicitly load shell support for the environment-modules package, used # Explicitly load shell support for the environment-modules package, used
# below via 'module' pseudo-command. # 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 # Configure uses g77 by default, if present on system
export F77=gfortran export F77=gfortran
@ -298,113 +291,109 @@ prec_flags[3]=--enable-quad-precision
%ifarch x86_64 %ifarch x86_64
# Enable SSE2 and AVX support for x86_64 # Enable SSE2 and AVX support for x86_64
for((i=0;i<2;i++)); do for ((i=0; i<2; i++)) ; do
prec_flags[i]+=" --enable-sse2 --enable-avx" prec_flags[i]+=" --enable-sse2 --enable-avx"
done done
%endif %endif
# No NEON run time detection, not all ARM SoCs have NEON # No NEON run time detection, not all ARM SoCs have NEON
#%ifarch %{arm} #%ifarch %{arm}
## Compile support for NEON instructions ## Compile support for NEON instructions
#for((i=0;i<2;i++)); do #for ((i=0; i<2; i++)) ; do
# prec_flags[i]+=" --enable-neon" # prec_flags[i]+=" --enable-neon"
#done #done
#%endif #%endif
#%ifarch ppc ppc64 #%ifarch ppc ppc64
## Compile support for Altivec instructions ## Compile support for Altivec instructions
#for((i=0;i<2;i++)); do #for ((i=0; i<2; i++)) ; do
#prec_flags[i]+=" --enable-altivec" # prec_flags[i]+=" --enable-altivec"
#done #done
#%endif #%endif
# Loop over precisions # Loop over precisions
%if %{quad} %if %{quad}
for((iprec=0;iprec<4;iprec++)) for ((iprec=0; iprec<4; iprec++)) ; do
%else %else
for((iprec=0;iprec<3;iprec++)) for ((iprec=0; iprec<3; iprec++)) ; do
%endif %endif
do mkdir ${prec_name[iprec]}${ver_name[iver]}
mkdir ${prec_name[iprec]}${ver_name[iver]} cd ${prec_name[iprec]}${ver_name[iver]}
cd ${prec_name[iprec]}${ver_name[iver]} ln -s ../configure .
ln -s ../configure . %{configure} ${BASEFLAGS} ${prec_flags[iprec]}
%{configure} ${BASEFLAGS} ${prec_flags[iprec]} sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
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|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool make %{?_smp_mflags}
make %{?_smp_mflags} cd ..
cd ..
done done
# MPI Builds - this duplicates the non-mpi builds, but oh well # MPI Builds - this duplicates the non-mpi builds, but oh well
for mpi in %{mpi_list} for mpi in %{mpi_list} ; do
do module load mpi/${mpi}-%{_arch}
module load mpi/${mpi}-%{_arch} # Loop over precisions - no quad precision support with MPI
# Loop over precisions - no quad precision support with MPI for((iprec=0;iprec<3;iprec++)) ; do
for((iprec=0;iprec<3;iprec++)) mkdir ${mpi}-${prec_name[iprec]}${ver_name[iver]}
do cd ${mpi}-${prec_name[iprec]}${ver_name[iver]}
mkdir ${mpi}-${prec_name[iprec]}${ver_name[iver]} ln -s ../configure .
cd ${mpi}-${prec_name[iprec]}${ver_name[iver]} # Force linking the _mpi.so libraries with the mpi libs. This works because
ln -s ../configure . # we get rid of all of the non-mpi components of these builds
# Force linking the _mpi.so libraries with the mpi libs. This works because export CC=mpicc
# we get rid of all of the non-mpi components of these builds %{configure} ${BASEFLAGS} ${prec_flags[iprec]} \
export CC=mpicc --enable-mpi \
%{configure} ${BASEFLAGS} ${prec_flags[iprec]} --enable-mpi \ --libdir=%{_libdir}/$mpi/lib \
--libdir=%{_libdir}/$mpi/lib \ --bindir=%{_libdir}/$mpi/bin \
--bindir=%{_libdir}/$mpi/bin \ --sbindir=%{_libdir}/$mpi/sbin \
--sbindir=%{_libdir}/$mpi/sbin \ --includedir=%{_includedir}/$mpi-%{_arch} \
--includedir=%{_includedir}/$mpi-%{_arch} \ --mandir=%{_libdir}/$mpi/share/man
--mandir=%{_libdir}/$mpi/share/man make %{?_smp_mflags}
make %{?_smp_mflags} cd ..
cd .. done
done module unload mpi/${mpi}-%{_arch}
module unload mpi/${mpi}-%{_arch}
done done
%install %install
# Explicitly load shell support for the environment-modules package, used # Explicitly load shell support for the environment-modules package, used
# below via 'module' pseudo-command. # below via 'module' pseudo-command.
source /etc/profile.d/modules.sh source /etc/profile.d/modules.sh
%if %{quad} %if %{quad}
for ver in single double long quad for ver in single double long quad ; do
%else %else
for ver in single double long for ver in single double long ; do
%endif %endif
do make -C $ver install DESTDIR=%{buildroot}
make -C $ver install DESTDIR=%{buildroot}
done done
# MPI # MPI
for mpi in %{mpi_list} for mpi in %{mpi_list} ; do
do module load mpi/${mpi}-%{_arch}
module load mpi/${mpi}-%{_arch} for ver in single double long ; do
for ver in single double long make -C ${mpi}-${ver} install DESTDIR=%{buildroot}
do # Remove duplicated non-mpi libraries, binaries, and data
make -C ${mpi}-${ver} install DESTDIR=%{buildroot} find %{buildroot}%{_libdir}/${mpi}/lib -name libfftw\* -a \! -name \*_mpi.\* -delete
# Remove duplicated non-mpi libraries, binaries, and data rm -r %{buildroot}%{_libdir}/${mpi}/{bin,share}
find %{buildroot}%{_libdir}/${mpi}/lib -name libfftw\* -a \! -name \*_mpi.\* -delete done
rm -r %{buildroot}%{_libdir}/${mpi}/{bin,share} module unload mpi/${mpi}-%{_arch}
done
module unload mpi/${mpi}-%{_arch}
done done
rm -f %{buildroot}%{_infodir}/dir rm -f %{buildroot}%{_infodir}/dir
find %{buildroot} -name \*.la -delete find %{buildroot} -name \*.la -delete
%check %check
# Explicitly load shell support for the environment-modules package, used # Explicitly load shell support for the environment-modules package, used
# below via 'module' pseudo-command. # below via 'module' pseudo-command.
source /etc/profile.d/modules.sh . /etc/profile.d/modules.sh
bdir=`pwd` bdir=$(pwd)
%if %{quad} %if %{quad}
for ver in single double long quad for ver in single double long quad ; do
%else %else
for ver in single double long for ver in single double long ; do
%endif %endif
do export LD_LIBRARY_PATH=$bdir/$ver/.libs:$bdir/$ver/threads/.libs
export LD_LIBRARY_PATH=$bdir/$ver/.libs:$bdir/$ver/threads/.libs make %{?_smp_mflags} -C $ver check
make %{?_smp_mflags} -C $ver check
done done
# MPI # MPI
%if %{with openmpi} %if %{with openmpi}
%ifarch %{ix86} %ifarch %{ix86}
@ -413,15 +402,13 @@ done
export OMPI_MCA_btl="^vader" export OMPI_MCA_btl="^vader"
%endif %endif
%endif %endif
for mpi in %{mpi_list} for mpi in %{mpi_list} ; do
do module load mpi/${mpi}-%{_arch}
module load mpi/${mpi}-%{_arch} for ver in single double long ; do
for ver in single double long export LD_LIBRARY_PATH=$bdir/$ver/.libs:$bdir/$ver/threads/.libs
do make %{?_smp_mflags} -C ${mpi}-${ver}/mpi check
export LD_LIBRARY_PATH=$bdir/$ver/.libs:$bdir/$ver/threads/.libs done
make %{?_smp_mflags} -C ${mpi}-${ver}/mpi check module unload mpi/${mpi}-%{_arch}
done
module unload mpi/${mpi}-%{_arch}
done done
%ldconfig_scriptlets libs-single %ldconfig_scriptlets libs-single
@ -543,6 +530,9 @@ done
%endif %endif
%changelog %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 * Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - 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