diff options
author | Tom Payerle <payerle@umd.edu> | 2019-01-30 22:18:10 -0500 |
---|---|---|
committer | Peter Scheibel <scheibel1@llnl.gov> | 2019-01-30 21:18:10 -0600 |
commit | c42528fac2ae3620729b75c196662f97d665f88e (patch) | |
tree | 0abf62a9c0b87b2e656ae92c729a70d62b8e380c | |
parent | 2aad75d98f1c334993122d0419d1c263df4d03ae (diff) | |
download | spack-c42528fac2ae3620729b75c196662f97d665f88e.tar.gz spack-c42528fac2ae3620729b75c196662f97d665f88e.tar.bz2 spack-c42528fac2ae3620729b75c196662f97d665f88e.tar.xz spack-c42528fac2ae3620729b75c196662f97d665f88e.zip |
fftw: fix include error for 2.x versions (#10039)
Fixes #7372
Added patch method which renames config.h in the fftw subdir of the
source tree. fftw 2.1.5 appears to ship with a copy of this file
with all defines commented out. This gets read by the #include
directives instead of the version in the build directory with the
correct defines. As a result, many C preprocessor macros left
undefined, including F77_FUNC_ which causes the bulk of fttwf77.c
to be skipped due to an #ifdef, so fftw_reverse_int_array et al
not included in library. Fixes #7372
Also fixed some inconsistencies with the handling of quad and
long_double in specs between the configure method and the build,
check, and install methods.
-rw-r--r-- | var/spack/repos/builtin/packages/fftw/package.py | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/var/spack/repos/builtin/packages/fftw/package.py b/var/spack/repos/builtin/packages/fftw/package.py index 45a481153e..709ad64af4 100644 --- a/var/spack/repos/builtin/packages/fftw/package.py +++ b/var/spack/repos/builtin/packages/fftw/package.py @@ -6,6 +6,8 @@ from spack import * import llnl.util.lang +# os is used for rename, etc in patch() +import os class Fftw(AutotoolsPackage): @@ -107,6 +109,13 @@ class Fftw(AutotoolsPackage): return find_libraries(libraries, root=self.prefix, recursive=True) + def patch(self): + # If fftw/config.h exists in the source tree, it will take precedence + # over the copy in build dir. As only the latter has proper config + # for our build, this is a problem. See e.g. issue #7372 on github + if os.path.isfile('fftw/config.h'): + os.rename('fftw/config.h', 'fftw/config.h.SPACK_RENAMED') + def autoreconf(self, spec, prefix): if '+pfft_patches' in spec: autoreconf = which('autoreconf') @@ -169,10 +178,10 @@ class Fftw(AutotoolsPackage): if '+float' in spec: with working_dir('float'): make() - if '+long_double' in spec: + if spec.satisfies('@3:+long_double'): with working_dir('long-double'): make() - if '+quad' in spec: + if spec.satisfies('@3:+quad'): with working_dir('quad'): make() @@ -184,10 +193,10 @@ class Fftw(AutotoolsPackage): if '+float' in spec: with working_dir('float'): make("check") - if '+long_double' in spec: + if spec.satisfies('@3:+long_double'): with working_dir('long-double'): make("check") - if '+quad' in spec: + if spec.satisfies('@3:+quad'): with working_dir('quad'): make("check") @@ -198,9 +207,9 @@ class Fftw(AutotoolsPackage): if '+float' in spec: with working_dir('float'): make("install") - if '+long_double' in spec: + if spec.satisfies('@3:+long_double'): with working_dir('long-double'): make("install") - if '+quad' in spec: + if spec.satisfies('@3:+quad'): with working_dir('quad'): make("install") |