[fftw/f16] Update to 3.3.

Jussi Lehtola jussilehtola at fedoraproject.org
Sat Jul 30 19:14:06 UTC 2011


commit 5f444ea4642bc2426fdc0d4b30700b45a5b1a1d6
Author: Jussi Lehtola <jussilehtola at fedoraproject.org>
Date:   Sat Jul 30 22:13:51 2011 +0300

    Update to 3.3.

 fftw.spec |  242 +++++++++++++++++++++++++++++++++++++++++++------------------
 sources   |    2 +-
 2 files changed, 171 insertions(+), 73 deletions(-)
---
diff --git a/fftw.spec b/fftw.spec
index ad4e805..444c954 100644
--- a/fftw.spec
+++ b/fftw.spec
@@ -1,6 +1,6 @@
 Name:           fftw
-Version:        3.2.2
-Release:        5%{?dist}
+Version:        3.3
+Release:        2%{?dist}
 Summary:        A Fast Fourier Transform library
 Group:          System Environment/Libraries
 License:        GPLv2+
@@ -8,32 +8,60 @@ URL:            http://www.fftw.org
 Source0:        http://www.fftw.org/fftw-%{version}.tar.gz
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
+# OpenMP support not available on RHEL 4
+%if 0%{?rhel} == 4
+BuildRequires:  gcc-g77
+%global openmp 0
+%else
 BuildRequires:  gcc-gfortran
+%global openmp 1
+%endif
+
+# Quad precision support only available with gcc >= 4.6
+%if 0%{?fedora} >= 15
+%global quad 1
+%else
+%global quad 0
+%endif
+
 # For check phase
-BuildRequires:  time perl
+BuildRequires:  time
+BuildRequires:  perl
 
 Requires(post): info 
 Requires(preun): info
 
-Provides:       fftw3 = %{version}-%{release}
-Obsoletes:      fftw3 < %{version}-%{release}
 
 %description
 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.
 
+%package libs
+Summary:        FFTW run-time library
+Group:          System Environment/Libraries
+Provides:       fftw3 = %{version}-%{release}
+Obsoletes:      fftw3 < 3.3
+# Libs branched from rpm containing binaries in version 3.3
+Obsoletes:      fftw < 3.3
+
+%description libs
+This package contains the FFTW run-time libraries.
 
-%package        devel
+%package devel
 Summary:        Headers, libraries and docs for the FFTW library
 Group:          Development/Libraries
-Requires:       %{name} = %{version}-%{release} pkgconfig
-
-Provides:       fftw3-devel = %{version}-%{release}
-Obsoletes:      fftw3-devel < %{version}-%{release}
-
-
-%description    devel
+Requires:       pkgconfig
+Requires:       %{name}%{?_isa} = %{version}-%{release}
+Requires:       %{name}-libs%{?_isa} = %{version}-%{release}
+Requires:       %{name}-libs-threads%{?_isa} = %{version}-%{release}
+%if %{openmp}
+Requires:       %{name}-libs-openmp%{?_isa} = %{version}-%{release}
+%endif
+Provides:       fftw3-devel%{?_isa} = %{version}-%{release}
+Obsoletes:      fftw3-devel%{?_isa} < 3.3
+
+%description 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.
@@ -41,90 +69,126 @@ 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.
 
+%package libs-threads
+Summary:        FFTW library with threading support
+Group:          Development/Libraries
+
+%description libs-threads
+This package contains the FFTW library compiled with threading support.
+
+%if %{openmp}
+%package libs-openmp
+Summary:        FFTW library with OpenMP support
+Group:          Development/Libraries
+
+%description libs-openmp
+This package contains the FFTW library compiled with OpenMP support.
+%endif
 
 %package        static
-Summary:        Static version of the FFTW library
+Summary:        Static versions of the FFTW libraries
 Group:          Development/Libraries
-Requires:       %{name}-devel = %{version}-%{release}
-Obsoletes:      fftw3-static < %{version}-%{release}
-Provides:       fftw3-static = %{version}-%{release}
+Requires:       %{name}-devel%{?_isa} = %{version}-%{release}
+Provides:       fftw3-static%{?_isa} = %{version}-%{release}
+Obsoletes:      fftw3-static%{?_isa} < 3.3
 
-%description    static
+%description static
 The fftw-static package contains the statically linkable version of
 the FFTW fast Fourier transform library.
 
-
-%package        doc
+%package doc
 Summary:        FFTW library manual
 Group:          Documentation
+%if 0%{?rhel} > 5 || 0%{?fedora} > 12
 BuildArch:      noarch
+%endif
 
 %description doc
 This package contains the manual for the FFTW fast Fourier transform
 library.
 
-
 %prep
-%setup -q -c %{name}-%{version}
-for dir in single double long; do
-  cp -a fftw-%{version} $dir
-done
-rm -rf fftw-%{version}
-
+%setup -q
 
 %build
+%if 0%{?rhel} == 4
+# System fortran compiler is g77
+export F77=g77
+%else
 # Configure uses g77 by default, if present on system
 export F77=gfortran
-
-CONFIG_FLAGS="--enable-shared --disable-dependency-tracking --enable-threads"
-pushd double
-        %configure $CONFIG_FLAGS
-        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}
-popd
-pushd single
-        %configure $CONFIG_FLAGS --enable-single
-        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}
-popd
-pushd long
-        %configure $CONFIG_FLAGS --enable-long-double
-        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}
-popd
-
+%endif
+
+BASEFLAGS="--enable-shared --disable-dependency-tracking --enable-threads"
+%if %{openmp}
+BASEFLAGS="$BASEFLAGS --enable-openmp"
+%endif
+
+# Precisions to build
+prec_name[0]=single
+prec_name[1]=double
+prec_name[2]=long
+prec_name[3]=quad
+
+# Corresponding flags
+prec_flags[0]=--enable-single
+prec_flags[1]=--enable-double
+prec_flags[2]=--enable-long-double
+prec_flags[3]=--enable-quad-precision
+
+# Loop over precisions
+%if %{quad}
+for((iprec=0;iprec<4;iprec++))
+%else
+for((iprec=0;iprec<3;iprec++))
+%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 ..
+done
 
 %install
-rm -rf ${RPM_BUILD_ROOT}
-pushd double
-        make install DESTDIR=${RPM_BUILD_ROOT}
-        cp -a AUTHORS COPYING COPYRIGHT ChangeLog NEWS README* TODO ../
-        cp -a doc/ ../
-popd
-pushd single
-        make install DESTDIR=${RPM_BUILD_ROOT}
-popd
-pushd long
-        make install DESTDIR=${RPM_BUILD_ROOT}
-popd
-rm -f ${RPM_BUILD_ROOT}%{_infodir}/dir
-rm -f ${RPM_BUILD_ROOT}%{_libdir}/*.la
+rm -rf %{buildroot}
+%if %{quad}
+for ver in single double long quad
+%else
+for ver in single double long
+%endif
+do
+ make -C $ver install DESTDIR=%{buildroot}
+done
+rm -f %{buildroot}%{_infodir}/dir
+rm -f %{buildroot}%{_libdir}/*.la
 
 %check
 bdir=`pwd`
-export LD_LIBRARY_PATH=$bdir/single/.libs:$bdir/single/threads/.libs:$bdir/double/.libs:$bdir/double/threads/.libs:$bdir/long/.libs:$bdir/long/threads/.libs
-make -C single check
-make -C double check
-make -C long check
+%if %{quad}
+for ver in single double long quad
+%else
+for ver in single double long
+%endif
+do 
+ export LD_LIBRARY_PATH=$bdir/$ver/.libs:$bdir/$ver/threads/.libs
+ make -C $ver check
+done
 
 %clean
-rm -rf ${RPM_BUILD_ROOT}
+rm -rf %{buildroot}
 
-%post -p /sbin/ldconfig
-%postun -p /sbin/ldconfig
+%post libs -p /sbin/ldconfig
+%postun libs -p /sbin/ldconfig
+%post libs-threads -p /sbin/ldconfig
+%postun libs-threads -p /sbin/ldconfig
+%if %{openmp}
+%post libs-openmp -p /sbin/ldconfig
+%postun libs-openmp -p /sbin/ldconfig
+%endif
 
 %post devel
 /sbin/install-info --section="Math" %{_infodir}/%{name}.info.gz %{_infodir}/dir  2>/dev/null || :
@@ -136,10 +200,38 @@ fi
 
 %files
 %defattr(-,root,root,-)
-%doc AUTHORS COPYING COPYRIGHT ChangeLog NEWS README* TODO
 %doc %{_mandir}/man1/fftw*.1.*
 %{_bindir}/fftw*-wisdom*
-%{_libdir}/libfftw3*.so.*
+
+%files libs
+%defattr(-,root,root,-)
+%doc AUTHORS COPYING COPYRIGHT ChangeLog NEWS README* TODO
+%{_libdir}/libfftw3.so.*
+%{_libdir}/libfftw3f.so.*
+%{_libdir}/libfftw3l.so.*
+%if %{quad}
+%{_libdir}/libfftw3q.so.*
+%endif
+
+%if %{openmp}
+%files libs-openmp
+%defattr(-,root,root,-)
+%{_libdir}/libfftw3_omp.so.*
+%{_libdir}/libfftw3f_omp.so.*
+%{_libdir}/libfftw3l_omp.so.*
+%if %{quad}
+%{_libdir}/libfftw3q_omp.so.*
+%endif
+%endif
+
+%files libs-threads
+%defattr(-,root,root,-)
+%{_libdir}/libfftw3_threads.so.*
+%{_libdir}/libfftw3f_threads.so.*
+%{_libdir}/libfftw3l_threads.so.*
+%if %{quad}
+%{_libdir}/libfftw3q_threads.so.*
+%endif
 
 %files devel
 %defattr(-,root,root,-)
@@ -157,8 +249,14 @@ fi
 %defattr(-,root,root,-)
 %{_libdir}/libfftw3*.a
 
-
 %changelog
+* Sat Jul 30 2011 Jussi Lehtola <jussilehtola at fedoraproject.org> - 3.3-2
+- Conditionalize OpenMP and quadruple precision support based on capabilities
+  of system compiler.
+
+* Thu Jul 28 2011 Jussi Lehtola <jussilehtola at fedoraproject.org> - 3.3-1
+- Update to 3.3.
+
 * Tue Feb 08 2011 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 3.2.2-5
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
 
diff --git a/sources b/sources
index 798bd7c..cc9ace7 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-b616e5c91218cc778b5aa735fefb61ae  fftw-3.2.2.tar.gz
+0728ab3ec0ebb06631ab3b80a5c3d130  fftw-3.3.tar.gz


More information about the scm-commits mailing list