Compare commits

...

No commits in common. 'c9' and 'c10-beta' have entirely different histories.
c9 ... c10-beta

@ -1 +1 @@
59831bd4b2705381ee395e54aa6e0069b10c3626 SOURCES/fftw-3.3.8.tar.gz 6abe7321c8c35ef52e56e299e66a9b967baf148a SOURCES/fftw-3.3.10.tar.gz

2
.gitignore vendored

@ -1 +1 @@
SOURCES/fftw-3.3.8.tar.gz SOURCES/fftw-3.3.10.tar.gz

@ -0,0 +1,13 @@
diff --git a/FFTW3Config.cmake.in b/FFTW3Config.cmake.in
index 6b1fbc2..e8a2ed8 100644
--- a/FFTW3Config.cmake.in
+++ b/FFTW3Config.cmake.in
@@ -10,8 +10,6 @@ set (FFTW3@PREC_SUFFIX@_LIBRARIES fftw3@PREC_SUFFIX@)
set (FFTW3@PREC_SUFFIX@_LIBRARY_DIRS @CMAKE_INSTALL_FULL_LIBDIR@)
set (FFTW3@PREC_SUFFIX@_INCLUDE_DIRS @CMAKE_INSTALL_FULL_INCLUDEDIR@)
-include ("${CMAKE_CURRENT_LIST_DIR}/FFTW3LibraryDepends.cmake")
-
if (CMAKE_VERSION VERSION_LESS 2.8.3)
set (CMAKE_CURRENT_LIST_DIR)
endif ()

@ -1,9 +1,19 @@
%bcond_without mpich %if %{defined rhel}
%bcond_with mpich
%bcond_with openmpi
%else
# TODO check later if we can enable mpich on s390x
%ifarch s390 s390x %ifarch s390 s390x
%bcond_with mpich
%else
%bcond_without mpich
%endif
%ifarch s390 s390x %{ix86}
%bcond_with openmpi %bcond_with openmpi
%else %else
%bcond_without openmpi %bcond_without openmpi
%endif %endif
%endif
%if %{with mpich} %if %{with mpich}
%global mpi_list %{?mpi_list} mpich %global mpi_list %{?mpi_list} mpich
%endif %endif
@ -11,19 +21,17 @@
%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: 12%{?dist} Release: 12%{?dist}
Summary: A Fast Fourier Transform library Summary: A Fast Fourier Transform library
License: GPLv2+ # Generally, the code is under GPL but some headers are also under MIT or BSD:
License: GPL-2.0-or-later AND MIT AND BSD-2-Clause
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 Patch1: fix_autotools_build.patch
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)
@ -32,6 +40,16 @@ BuildRequires: libtool
%global quad 1 %global quad 1
%endif %endif
# Names of precisions to (maybe) build
%global prec_names prec_name[0]=single;prec_name[1]=double;prec_name[2]=long;prec_name[3]=quad
# Number of precisions to build; sometimes quad is not possible
%global nprec 3
%if %{quad}
%global nprec 4
%endif
# Number of precisions to build for MPI
%global nmpiprec 3
# For check phase # For check phase
BuildRequires: time BuildRequires: time
BuildRequires: perl-interpreter BuildRequires: perl-interpreter
@ -45,7 +63,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
@ -268,27 +286,22 @@ This package contains the manual for the FFTW fast Fourier transform
library. library.
%prep %prep
%setup -q %autosetup -p1
%build %build
%if %{with mpich} || %{with openmpi}
# 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
%endif
# 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
BASEFLAGS="--enable-shared --disable-dependency-tracking --enable-threads" BASEFLAGS="--enable-shared --disable-dependency-tracking --enable-threads"
BASEFLAGS+=" --enable-openmp" BASEFLAGS+=" --enable-openmp"
# Precisions to build %prec_names
prec_name[0]=single
prec_name[1]=double
prec_name[2]=long
prec_name[3]=quad
# Corresponding flags # Corresponding flags
prec_flags[0]=--enable-single prec_flags[0]=--enable-single
@ -298,130 +311,117 @@ 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 --enable-avx2"
done done
%endif %endif
# No NEON run time detection, not all ARM SoCs have NEON %ifarch %{arm64}
#%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 BASEFLAGS+=" --enable-armv8-cntvct-el0"
#%endif %endif
#%ifarch ppc ppc64
## Compile support for Altivec instructions
#for((i=0;i<2;i++)); do
#prec_flags[i]+=" --enable-altivec"
#done
#%endif
# Loop over precisions %ifarch ppc ppc64
%if %{quad} # Compile support for Altivec instructions; only supported for single precision
for((iprec=0;iprec<4;iprec++)) for ((i=0; i<1; i++)) ; do
%else prec_flags[i]+=" --enable-altivec"
for((iprec=0;iprec<3;iprec++)) done
%endif %endif
do
mkdir ${prec_name[iprec]}${ver_name[iver]} # Loop over precisions
cd ${prec_name[iprec]}${ver_name[iver]} for ((iprec=0; iprec<%{nprec}; iprec++)) ; do
ln -s ../configure . mkdir ${prec_name[iprec]}${ver_name[iver]}
%{configure} ${BASEFLAGS} ${prec_flags[iprec]} cd ${prec_name[iprec]}${ver_name[iver]}
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool ln -s ../configure .
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool %{configure} ${BASEFLAGS} ${prec_flags[iprec]}
make %{?_smp_mflags} sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
cd .. sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
%make_build
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<%{nmpiprec};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 if [ $mpi = "openmpi" ]; then
export CC=mpicc export MPIRUN="mpirun --oversubscribe"
%{configure} ${BASEFLAGS} ${prec_flags[iprec]} --enable-mpi \ fi
--libdir=%{_libdir}/$mpi/lib \ %{configure} ${BASEFLAGS} ${prec_flags[iprec]} \
--bindir=%{_libdir}/$mpi/bin \ --enable-mpi \
--sbindir=%{_libdir}/$mpi/sbin \ --libdir=%{_libdir}/$mpi/lib \
--includedir=%{_includedir}/$mpi-%{_arch} \ --bindir=%{_libdir}/$mpi/bin \
--mandir=%{_libdir}/$mpi/share/man --sbindir=%{_libdir}/$mpi/sbin \
make %{?_smp_mflags} --includedir=%{_includedir}/$mpi-%{_arch} \
cd .. --mandir=%{_libdir}/$mpi/share/man
done %make_build
module unload mpi/${mpi}-%{_arch} cd ..
done
module unload mpi/${mpi}-%{_arch}
done done
%install %install
%prec_names
%if %{with mpich} || %{with openmpi}
# 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}
for ver in single double long quad
%else
for ver in single double long
%endif %endif
do
make -C $ver install DESTDIR=%{buildroot} for((iprec=0;iprec<%{nprec};iprec++)) ; do
%make_install -C ${prec_name[iprec]}
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((iprec=0;iprec<%{nmpiprec};iprec++)) ; do
for ver in single double long %make_install -C ${mpi}-${prec_name[iprec]}
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
%prec_names
%if %{with mpich} || %{with openmpi}
# 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`
%if %{quad}
for ver in single double long quad
%else
for ver in single double long
%endif %endif
do
export LD_LIBRARY_PATH=$bdir/$ver/.libs:$bdir/$ver/threads/.libs bdir=$(pwd)
make %{?_smp_mflags} -C $ver check for((iprec=0;iprec<%{nprec};iprec++)) ; do
export LD_LIBRARY_PATH=$bdir/${prec_name[iprec]}/.libs:$bdir/${prec_name[iprec]}/threads/.libs
%make_build -C ${prec_name[iprec]} check
done done
# MPI # MPI
%if %{with openmpi} # Allow oversubscription with openmpi
%ifarch %{ix86} export OMPI_MCA_rmaps_base_oversubscribe=1
# disable Open MPI's vader byte transfer layer while running tests on 32-bit x86 platforms for mpi in %{?mpi_list} ; do
# as it is known to be troublesome <https://github.com/open-mpi/ompi/issues/4260> module load mpi/${mpi}-%{_arch}
export OMPI_MCA_btl="^vader" for((iprec=0;iprec<%{nmpiprec};iprec++)) ; do
%endif export LD_LIBRARY_PATH=$bdir/${prec_name[iprec]}/.libs:$bdir/${prec_name[iprec]}/threads/.libs
%endif %make_build -C ${mpi}-${prec_name[iprec]}/mpi check
for mpi in %{mpi_list} done
do module unload mpi/${mpi}-%{_arch}
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
%ldconfig_scriptlets libs-single %ldconfig_scriptlets libs-single
@ -543,12 +543,55 @@ done
%endif %endif
%changelog %changelog
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 3.3.8-12 * Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 3.3.10-12
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags - Bump release for June 2024 mass rebuild
Related: rhbz#1991688
* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.10-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.10-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
- Fix i686 build by disabling openmpi
- Fix "The file FFTW3LibraryDepends.cmake is missing" in autotools build
https://github.com/FFTW/fftw3/issues/130#issuecomment-1902748460 (#2193075)
- Disable mpich on s390x to fix the build
* Thu Jul 27 2023 Lukáš Zaoral <lzaoral@redhat.com> - 3.3.10-9
- migrate to SPDX license format
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.10-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Tue Mar 28 2023 David Cantrell <dcantrell@redhat.com> - 3.3.10-7
- Rebuild
* Mon Mar 27 2023 Trent Piepho <tpiepho@gmail.com> - 3.3.10-6
- Enable AVX2 on x86-86
- Enable NEON on aarch64
- Clean up precision list
- Fix for OpenMPI build with < 4 processors
- Fix building with no enabled MPI types
- Enable single precision Altivec on PPC
- Enable CNTVCT_EL0 support on ARMv8
* Thu Mar 02 2023 Orion Poplawski <orion@nwra.com> - 3.3.10-5
- Use make macros
- Drop openmpi vader workaround
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.10-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.10-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.10-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Mon Dec 20 2021 David Cantrell <dcantrell@redhat.com> - 3.3.10-1
- Upgrade to fftw-3.3.10
* Thu Apr 15 2021 Mohan Boddu <mboddu@redhat.com> - 3.3.8-11 * Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8-11
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8-10 * Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.8-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild

Loading…
Cancel
Save