Ark*_*aik 0 python linux module package buildroot
我正在尝试将 python3-functionfs 模块集成到 buildroot 中。我可以选择它,make menuconfig
但是当我运行时make
,甚至没有下载包。
该包可在此处获得:functionfs-0.3 pypi 页面
下载地址在此处:functionfs-0.3 下载链接
这里还有 github存储库:functionfs git 存储库
我使用的是 Buildroot 2017.02 版本。
这是我的 Config.in 文件:
config BR2_PACKAGE_PYTHON3_FUNCTIONFS
bool "python3-functionfs"
depends on BR2_PACKAGE_PYTHON3
help
Pythonic API for linux’s functionfs.
functionfs is part of the usb gadget subsystem. Together with usb_gadget’s configfs integration, allows userland to declare and implement an USB device.
https://pypi.python.org/pypi/functionfs
Run Code Online (Sandbox Code Playgroud)
这是我的 .mk 文件:
################################################################################
#
# python3-functionfs
#
################################################################################
PYTHON_FUNCTIONFS_VERSION = 0.3
PYTHON_FUNCTIONFS_SOURCE = functionfs-$(PYTHON_FUNCTIONFS_VERSION).tar.gz
PYTHON_FUNCTIONFS_SITE = https://pypi.python.org/packages/e3/2d/56e0d9ffe0da7c116a6724ee538375689dd59e34dbe1676edf6b66b52be4
PYTHON_FUNCTIONFS_LICENSE = GPLv3+
PYTHON_FUNCTIONFS_LICENSE_FILE = COPYING
PYTHON_FUNCTIONFS_SETUP_TYPE = setuptools
$(eval $(python-package))
Run Code Online (Sandbox Code Playgroud)
该文档还在17.8.3 中提到。从 PyPI 存储库生成 python 包
如果您想要为其创建 Buildroot 包的 Python 包在 PyPI 上可用,您可能需要使用位于 utils/ 中的 scanpypi 工具来自动化该过程。
您可以在此处找到现有 PyPI 包的列表。
scanpypi 需要在您的主机上安装 Python 的 setuptools 包。
在 buildroot 目录的根目录下时,只需执行以下操作:
utils/scanpypi foo bar -o package
这将在包文件夹中生成包 python-foo 和 python-bar 如果它们存在于https://pypi.python.org。
找到外部 python 模块菜单并将您的包插入其中。请记住,菜单中的项目应按字母顺序排列。
请记住,您很可能必须手动检查包是否有任何错误,因为有些东西是生成器无法猜测的(例如,依赖于任何 python 核心模块,如 BR2_PACKAGE_PYTHON_ZLIB)。另外,请注意许可证和许可证文件是猜测的,必须检查。您还需要手动将包添加到 package/Config.in 文件中。
如果您的 Buildroot 包不在官方 Buildroot 树中,而是在 br2-external 树中,请使用 -o 标志,如下所示:
utils/scanpypi foo bar -o other_package_dir
这将在 other_package_directory 而不是 package.json 中生成包 python-foo 和 python-bar。
选项 -h 将列出可用选项:
utils/scanpypi -h
但是我util/
在 buildroot 主目录中没有文件夹。该脚本位于support/scripts/scanpypi
但当我运行它时出现以下错误:
$ support/scripts/scanpypi functionfs -o package
Traceback (most recent call last):
File "support/scripts/scanpypi", line 47, in <module>
import setuptools
File "/usr/local/lib/python2.7/dist-packages/setuptools/__init__.py", line 11, in <module>
from setuptools.extern.six.moves import filterfalse, map
File "/usr/local/lib/python2.7/dist-packages/setuptools/extern/__init__.py", line 1, in <module>
from pkg_resources.extern import VendorImporter
File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 40, in <module>
from pkgutil import get_importer
ImportError: cannot import name get_importer
Run Code Online (Sandbox Code Playgroud)
这可以通过重命名support/scripts/pkgutil.py
和来解决support/scripts/pkgutil.pyc
。
但是,我想了解当我尝试自己创建包并且没有下载时发生了什么。
有人知道为什么在运行 make 时没有下载 functionfs-0.3.tar.gz 吗?
您的软件包未下载,因为您的软件包名称与 .mk 文件中的变量名称不匹配。基本上,您必须匹配三件事:
BR2_PACKAGE_<FOO>
Config.in 中的选项package/<foo>/<foo>.mk
<FOO>_SOMETHING
您没有说 .mk 文件的名称是什么,但至少您的选项已命名,BR2_PACKAGE_PYTHON3_FUNCTIONFS
而 make 变量已命名PYTHON_FUNCTIONFS_SOMETHING
。
这解释了为什么没有下载它。
然后,关于scanpypi
脚本,它肯定utils/
在最新版本的Buildroot目录中。它曾经在support/scripts
几个版本之前出现过。因此,基本上您正在查看在线的 Buildroot 文档(并与最新版本匹配),但您使用的是较旧的 Buildroot 版本。您可以通过运行构建与您的 Buildroot 版本匹配的 Buildroot 文档make manual-html
。