meson-python 0.16.0__tar.gz → 0.17.1__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.
Files changed (215) hide show
  1. {meson_python-0.16.0 → meson_python-0.17.1}/.cirrus.yml +4 -4
  2. {meson_python-0.16.0 → meson_python-0.17.1}/.github/workflows/docs.yml +4 -4
  3. {meson_python-0.16.0 → meson_python-0.17.1}/.github/workflows/tests.yml +48 -33
  4. {meson_python-0.16.0 → meson_python-0.17.1}/.pre-commit-config.yaml +5 -4
  5. {meson_python-0.16.0 → meson_python-0.17.1}/CHANGELOG.rst +35 -1
  6. {meson_python-0.16.0 → meson_python-0.17.1}/PKG-INFO +30 -29
  7. meson_python-0.16.0/docs/contributing/release-process.rst → meson_python-0.17.1/RELEASE.rst +8 -18
  8. {meson_python-0.16.0 → meson_python-0.17.1}/ci/alpine-3.docker +1 -1
  9. {meson_python-0.16.0 → meson_python-0.17.1}/ci/manylinux.docker +1 -1
  10. {meson_python-0.16.0 → meson_python-0.17.1}/ci/opensuse-15.docker +1 -1
  11. {meson_python-0.16.0 → meson_python-0.17.1}/docs/conf.py +7 -1
  12. {meson_python-0.16.0 → meson_python-0.17.1}/docs/explanations/design-old.rst +0 -15
  13. meson_python-0.17.1/docs/how-to-guides/config-settings.rst +128 -0
  14. meson_python-0.17.1/docs/how-to-guides/sdist.rst +54 -0
  15. {meson_python-0.16.0 → meson_python-0.17.1}/docs/index.rst +1 -1
  16. {meson_python-0.16.0 → meson_python-0.17.1}/docs/reference/config-settings.rst +0 -4
  17. {meson_python-0.16.0 → meson_python-0.17.1}/docs/tutorials/introduction.rst +13 -0
  18. {meson_python-0.16.0 → meson_python-0.17.1}/meson.build +1 -1
  19. {meson_python-0.16.0 → meson_python-0.17.1}/mesonpy/__init__.py +111 -85
  20. {meson_python-0.16.0 → meson_python-0.17.1}/mesonpy/_editable.py +18 -14
  21. {meson_python-0.16.0 → meson_python-0.17.1}/mesonpy/_tags.py +2 -1
  22. {meson_python-0.16.0 → meson_python-0.17.1}/mesonpy/_util.py +5 -1
  23. {meson_python-0.16.0 → meson_python-0.17.1}/pyproject.toml +3 -2
  24. {meson_python-0.16.0 → meson_python-0.17.1}/tests/conftest.py +19 -0
  25. meson_python-0.17.1/tests/packages/complex/extension.c +33 -0
  26. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/complex/meson.build +7 -0
  27. meson_python-0.17.1/tests/packages/long-path/meson.build +5 -0
  28. meson_python-0.17.1/tests/packages/long-path/pyproject.toml +11 -0
  29. {meson_python-0.16.0 → meson_python-0.17.1}/tests/test_editable.py +65 -15
  30. {meson_python-0.16.0 → meson_python-0.17.1}/tests/test_metadata.py +9 -1
  31. {meson_python-0.16.0 → meson_python-0.17.1}/tests/test_pep517.py +48 -0
  32. {meson_python-0.16.0 → meson_python-0.17.1}/tests/test_project.py +1 -1
  33. {meson_python-0.16.0 → meson_python-0.17.1}/tests/test_sdist.py +74 -34
  34. {meson_python-0.16.0 → meson_python-0.17.1}/tests/test_tags.py +4 -2
  35. {meson_python-0.16.0 → meson_python-0.17.1}/tests/test_wheel.py +5 -0
  36. meson_python-0.16.0/docs/changelog.rst +0 -351
  37. meson_python-0.16.0/docs/contributing/index.rst +0 -11
  38. meson_python-0.16.0/docs/how-to-guides/config-settings.rst +0 -61
  39. {meson_python-0.16.0 → meson_python-0.17.1}/.gitignore +0 -0
  40. {meson_python-0.16.0 → meson_python-0.17.1}/.mailmap +0 -0
  41. {meson_python-0.16.0 → meson_python-0.17.1}/.readthedocs.yaml +0 -0
  42. {meson_python-0.16.0 → meson_python-0.17.1}/LICENSE +0 -0
  43. {meson_python-0.16.0 → meson_python-0.17.1}/LICENSES/MIT.txt +0 -0
  44. {meson_python-0.16.0 → meson_python-0.17.1}/README.rst +0 -0
  45. {meson_python-0.16.0 → meson_python-0.17.1}/ci/archlinux.docker +0 -0
  46. {meson_python-0.16.0 → meson_python-0.17.1}/ci/debian-11.docker +0 -0
  47. {meson_python-0.16.0 → meson_python-0.17.1}/ci/debian-12.docker +0 -0
  48. {meson_python-0.16.0 → meson_python-0.17.1}/ci/debian-unstable.docker +0 -0
  49. {meson_python-0.16.0 → meson_python-0.17.1}/ci/fedora-37.docker +0 -0
  50. {meson_python-0.16.0 → meson_python-0.17.1}/ci/miniconda.docker +0 -0
  51. {meson_python-0.16.0 → meson_python-0.17.1}/codecov.yml +0 -0
  52. {meson_python-0.16.0 → meson_python-0.17.1}/docs/about.rst +0 -0
  53. {meson_python-0.16.0 → meson_python-0.17.1}/docs/examples/spam/meson.build +0 -0
  54. {meson_python-0.16.0 → meson_python-0.17.1}/docs/examples/spam/pyproject.toml +0 -0
  55. {meson_python-0.16.0 → meson_python-0.17.1}/docs/examples/spam/src/__init__.py +0 -0
  56. {meson_python-0.16.0 → meson_python-0.17.1}/docs/examples/spam/src/spammodule.c +0 -0
  57. {meson_python-0.16.0 → meson_python-0.17.1}/docs/explanations/default-options.rst +0 -0
  58. {meson_python-0.16.0 → meson_python-0.17.1}/docs/how-to-guides/debug-builds.rst +0 -0
  59. {meson_python-0.16.0 → meson_python-0.17.1}/docs/how-to-guides/editable-installs.rst +0 -0
  60. {meson_python-0.16.0 → meson_python-0.17.1}/docs/how-to-guides/meson-args.rst +0 -0
  61. {meson_python-0.16.0 → meson_python-0.17.1}/docs/projects-using-meson-python.rst +0 -0
  62. {meson_python-0.16.0 → meson_python-0.17.1}/docs/reference/environment-variables.rst +0 -0
  63. {meson_python-0.16.0 → meson_python-0.17.1}/docs/reference/limitations.rst +0 -0
  64. {meson_python-0.16.0 → meson_python-0.17.1}/docs/reference/meson-compatibility.rst +0 -0
  65. {meson_python-0.16.0 → meson_python-0.17.1}/docs/reference/pyproject-settings.rst +0 -0
  66. {meson_python-0.16.0 → meson_python-0.17.1}/docs/spelling_wordlist.txt +0 -0
  67. {meson_python-0.16.0 → meson_python-0.17.1}/docs/spelling_wordlist.txt.license +0 -0
  68. {meson_python-0.16.0 → meson_python-0.17.1}/docs/static/css/contributors.css +0 -0
  69. {meson_python-0.16.0 → meson_python-0.17.1}/mesonpy/_compat.py +0 -0
  70. {meson_python-0.16.0 → meson_python-0.17.1}/mesonpy/_rpath.py +0 -0
  71. {meson_python-0.16.0 → meson_python-0.17.1}/mesonpy/_wheelfile.py +0 -0
  72. {meson_python-0.16.0 → meson_python-0.17.1}/noxfile.py +0 -0
  73. {meson_python-0.16.0 → meson_python-0.17.1}/tests/__init__.py +0 -0
  74. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/complex/complex/__init__.py +0 -0
  75. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/complex/complex/more/__init__.py +0 -0
  76. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/complex/complex/more/baz.pyx +0 -0
  77. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/complex/complex/more/meson.build +0 -0
  78. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/complex/complex/namespace/bar.py +0 -0
  79. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/complex/complex/namespace/foo.py +0 -0
  80. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/complex/foo.py +0 -0
  81. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/complex/move.py +0 -0
  82. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/complex/pyproject.toml +0 -0
  83. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/complex/test.pyx +0 -0
  84. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/configure-data/configure_data.py.in +0 -0
  85. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/configure-data/meson.build +0 -0
  86. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/configure-data/pyproject.toml +0 -0
  87. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/custom-target-dir/codegen.py +0 -0
  88. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/custom-target-dir/meson.build +0 -0
  89. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/custom-target-dir/pyproject.toml +0 -0
  90. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/detect-compiler/detect_compiler.c +0 -0
  91. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/detect-compiler/meson.build +0 -0
  92. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/detect-compiler/pyproject.toml +0 -0
  93. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/dist-script/meson.build +0 -0
  94. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/dist-script/pyproject.toml +0 -0
  95. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/dynamic-version/meson.build +0 -0
  96. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/dynamic-version/pyproject.toml +0 -0
  97. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/encoding/meson.build +0 -0
  98. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/encoding/pyproject.toml +0 -0
  99. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/encoding//343/203/206/343/202/271/343/203/210.py" +0 -0
  100. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/executable/example.c +0 -0
  101. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/executable/meson.build +0 -0
  102. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/executable/pyproject.toml +0 -0
  103. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/executable-bit/example-script.py +0 -0
  104. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/executable-bit/example.c +0 -0
  105. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/executable-bit/executable_module.py +0 -0
  106. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/executable-bit/meson.build +0 -0
  107. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/executable-bit/pyproject.toml +0 -0
  108. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/full-metadata/LICENSE +0 -0
  109. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/full-metadata/README.md +0 -0
  110. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/full-metadata/meson.build +0 -0
  111. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/full-metadata/pyproject.toml +0 -0
  112. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/generated-files/example-script.py +0 -0
  113. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/generated-files/example.c +0 -0
  114. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/generated-files/executable_module.py +0 -0
  115. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/generated-files/generate_version.py +0 -0
  116. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/generated-files/meson.build +0 -0
  117. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/generated-files/pyproject.toml +0 -0
  118. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/imports-itself-during-build/meson.build +0 -0
  119. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/imports-itself-during-build/plat.c +0 -0
  120. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/imports-itself-during-build/pure.py +0 -0
  121. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/imports-itself-during-build/pyproject.toml +0 -0
  122. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/install-subdir/meson.build +0 -0
  123. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/install-subdir/nested/deep/deep.py +0 -0
  124. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/install-subdir/nested/deep/excluded.py +0 -0
  125. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/install-subdir/nested/nested.py +0 -0
  126. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/install-subdir/pyproject.toml +0 -0
  127. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/install-subdir/strip/excluded.py +0 -0
  128. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/install-subdir/strip/module.py +0 -0
  129. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/install-subdir/subdir/__init__.py +0 -0
  130. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/install-subdir/subdir/excluded/__init__.py +0 -0
  131. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/install-subdir/subdir/excluded.py +0 -0
  132. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/install-subdir/subdir/test.py +0 -0
  133. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/library/example.c +0 -0
  134. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/library/examplelib.c +0 -0
  135. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/library/examplelib.h +0 -0
  136. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/library/meson.build +0 -0
  137. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/library/pyproject.toml +0 -0
  138. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/license-file/meson.build +0 -0
  139. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/license-file/pyproject.toml +0 -0
  140. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/license-file/something/LICENSE.custom +0 -0
  141. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/limited-api/meson.build +0 -0
  142. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/limited-api/meson.options +0 -0
  143. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/limited-api/module.c +0 -0
  144. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/limited-api/pyproject.toml +0 -0
  145. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/link-against-local-lib/examplemod.c +0 -0
  146. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/link-against-local-lib/lib/examplelib.c +0 -0
  147. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/link-against-local-lib/lib/examplelib.h +0 -0
  148. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/link-against-local-lib/lib/meson.build +0 -0
  149. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/link-against-local-lib/meson.build +0 -0
  150. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/link-against-local-lib/pyproject.toml +0 -0
  151. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/missing-dynamic-version/meson.build +0 -0
  152. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/missing-dynamic-version/pyproject.toml +0 -0
  153. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/missing-meson-version/meson.build +0 -0
  154. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/missing-meson-version/pyproject.toml +0 -0
  155. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/missing-version/meson.build +0 -0
  156. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/missing-version/pyproject.toml +0 -0
  157. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/module-types/file.py +0 -0
  158. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/module-types/meson.build +0 -0
  159. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/module-types/namespace/data.py +0 -0
  160. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/module-types/native.c +0 -0
  161. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/module-types/package/__init__.py +0 -0
  162. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/module-types/pyproject.toml +0 -0
  163. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/pure/meson.build +0 -0
  164. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/pure/pure.py +0 -0
  165. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/pure/pyproject.toml +0 -0
  166. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/purelib-and-platlib/meson.build +0 -0
  167. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/purelib-and-platlib/plat.c +0 -0
  168. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/purelib-and-platlib/pure.py +0 -0
  169. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/purelib-and-platlib/pyproject.toml +0 -0
  170. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/purelib-platlib-split/meson.build +0 -0
  171. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/purelib-platlib-split/plat.py +0 -0
  172. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/purelib-platlib-split/pure.py +0 -0
  173. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/purelib-platlib-split/pyproject.toml +0 -0
  174. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/scipy-like/meson.build +0 -0
  175. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/scipy-like/mypkg/__init__.py +0 -0
  176. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/scipy-like/mypkg/cy_extmod.pyx +0 -0
  177. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/scipy-like/mypkg/extmod.c +0 -0
  178. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/scipy-like/mypkg/meson.build +0 -0
  179. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/scipy-like/mypkg/submod/__init__.py +0 -0
  180. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/scipy-like/mypkg/submod/unknown_filetype.npq +0 -0
  181. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/scipy-like/pyproject.toml +0 -0
  182. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/scipy-like/tools/generate_config.py +0 -0
  183. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/simple/__init__.py +0 -0
  184. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/simple/data.txt +0 -0
  185. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/simple/data.txt.license +0 -0
  186. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/simple/meson.build +0 -0
  187. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/simple/pyproject.toml +0 -0
  188. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/simple/test.py +0 -0
  189. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/subdirs/meson.build +0 -0
  190. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/subdirs/pyproject.toml +0 -0
  191. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/subdirs/subdirs/__init__.py +0 -0
  192. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/subdirs/subdirs/a/__init__.py +0 -0
  193. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/subdirs/subdirs/a/b/c.py +0 -0
  194. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/subdirs/subdirs/b/c.py +0 -0
  195. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/subproject/meson.build +0 -0
  196. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/subproject/pyproject.toml +0 -0
  197. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/subproject/subproject.py +0 -0
  198. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/subproject/subprojects/dep/dep.py +0 -0
  199. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/subproject/subprojects/dep/meson.build +0 -0
  200. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/unknown-user-args-meson-args/pyproject.toml +0 -0
  201. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/unknown-user-args-top-level/pyproject.toml +0 -0
  202. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/unsupported-python-version/meson.build +0 -0
  203. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/unsupported-python-version/pyproject.toml +0 -0
  204. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/user-args/meson.build +0 -0
  205. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/user-args/pure.py +0 -0
  206. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/user-args/pyproject.toml +0 -0
  207. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/vendored-meson/meson.build +0 -0
  208. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/vendored-meson/meson_options.txt +0 -0
  209. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/vendored-meson/pyproject.toml +0 -0
  210. {meson_python-0.16.0 → meson_python-0.17.1}/tests/packages/vendored-meson/third-party/meson.py +0 -0
  211. {meson_python-0.16.0 → meson_python-0.17.1}/tests/test_consistency.py +0 -0
  212. {meson_python-0.16.0 → meson_python-0.17.1}/tests/test_examples.py +0 -0
  213. {meson_python-0.16.0 → meson_python-0.17.1}/tests/test_options.py +0 -0
  214. {meson_python-0.16.0 → meson_python-0.17.1}/tests/test_output.py +0 -0
  215. {meson_python-0.16.0 → meson_python-0.17.1}/tests/test_wheelfile.py +0 -0
@@ -47,12 +47,12 @@ fedora-37_task:
47
47
  cpu: 1
48
48
  << : *test
49
49
 
50
- manylinux-python3.11_task:
50
+ manylinux-python3.13t_task:
51
51
  container:
52
52
  dockerfile: ci/manylinux.docker
53
53
  cpu: 1
54
54
  env:
55
- PATH: "/opt/python/cp311-cp311/bin/:${PATH}"
55
+ PATH: "/opt/python/cp313-cp313t/bin/:${PATH}"
56
56
  << : *test
57
57
 
58
58
  manylinux-python3.7_task:
@@ -77,12 +77,12 @@ opensuse-15_task:
77
77
 
78
78
  freebsd_task:
79
79
  freebsd_instance:
80
- image_family: freebsd-13-2
80
+ image_family: freebsd-14-0
81
81
  install_script: pkg install -y git ninja
82
82
  << : *test
83
83
 
84
84
  macos-arm64_task:
85
85
  macos_instance:
86
- image: ghcr.io/cirruslabs/macos-ventura-xcode
86
+ image: ghcr.io/cirruslabs/macos-sonoma-xcode
87
87
  install_script: brew install git ninja python@3.11
88
88
  << : *test
@@ -31,10 +31,10 @@ jobs:
31
31
  python-version: '3.11'
32
32
  - uses: actions/checkout@v4
33
33
  with:
34
- ref: ${{ github.event.push.tag || github.event.inputs.tag }}
34
+ ref: ${{ github.event.inputs.tag || github.ref }}
35
35
  - run: python -m pip install .[docs]
36
36
  - run: python -m sphinx -W docs/ build/docs/
37
- - uses: actions/upload-pages-artifact@v2
37
+ - uses: actions/upload-pages-artifact@v3
38
38
  with:
39
39
  path: build/docs/
40
40
 
@@ -46,6 +46,6 @@ jobs:
46
46
  environment:
47
47
  name: github-pages
48
48
  runs-on: ubuntu-latest
49
- if: ${{ github.event.push.tag || github.event.inputs.tag }}
49
+ if: ${{ github.event_name == 'workflow_dispatch' || github.ref_type == 'tag' }}
50
50
  steps:
51
- - uses: actions/deploy-pages@v2
51
+ - uses: actions/deploy-pages@v4
@@ -36,58 +36,72 @@ concurrency:
36
36
 
37
37
  jobs:
38
38
  test:
39
- runs-on: ${{ matrix.os }}-latest
39
+ runs-on: ${{ matrix.os }}
40
40
  strategy:
41
41
  fail-fast: false
42
42
  matrix:
43
43
  os:
44
- - ubuntu
45
- - macos
46
- - windows
44
+ - ubuntu-latest
45
+ # actions/setup-python do not support Python 3.7 on macOS on
46
+ # arm64. The latest macOS version available is macOS 14 but
47
+ # it is arm64 only. Stick to macos-13 as long as we want to
48
+ # test Python 3.7 on macOS. macOS 14 on arm64 is covered by
49
+ # the Cirrus CI jobs.
50
+ - macos-13
51
+ - windows-latest
47
52
  python:
48
53
  - '3.7'
49
- - '3.12'
54
+ - '3.13'
50
55
  meson:
51
56
  -
57
+ pyproject_metadata:
58
+ -
52
59
  include:
53
- - os: ubuntu
60
+ - os: ubuntu-latest
54
61
  python: 'pypy-3.9'
55
- - os: ubuntu
62
+ - os: ubuntu-latest
56
63
  python: 'pypy-3.10'
57
- - os: ubuntu
64
+ - os: ubuntu-latest
58
65
  python: '3.8'
59
- - os: ubuntu
66
+ - os: ubuntu-latest
60
67
  python: '3.9'
61
- - os: ubuntu
68
+ - os: ubuntu-latest
62
69
  python: '3.10'
63
70
  # Test with older supported Meson version. Meson up to
64
71
  # version 1.2.3 requires distutils, which has been removed
65
72
  # from the stdlib in Python 3.12, thus test with Pythn 3.11.
66
- - os: ubuntu
73
+ - os: ubuntu-latest
67
74
  python: '3.11'
68
75
  meson: '~=0.63.3'
69
- - os: ubuntu
76
+ - os: ubuntu-latest
70
77
  python: '3.11'
71
78
  meson: '~=0.64.0'
72
- - os: ubuntu
79
+ - os: ubuntu-latest
73
80
  python: '3.11'
74
81
  meson: '~=1.0.0'
75
- - os: ubuntu
82
+ - os: ubuntu-latest
76
83
  python: '3.11'
77
84
  meson: '~=1.1.0'
78
- - os: ubuntu
85
+ - os: ubuntu-latest
79
86
  python: '3.12'
80
87
  meson: '~=1.2.3'
81
- - os: ubuntu
88
+ - os: ubuntu-latest
82
89
  python: '3.12'
83
90
  meson: '~=1.3'
84
91
  # Test with Meson master branch.
85
- - os: ubuntu
92
+ - os: ubuntu-latest
86
93
  python: '3.12'
87
94
  meson: '@git+https://github.com/mesonbuild/meson.git'
88
- - os: windows
95
+ - os: windows-latest
89
96
  python: '3.12'
90
97
  meson: '@git+https://github.com/mesonbuild/meson.git'
98
+ # Test with older supported pyproject-metadata
99
+ - os: ubuntu-latest
100
+ python: '3.12'
101
+ pyproject_metadata: '==0.7.1'
102
+ - os: ubuntu-latest
103
+ python: '3.12'
104
+ pyproject_metadata: '==0.8.0'
91
105
 
92
106
  steps:
93
107
  - name: Checkout
@@ -100,30 +114,35 @@ jobs:
100
114
 
101
115
  - name: Install Ninja
102
116
  run: sudo apt-get install ninja-build
103
- if: ${{ matrix.os == 'ubuntu' }}
117
+ if: ${{ runner.os == 'Linux' }}
104
118
 
105
119
  - name: Install Ninja
106
120
  run: brew install ninja
107
- if: ${{ matrix.os == 'macos' }}
121
+ if: ${{ runner.os == 'macOS' }}
108
122
 
109
123
  - name: Install Ninja
110
124
  run: python -m pip install ninja
111
- if: ${{ matrix.os == 'windows' }}
125
+ if: ${{ runner.os == 'Windows' }}
112
126
 
113
127
  - name: Install Meson
114
128
  run: python -m pip install "meson ${{ matrix.meson }}"
115
129
  if: ${{ matrix.meson }}
116
130
 
131
+ - name: Install pyproject-metadata
132
+ run: python -m pip install "pyproject-metadata ${{ matrix.pyproject_metadata }}"
133
+ if: ${{ matrix.pyproject_metadata }}
134
+
117
135
  - name: Install
118
136
  run: python -m pip install .[test]
119
137
 
120
138
  - name: Run tests
121
- run: >-
122
- python -m pytest --showlocals -vv --cov --cov-report=xml
139
+ run: python -m pytest --showlocals -vv --cov --cov-report=xml
123
140
 
124
141
  - name: Upload coverage report
125
142
  uses: codecov/codecov-action@v4
126
143
  if: ${{ always() }}
144
+ env:
145
+ CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
127
146
 
128
147
  msvc:
129
148
  runs-on: windows-latest
@@ -160,8 +179,7 @@ jobs:
160
179
  run: python -m pip install .[test]
161
180
 
162
181
  - name: Run tests
163
- run: >-
164
- python -m pytest --showlocals -vv
182
+ run: python -m pytest --showlocals -vv
165
183
 
166
184
  cygwin:
167
185
  runs-on: windows-latest
@@ -235,8 +253,7 @@ jobs:
235
253
  shell: C:\cygwin\bin\env.exe CYGWIN_NOWINPATH=1 CHERE_INVOKING=1 C:\cygwin\bin\bash.exe -leo pipefail -o igncr {0}
236
254
 
237
255
  - name: Run tests
238
- run: >-
239
- python -m pytest --showlocals -vv
256
+ run: python -m pytest --showlocals -vv
240
257
  shell: C:\cygwin\bin\env.exe CYGWIN_NOWINPATH=1 CHERE_INVOKING=1 C:\cygwin\bin\bash.exe -leo pipefail -o igncr {0}
241
258
 
242
259
  pyston:
@@ -269,8 +286,7 @@ jobs:
269
286
  run: pyston -m pip install .[test]
270
287
 
271
288
  - name: Run tests
272
- run: >-
273
- pyston -m pytest --showlocals -vv
289
+ run: pyston -m pytest --showlocals -vv
274
290
 
275
291
  homebrew:
276
292
  runs-on: macos-latest
@@ -278,8 +294,8 @@ jobs:
278
294
  fail-fast: false
279
295
  matrix:
280
296
  python:
281
- - '3.8'
282
- - '3.11'
297
+ - '3.9'
298
+ - '3.12'
283
299
  meson:
284
300
  -
285
301
 
@@ -307,8 +323,7 @@ jobs:
307
323
  run: python -m pip install .[test]
308
324
 
309
325
  - name: Run tests
310
- run: >-
311
- python -m pytest --showlocals -vv
326
+ run: python -m pytest --showlocals -vv
312
327
 
313
328
  mypy:
314
329
  runs-on: ubuntu-latest
@@ -4,11 +4,12 @@
4
4
 
5
5
  ci:
6
6
  autofix_prs: false
7
- autoupdate_commit_msg: 'MAINT: bump repositories'
7
+ autoupdate_commit_msg: 'MAINT: bump pre-commit dependencies'
8
+ autoupdate_schedule: 'quarterly'
8
9
 
9
10
  repos:
10
11
  - repo: https://github.com/pre-commit/pre-commit-hooks
11
- rev: v4.5.0
12
+ rev: v5.0.0
12
13
  hooks:
13
14
  - id: check-ast
14
15
  - id: check-builtin-literals
@@ -21,12 +22,12 @@ repos:
21
22
  - id: end-of-file-fixer
22
23
  - id: trailing-whitespace
23
24
  - repo: https://github.com/astral-sh/ruff-pre-commit
24
- rev: v0.1.5
25
+ rev: v0.6.9
25
26
  hooks:
26
27
  - id: ruff
27
28
  args: [--fix, --show-fixes, --output-format, grouped]
28
29
  - repo: https://github.com/fsfe/reuse-tool
29
- rev: v2.1.0
30
+ rev: v4.0.3
30
31
  hooks:
31
32
  - id: reuse
32
33
  name: add SPDX headers
@@ -11,6 +11,40 @@
11
11
  Changelog
12
12
  +++++++++
13
13
 
14
+ 0.17.1
15
+ ======
16
+
17
+ - Update tests to work with newly released ``pyproject-metadata`` 0.9.0.
18
+ - Fix tests to work when not executed in a git work tree.
19
+
20
+ Daniele Nicolodi --- 23-10-2024.
21
+
22
+ 0.17.0
23
+ ======
24
+
25
+ - Refuse to build wheels targeting the limited API and free-threaded CPython:
26
+ the free-threaded CPython build does not support the limited API yet.
27
+ - Always use UTF-8 encoding for writing Meson native and cross files. Always
28
+ use UTF-8 encoding for reading read Meson introspection data and
29
+ ``pyproject.toml``.
30
+ - Do not include uncommitted changes when creating source distributions.
31
+ Previously, uncommitted changes to files under version control were
32
+ included, but not untracked files. There was no strong use case for this
33
+ behavior and it was too surprising to keep it.
34
+ - Make source distribution reproducible: use the modification time of
35
+ ``pyproject.toml`` for the generated files in the source distribution
36
+ archives.
37
+ - Disable the ``abi3`` wheel tag for PyPy when building wheels targeting the
38
+ limited API: PyPy supports the limited API but not the stable ABI.
39
+ - Raise ``ImportError`` when the package rebuild fails when importing an
40
+ editable install.
41
+ - Fix the wheel platform tag for GraalPy.
42
+ - Add ``.gitignore`` and ``.hgignore`` files to build directory if it is empty.
43
+ - Allow ``install_subdir()`` of missing directories.
44
+
45
+ Christian Clauss, Daniele Nicolodi, Jonathan J. Helmus, Leo Singer, Loïc
46
+ Estève, Michael Simacek, Ralf Gommers, Simon McVittie --- 19-10-2024.
47
+
14
48
  0.16.0
15
49
  ======
16
50
 
@@ -38,7 +72,7 @@ Changelog
38
72
  emit a message indicating that the package is being rebuilt but
39
73
  suppress any output when there is no work to do.
40
74
 
41
- Daniele Nicolodi, Loïc Estève, Ralf Gommers --- 16-04-2024
75
+ Daniele Nicolodi, Loïc Estève, Ralf Gommers --- 16-04-2024
42
76
 
43
77
 
44
78
  0.15.0
@@ -1,58 +1,59 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: meson-python
3
- Version: 0.16.0
3
+ Version: 0.17.1
4
4
  Summary: Meson Python build backend (PEP 517)
5
- Keywords: meson build backend pep517 package
6
- Home-page: https://github.com/mesonbuild/meson-python
5
+ Keywords: meson,build,backend,pep517,package
7
6
  Maintainer-Email: Ralf Gommers <ralf.gommers@gmail.com>, Daniele Nicolodi <daniele@grinta.net>, Henry Schreiner <HenrySchreinerIII@gmail.com>, Thomas Li <47963215+lithomas1@users.noreply.github.com>
8
7
  License: Copyright © 2022 the meson-python contributors
9
- Copyright © 2021 Quansight Labs and Filipe Laíns
10
-
11
- Permission is hereby granted, free of charge, to any person obtaining a
12
- copy of this software and associated documentation files (the "Software"),
13
- to deal in the Software without restriction, including without limitation
14
- the rights to use, copy, modify, merge, publish, distribute, sublicense,
15
- and/or sell copies of the Software, and to permit persons to whom the
16
- Software is furnished to do so, subject to the following conditions:
17
-
18
- The above copyright notice and this permission notice (including the next
19
- paragraph) shall be included in all copies or substantial portions of the
20
- Software.
21
-
22
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
25
- THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
27
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
28
- DEALINGS IN THE SOFTWARE.
8
+ Copyright © 2021 Quansight Labs and Filipe Laíns
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a
11
+ copy of this software and associated documentation files (the "Software"),
12
+ to deal in the Software without restriction, including without limitation
13
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
14
+ and/or sell copies of the Software, and to permit persons to whom the
15
+ Software is furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice (including the next
18
+ paragraph) shall be included in all copies or substantial portions of the
19
+ Software.
20
+
21
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
24
+ THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
27
+ DEALINGS IN THE SOFTWARE.
28
+
29
29
  Classifier: Development Status :: 5 - Production/Stable
30
30
  Classifier: Programming Language :: Python
31
31
  Classifier: Topic :: Software Development :: Build Tools
32
- Project-URL: Homepage, https://github.com/mesonbuild/meson-python
33
- Project-URL: Repository, https://github.com/mesonbuild/meson-python
34
- Project-URL: Documentation, https://mesonbuild.com/meson-python/
35
- Project-URL: Changelog, https://mesonbuild.com/meson-python/changelog.html
32
+ Project-URL: homepage, https://github.com/mesonbuild/meson-python
33
+ Project-URL: repository, https://github.com/mesonbuild/meson-python
34
+ Project-URL: documentation, https://mesonbuild.com/meson-python/
35
+ Project-URL: changelog, https://mesonbuild.com/meson-python/changelog.html
36
36
  Requires-Python: >=3.7
37
37
  Requires-Dist: meson>=0.63.3; python_version < "3.12"
38
38
  Requires-Dist: meson>=1.2.3; python_version >= "3.12"
39
39
  Requires-Dist: packaging>=19.0
40
40
  Requires-Dist: pyproject-metadata>=0.7.1
41
41
  Requires-Dist: tomli>=1.0.0; python_version < "3.11"
42
+ Provides-Extra: test
42
43
  Requires-Dist: build; extra == "test"
44
+ Requires-Dist: packaging>=23.1; extra == "test"
43
45
  Requires-Dist: pytest>=6.0; extra == "test"
44
46
  Requires-Dist: pytest-cov[toml]; extra == "test"
45
47
  Requires-Dist: pytest-mock; extra == "test"
46
48
  Requires-Dist: cython>=3.0.3; extra == "test"
47
49
  Requires-Dist: wheel; extra == "test"
48
50
  Requires-Dist: typing-extensions>=3.7.4; python_version < "3.11" and extra == "test"
51
+ Provides-Extra: docs
49
52
  Requires-Dist: furo>=2023.5.20; extra == "docs"
50
53
  Requires-Dist: sphinx~=6.2; extra == "docs"
51
54
  Requires-Dist: sphinx-copybutton>=0.5.0; extra == "docs"
52
55
  Requires-Dist: sphinx-design>=0.1.0; extra == "docs"
53
56
  Requires-Dist: sphinxext-opengraph>=0.7.0; extra == "docs"
54
- Provides-Extra: test
55
- Provides-Extra: docs
56
57
  Description-Content-Type: text/x-rst
57
58
 
58
59
  .. SPDX-FileCopyrightText: 2021 The meson-python developers
@@ -2,20 +2,16 @@
2
2
  ..
3
3
  .. SPDX-License-Identifier: MIT
4
4
 
5
-
6
- .. _contributing-release-process:
7
-
8
- ***************
9
5
  Release Process
10
- ***************
6
+ ===============
11
7
 
12
- All releases are PGP signed with one of the keys listed in the
13
- `installation page`_. Before releasing please make sure your PGP key is listed
14
- there, and preferably signed by one of the other key holders.
8
+ All releases are PGP signed with one of the keys listed in ``docs/about.rst``.
9
+ Before releasing please make sure your PGP key is listed there, and preferably
10
+ signed by one of the other key holders.
15
11
 
16
- If your key is not signed by one of the other key holders, please make sure the
17
- PR that added your key to the :doc:`../about` page was approved by at least one
18
- other maintainer.
12
+ If your key is not signed by one of the other key holders, please make sure
13
+ that the PR that added your key to ``docs/about.rst`` was approved by at least
14
+ one other maintainer.
19
15
 
20
16
  After that is done, you may release the project by following these steps:
21
17
 
@@ -44,7 +40,7 @@ After that is done, you may release the project by following these steps:
44
40
  $ git push
45
41
  $ git push --tags
46
42
 
47
- #. Release to `PyPI <https://pypi.org/project/meson-python/>`_
43
+ #. Release to PyPI:
48
44
 
49
45
  #. Build the Python artifacts:
50
46
 
@@ -60,9 +56,3 @@ After that is done, you may release the project by following these steps:
60
56
 
61
57
  There is no need to GPG-sign the artifacts: PyPI no longer
62
58
  supports uploading GPG signatures.
63
-
64
- If you have any questions, please look at previous releases and/or ping the
65
- other maintainers.
66
-
67
-
68
- .. _installation page: installation
@@ -2,6 +2,6 @@
2
2
  #
3
3
  # SPDX-License-Identifier: MIT
4
4
 
5
- # 20240305
5
+ # 20240817
6
6
  FROM alpine:3
7
7
  RUN apk add --no-cache python3-dev py3-pip build-base ninja-is-really-ninja git patchelf
@@ -2,6 +2,6 @@
2
2
  #
3
3
  # SPDX-License-Identifier: MIT
4
4
 
5
- # 20221209
5
+ # 20240513
6
6
  FROM quay.io/pypa/manylinux_2_28_x86_64
7
7
  RUN dnf -y update && dnf -y install ninja-build && dnf clean all
@@ -2,6 +2,6 @@
2
2
  #
3
3
  # SPDX-License-Identifier: MIT
4
4
 
5
- # 20230816
5
+ # 20240817
6
6
  FROM opensuse/leap:latest
7
7
  RUN zypper --non-interactive install python311 python311-pip python311-devel gcc ninja git patchelf && zypper clean --all && ln -s python3.11 /usr/bin/python3
@@ -16,15 +16,21 @@
16
16
 
17
17
  import datetime
18
18
  import os
19
+ import time
19
20
  import sys
20
21
  sys.path.insert(0, os.path.abspath('..'))
21
22
  import mesonpy
22
23
 
24
+ build_date = datetime.datetime.fromtimestamp(
25
+ int(os.environ.get('SOURCE_DATE_EPOCH', time.time())),
26
+ tz=datetime.timezone.utc,
27
+ )
28
+
23
29
 
24
30
  # -- Project information -----------------------------------------------------
25
31
 
26
32
  project = 'meson-python'
27
- copyright = f'2021\N{EN DASH}{datetime.date.today().year} The meson-python developers'
33
+ copyright = f'2021\N{EN DASH}{build_date.year} The meson-python developers'
28
34
 
29
35
  # The short X.Y version
30
36
  version = mesonpy.__version__
@@ -31,21 +31,6 @@ Python tool (pip_, `pypa/build`_, etc.) to build and install the project.
31
31
  ``meson-python`` will build a Python sdist (source distribution) or
32
32
  wheel (binary distribution) from Meson_ project.
33
33
 
34
- Source distribution (sdist)
35
- ---------------------------
36
-
37
- The source distribution is based on ``meson dist``, so make sure all your files
38
- are included there. In git projects, Meson_ will not include files that are not
39
- checked into git, keep that in mind when developing. By default, all files
40
- under version control will be included in the sdist. In order to exclude files,
41
- use ``export-ignore`` or ``export-subst`` attributes in ``.gitattributes`` (see
42
- the ``git-archive`` documentation for details; ``meson dist`` uses
43
- ``git-archive`` under the hood).
44
-
45
- Local (uncommitted) changes to files that are under version control will be
46
- included. This is often needed when applying patches, e.g. for build issues
47
- found during packaging, to work around test failures, to amend the license for
48
- vendored components in wheels, etc.
49
34
 
50
35
  Binary distribution (wheels)
51
36
  ----------------------------
@@ -0,0 +1,128 @@
1
+ .. SPDX-FileCopyrightText: 2023 The meson-python developers
2
+ ..
3
+ .. SPDX-License-Identifier: MIT
4
+
5
+ .. _how-to-guides-config-settings:
6
+
7
+ ***************************
8
+ Using build config settings
9
+ ***************************
10
+
11
+ Build config settings can be used to customize some aspects of the
12
+ build. See the :doc:`../reference/config-settings` reference for a list
13
+ of the settings implemented by ``meson-python``.
14
+
15
+ How build config settings are specified depends on the Python package
16
+ build front-end used. The most popular build front-end are `build`_ and
17
+ `pip`_. These use the ``--config-settings`` long command line option or
18
+ the ``-C`` short command line option:
19
+
20
+ .. tab-set::
21
+
22
+ .. tab-item:: pypa/build
23
+ :sync: key_pypa_build
24
+
25
+ .. code-block:: console
26
+
27
+ $ python -m build \
28
+ -Csetup-args="-Doption=true" \
29
+ -Csetup-args="-Dvalue=1" \
30
+ -Ccompile-args="-j6"
31
+
32
+ .. tab-item:: pip
33
+ :sync: key_pip
34
+
35
+ .. code-block:: console
36
+
37
+ $ python -m pip wheel . \
38
+ --config-settings=setup-args="-Doption=disable" \
39
+ --config-settings=compile-args="-j6"
40
+
41
+
42
+ Refer to the `build`_ and `pip`_ documentation for details. This
43
+ example uses the ``python -m pip wheel`` command to build a Python wheel
44
+ that can be later installed or distributed. To build a package and
45
+ immediately install it, replace ``wheel`` with ``install``. See the
46
+ :ref:`how-to-guides-meson-args` guide for more examples.
47
+
48
+
49
+ .. admonition:: Passing multiple settings
50
+ :class: caution
51
+
52
+ Please note that ``pip`` prior to 23.1 did not offer a way to set a
53
+ build config setting to a list of strings: later values for the
54
+ same key passed to ``--config-settings`` override earlier ones,
55
+ effectively limiting the number of options that can be passed to
56
+ each command invoked in the build process to one. This limitation
57
+ has been lifted in ``pip`` release 23.1.
58
+
59
+
60
+ .. _build: https://pypa-build.readthedocs.io/en/stable/
61
+ .. _pip: https://pip.pypa.io/
62
+
63
+
64
+ Using a persistent build directory
65
+ ==================================
66
+
67
+ By default, ``meson-python`` uses a temporary build directory which is
68
+ deleted when the build terminates. A persistent build directory allows
69
+ faster incremental builds and to access build logs and intermediate
70
+ build artifacts. The ``build-dir`` :ref:`config setting
71
+ <reference-config-settings>` instructs ``meson-python`` to use a
72
+ user-specified build directory which will not be deleted. For example:
73
+
74
+ .. tab-set::
75
+
76
+ .. tab-item:: pypa/build
77
+ :sync: key_pypa_build
78
+
79
+ .. code-block:: console
80
+
81
+ $ python -m build -Cbuild-dir=build
82
+
83
+ .. tab-item:: pip
84
+ :sync: key_pip
85
+
86
+ .. code-block:: console
87
+
88
+ $ python -m pip install . -Cbuild-dir=build
89
+
90
+ After running this command, the ``build`` directory will contain all
91
+ the build artifacts and support files created by ``meson``, ``ninja``
92
+ and ``meson-python``. The same build directory can be used by
93
+ subsequent invocations of ``meson-python``, avoiding the need to
94
+ rebuild the whole project when testing changes during development.
95
+
96
+ Using a permanent build directory also aids in debugging a failing
97
+ build by allowing access to build logs and intermediate build outputs,
98
+ including the Meson introspection files and detailed log. The latter
99
+ is stored in the ``meson-logs/meson-log.txt`` file in the build
100
+ directory and can be useful to diagnose why a build fails at the
101
+ project configuration stage. For example, to understand why dependency
102
+ detection failed, it is often necessary to look at the ``pkg-config``
103
+ or other dependency detection methods output.
104
+
105
+ Access to detailed logs and intermediate build outputs is particularly
106
+ helpful in CI setups where introspecting the build environment is
107
+ usually more difficult than on a local system. Therefore, it can be
108
+ useful to show the more detailed log files when the CI build step
109
+ fails. For example, the following GitHub Actions workflow file snippet
110
+ shows the detailed Meson setup log when the build fails:
111
+
112
+ .. code-block:: yaml
113
+
114
+ - name: Build the package
115
+ run: python -m build --wheel -Cbuild-dir=build
116
+ - name: Show meson-log.txt
117
+ if: failure()
118
+ run: cat build/meson-logs/meson-log.txt
119
+
120
+ Replacing ``failure()`` with ``always()`` in the code above will
121
+ result in the Meson log file always being shown. See the GitHub
122
+ Actions documentation__ for more details. Please be aware that the
123
+ setup log can become very long for complex projects, and the GitHub
124
+ Actions web interface becomes unresponsive when the running job emits
125
+ many output lines.
126
+
127
+
128
+ __ https://docs.github.com/en/actions/learn-github-actions/expressions#status-check-functions