diff --git a/doc/conf.py b/doc/conf.py index 0dfd86f4b103b4806a4d30c9cfa244a3ff63a92c_ZG9jL2NvbmYucHk=..783b47248202c43f556d4de3b4ea0bd528eab5d3_ZG9jL2NvbmYucHk= 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -14,6 +14,13 @@ import sys import os +# to be able to build the doc without h5py with Read the docs +on_rtd = os.environ.get('READTHEDOCS') +if on_rtd: + # this package comes from fluiddyn + from fluidrtd import mock_modules + mock_modules(['h5py']) + import fluidsim diff --git a/doc/requirements.txt b/doc/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..783b47248202c43f556d4de3b4ea0bd528eab5d3_ZG9jL3JlcXVpcmVtZW50cy50eHQ= --- /dev/null +++ b/doc/requirements.txt @@ -0,0 +1,8 @@ +cython +ipython[notebook]>=3.0.0 +numpy +matplotlib +scipy +fluiddyn>=0.0.10a7 +Sphinx>=1.1 +numpydoc diff --git a/setup.py b/setup.py index 0dfd86f4b103b4806a4d30c9cfa244a3ff63a92c_c2V0dXAucHk=..783b47248202c43f556d4de3b4ea0bd528eab5d3_c2V0dXAucHk= 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ from Cython.Distutils.extension import Extension from Cython.Distutils import build_ext except ImportError: - from setuptools import Extension, build_ext + from setuptools import Extension from distutils.command import build_ext import subprocess @@ -27,7 +27,10 @@ long_description = ''.join(lines[8:]) # Get the version from the relevant file -execfile('fluidsim/_version.py') +d = {} +execfile('fluidsim/_version.py', d) +__version__ = d['__version__'] + # Get the development status from the version string if 'a' in __version__: devstatus = 'Development Status :: 3 - Alpha' @@ -36,7 +39,18 @@ else: devstatus = 'Development Status :: 5 - Production/Stable' -ext_modules = [] + +try: + libraries = subprocess.check_output('/sbin/ldconfig -p', shell=True) +except subprocess.CalledProcessError: + libraries = [] + + +def check_avail_library(library_name): + if sys.platform != 'win32': + library_name = 'lib' + library_name + + return library_name in libraries try: @@ -52,4 +66,6 @@ mpi4py.get_include(), here + '/include'] +FFTW3 = check_avail_library('fftw3') +FFTW3MPI = check_avail_library('fftw3_mpi') @@ -55,5 +71,10 @@ -if MPI4PY: +del libraries + + +ext_modules = [] + +if MPI4PY and FFTW3: path_sources = 'fluidsim/operators/fft/Sources_fftw2dmpiccy' include_dirs = [path_sources, np.get_include()] + include_dirs_mpi ext_fftw2dmpiccy = Extension( @@ -65,14 +86,8 @@ path_sources+'/fftw2dmpiccy.pyx']) ext_modules.append(ext_fftw2dmpiccy) - -path_sources = 'fluidsim/operators/fft/Sources_fftw2dmpicy' -include_dirs = [path_sources, np.get_include()] -libraries = ['m'] -if MPI4PY: - include_dirs.extend(include_dirs_mpi) - libraries.append('mpi') - -library_dirs = [] -if sys.platform == 'win32': +if FFTW3: + path_sources = 'fluidsim/operators/fft/Sources_fftw2dmpicy' + include_dirs = [path_sources, np.get_include()] + libraries = ['m'] if MPI4PY: @@ -78,10 +93,4 @@ if MPI4PY: - raise ValueError( - 'We have to work on this case with MPI4PY on Windows...') - fftw_dir = r'c:\Prog\fftw-3.3.4-dll64' - library_dirs.append(fftw_dir) - include_dirs.append(fftw_dir) - libraries.append('libfftw3-3') -else: - libraries.append('fftw3') + include_dirs.extend(include_dirs_mpi) + libraries.append('mpi') @@ -87,8 +96,13 @@ -try: - subprocess.check_call('/sbin/ldconfig -p | grep libfftw3_mpi', shell=True) - FFTW3MPI = True -except subprocess.CalledProcessError: - FFTW3MPI = False - print("The library libfftw3_mpi doesn't seem available.") + library_dirs = [] + if sys.platform == 'win32': + if MPI4PY: + raise ValueError( + 'We have to work on this case with MPI4PY on Windows...') + fftw_dir = r'c:\Prog\fftw-3.3.4-dll64' + library_dirs.append(fftw_dir) + include_dirs.append(fftw_dir) + libraries.append('libfftw3-3') + else: + libraries.append('fftw3') @@ -94,4 +108,4 @@ -if FFTW3MPI: - libraries.append('fftw3_mpi') + if FFTW3MPI: + libraries.append('fftw3_mpi') @@ -97,12 +111,12 @@ - ext_fftw2dmpicy = Extension( - 'fluidsim.operators.fft.fftw2dmpicy', - include_dirs=include_dirs, - libraries=libraries, - library_dirs=library_dirs, - cython_compile_time_env={'MPI4PY': MPI4PY}, - sources=[path_sources+'/fftw2dmpicy.pyx']) - ext_modules.append(ext_fftw2dmpicy) + ext_fftw2dmpicy = Extension( + 'fluidsim.operators.fft.fftw2dmpicy', + include_dirs=include_dirs, + libraries=libraries, + library_dirs=library_dirs, + cython_compile_time_env={'MPI4PY': MPI4PY}, + sources=[path_sources+'/fftw2dmpicy.pyx']) + ext_modules.append(ext_fftw2dmpicy) path_sources = 'fluidsim/operators/CySources' @@ -147,6 +161,15 @@ ''.join([ext.name + '\n' for ext in ext_modules])) +install_requires = ['fluiddyn >= 0.0.10a7'] + +on_rtd = os.environ.get('READTHEDOCS') +if not on_rtd: + install_requires += ['h5py'] + if FFTW3: + install_requires += ['pyfftw'] + + setup(name='fluidsim', version=__version__, description=('Framework for studying fluid dynamics with simulations.'), @@ -181,7 +204,7 @@ 'Programming Language :: C', ], packages=find_packages(exclude=['doc', 'examples']), - install_requires=['fluiddyn >= 0.0.9a0', 'h5py', 'pyfftw'], + install_requires=install_requires, extras_require=dict( doc=['Sphinx>=1.1', 'numpydoc'], parallel=['mpi4py']), @@ -185,6 +208,5 @@ extras_require=dict( doc=['Sphinx>=1.1', 'numpydoc'], parallel=['mpi4py']), - # scripts=['bin/fluiddyn-stop-pumps'], cmdclass={"build_ext": build_ext}, ext_modules=ext_modules)