Allow py-meep to link properly
This commit is contained in:
parent
880cbb2217
commit
8d0758fc4c
4 changed files with 41 additions and 6 deletions
|
@ -61,6 +61,11 @@ def url_for_version(self, version):
|
||||||
return "{0}/old/meep-{1}.tar.gz".format(base_url, version)
|
return "{0}/old/meep-{1}.tar.gz".format(base_url, version)
|
||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
|
# Must be compiled with -fPIC for py-meep
|
||||||
|
env['CFLAGS'] = '-fPIC'
|
||||||
|
env['CXXFLAGS'] = '-fPIC'
|
||||||
|
env['FFLAGS'] = '-fPIC'
|
||||||
|
|
||||||
config_args = ['--prefix={0}'.format(prefix)]
|
config_args = ['--prefix={0}'.format(prefix)]
|
||||||
|
|
||||||
if '+blas' in spec:
|
if '+blas' in spec:
|
||||||
|
|
|
@ -37,18 +37,34 @@ class PyMeep(Package):
|
||||||
variant('mpi', default=True, description='Enable MPI support')
|
variant('mpi', default=True, description='Enable MPI support')
|
||||||
|
|
||||||
extends('python')
|
extends('python')
|
||||||
depends_on('mpi', when='+mpi') # OpenMPI 1.3.3 is recommended
|
|
||||||
depends_on('meep@1.1.1') # must be compiled with -fPIC
|
|
||||||
depends_on('meep+mpi', when='+mpi')
|
|
||||||
depends_on('swig@1.3.39:')
|
|
||||||
depends_on('py-numpy')
|
depends_on('py-numpy')
|
||||||
depends_on('py-scipy')
|
depends_on('py-scipy')
|
||||||
depends_on('py-matplotlib')
|
depends_on('py-matplotlib')
|
||||||
|
|
||||||
|
depends_on('mpi', when='+mpi') # OpenMPI 1.3.3 is recommended
|
||||||
|
depends_on('meep') # must be compiled with -fPIC
|
||||||
|
depends_on('meep+mpi', when='+mpi')
|
||||||
|
|
||||||
|
# As of SWIG 3.0.3, Python-style comments are now treated as
|
||||||
|
# pre-processor directives. Use older SWIG. But not too old,
|
||||||
|
# or else it can't handle newer C++ compilers and flags.
|
||||||
|
depends_on('swig@1.3.39:3.0.2')
|
||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
setup = 'setup-mpi.py' if '+mpi' in spec else 'setup.py'
|
setup = 'setup-mpi.py' if '+mpi' in spec else 'setup.py'
|
||||||
|
|
||||||
|
include_dirs = [
|
||||||
|
spec['meep'].prefix.include,
|
||||||
|
spec['py-numpy'].include
|
||||||
|
]
|
||||||
|
|
||||||
|
library_dirs = [
|
||||||
|
spec['meep'].prefix.lib
|
||||||
|
]
|
||||||
|
|
||||||
python(setup, 'clean', '--all')
|
python(setup, 'clean', '--all')
|
||||||
python(setup, 'build_ext')
|
python(setup, 'build_ext',
|
||||||
|
'-I{0}'.format(','.join(include_dirs)),
|
||||||
|
'-L{0}'.format(','.join(library_dirs)))
|
||||||
python(setup, 'install', '--prefix={0}'.format(prefix))
|
python(setup, 'install', '--prefix={0}'.format(prefix))
|
||||||
python(setup, 'bdist')
|
python(setup, 'bdist')
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
##############################################################################
|
##############################################################################
|
||||||
from spack import *
|
from spack import *
|
||||||
|
import platform
|
||||||
|
|
||||||
|
|
||||||
class PyNumpy(Package):
|
class PyNumpy(Package):
|
||||||
|
@ -48,6 +49,18 @@ class PyNumpy(Package):
|
||||||
depends_on('blas', when='+blas')
|
depends_on('blas', when='+blas')
|
||||||
depends_on('lapack', when='+lapack')
|
depends_on('lapack', when='+lapack')
|
||||||
|
|
||||||
|
def setup_dependent_package(self, module, dep_spec):
|
||||||
|
python_version = self.spec['python'].version.up_to(2)
|
||||||
|
arch = '{0}-{1}'.format(platform.system().lower(), platform.machine())
|
||||||
|
|
||||||
|
self.spec.include = join_path(
|
||||||
|
self.prefix.lib,
|
||||||
|
'python{0}'.format(python_version),
|
||||||
|
'site-packages',
|
||||||
|
'numpy-{0}-py{1}-{2}.egg'.format(
|
||||||
|
self.spec.version, python_version, arch),
|
||||||
|
'numpy/core/include')
|
||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
libraries = []
|
libraries = []
|
||||||
library_dirs = []
|
library_dirs = []
|
||||||
|
|
|
@ -22,9 +22,9 @@
|
||||||
# License along with this program; if not, write to the Free Software
|
# License along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
from spack import *
|
from spack import *
|
||||||
|
|
||||||
|
|
||||||
class Swig(Package):
|
class Swig(Package):
|
||||||
"""SWIG is an interface compiler that connects programs written in
|
"""SWIG is an interface compiler that connects programs written in
|
||||||
C and C++ with scripting languages such as Perl, Python, Ruby,
|
C and C++ with scripting languages such as Perl, Python, Ruby,
|
||||||
|
@ -38,6 +38,7 @@ class Swig(Package):
|
||||||
homepage = "http://www.swig.org"
|
homepage = "http://www.swig.org"
|
||||||
url = "http://prdownloads.sourceforge.net/swig/swig-3.0.8.tar.gz"
|
url = "http://prdownloads.sourceforge.net/swig/swig-3.0.8.tar.gz"
|
||||||
|
|
||||||
|
version('3.0.10', 'bb4ab8047159469add7d00910e203124')
|
||||||
version('3.0.8', 'c96a1d5ecb13d38604d7e92148c73c97')
|
version('3.0.8', 'c96a1d5ecb13d38604d7e92148c73c97')
|
||||||
version('3.0.2', '62f9b0d010cef36a13a010dc530d0d41')
|
version('3.0.2', '62f9b0d010cef36a13a010dc530d0d41')
|
||||||
version('2.0.12', 'c3fb0b2d710cc82ed0154b91e43085a4')
|
version('2.0.12', 'c3fb0b2d710cc82ed0154b91e43085a4')
|
||||||
|
|
Loading…
Reference in a new issue