From 6648ee5d321e242a252a8b5a0d4f5d544aaaf5a4 Mon Sep 17 00:00:00 2001 From: Jussi Lehtola Date: Fri, 29 Jul 2011 01:05:25 +0300 Subject: [PATCH] Update to 3.3 series. --- fftw.spec | 176 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 108 insertions(+), 68 deletions(-) diff --git a/fftw.spec b/fftw.spec index ad4e805..622a700 100644 --- a/fftw.spec +++ b/fftw.spec @@ -1,6 +1,6 @@ Name: fftw -Version: 3.2.2 -Release: 5%{?dist} +Version: 3.3 +Release: 1%{?dist} Summary: A Fast Fourier Transform library Group: System Environment/Libraries License: GPLv2+ @@ -10,30 +10,42 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: gcc-gfortran # 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 -%package devel +%description libs +This package contains the FFTW run-time libraries. + +%package devel Summary: Headers, libraries and docs for the FFTW library Group: Development/Libraries -Requires: %{name} = %{version}-%{release} pkgconfig +Requires: pkgconfig +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: %{name}-libs-openmp%{?_isa} = %{version}-%{release} +Requires: %{name}-libs-threads%{?_isa} = %{version}-%{release} -Provides: fftw3-devel = %{version}-%{release} -Obsoletes: fftw3-devel < %{version}-%{release} +Provides: fftw3-devel%{?_isa} = %{version}-%{release} +Obsoletes: fftw3-devel%{?_isa} < 3.3 - -%description devel +%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,20 +53,32 @@ 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. + +%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. %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 BuildArch: noarch @@ -63,68 +87,62 @@ BuildArch: noarch 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 # Configure uses g77 by default, if present on system export F77=gfortran +BASEFLAGS="--enable-shared --disable-dependency-tracking --enable-threads --enable-openmp" -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 +# 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 +for((iprec=0;iprec<4;iprec++)); 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} +for ver in single double long quad; 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 +for ver in single double long quad; 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-openmp -p /sbin/ldconfig +%postun libs-openmp -p /sbin/ldconfig +%post libs-threads -p /sbin/ldconfig +%postun libs-threads -p /sbin/ldconfig %post devel /sbin/install-info --section="Math" %{_infodir}/%{name}.info.gz %{_infodir}/dir 2>/dev/null || : @@ -136,10 +154,30 @@ 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.* +%{_libdir}/libfftw3q.so.* + +%files libs-openmp +%defattr(-,root,root,-) +%{_libdir}/libfftw3_omp.so.* +%{_libdir}/libfftw3f_omp.so.* +%{_libdir}/libfftw3l_omp.so.* +%{_libdir}/libfftw3q_omp.so.* + +%files libs-threads +%defattr(-,root,root,-) +%{_libdir}/libfftw3_threads.so.* +%{_libdir}/libfftw3f_threads.so.* +%{_libdir}/libfftw3l_threads.so.* +%{_libdir}/libfftw3q_threads.so.* %files devel %defattr(-,root,root,-) @@ -157,8 +195,10 @@ fi %defattr(-,root,root,-) %{_libdir}/libfftw3*.a - %changelog +* Thu Jul 28 2011 Jussi Lehtola - 3.3-1 +- Update to 3.3. + * Tue Feb 08 2011 Fedora Release Engineering - 3.2.2-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild