+# Copyright (c) 2019-2021. The SimGrid Team. All rights reserved.
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the license (GNU LGPL) which comes with this package.
# python3 setup.py sdist # Build a source distrib (building binary distribs is complex on linux)
try:
out = subprocess.check_output(['cmake', '--version'])
except OSError:
- raise RuntimeError("CMake must be installed to build the following extensions: " +
- ", ".join(e.name for e in self.extensions))
+ raise RuntimeError(
+ "CMake must be installed to build python bindings of SimGrid")
+
if not os.path.exists("MANIFEST.in"):
- raise RuntimeError("Please generate a MANIFEST.in file (configure simgrid, and copy it here if you build out of tree)")
+ raise RuntimeError(
+ "Please generate a MANIFEST.in file (configure simgrid, and copy it here if you build out of tree)")
if platform.system() == "Windows":
- cmake_version = LooseVersion(re.search(r'version\s*([\d.]+)', out.decode()).group(1))
+ cmake_version = LooseVersion(
+ re.search(r'version\s*([\d.]+)', out.decode()).group(1))
if cmake_version < '3.1.0':
raise RuntimeError("CMake >= 3.1.0 is required on Windows")
self.build_extension(ext)
def build_extension(self, ext):
- extdir = os.path.abspath(os.path.dirname(self.get_ext_fullpath(ext.name)))
+ from pybind11 import get_cmake_dir
+ extdir = os.path.abspath(os.path.dirname(
+ self.get_ext_fullpath(ext.name)))
cmake_args = ['-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=' + extdir,
'-DPYTHON_EXECUTABLE=' + sys.executable,
'-Denable_smpi=OFF',
'-Denable_java=OFF',
'-Denable_python=ON',
- '-Dminimal-bindings=ON']
+ '-Dminimal-bindings=ON',
+ '-Dpybind11_DIR=' + get_cmake_dir()
+ ]
cfg = 'Debug' if self.debug else 'Release'
build_args = ['--config', cfg]
if platform.system() == "Windows":
- cmake_args += ['-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_{}={}'.format(cfg.upper(), extdir)]
+ cmake_args += [
+ '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_{}={}'.format(cfg.upper(), extdir)]
if sys.maxsize > 2**32:
cmake_args += ['-A', 'x64']
build_args += ['--', '/m']
self.distribution.get_version())
if not os.path.exists(self.build_temp):
os.makedirs(self.build_temp)
- subprocess.check_call(['cmake', ext.sourcedir] + cmake_args, cwd=self.build_temp, env=env)
- subprocess.check_call(['cmake', '--build', '.'] + build_args, cwd=self.build_temp)
+ subprocess.check_call(['cmake', ext.sourcedir] +
+ cmake_args, cwd=self.build_temp, env=env)
+ subprocess.check_call(['cmake', '--build', '.'] +
+ build_args, cwd=self.build_temp)
+
setup(
name='simgrid',
- version='3.22.4',
+ version='3.27.1',
author='Da SimGrid Team',
author_email='simgrid-devel@lists.gforge.inria.fr',
description='Toolkit for scalable simulation of distributed applications',
long_description=("SimGrid is a scientific instrument to study the behavior of "
"large-scale distributed systems such as Grids, Clouds, HPC or P2P "
"systems. It can be used to evaluate heuristics, prototype applications "
- "or even assess legacy MPI applications."),
+ "or even assess legacy MPI applications.\n\n"
+ "This package contains a native library. Please install cmake, boost, pybind11 and a "
+ "C++ compiler before using pip3. On Debian/Ubuntu, this is as easy as\n"
+ "sudo apt install cmake libboost-dev pybind11-dev g++ gcc"),
ext_modules=[CMakeExtension('simgrid')],
cmdclass=dict(build_ext=CMakeBuild),
+ install_requires=['pybind11>=2.4'],
+ setup_requires=['pybind11>=2.4'],
zip_safe=False,
classifiers=[
- "Development Status :: 4 - Beta",
- "Environment :: Console",
- "Intended Audience :: Education",
- "Intended Audience :: Developers",
- "Intended Audience :: Science/Research",
- "Intended Audience :: System Administrators",
- "License :: OSI Approved :: GNU Lesser General Public License v2 (LGPLv2)",
- "Operating System :: POSIX",
- "Operating System :: MacOS",
- "Operating System :: Microsoft :: Windows",
- "Programming Language :: Python :: 3",
- "Programming Language :: C++",
- "Programming Language :: C",
- "Programming Language :: Fortran",
- "Programming Language :: Java",
- "Topic :: System :: Distributed Computing",
- "Topic :: System :: Systems Administration",
+ "Development Status :: 4 - Beta",
+ "Environment :: Console",
+ "Intended Audience :: Education",
+ "Intended Audience :: Developers",
+ "Intended Audience :: Science/Research",
+ "Intended Audience :: System Administrators",
+ "License :: OSI Approved :: GNU Lesser General Public License v2 (LGPLv2)",
+ "Operating System :: POSIX",
+ "Operating System :: MacOS",
+ "Operating System :: Microsoft :: Windows",
+ "Programming Language :: Python :: 3",
+ "Programming Language :: C++",
+ "Programming Language :: C",
+ "Programming Language :: Fortran",
+ "Programming Language :: Java",
+ "Topic :: System :: Distributed Computing",
+ "Topic :: System :: Systems Administration",
],
url="https://simgrid.org",
project_urls={
- 'Tracker': 'https://framagit.org/simgrid/simgrid/issues/',
- 'Source': 'https://framagit.org/simgrid/simgrid/',
- 'Documentation': 'https://simgrid.org/doc/latest/',
+ 'Tracker': 'https://framagit.org/simgrid/simgrid/issues/',
+ 'Source': 'https://framagit.org/simgrid/simgrid/',
+ 'Documentation': 'https://simgrid.org/doc/latest/',
},
)