将一个pypi python包添加到buildroot

时间:2018-01-11 17:15:26

标签: python linux module package buildroot

我正在尝试将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.pysupport/scripts/pkgutil.pyc来解决。

但是,我想了解当我尝试自己创建软件包并且不下载时会发生什么。

有人知道为什么在运行make时没有下载functionfs-0.3.tar.gz

1 个答案:

答案 0 :(得分:4)

您的软件包未下载,因为软件包名称与.mk文件中的变量名称不匹配。基本上,你有三件事必须匹配:

  • Config.in中的BR2_PACKAGE_<FOO>选项
  • 文件和目录的名称必须为package/<foo>/<foo>.mk
  • .mk文件中的变量必须命名为<FOO>_SOMETHING

您没有说明.mk文件的名称是什么,但至少您的选项名为BR2_PACKAGE_PYTHON3_FUNCTIONFS,而make变量的名称为PYTHON_FUNCTIONFS_SOMETHING

这就解释了为什么不下载它。

然后,关于scanpypi脚本,它肯定在最近版本的Buildroot的utils/目录中。它曾经是几个版本前的support/scripts。所以基本上你正在查看在线的Buildroot文档(并匹配最新版本),但你使用的是较旧的Buildroot版本。您可以通过运行make manual-html来构建与Buildroot版本匹配的Buildroot文档。