变更日志¶
0.17.1¶
更新测试以配合最新发布的
pyproject-metadata
0.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
进行交叉编译时生成的交叉文件中的系统名称。修复对
null
Meson 安装标签的处理。
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。