如何将仅含pyproject.toml的Python项目amqtt添加到Yocto dunfell镜像中
解决方案
方案1:配方内动态生成适配的setup.py(推荐)
Yocto Dunfell分支默认的setuptools3类仅支持带有setup.py的Python项目,你可以在配置阶段动态生成极简setup.py调用setuptools,自动读取项目自带的pyproject.toml配置即可。修改后的核心配方如下:
HOMEPAGE = "https://github.com/Yakifo/amqtt" SRC_URI = "git://github.com/Yakifo/amqtt;protocol=https;branch=master" SRCREV = "4beb912c2a0d58d66140ce68b6a31991c2c48b30" S = "${WORKDIR}/git" inherit setuptools3 do_configure_prepend() { cat > ${S}/setup.py << EOF from setuptools import setup setup() EOF }
方案2:setuptools版本过低时的兼容方案
如果你的构建环境中python3-setuptools版本低于50.0.0(不支持自动读取pyproject.toml),可以手动把pyproject.toml里的项目名称、版本、依赖等元数据补写到上述动态生成的setup.py的setup()参数中即可。
注意事项
- 不要同时继承
distutils和setuptools3,两者功能重叠会触发构建冲突 - 使用git拉取源码的场景不需要继承
pypi类,该类仅用于从PyPi镜像站拉取tar包源码的场景 - 拉取git源码时建议在
SRC_URI中明确指定branch参数,避免拉取默认分支失败
内容的提问来源于stack exchange,提问作者grmmgrmm
相关产品推荐
相关产品推荐

