变更日志¶
0.17.1¶
更新测试以配合最新发布的
pyproject-metadata0.9.0。修复测试,使其在非 Git 工作树中执行时也能正常工作。
Daniele Nicolodi — 23-10-2024.
0.17.0¶
拒绝构建针对受限 API 和自由线程 CPython 的轮子:自由线程 CPython 构建尚不支持受限 API。
始终使用 UTF-8 编码写入 Meson 本地文件和交叉文件。始终使用 UTF-8 编码读取 Meson 自省数据和
pyproject.toml。创建源代码发行版时不包含未提交的更改。以前,版本控制下的文件的未提交更改会被包含,但未跟踪的文件则不会。这种行为没有强烈的用例,并且过於令人惊讶,因此将其保留。
使源代码发行版可重现:使用
pyproject.toml的修改时间作为源代码发行版存档中生成的 文件的时间。为针对受限 API 构建轮子时,为 PyPy 禁用
abi3轮子标签:PyPy 支持受限 API,但不支持稳定 ABI。在导入可编辑安装时,如果包重建失败,则引发
ImportError。修复 GraalPy 的轮子平台标签。
如果构建目录为空,则添加
.gitignore和.hgignore文件到构建目录。允许
install_subdir()安装缺失的目录。
Christian Clauss, Daniele Nicolodi, Jonathan J. Helmus, Leo Singer, Loïc Estève, Michael Simacek, Ralf Gommers, Simon McVittie — 19-10-2024.
0.16.0¶
正确检测到将共享库作为平台相关文件进行打包的轮子,即使它不包含编译的可执行文件或 Python 扩展模块。
在 arm64 上将 11.0 作为最小 macOS 平台 ABI 标签:较低版本在 arm64 上不存在。
改进对
$ARCHFLAGS环境变量的解析。正确处理重复的-arch标志。尝试记录包含无法在标准输出流使用的编码中编码的 Unicode 字符的文件名时,不要中断。
在 Windows 上放弃对
colorama的依赖。在日志记录到不支持 ANSI 终端转义序列的流时,禁止所有 ANSI 终端转义序列的使用。
修复错误消息的 ANSI 转义序列颜色。
在可编辑安装中,也尊重传递给 Meson
install_subdir()函数的exclude_dirs和exclude_files参数。使
pkgutil.iter_packages()能够正确处理从可编辑安装中加载的模块。添加对 Meson
custom_target()函数安装目录的支持。在可编辑安装中,当在模块导入时触发重建时,会发出一个消息,表明该包正在重建,但在没有工作要做时会抑制所有输出。
Daniele Nicolodi, Loïc Estève, Ralf Gommers — 16-04-2024
0.15.0¶
为轮子文件启用压缩。这可能导致轮子大小缩小几倍。
在 Python 3.12 或更高版本上需要 Meson 1.2.3 或更高版本。Meson 1.2.3 不再需要
distutils,允许在 Python 3.12 或更高版本上删除对setuptools的依赖。在 Linux 上无条件需要
patchelf。如果在$PATH上找不到合适的patchelf可执行文件,则将patchelf包添加到构建依赖项中。这避免了在构建过程中两次运行meson setup来确定是否需要patchelf的情况。允许通过
$MESON环境变量或pyproject.toml中[tool.meson-python]下的meson键来配置用于构建过程的meson可执行文件。修复 FreeBSD 上的轮子平台标签生成。
扩展对其他类 UNIX 系统的支持,并使测试在 FreeBSD 上通过。
修复软件包元数据中的软件包名称规范化,并改进软件包名称验证。
修复构建
RPATH指向构建目录子目录时,的RPATH处理。修复为 PyPy 编译时对 Python 受限 C API 的支持。
将
builddir配置设置重命名为build-dir。为了向后兼容,buildir配置设置仍然作为别名受支持。
Christoph Reiter, Daniele Nicolodi, Elliott Sales de Andrade, Ralf Gommers, Yue Yang — 26-10-2023
0.14.0¶
不要运行
meson install来构建轮子。这是不必要的,因为文件是从构建目录和源代码目录添加到轮子的。这不会影响对meson install选项的处理,这些选项由meson-python本身解释。在为
meson install命令指定--skip-subprojects时遵守它。实现对 Meson
install_subdir()函数和类似安装函数的exclude_directories和exclude_files参数的支持。这需要 Meson 1.1.0 或更高版本。实现对构建针对 Python 受限 API 的轮子的支持。从即将发布的 Meson 1.3.0 版本开始,可以轻松构建针对 Python 受限 API 的扩展模块。
当
pyproject.toml不包含version字段,并且version未被声明为动态时,会引发错误,而不是默默地使用在meson.build中声明的版本。修复 sdist tarball 中源文件的时间戳。
当设置
$ARCHFLAGS时,将objc和objcpp编译器添加到生成的交叉文件中。大量文档改进。
Charles Brunet, Daniele Nicolodi, Henry Schreiner, Michał Górny, Ralf Gommers — 05-09-2023
0.13.2¶
修复使用
$ARCHFLAGS进行交叉编译时生成的交叉文件中的系统名称。修复对
nullMeson 安装标签的处理。
Charles Brunet, Daniele Nicolodi — 22-06-2023.
0.13.1¶
修复通过
$ARCHFLAGS在 macOS 上进行交叉编译时的回归,其中交叉文件是在构建目录创建之前写入到构建目录的,从而导致错误。在通过
$ARCHFLAGS在 macOS 上进行交叉编译时,不要求设置$_PYTHON_HOST_PLATFORM。在调用
meson install时,添加--quiet选项。安装路径是meson-python实现的细节,通常对用户来说并不重要。修复在列出添加到轮子的文件时,覆盖当前行时的终端日志记录。
改进在检测到跨越
purelib和platlib轮子位置的包时发出的错误消息。
Daniele Nicolodi, Ralf Gommers — 28-04-2023.
0.13.0¶
添加对可编辑安装的支持。
调整传递给
meson setup的默认构建选项。确保创建轮子或 sdist 构建工件的目录存在。修复使用 PDM 进行构建时的错误。
修复通过
$ARCHFLAGS在 macOS 上进行交叉编译时,C++ 编译器的指定。仅当指定的构建目录存在且是有效的 Meson 构建目录时,才将
--reconfigure选项传递给meson setup。将
--no-rebuild选项传递给meson install。允许通过
pyproject.toml或配置设置,通过--tags选项传递给meson install的 Meson 安装标签来选择要包含在轮子中的文件。除了在 Windows 上,不要使用
meson compile间接方法来构建项目,因为在 Windows 上需要它来设置 Visual Studio 环境。如果设置了
$NINJA,但它不指向具有所需最小版本的ninja可执行文件,则不要将ninja添加到构建依赖项中。在运行时验证 Meson 是否满足最小所需版本。
将本地文件和交叉文件放在构建目录中,而不是源代码目录中。
放弃对
typing-extensions软件包的依赖关系。在 Python 3.12 及更高版本上添加对
setuptools的依赖。这修复了由于 Meson 依赖于 Python 3.12 中移除的distutils标准库模块而导致的构建错误。将所需的
pyproject-metadata版本提升到 0.7.1。通过不将扩展模块文件名后缀与当前解释器接受的后缀进行比较,允许更多跨编译设置。
当 Meson 要安装的文件无法映射到 wheel 位置时,抛出错误。
当包在
platlib和purelib之间分割时,抛出错误。当
pyproject.toml不包含project部分并且 Python 包元数据是从meson.build衍生而来时,不要生成警告。改进
pyproject.toml验证错误的报告。修复
pyproject.toml中工具特定选项的验证。特别是,允许在tool.meson-python.args表中指定不完整的选项集。
Daniele Nicolodi, Doron Behar, Eli Schwartz, Filipe Laíns, Lars Pastewka, Luigi Giugliano, Matthias Köppe, Peter Urban, Ralf Gommers, Stefan van der Walt, Thomas Li — 18-04-2023。
0.12.1¶
修复了
$MACOSX_DEPLOYMENT_TARGET环境变量意外重命名为$MACOS_DEPLOYMENT_TARGET的回归。
Filipe Laíns, Stefan van der Walt — 17-02-2023。
0.12.0¶
对于 Python < 3.10 而不是仅对于 Python < 3.8,要求使用
typing_extensions包。在预期错误时发出错误消息并引发
SystemExit。修改错误消息以确保一致性。
通过
$ARCHFLAGS支持 setuptools 样式的 macOS 跨编译。允许通过
$_PYTHON_HOST_PLATFORM覆盖 macOS 平台标签。在遇到未知配置设置时,在错误消息中包含与最相似已知选项名称的提示。
Daniele Nicolodi, Filipe Laíns, Henry Schreiner, Matthias Köppe, Thomas A Caswell — 22-12-2022。
0.11.0¶
项目移至
mesonbuild组织。通过内省 Python 解释器来确定 wheel 标签。
允许用户通过
pyproject.toml中tools.meson-python.args表中的dist、setup、compile和install条目,或通过dist-args、setup-args、compile-args和install-args配置设置将选项直接传递给 Meson。如果可能,使用系统
ninja。否则,返回ninja作为构建依赖项。将
mesonadd_dist_script生成的文件包含在 sdist 中。在 Python 3.11 或更高版本上使用
tomllib。删除
wheel包依赖项。修复了未生成
entry_points.txt文件的错误。修复了未检测到 Cygwin Python 扩展的错误。
Ben Greiner, Daniele Nicolodi, Filipe Laíns, Henry Schreiner, Matthias Köppe, Ralf Gommers, Sam Thursfield, Thomas Li — 21-11-2022。
0.10.0¶
忽略 macOS 11 或更高版本上的次要版本,以匹配
pypa/packaging的行为。
Filipe Laíns, Ralf Gommers — 05-10-2022。
0.9.0¶
在 ABI 标签检测方面进行了更多修复。
修复了在 x86_64 主机上运行的 32 位 Python 上的错误标签。
修复 sdist 权限。
修复了错误的 PyPy 标签。
修复了
install_subdirs未包含在 wheels 中的问题。将
MACOSX_DEPLOYMENT_TARGET考虑在内以进行平台标签。如果不需要,不要在二进制文件上设置 rpath。
Eli Schwartz, Filipe Laíns, Matthias Köppe, Peyton Murray, Ralf Gommers, Thomas Kluyver, Thomas Li — 29-09-2022。
0.8.1¶
修复了标签检测代码中的
UnboundLocalError。
Filipe Laíns, Ralf Gommers — 28-07-2022。
0.8.0¶
修复了有时会生成错误的 ABI 标签。
添加了针对缺少平台字符串中次要版本的 macOS 11 和 12 安装的解决方法。
Filipe Laíns — 26-07-2022。
0.7.0¶
修复了 Meson 0.63.0 中生成的错误的 Python 和 ABI 标签。
修复了项目许可证未包含在项目元数据中的问题。
Filipe Laíns, Ralf Gommers — 22-07-2022。
0.6.0¶
项目重新许可为 MIT。
在不支持的解释器中运行时报错。
修复了略微损坏的 Debian 启发式方法。
将
pep621依赖项更新为pyproject-metadata。
Filipe Laíns, Ralf Gommers, Thomas A Caswell — 21-06-2022。
0.5.0¶
依赖项检测的改进。
将未提交的更改包含在 sdists 中。
Filipe Laíns — 26-05-2022。
0.4.0¶
为发布构建设置合理的默认参数。
Filipe Laíns — 06-05-2022。
0.3.0¶
初始跨平台支持。
捆绑库仍然只支持 Linux。
添加初始文档。
构建目录现在位于项目源代码中。
Filipe Laíns, Rafael Silva — 23-03-2022。
0.2.1¶
修复了从 Meson 动态获取项目版本的问题。
Filipe Laíns — 26-02-2022。
0.2.0¶
选择正确的 ABI 和 Python 标签。
强制 Meson 使用正确的 Python 可执行文件。
用内部供应商机制替换 auditwheel。
Filipe Laíns — 24-01-2022。
0.1.2¶
修复了未运行 auditwheel 的问题。
Filipe Laíns — 12-11-2021。
0.1.1¶
修复了与 Python < 3.9 的轻微兼容性问题。
Filipe Laíns — 28-10-2021。
0.1.0¶
初始版本。
Filipe Laíns — 28-10-2021。