diff --git a/_multibuild b/_multibuild new file mode 100644 index 0000000..c5f5ea5 --- /dev/null +++ b/_multibuild @@ -0,0 +1,6 @@ + + standard + gnu-hpc + gnu-openmpi-hpc + gnu-mvapich2-hpc + diff --git a/baselibs.conf b/baselibs.conf deleted file mode 100644 index 4239941..0000000 --- a/baselibs.conf +++ /dev/null @@ -1,4 +0,0 @@ -libfftw3-3 -libfftw3_threads3 -libfftw3_omp3 -libfftw3_mpi3 diff --git a/fftw3-rpmlintrc b/fftw3-rpmlintrc index e8816aa..f8e6d9d 100644 --- a/fftw3-rpmlintrc +++ b/fftw3-rpmlintrc @@ -1,3 +1,9 @@ -# See spec file for the reason(s) -addFilter('shlib-fixed-dependency') +# This line is mandatory to access the configuration functions +from Config import * +# See spec file for the reason(s) +addFilter("libfftw3.* devel-file-in-non-devel-package") +addFilter("libfftw3.* hidden-file-or-dir") +addFilter('shlib-fixed-dependency') +addFilter('libfftw3.* shlib-policy-nonversioned-dir /usr/lib/hpc') +addFilter('libfftw3.* shlib-policy-nonversioned-dir /usr/share/lmod') diff --git a/fftw3.changes b/fftw3.changes index 76fb743..17527b6 100644 --- a/fftw3.changes +++ b/fftw3.changes @@ -1,3 +1,27 @@ +------------------------------------------------------------------- +Sat Oct 14 17:13:06 UTC 2017 - eich@suse.com + +- For HPC build package static libraries as well. + +------------------------------------------------------------------- +Thu Oct 12 05:46:35 UTC 2017 - eich@suse.com + +- Generate baselib.conf dynamically and only for the non-HPC + build: this avoids issues with the source validator. + +------------------------------------------------------------------- +Mon Sep 25 09:36:55 UTC 2017 - cgoll@suse.com + +- removed unnedded dependency packages + +------------------------------------------------------------------- +Thu Sep 7 07:46:53 UTC 2017 - cgoll@suse.com + +- rewrote for hpc library support + * added environment modules + * reduced number of hpc realted packages to two + + ------------------------------------------------------------------- Mon Aug 1 22:03:49 UTC 2016 - mardnh@gmx.de diff --git a/fftw3.spec b/fftw3.spec index 08f9d55..02a706a 100644 --- a/fftw3.spec +++ b/fftw3.spec @@ -1,7 +1,7 @@ # # spec file for package fftw3 # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,9 +16,84 @@ # -Name: fftw3 +%global flavor @BUILD_FLAVOR@%{nil} + +%define bname fftw +%define BNAME FFTW +%define pname fftw3 +%define vers 3.3.5 +%define _ver 3_3_5 + +%if "%flavor" == "" +ExclusiveArch: do_not_build +%define package_name %pname +%endif + +%if "%{flavor}" == "standard" +%define mpi_flavor standard +%bcond_without mpi +%bcond_with hpc +%bcond_without system_packages +%endif + +%if "%flavor" == "gnu-hpc" +%define compiler_family gnu +%undefine c_f_ver +%bcond_with mpi +%bcond_without hpc +%endif + +%if "%{flavor}" == "gnu-openmpi-hpc" +%global compiler_family gnu +%undefine c_f_ver +%global mpi_flavor openmpi +%define mpi_vers 1 +%bcond_without hpc +%bcond_without mpi +%endif + +%if "%{flavor}" == "gnu-mvapich2-hpc" +%global compiler_family gnu +%undefine c_f_ver +%define mpi_flavor mvapich2 +%bcond_without hpc +%bcond_without mpi +%endif + +# now exchange the paths +%if %{with hpc} +%{?mpi_flavor:%{bcond_without mpi}}%{!?mpi_flavor:%{bcond_with mpi}} +%{?with_hpc:%{!?compiler_family:%global compiler_family gnu}} +%{?with_mpi:%{!?mpi_flavor:%global mpi_flavor openmpi}} +# needed by the hpc tools +%{hpc_init -c %compiler_family %{?c_f_ver:-v %{c_f_ver}} %{?with_mpi:-m {%mpi_flavor}} %{?mpi_ver:-V %{mpi_ver}} %{?ext:-e %{ext}}} +%define package_base %{hpc_install_path_base} +%define package_prefix %hpc_prefix +%define package_bindir %hpc_bindir +%define package_libdir %hpc_libdir +%define package_datadir %hpc_datadir +%define package_includedir %hpc_includedir +%define package_mandir %hpc_mandir +%define package_docdir %hpc_docdir +%define package_infodir %hpc_infodir +%define package_name %{hpc_package_name %_ver} +%define package_libname lib%{package_name} +%else +%define package_base %{_prefix} +%define package_prefix %{_prefix} +%define package_bindir %{_bindir} +%define package_libdir %{_libdir} +%define package_datadir %{_datadir} +%define package_includedir %{_includedir} +%define package_mandir %{_mandir} +%define package_docdir %{_docdir} +%define package_infodir %{_infodir} +%define package_name %pname%{?my_suffix} +%define package_libname lib%{pname}-3 +%endif + +Name: %package_name BuildRequires: fdupes -BuildRequires: gcc-fortran BuildRequires: pkgconfig %ifnarch s390 s390x BuildRequires: openmpi-devel @@ -30,39 +105,71 @@ License: GPL-2.0+ Group: Productivity/Scientific/Math Url: http://www.fftw.org Source: http://www.fftw.org/fftw-%{version}.tar.gz -Source1: %{name}-rpmlintrc -Source1000: baselibs.conf +Source1: %{pname}-rpmlintrc BuildRoot: %{_tmppath}/%{name}-%{version}-build Requires(pre): %install_info_prereq +%if %{with hpc} +BuildRequires: %{compiler_family}%{?c_f_ver}-compilers-hpc-macros-devel +BuildRequires: lua-lmod +BuildRequires: suse-hpc +%if %{with mpi} +BuildRequires: %{mpi_flavor}%{?mpi_vers}-%{compiler_family}%{?c_f_ver}-hpc-macros-devel +Requires: %{mpi_flavor}_%{?mpi_ver}-%{compiler_family}%{?c_f_ver}-hpc +%endif +%else +BuildRequires: gcc-c++ +BuildRequires: gcc-fortran +Requires: %{package_name}-libs = %{version} +%endif %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. +%if %{with hpc} +%%{hpc_master_package -L} +%{hpc_master_package -l} +%{hpc_master_package -a devel} +%endif + %package devel Summary: Include Files and Libraries mandatory for Development Group: Development/Libraries/C and C++ Requires: glibc-devel -Requires: libfftw3-3 = %{version}-%{release} +%if %{without hpc} +Requires: %package_libname = %{version}-%{release} +%else +#Requires: %%hpc_package_name = %%{version}-%%{release} +Requires: %{pname}-%{flavor}-devel = %{version}-%{release} +%endif Provides: fftw-devel %description devel This package contains all necessary include files and libraries needed to develop applications that require these. -%package -n libfftw3-3 +%package devel-static +Summary: Static libraries for %{pname} +Group: Development/Libraries/C and C++ +Requires: %{name}-devel + +%description devel-static +Libraries to build statically linked applications with fftw3. + +%package -n %package_libname Summary: Discrete Fourier Transform (DFT) C Subroutine Library -Group: System/Libraries # Remove Prov/Obs when appropriate; were added 2011-Nov-21 (post-openSUSE-12.1) +Group: System/Libraries Provides: fftw3 = %{version}-%{release} Obsoletes: fftw3 < 3.3 -%description -n libfftw3-3 +%description -n %package_libname 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. +%if %{without hpc} %package -n libfftw3_threads3 Summary: Discrete Fourier Transform (DFT) C subroutine library Group: Productivity/Scientific/Math @@ -113,6 +220,7 @@ Requires: libfftw3_omp3 = %{version}-%{release} 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. +%endif %ifnarch s390 s390x @@ -145,39 +253,78 @@ data, and of arbitrary input size. %endif %prep -%setup -q -n fftw-%{version} +%setup -q -n %{bname}-%{version} + +%if %{without hpc} +cat > %{_sourcedir}/baselibs.conf <