* Add an integration test with the meson backend * Modify script to allow testing of the GHA action on a PR * Try adding cython to languages in meson config * Revert "Try adding cython to languages in meson config" This reverts commit 50378a1c7e38665492ad0c683b178e4d96928e1e. * Pass --vsenv to meson on windows As seen here https://github.com/matplotlib/matplotlib/blob/9957c394bd01deb7a9bd9cb27804f447a52dc522/.github/workflows/cibuildwheel.yml#L114 * Disable win32 builds for the meson test * Move the windows-specific config into the test project definition This is so it can be tested with bin/run_example_ci_configs.py * Add some docs to the FAQ about meson on windows * Update bin/run_example_ci_configs.py Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com> --------- Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
72 lines
1.7 KiB
Python
72 lines
1.7 KiB
Python
import jinja2
|
|
|
|
from .base import TestProject
|
|
from .c import SPAM_C_TEMPLATE
|
|
|
|
SETUP_PY_TEMPLATE = r"""
|
|
import os
|
|
import sys
|
|
|
|
from setuptools import setup, Extension
|
|
|
|
{{ setup_py_add }}
|
|
|
|
libraries = []
|
|
# Emscripten fails if you pass -lc...
|
|
# See: https://github.com/emscripten-core/emscripten/issues/16680
|
|
if sys.platform.startswith('linux') and "emscripten" not in os.environ.get("_PYTHON_HOST_PLATFORM", ""):
|
|
libraries.extend(['m', 'c'])
|
|
|
|
|
|
setup(
|
|
ext_modules=[Extension(
|
|
'spam',
|
|
sources=['spam.c'],
|
|
libraries=libraries,
|
|
{{ setup_py_extension_args_add | indent(8) }}
|
|
)],
|
|
{{ setup_py_setup_args_add | indent(4) }}
|
|
)
|
|
"""
|
|
|
|
SETUP_CFG_TEMPLATE = r"""
|
|
[metadata]
|
|
name = spam
|
|
version = 0.1.0
|
|
|
|
{{ setup_cfg_add }}
|
|
"""
|
|
|
|
|
|
def new_c_project(
|
|
*,
|
|
spam_c_top_level_add: str = "",
|
|
spam_c_function_add: str = "",
|
|
setup_py_add: str = "",
|
|
setup_py_extension_args_add: str = "",
|
|
setup_py_setup_args_add: str = "",
|
|
setup_cfg_add: str = "",
|
|
) -> TestProject:
|
|
project = TestProject()
|
|
|
|
project.files.update(
|
|
{
|
|
"spam.c": jinja2.Template(SPAM_C_TEMPLATE),
|
|
"setup.py": jinja2.Template(SETUP_PY_TEMPLATE),
|
|
"setup.cfg": jinja2.Template(SETUP_CFG_TEMPLATE),
|
|
}
|
|
)
|
|
|
|
project.template_context.update(
|
|
{
|
|
"spam_c_top_level_add": spam_c_top_level_add,
|
|
"spam_c_function_add": spam_c_function_add,
|
|
"setup_py_add": setup_py_add,
|
|
"setup_py_extension_args_add": setup_py_extension_args_add,
|
|
"setup_py_setup_args_add": setup_py_setup_args_add,
|
|
"setup_cfg_add": setup_cfg_add,
|
|
}
|
|
)
|
|
|
|
return project
|