我正在尝试将python3-functionfs模块集成到buildroot中。
我可以使用make menuconfig
选择它,但是当我正在运行make
时,甚至都没有下载包。
该套餐可在此处获取:functionfs-0.3 pypi page
并在此处下载网址:functionfs-0.3 download link
这里还有github回购:functionfs git repository
我正在使用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
这是我的.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))
文档还提到 17.8.3。从PyPI存储库生成python-package
如果您要为其创建Buildroot的Python包 包可以在PyPI上使用,您可能需要使用scanpypi工具 位于utils /以自动化该过程。
您可以在此处找到现有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)。另外,请注意 猜测许可证和许可证文件,必须进行检查。你也是 需要手动将软件包添加到软件包/ Config.in文件中。
如果您的Buildroot软件包不在官方Buildroot树中,而是在 一个br2外部树,使用-o标志如下:
utils/scanpypi foo bar -o other_package_dir
这将生成包中的python-foo和python-bar other_package_directory而不是包。
选项-h将列出可用选项:
utils/scanpypi -h
但是我在buildroot主目录中没有util/
文件夹。
该脚本位于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
这可以通过重命名support/scripts/pkgutil.py
和support/scripts/pkgutil.pyc
来解决。
但是,我想了解当我尝试自己创建软件包并且不下载时会发生什么。
有人知道为什么在运行make时没有下载functionfs-0.3.tar.gz
答案 0 :(得分:4)
您的软件包未下载,因为软件包名称与.mk文件中的变量名称不匹配。基本上,你有三件事必须匹配:
BR2_PACKAGE_<FOO>
选项package/<foo>/<foo>.mk
<FOO>_SOMETHING
您没有说明.mk文件的名称是什么,但至少您的选项名为BR2_PACKAGE_PYTHON3_FUNCTIONFS
,而make变量的名称为PYTHON_FUNCTIONFS_SOMETHING
。
这就解释了为什么不下载它。
然后,关于scanpypi
脚本,它肯定在最近版本的Buildroot的utils/
目录中。它曾经是几个版本前的support/scripts
。所以基本上你正在查看在线的Buildroot文档(并匹配最新版本),但你使用的是较旧的Buildroot版本。您可以通过运行make manual-html
来构建与Buildroot版本匹配的Buildroot文档。