meson-python 0.21.1__tar.gz → 0.22.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {meson_python-0.21.1 → meson_python-0.22.0}/.github/workflows/tests.yml +36 -23
- {meson_python-0.21.1 → meson_python-0.22.0}/.gitignore +1 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/.pre-commit-config.yaml +2 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/CHANGELOG.rst +15 -1
- {meson_python-0.21.1 → meson_python-0.22.0}/PKG-INFO +2 -2
- meson_python-0.22.0/RELEASE.rst +49 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/docs/about.rst +8 -1
- {meson_python-0.21.1 → meson_python-0.22.0}/docs/changelog.rst +15 -1
- meson_python-0.22.0/docs/how-to-guides/limited-api.rst +176 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/docs/how-to-guides/shared-libraries.rst +13 -11
- {meson_python-0.21.1 → meson_python-0.22.0}/docs/index.rst +3 -1
- {meson_python-0.21.1 → meson_python-0.22.0}/docs/reference/meson-compatibility.rst +10 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/docs/reference/pyproject-settings.rst +6 -5
- {meson_python-0.21.1 → meson_python-0.22.0}/docs/tutorials/introduction.rst +2 -1
- {meson_python-0.21.1 → meson_python-0.22.0}/mesonpy/__init__.py +86 -80
- {meson_python-0.21.1 → meson_python-0.22.0}/mesonpy/_editable.py +4 -7
- meson_python-0.22.0/mesonpy/_rpath.py +161 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/pyproject.toml +7 -2
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/conftest.py +5 -9
- meson_python-0.22.0/tests/packages/same-name-sharedlibs/meson.build +9 -0
- meson_python-0.22.0/tests/packages/same-name-sharedlibs/pyproject.toml +7 -0
- meson_python-0.22.0/tests/packages/same-name-sharedlibs/same_name/__init__.py +3 -0
- meson_python-0.22.0/tests/packages/same-name-sharedlibs/same_name/competing/choice.c +7 -0
- meson_python-0.22.0/tests/packages/same-name-sharedlibs/same_name/competing/meson.build +9 -0
- meson_python-0.22.0/tests/packages/same-name-sharedlibs/same_name/meson.build +23 -0
- meson_python-0.22.0/tests/packages/same-name-sharedlibs/same_name/module.c +24 -0
- meson_python-0.22.0/tests/packages/same-name-sharedlibs/same_name/private/choice.c +7 -0
- meson_python-0.22.0/tests/packages/same-name-sharedlibs/same_name/private/meson.build +9 -0
- meson_python-0.22.0/tests/packages/sharedlib-in-package/meson.build +12 -0
- meson_python-0.22.0/tests/packages/sharedlib-in-package/mypkg/__init__.py +51 -0
- meson_python-0.22.0/tests/packages/sharedlib-in-package/mypkg/_examplemod.c +38 -0
- meson_python-0.22.0/tests/packages/sharedlib-in-package/mypkg/meson.build +23 -0
- meson_python-0.22.0/tests/packages/sharedlib-in-package/mypkg/sub/meson.build +16 -0
- meson_python-0.22.0/tests/packages/sharedlib-in-package/mypkg/sub/mypkg_dll.h +23 -0
- meson_python-0.22.0/tests/packages/sharedlib-in-package/src/lib.c +10 -0
- meson_python-0.22.0/tests/packages/sharedlib-in-package/src/lib.h +13 -0
- meson_python-0.22.0/tests/packages/sharedlib-in-package/src/meson.build +46 -0
- meson_python-0.22.0/tests/packages/sharedlib-in-package/src/sublib.c +9 -0
- meson_python-0.22.0/tests/packages/sharedlib-in-package/src/sublib.h +13 -0
- {meson_python-0.21.1/tests/packages/sharedlib-in-package → meson_python-0.22.0/tests/packages/sharedlib-in-package-legacy}/meson.build +1 -1
- {meson_python-0.21.1/tests/packages/sharedlib-in-package → meson_python-0.22.0/tests/packages/sharedlib-in-package-legacy}/mypkg/meson.build +1 -1
- meson_python-0.22.0/tests/packages/subdirs/pyproject.toml +7 -0
- meson_python-0.22.0/tests/packages/symlinks/submodule/bbb.py +6 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/test_editable.py +0 -1
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/test_project.py +2 -4
- meson_python-0.22.0/tests/test_rpath.py +55 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/test_sdist.py +1 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/test_wheel.py +111 -10
- meson_python-0.21.1/RELEASE.rst +0 -58
- meson_python-0.21.1/mesonpy/_rpath.py +0 -89
- {meson_python-0.21.1 → meson_python-0.22.0}/.gitattributes +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/.github/workflows/docs.yml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/.github/workflows/pixi.lock +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/.github/workflows/pixi.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/.github/workflows/release.yml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/.github/workflows/zizmor.yml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/.github/zizmor.yml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/.mailmap +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/.vscode/settings.json +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/LICENSE +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/LICENSES/MIT.txt +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/README.rst +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/REUSE.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/codecov.yml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/docs/conf.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/docs/explanations/default-options.rst +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/docs/explanations/design-old.rst +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/docs/how-to-guides/config-settings.rst +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/docs/how-to-guides/contributing.rst +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/docs/how-to-guides/debug-builds.rst +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/docs/how-to-guides/editable-installs.rst +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/docs/how-to-guides/meson-args.rst +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/docs/how-to-guides/sdist.rst +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/docs/projects-using-meson-python.rst +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/docs/reference/config-settings.rst +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/docs/reference/environment-variables.rst +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/docs/reference/limitations.rst +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/mesonpy/_tags.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/mesonpy/_util.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/mesonpy/_wheelfile.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/__init__.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/cmake-subproject/cmakesubproject.pyx +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/cmake-subproject/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/cmake-subproject/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/cmake-subproject/subprojects/cmaketest/CMakeLists.txt +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/cmake-subproject/subprojects/cmaketest/cmaketest.cpp +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/cmake-subproject/subprojects/cmaketest/cmaketest.hpp +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/cmake-subproject/subprojects/cmaketest.wrap +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/complex/complex/__init__.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/complex/complex/more/__init__.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/complex/complex/more/baz.pyx +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/complex/complex/more/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/complex/complex/namespace/bar.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/complex/complex/namespace/foo.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/complex/extension.c +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/complex/foo.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/complex/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/complex/move.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/complex/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/complex/test.pyx +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/configure-data/configure_data.py.in +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/configure-data/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/configure-data/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/custom-target-dir/codegen.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/custom-target-dir/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/custom-target-dir/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/detect-compiler/detect_compiler.c +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/detect-compiler/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/detect-compiler/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/dist-script/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/dist-script/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/dynamic-version/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/dynamic-version/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/encoding/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/encoding/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/encoding//343/203/206/343/202/271/343/203/210.py" +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/executable/example.c +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/executable/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/executable/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/executable-bit/example-script.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/executable-bit/example.c +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/executable-bit/executable_module.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/executable-bit/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/executable-bit/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/full-metadata/LICENSE +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/full-metadata/README.md +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/full-metadata/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/full-metadata/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/generated-files/example-script.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/generated-files/example.c +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/generated-files/executable_module.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/generated-files/generate_version.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/generated-files/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/generated-files/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/imports-itself-during-build/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/imports-itself-during-build/plat.c +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/imports-itself-during-build/pure.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/imports-itself-during-build/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/install-data/__init__.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/install-data/data.txt +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/install-data/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/install-data/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/install-subdir/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/install-subdir/nested/deep/deep.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/install-subdir/nested/deep/excluded.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/install-subdir/nested/nested.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/install-subdir/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/install-subdir/strip/excluded.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/install-subdir/strip/module.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/install-subdir/subdir/__init__.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/install-subdir/subdir/excluded/__init__.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/install-subdir/subdir/excluded.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/install-subdir/subdir/test.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/library/example.c +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/library/examplelib.c +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/library/examplelib.h +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/library/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/library/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/license-file/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/license-file/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/license-file/something/LICENSE.custom +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/license-pep639/LICENSES/BSD-3-Clause.txt +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/license-pep639/LICENSES/MIT.txt +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/license-pep639/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/license-pep639/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/limited-api/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/limited-api/meson.options +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/limited-api/module.c +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/limited-api/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/limited-api-free-threaded/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/limited-api-free-threaded/module.c +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/limited-api-free-threaded/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/link-against-local-lib/__init__.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/link-against-local-lib/examplemod.c +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/link-against-local-lib/lib/examplelib.c +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/link-against-local-lib/lib/examplelib.h +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/link-against-local-lib/lib/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/link-against-local-lib/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/link-against-local-lib/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/link-library-in-subproject/foo/__init__.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/link-library-in-subproject/foo/_examplemod.c +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/link-library-in-subproject/foo/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/link-library-in-subproject/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/link-library-in-subproject/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/link-library-in-subproject/subprojects/bar/bar_dll.h +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/link-library-in-subproject/subprojects/bar/examplelib.c +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/link-library-in-subproject/subprojects/bar/examplelib.h +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/link-library-in-subproject/subprojects/bar/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/long-path/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/long-path/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/missing-dynamic-version/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/missing-dynamic-version/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/missing-meson-version/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/missing-meson-version/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/module-types/file.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/module-types/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/module-types/namespace/data.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/module-types/native.c +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/module-types/package/__init__.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/module-types/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/pure/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/pure/pure.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/pure/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/purelib-and-platlib/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/purelib-and-platlib/plat.c +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/purelib-and-platlib/pure.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/purelib-and-platlib/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/purelib-platlib-split/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/purelib-platlib-split/plat.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/purelib-platlib-split/pure.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/purelib-platlib-split/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/scipy-like/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/scipy-like/mypkg/__init__.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/scipy-like/mypkg/cy_extmod.pyx +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/scipy-like/mypkg/extmod.c +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/scipy-like/mypkg/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/scipy-like/mypkg/submod/__init__.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/scipy-like/mypkg/submod/unknown_filetype.npq +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/scipy-like/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/scipy-like/tools/generate_config.py +0 -0
- {meson_python-0.21.1/tests/packages/subdirs → meson_python-0.22.0/tests/packages/sharedlib-in-package}/pyproject.toml +0 -0
- {meson_python-0.21.1/tests/packages/sharedlib-in-package → meson_python-0.22.0/tests/packages/sharedlib-in-package-legacy}/mypkg/__init__.py +0 -0
- {meson_python-0.21.1/tests/packages/sharedlib-in-package → meson_python-0.22.0/tests/packages/sharedlib-in-package-legacy}/mypkg/_examplemod.c +0 -0
- {meson_python-0.21.1/tests/packages/sharedlib-in-package → meson_python-0.22.0/tests/packages/sharedlib-in-package-legacy}/mypkg/examplelib.c +0 -0
- {meson_python-0.21.1/tests/packages/sharedlib-in-package → meson_python-0.22.0/tests/packages/sharedlib-in-package-legacy}/mypkg/examplelib.h +0 -0
- {meson_python-0.21.1/tests/packages/sharedlib-in-package → meson_python-0.22.0/tests/packages/sharedlib-in-package-legacy}/mypkg/sub/examplelib2.c +0 -0
- {meson_python-0.21.1/tests/packages/sharedlib-in-package → meson_python-0.22.0/tests/packages/sharedlib-in-package-legacy}/mypkg/sub/examplelib2.h +0 -0
- {meson_python-0.21.1/tests/packages/sharedlib-in-package → meson_python-0.22.0/tests/packages/sharedlib-in-package-legacy}/mypkg/sub/meson.build +0 -0
- {meson_python-0.21.1/tests/packages/sharedlib-in-package → meson_python-0.22.0/tests/packages/sharedlib-in-package-legacy}/mypkg/sub/mypkg_dll.h +0 -0
- {meson_python-0.21.1/tests/packages/sharedlib-in-package → meson_python-0.22.0/tests/packages/sharedlib-in-package-legacy}/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/simple/__init__.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/simple/data.txt +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/simple/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/simple/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/simple/test.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/subdirs/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/subdirs/subdirs/__init__.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/subdirs/subdirs/a/__init__.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/subdirs/subdirs/a/b/c.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/subdirs/subdirs/b/c.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/subproject/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/subproject/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/subproject/subproject.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/subproject/subprojects/dep/data.txt +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/subproject/subprojects/dep/dep.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/subproject/subprojects/dep/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/symlinks/__init__.py +0 -0
- /meson_python-0.21.1/tests/packages/symlinks/submodule/aaa.py → /meson_python-0.22.0/tests/packages/symlinks/ccc.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/symlinks/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/symlinks/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/symlinks/submodule/__init__.py +0 -0
- /meson_python-0.21.1/tests/packages/symlinks/submodule/bbb.py → /meson_python-0.22.0/tests/packages/symlinks/submodule/aaa.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/unknown-user-args-meson-args/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/unknown-user-args-top-level/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/unsupported-python-version/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/unsupported-python-version/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/user-args/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/user-args/pure.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/user-args/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/vendored-meson/meson.build +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/vendored-meson/meson_options.txt +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/vendored-meson/pyproject.toml +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/packages/vendored-meson/third-party/meson.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/test_consistency.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/test_metadata.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/test_options.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/test_output.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/test_pep517.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/test_tags.py +0 -0
- {meson_python-0.21.1 → meson_python-0.22.0}/tests/test_wheelfile.py +0 -0
|
@@ -49,19 +49,15 @@ jobs:
|
|
|
49
49
|
# a job running on macOS on x86-64 for a while longer.
|
|
50
50
|
- macos-15-intel
|
|
51
51
|
python:
|
|
52
|
-
- '3.
|
|
52
|
+
- '3.10'
|
|
53
53
|
- '3.15'
|
|
54
54
|
meson:
|
|
55
55
|
-
|
|
56
56
|
dependencies:
|
|
57
57
|
-
|
|
58
58
|
include:
|
|
59
|
-
- os: ubuntu-latest
|
|
60
|
-
python: 'pypy-3.9'
|
|
61
59
|
- os: ubuntu-latest
|
|
62
60
|
python: 'pypy-3.11'
|
|
63
|
-
- os: ubuntu-latest
|
|
64
|
-
python: '3.10'
|
|
65
61
|
# Test with older supported Meson version. Meson up to
|
|
66
62
|
# version 1.2.3 requires distutils, which has been removed
|
|
67
63
|
# from the stdlib in Python 3.12, thus test with Pythn 3.11.
|
|
@@ -100,6 +96,15 @@ jobs:
|
|
|
100
96
|
- os: ubuntu-latest
|
|
101
97
|
python: '3.13'
|
|
102
98
|
meson: '~=1.8.0'
|
|
99
|
+
- os: ubuntu-latest
|
|
100
|
+
python: '3.13'
|
|
101
|
+
meson: '~=1.9.0'
|
|
102
|
+
- os: ubuntu-latest
|
|
103
|
+
python: '3.13'
|
|
104
|
+
meson: '~=1.10.0'
|
|
105
|
+
- os: ubuntu-latest
|
|
106
|
+
python: '3.13'
|
|
107
|
+
meson: '~=1.11.0'
|
|
103
108
|
# Test with Meson master branch.
|
|
104
109
|
- os: ubuntu-latest
|
|
105
110
|
python: '3.14'
|
|
@@ -205,7 +210,7 @@ jobs:
|
|
|
205
210
|
fail-fast: false
|
|
206
211
|
matrix:
|
|
207
212
|
python:
|
|
208
|
-
- '3.
|
|
213
|
+
- '3.12'
|
|
209
214
|
meson:
|
|
210
215
|
-
|
|
211
216
|
|
|
@@ -219,10 +224,11 @@ jobs:
|
|
|
219
224
|
uses: cygwin/cygwin-install-action@3f0a3f9f988f7e96b8c18098ae05eaec175f5b52 # v6
|
|
220
225
|
with:
|
|
221
226
|
packages: >-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
227
|
+
python312
|
|
228
|
+
python312-devel
|
|
229
|
+
python312-pip
|
|
230
|
+
python312-setuptools
|
|
231
|
+
python312-virtualenv
|
|
226
232
|
cmake
|
|
227
233
|
gcc-core
|
|
228
234
|
gcc-g++
|
|
@@ -261,16 +267,7 @@ jobs:
|
|
|
261
267
|
shell: C:\cygwin\bin\env.exe CYGWIN_NOWINPATH=1 CHERE_INVOKING=1 C:\cygwin\bin\bash.exe -leo pipefail -o igncr {0}
|
|
262
268
|
|
|
263
269
|
- name: Install
|
|
264
|
-
|
|
265
|
-
# wheels needed to initialize a new virtual environment in
|
|
266
|
-
# /usr/share/python-wheels/ but nothing in Cygwin actually
|
|
267
|
-
# puts the setuptools and pip wheels there. Fix this.
|
|
268
|
-
run: |
|
|
269
|
-
mkdir /usr/share/python-wheels/
|
|
270
|
-
pushd /usr/share/python-wheels/
|
|
271
|
-
python -m pip download setuptools pip
|
|
272
|
-
popd
|
|
273
|
-
python -m pip install . --group test
|
|
270
|
+
run: python -m pip install . --group test
|
|
274
271
|
shell: C:\cygwin\bin\env.exe CYGWIN_NOWINPATH=1 CHERE_INVOKING=1 C:\cygwin\bin\bash.exe -leo pipefail -o igncr {0}
|
|
275
272
|
|
|
276
273
|
- name: Run tests
|
|
@@ -283,7 +280,7 @@ jobs:
|
|
|
283
280
|
fail-fast: false
|
|
284
281
|
matrix:
|
|
285
282
|
python:
|
|
286
|
-
- '3.
|
|
283
|
+
- '3.10'
|
|
287
284
|
- '3.12'
|
|
288
285
|
meson:
|
|
289
286
|
-
|
|
@@ -327,13 +324,13 @@ jobs:
|
|
|
327
324
|
- name: Setup Python
|
|
328
325
|
uses: actions/setup-python@v7
|
|
329
326
|
with:
|
|
330
|
-
python-version: 3.
|
|
327
|
+
python-version: '3.10'
|
|
331
328
|
|
|
332
329
|
- name: Install dependencies
|
|
333
330
|
run: python -m pip install .
|
|
334
331
|
|
|
335
332
|
- name: Install mypy
|
|
336
|
-
run: python -m pip install mypy~=1
|
|
333
|
+
run: python -m pip install mypy~=2.3.1
|
|
337
334
|
|
|
338
335
|
- name: Run mypy
|
|
339
336
|
run: mypy -p mesonpy
|
|
@@ -355,3 +352,19 @@ jobs:
|
|
|
355
352
|
- name: Run tests
|
|
356
353
|
working-directory: .github/workflows
|
|
357
354
|
run: pixi run test
|
|
355
|
+
|
|
356
|
+
uv-sync:
|
|
357
|
+
runs-on: ubuntu-latest
|
|
358
|
+
steps:
|
|
359
|
+
- uses: actions/checkout@v7
|
|
360
|
+
with:
|
|
361
|
+
persist-credentials: false
|
|
362
|
+
|
|
363
|
+
- name: Install uv
|
|
364
|
+
uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
|
|
365
|
+
with:
|
|
366
|
+
enable-cache: false
|
|
367
|
+
version: "0.12.13" # Released on 2026-09-10
|
|
368
|
+
|
|
369
|
+
# Ensure that dependencies and dependency groups are consistent and resolvable.
|
|
370
|
+
- run: uv sync --all-extras --all-groups --dry-run
|
|
@@ -11,6 +11,19 @@
|
|
|
11
11
|
Changelog
|
|
12
12
|
+++++++++
|
|
13
13
|
|
|
14
|
+
0.22.0
|
|
15
|
+
======
|
|
16
|
+
|
|
17
|
+
- Add support for adding RPATH entries specified with ``install_rpath``
|
|
18
|
+
argument to Meson functions that accept it.
|
|
19
|
+
- Add support for removing build RPATH entries added by Meson to allow
|
|
20
|
+
executing parts of the project from the build directory.
|
|
21
|
+
- Fix corner cases in handling RPATH entries and relocation of shared
|
|
22
|
+
libraries distributed as part of Python packages.
|
|
23
|
+
|
|
24
|
+
Daniele Nicolodi, Mike Taves, Nathan Goldbaum, Ralf Gommers --- 25-09-2026.
|
|
25
|
+
|
|
26
|
+
|
|
14
27
|
0.21.1
|
|
15
28
|
======
|
|
16
29
|
|
|
@@ -30,8 +43,9 @@ Daniele Nicolodi, Ralf Gommers --- 11-09-2026.
|
|
|
30
43
|
build errors when rebuilding.
|
|
31
44
|
- Use ``.start`` files (PEP 829) instead of ``.pth`` files to implement editable
|
|
32
45
|
wheels for Python 3.15 and later.
|
|
46
|
+
- From this release onwards, SSH keys used to sign release tags.
|
|
33
47
|
|
|
34
|
-
Daniele Nicolodi, Michał Górny, Ralf Gommers ---
|
|
48
|
+
Daniele Nicolodi, Michał Górny, Ralf Gommers --- 07-09-2026.
|
|
35
49
|
|
|
36
50
|
|
|
37
51
|
0.20.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: meson-python
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.22.0
|
|
4
4
|
Summary: The Python build backend for Meson projects
|
|
5
5
|
Keywords: meson,build,backend,pep517,package
|
|
6
6
|
Maintainer-Email: Ralf Gommers <ralf.gommers@gmail.com>, Daniele Nicolodi <daniele@grinta.net>, Henry Schreiner <HenrySchreinerIII@gmail.com>
|
|
@@ -13,7 +13,7 @@ Project-URL: homepage, https://github.com/mesonbuild/meson-python
|
|
|
13
13
|
Project-URL: repository, https://github.com/mesonbuild/meson-python
|
|
14
14
|
Project-URL: documentation, https://mesonbuild.com/meson-python/
|
|
15
15
|
Project-URL: changelog, https://mesonbuild.com/meson-python/changelog.html
|
|
16
|
-
Requires-Python: >=3.
|
|
16
|
+
Requires-Python: >=3.10
|
|
17
17
|
Requires-Dist: meson>=0.64.0; python_version < "3.12"
|
|
18
18
|
Requires-Dist: meson>=1.2.3; python_version >= "3.12"
|
|
19
19
|
Requires-Dist: packaging>=23.2; sys_platform != "ios"
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
.. SPDX-FileCopyrightText: 2023 The meson-python developers
|
|
2
|
+
..
|
|
3
|
+
.. SPDX-License-Identifier: MIT
|
|
4
|
+
|
|
5
|
+
Release Process
|
|
6
|
+
===============
|
|
7
|
+
|
|
8
|
+
Releases are published as git tags, signed with either an SSH or a PGP key
|
|
9
|
+
belonging to a maintainer. The signing key must be registered on GitHub so that
|
|
10
|
+
GitHub shows the tag as verified.
|
|
11
|
+
|
|
12
|
+
You may release the project by following these steps:
|
|
13
|
+
|
|
14
|
+
#. Release to the Git repository on GitHub:
|
|
15
|
+
|
|
16
|
+
#. Create the release commit
|
|
17
|
+
|
|
18
|
+
#. Bump the versions in ``pyproject.toml`` and in ``mesonpy/__init__.py``.
|
|
19
|
+
#. Create ``CHANGELOG.rst`` section for the new release and fill it.
|
|
20
|
+
#. The commit message should read: ``REL: set version to X.Y.Z``
|
|
21
|
+
|
|
22
|
+
#. Create a signed tag for the release:
|
|
23
|
+
|
|
24
|
+
.. code-block:: console
|
|
25
|
+
|
|
26
|
+
$ git tag -s X.Y.Z
|
|
27
|
+
|
|
28
|
+
This signs with your PGP key by default. To sign with an SSH key instead,
|
|
29
|
+
configure git once beforehand:
|
|
30
|
+
|
|
31
|
+
.. code-block:: console
|
|
32
|
+
|
|
33
|
+
$ git config --global gpg.format ssh
|
|
34
|
+
$ git config --global user.signingkey ~/.ssh/id_ed25519.pub
|
|
35
|
+
|
|
36
|
+
The SSH signing key must be registered on
|
|
37
|
+
GitHub as a Signing Key for the tag to show as verified.
|
|
38
|
+
|
|
39
|
+
The tag title should follow the ``meson-python X.Y.Z`` format, and the
|
|
40
|
+
tag body should be a plain text version of the change-log for the current
|
|
41
|
+
release.
|
|
42
|
+
|
|
43
|
+
#. Push the tag to the repository:
|
|
44
|
+
|
|
45
|
+
.. code-block:: console
|
|
46
|
+
|
|
47
|
+
$ git push --tags
|
|
48
|
+
|
|
49
|
+
#. Release to PyPI is done via trusted publishing, triggering on the tag.
|
|
@@ -49,13 +49,20 @@ supported Python versions.
|
|
|
49
49
|
|
|
50
50
|
Distributors are recommended to fetch release sources from the
|
|
51
51
|
corresponding tags on the Git repository_ or from source distributions
|
|
52
|
-
on `PyPI`_.
|
|
52
|
+
on `PyPI`_. From ``0.21.0`` onwards, releases are published as signed tags,
|
|
53
|
+
signed with either an SSH or a PGP key belonging to `@rgommers`_ or
|
|
54
|
+
`@dnicolodi`_. Those signing keys can be retrieved from GitHub.
|
|
55
|
+
|
|
56
|
+
Releases up to and including ``0.20.0`` are PGP-signed with one of the
|
|
57
|
+
following keys:
|
|
53
58
|
|
|
54
59
|
- |3DCE51D60930EBA47858BA4146F633CBB0EB4BF2|_ Filipe Laíns
|
|
55
60
|
- |52BDC33FD1FBAB569D47FFA923D9E5499A08BDC5|_ Ralf Gommers
|
|
56
61
|
|
|
57
62
|
.. _repository: https://github.com/mesonbuild/meson-python
|
|
58
63
|
.. _PyPI: https://pypi.org/project/meson-python/
|
|
64
|
+
.. _@rgommers: https://github.com/rgommers
|
|
65
|
+
.. _@dnicolodi: https://github.com/dnicolodi
|
|
59
66
|
|
|
60
67
|
.. |3DCE51D60930EBA47858BA4146F633CBB0EB4BF2| replace:: ``3DCE51D60930EBA47858BA4146F633CBB0EB4BF2``
|
|
61
68
|
.. _3DCE51D60930EBA47858BA4146F633CBB0EB4BF2: https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3dce51d60930eba47858ba4146f633cbb0eb4bf2
|
|
@@ -11,6 +11,19 @@
|
|
|
11
11
|
Changelog
|
|
12
12
|
+++++++++
|
|
13
13
|
|
|
14
|
+
0.22.0
|
|
15
|
+
======
|
|
16
|
+
|
|
17
|
+
- Add support for adding RPATH entries specified with ``install_rpath``
|
|
18
|
+
argument to Meson functions that accept it.
|
|
19
|
+
- Add support for removing build RPATH entries added by Meson to allow
|
|
20
|
+
executing parts of the project from the build directory.
|
|
21
|
+
- Fix corner cases in handling RPATH entries and relocation of shared
|
|
22
|
+
libraries distributed as part of Python packages.
|
|
23
|
+
|
|
24
|
+
Daniele Nicolodi, Mike Taves, Nathan Goldbaum, Ralf Gommers --- 25-09-2026.
|
|
25
|
+
|
|
26
|
+
|
|
14
27
|
0.21.1
|
|
15
28
|
======
|
|
16
29
|
|
|
@@ -30,8 +43,9 @@ Daniele Nicolodi, Ralf Gommers --- 11-09-2026.
|
|
|
30
43
|
build errors when rebuilding.
|
|
31
44
|
- Use ``.start`` files (PEP 829) instead of ``.pth`` files to implement editable
|
|
32
45
|
wheels for Python 3.15 and later.
|
|
46
|
+
- From this release onwards, SSH keys used to sign release tags.
|
|
33
47
|
|
|
34
|
-
Daniele Nicolodi, Michał Górny, Ralf Gommers ---
|
|
48
|
+
Daniele Nicolodi, Michał Górny, Ralf Gommers --- 07-09-2026.
|
|
35
49
|
|
|
36
50
|
|
|
37
51
|
0.20.0
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
.. SPDX-FileCopyrightText: 2026 The meson-python developers
|
|
2
|
+
..
|
|
3
|
+
.. SPDX-License-Identifier: MIT
|
|
4
|
+
|
|
5
|
+
.. _howto-limited-api:
|
|
6
|
+
|
|
7
|
+
***********************************
|
|
8
|
+
Targeting the CPython Limited C API
|
|
9
|
+
***********************************
|
|
10
|
+
|
|
11
|
+
This page describes how to configure your package to build against the
|
|
12
|
+
CPython `limited API`_ and build `stable ABI`_ wheels. Limited API builds
|
|
13
|
+
target a minimum interpreter version and produce a single wheel that
|
|
14
|
+
can support newer interpreter versions.
|
|
15
|
+
|
|
16
|
+
You can enable limited API builds by default or make them opt-in.
|
|
17
|
+
We recommend making them opt-in to avoid failures or special handling
|
|
18
|
+
when building for interpreters that do not support the stable ABI, such
|
|
19
|
+
as free-threaded CPython 3.14. Using the version-specific C API can also
|
|
20
|
+
`improve performance`_ for source installations and distribution packages
|
|
21
|
+
that do not need the stable ABI.
|
|
22
|
+
|
|
23
|
+
Compile your extension modules for the limited API by specifying the
|
|
24
|
+
``limited_api`` argument to the ``extension_module()`` function in the
|
|
25
|
+
Meson Python module. The version passed to ``limited_api`` selects
|
|
26
|
+
the limited API your extension uses. Meson converts this version to
|
|
27
|
+
the corresponding value of the ``Py_LIMITED_API`` preprocessor macro.
|
|
28
|
+
|
|
29
|
+
The wheel's :ref:`Python compatibility tag <limited-api-wheel-tags>`
|
|
30
|
+
still corresponds to the interpreter used for the build, regardless of
|
|
31
|
+
the ``limited_api`` version you select.
|
|
32
|
+
|
|
33
|
+
Enabling the
|
|
34
|
+
:option:`tool.meson-python.limited-api` setting declares that all the
|
|
35
|
+
extension modules in your package target the limited API and adjusts the
|
|
36
|
+
wheel filename ABI tag accordingly:
|
|
37
|
+
|
|
38
|
+
.. code-block:: meson
|
|
39
|
+
|
|
40
|
+
py = import('python').find_installation(pure: false)
|
|
41
|
+
|
|
42
|
+
py.extension_module(
|
|
43
|
+
'_core',
|
|
44
|
+
'_core.c',
|
|
45
|
+
limited_api: '3.10',
|
|
46
|
+
install: true,
|
|
47
|
+
subdir: 'example',
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
.. code-block:: toml
|
|
51
|
+
|
|
52
|
+
[tool.meson-python]
|
|
53
|
+
limited-api = true
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
For limited API builds, on platforms where Python extension modules
|
|
57
|
+
targeting the stable ABI use a dedicated filename suffix, ``meson-python``
|
|
58
|
+
verifies that all the extension modules included in the wheel use the
|
|
59
|
+
stable ABI filename suffix and fails the build otherwise.
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
.. _opt-in-limited-api-example:
|
|
63
|
+
|
|
64
|
+
Set up Limited API support as opt-in
|
|
65
|
+
------------------------------------
|
|
66
|
+
|
|
67
|
+
To make limited API builds opt-in, add
|
|
68
|
+
``python.allow_limited_api=false`` to the ``default_options`` in your
|
|
69
|
+
existing ``project()`` call in ``meson.build``:
|
|
70
|
+
|
|
71
|
+
.. code-block:: meson
|
|
72
|
+
|
|
73
|
+
project(
|
|
74
|
+
'example',
|
|
75
|
+
'c',
|
|
76
|
+
default_options: ['python.allow_limited_api=false'],
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
Keep ``limited-api = true`` in ``pyproject.toml`` and the ``limited_api``
|
|
80
|
+
argument to ``extension_module()`` as shown above. When
|
|
81
|
+
``python.allow_limited_api`` is false, Meson ignores the ``limited_api``
|
|
82
|
+
argument, compiles extension modules for the ABI of the interpreter
|
|
83
|
+
used for the build, and produces a wheel tagged as compatible with
|
|
84
|
+
the build interpreter.
|
|
85
|
+
|
|
86
|
+
To build a stable ABI wheel, explicitly enable limited API builds:
|
|
87
|
+
|
|
88
|
+
.. tab-set::
|
|
89
|
+
|
|
90
|
+
.. tab-item:: pypa/build
|
|
91
|
+
:sync: key_pypa_build
|
|
92
|
+
|
|
93
|
+
.. code-block:: console
|
|
94
|
+
|
|
95
|
+
$ python -m build --wheel -Csetup-args="-Dpython.allow_limited_api=true" .
|
|
96
|
+
|
|
97
|
+
.. tab-item:: pip
|
|
98
|
+
:sync: key_pip
|
|
99
|
+
|
|
100
|
+
.. code-block:: console
|
|
101
|
+
|
|
102
|
+
$ python -m pip wheel -Csetup-args="-Dpython.allow_limited_api=true" .
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
.. _limited-api-wheel-tags:
|
|
106
|
+
|
|
107
|
+
Limited API compatibility
|
|
108
|
+
-------------------------
|
|
109
|
+
|
|
110
|
+
``meson-python`` conservatively chooses the wheel's Python compatibility
|
|
111
|
+
tag based only on the interpreter used for the build, regardless of the
|
|
112
|
+
target ``limited_api`` version. For example, a wheel built with CPython
|
|
113
|
+
3.12 for the 3.10 limited API is tagged ``cp312-abi3`` and can be
|
|
114
|
+
installed only on GIL-enabled CPython 3.12 and later. When building
|
|
115
|
+
stable ABI wheels for distribution, for example on PyPI, build with the
|
|
116
|
+
oldest CPython version you want the wheel to support, as `recommended by
|
|
117
|
+
CPython`_. If you are installing from source into a particular
|
|
118
|
+
environment, use that environment's interpreter; you do not need to
|
|
119
|
+
build with the oldest supported version.
|
|
120
|
+
|
|
121
|
+
PyPy supports the limited API, but does not implement a stable ABI, thus
|
|
122
|
+
the :option:`tool.meson-python.limited-api` setting has no effect on the
|
|
123
|
+
wheel tags when building with PyPy.
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
The ``abi3t`` stable ABI
|
|
127
|
+
------------------------
|
|
128
|
+
|
|
129
|
+
CPython 3.15 introduces the ``abi3t`` stable ABI. Extension modules built
|
|
130
|
+
for ``abi3t`` can be loaded by both the GIL-enabled and the free-threaded
|
|
131
|
+
builds of CPython 3.15 and later: a single wheel tagged ``abi3.abi3t``
|
|
132
|
+
supports all CPython interpreters from version 3.15 on.
|
|
133
|
+
|
|
134
|
+
``abi3t`` extension modules require limited API version 3.15 or later
|
|
135
|
+
and, currently, a free-threaded interpreter for the build: compiling
|
|
136
|
+
for ``abi3t`` with a GIL-enabled interpreter is not supported yet.
|
|
137
|
+
Once you have made the source changes described in the
|
|
138
|
+
`abi3t migration guide`_, no additional build configuration is required:
|
|
139
|
+
the CPython headers select ``abi3t`` when ``Py_LIMITED_API`` is defined
|
|
140
|
+
while compiling for a free-threaded interpreter.
|
|
141
|
+
|
|
142
|
+
Meson refuses a ``limited_api`` version newer than the interpreter
|
|
143
|
+
used for the build. If you build ``abi3`` wheels for older
|
|
144
|
+
CPython versions and ``abi3.abi3t`` wheels for CPython 3.15 and later,
|
|
145
|
+
you can select the limited API version by querying the ``Py_GIL_DISABLED``
|
|
146
|
+
sysconfig variable, which is 1 for free-threaded builds:
|
|
147
|
+
|
|
148
|
+
.. code-block:: meson
|
|
149
|
+
|
|
150
|
+
py = import('python').find_installation(pure: false)
|
|
151
|
+
|
|
152
|
+
limited_api = '3.10'
|
|
153
|
+
if py.language_version().version_compare('>=3.15')
|
|
154
|
+
if py.get_variable('Py_GIL_DISABLED') == 1
|
|
155
|
+
limited_api = '3.15'
|
|
156
|
+
endif
|
|
157
|
+
endif
|
|
158
|
+
|
|
159
|
+
py.extension_module(
|
|
160
|
+
'_core',
|
|
161
|
+
'_core.c',
|
|
162
|
+
limited_api: limited_api,
|
|
163
|
+
install: true,
|
|
164
|
+
subdir: 'example',
|
|
165
|
+
)
|
|
166
|
+
|
|
167
|
+
Free-threaded CPython 3.13 and 3.14 do not support the limited API:
|
|
168
|
+
disable limited API builds when using these interpreters.
|
|
169
|
+
The :ref:`opt-in configuration above <opt-in-limited-api-example>`
|
|
170
|
+
disables them by default.
|
|
171
|
+
|
|
172
|
+
.. _limited API: https://docs.python.org/3/c-api/stable.html#limited-c-api
|
|
173
|
+
.. _stable ABI: https://docs.python.org/3/c-api/stable.html#stable-application-binary-interface
|
|
174
|
+
.. _recommended by CPython: https://docs.python.org/3/c-api/stable.html#limited-api-caveats
|
|
175
|
+
.. _improve performance: https://docs.python.org/3/c-api/stable.html#limited-api-scope-and-performance
|
|
176
|
+
.. _abi3t migration guide: https://docs.python.org/3.15/howto/abi3t-migration.html
|
|
@@ -67,11 +67,7 @@ is to be used inside the Python package being built, then it is best to modify
|
|
|
67
67
|
the install location, via the ``install_dir`` argument, to be within
|
|
68
68
|
the Python package itself:
|
|
69
69
|
|
|
70
|
-
..
|
|
71
|
-
.. meson lexer is updated to fix
|
|
72
|
-
.. https://github.com/pygments/pygments/issues/2918
|
|
73
|
-
|
|
74
|
-
.. code-block:: text
|
|
70
|
+
.. code-block:: meson
|
|
75
71
|
|
|
76
72
|
example_lib = shared_library(
|
|
77
73
|
'example',
|
|
@@ -80,8 +76,9 @@ the Python package itself:
|
|
|
80
76
|
install_dir: py.get_install_dir() / 'mypkg/subdir',
|
|
81
77
|
)
|
|
82
78
|
|
|
83
|
-
|
|
84
|
-
|
|
79
|
+
On Linux, macOS, and in general on all systems except Windows, an extension
|
|
80
|
+
module can dynamically link against a shared library installed in the same
|
|
81
|
+
package by using ``install_rpath`` with a relative path:
|
|
85
82
|
|
|
86
83
|
.. code-block:: meson
|
|
87
84
|
|
|
@@ -90,12 +87,17 @@ shared library in a portable manner by using ``install_rpath``:
|
|
|
90
87
|
link_with: example_lib,
|
|
91
88
|
install: true,
|
|
92
89
|
subdir: 'mypkg/subdir',
|
|
93
|
-
install_rpath: '$ORIGIN'
|
|
90
|
+
install_rpath: host_machine.system() == 'darwin' ? '@loader_path' : '$ORIGIN'
|
|
94
91
|
)
|
|
95
92
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
the
|
|
93
|
+
Note that Mach-O binaries on macOS use the ``@loader_path`` token to indicate
|
|
94
|
+
the location of the current executable or shared library while ELF binaries use
|
|
95
|
+
the ``$ORIGIN`` token. For backward compatibility, ``meson-python`` translates
|
|
96
|
+
the more common ``$ORIGIN`` token to the macOS-specific ``@loader_path`` token
|
|
97
|
+
when building on macOS. However, Meson itself does not, thus relying on this
|
|
98
|
+
translation is discouraged.
|
|
99
|
+
|
|
100
|
+
Windows needs some special handling though, due to the lack of RPATH support:
|
|
99
101
|
|
|
100
102
|
.. literalinclude:: ../../tests/packages/sharedlib-in-package/mypkg/__init__.py
|
|
101
103
|
:start-after: start-literalinclude
|
|
@@ -55,7 +55,8 @@ can be overridden and extended using the standard package metadata format in the
|
|
|
55
55
|
version = '1.0.0'
|
|
56
56
|
description = 'Example package using the meson-python build backend'
|
|
57
57
|
readme = 'README.rst'
|
|
58
|
-
license =
|
|
58
|
+
license = 'MIT'
|
|
59
|
+
license-files = ['LICENSE.txt']
|
|
59
60
|
authors = [
|
|
60
61
|
{name = 'Au Thor', email = 'author@example.com'},
|
|
61
62
|
]
|
|
@@ -83,6 +84,7 @@ the use of ``meson-python`` and Meson for Python packaging.
|
|
|
83
84
|
how-to-guides/meson-args
|
|
84
85
|
how-to-guides/debug-builds
|
|
85
86
|
how-to-guides/shared-libraries
|
|
87
|
+
how-to-guides/limited-api
|
|
86
88
|
reference/limitations
|
|
87
89
|
projects-using-meson-python
|
|
88
90
|
|
|
@@ -52,10 +52,20 @@ versions.
|
|
|
52
52
|
populate the package license and license files from the ones
|
|
53
53
|
declared via the ``project()`` call in ``meson.build``.
|
|
54
54
|
|
|
55
|
+
Meson 1.6.0 or later is also required to support the
|
|
56
|
+
``install_rpath`` argument to Meson functions that accept it, such
|
|
57
|
+
as ``library()`` and ``extension_module()``. On older Meson
|
|
58
|
+
versions, this argument has no effect.
|
|
59
|
+
|
|
55
60
|
.. option:: 1.9.0
|
|
56
61
|
|
|
57
62
|
Meson 1.9.0 or later is required to support building for iOS.
|
|
58
63
|
|
|
64
|
+
Meson 1.9.0 or later is also required to remove RPATH entries that
|
|
65
|
+
are added by Meson to allow executing parts of the project from
|
|
66
|
+
the build directory and that are normally removed during ``meson
|
|
67
|
+
install``. On older Meson versions, these entries are not removed.
|
|
68
|
+
|
|
59
69
|
Build front-ends by default build packages in an isolated Python
|
|
60
70
|
environment where build dependencies are installed. Most often, unless
|
|
61
71
|
a package or its build dependencies declare explicitly a version
|
|
@@ -40,11 +40,12 @@ use them and examples.
|
|
|
40
40
|
modules can be compiled for the Python limited API specifying the
|
|
41
41
|
``limited_api`` argument to the |extension_module()|_ function
|
|
42
42
|
in the Meson Python module. When this setting is set to true, the
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
Python wheel filename ABI tag is set to ``abi3``, or ``abi3.abi3t``
|
|
44
|
+
when building with free-threaded CPython 3.15 or later. This
|
|
45
|
+
setting is automatically reverted to false when the
|
|
46
46
|
``-Dpython.allow_limited_api=false`` option is passed to ``meson
|
|
47
|
-
setup``.
|
|
47
|
+
setup``. See :ref:`howto-limited-api` for more information on limited
|
|
48
|
+
API builds.
|
|
48
49
|
|
|
49
50
|
.. option:: tool.meson-python.meson
|
|
50
51
|
|
|
@@ -98,7 +99,7 @@ use them and examples.
|
|
|
98
99
|
glob pattern is useful exclusively to limit the effect of an exclude
|
|
99
100
|
pattern that matches too many files.
|
|
100
101
|
|
|
101
|
-
.. _python limited api: https://docs.python.org/3/c-api/stable.html
|
|
102
|
+
.. _python limited api: https://docs.python.org/3/c-api/stable.html#stable-application-binary-interface
|
|
102
103
|
.. _extension_module(): `https://mesonbuild.com/Python-module.html#extension_module
|
|
103
104
|
.. _meson introspection data: https://mesonbuild.com/IDE-integration.html#install-plan
|
|
104
105
|
|
|
@@ -139,7 +139,8 @@ self-explanatory:
|
|
|
139
139
|
description = 'Our first Python project, using meson-python!'
|
|
140
140
|
readme = 'README.md'
|
|
141
141
|
requires-python = '>=3.8'
|
|
142
|
-
license =
|
|
142
|
+
license = 'MIT'
|
|
143
|
+
license-files = ['LICENSE.txt']
|
|
143
144
|
authors = [
|
|
144
145
|
{name = 'Bowsette Koopa', email = 'bowsette@example.com'},
|
|
145
146
|
]
|