如何在Buildroot中添加一个可在Git存储库中获取的软件包?

13

我正在制作一个嵌入式Linux系统,想要将'bluez'包(和蓝牙工具)添加到Buildroot环境的软件包中。

不幸的是,tar文件似乎无法获取,但源代码可从Git仓库获取,但我不确定如何在.mk文件中包含它。

我能做到吗?如果可以,怎么做?


您可以查看Buildroot中的源代码,了解如何拉取SVN repository并为Git创建自己的内容。 - Alexander Oh
3个回答

22

Buildroot已经有一个bluez包,这将是即将发布的2011.11版本的一部分。同时,您可以使用最新版本的Buildroot Git,或将bluez包移植到早期版本的Buildroot。

回到最初的问题,Buildroot能够从Git存储库中获取源代码。正如文档中所述,您只需要执行:

MYPKG_VERSION = some_commit_id_or_tag_or_branch_name
MYPKG_SITE = git://thegitrepository
MYPKG_SITE_METHOD = git

在你的.mk文件中。


谢谢。我正在使用一个针对Phidget设备的自定义Buildroot,所以2011.11版本也需要调整才能支持Phidgets。不过您的答案确实帮助了我,我可以将其与Phidget发布的Buildroot结合使用。 - D-Dᴙum
1
现在从“git://”前缀猜测方法。 - Ciro Santilli OurBigBook.com
对于在 GitHub 上的存储库,可以使用以下宏:FOO_SITE = $(call github,<user>,<repo>,$(FOO_VERSION) - Mixaz
如果我想在一个包中克隆多个存储库,有没有办法做到这一点?无法在一个包中选择多个mypkg_site吗? - John smith

2

最小工作树示例 2016.05

https://github.com/cirosantilli/buildroot/tree/git-package-2016.05

唯一有趣的文件是package/hello/Config.in

HELLO_VERSION = branch2
HELLO_SITE = git://github.com/cirosantilli/hello-c.git

define HELLO_BUILD_CMDS
    $(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_LD)" -C $(@D)
endef

define HELLO_INSTALL_TARGET_CMDS
        $(INSTALL) -D -m 0755 $(@D)/hello $(TARGET_DIR)/usr/bin
endef

$(eval $(generic-package))

它可以下载和构建:https://github.com/cirosantilli/hello-c

MYPKG_SITE_METHOD = git是从SITE上的git:推断出来的。

git子模块+ *_OVERRIDE_SRCDIR用于git分支

如果您要修改存储库的源代码,我建议使用此方法:如何修改Buildroot软件包的源代码以进行软件包开发?


1

看起来已经有bluez包的tarballs可用。 在Google搜索"bluez"会得到http://www.bluez.org/download/,其中有几个tarballs的链接。

如果出于某种原因您真的想要Git存储库中的代码,可以创建存储库的本地克隆,然后使用git archive命令创建一个tarball。请参见git archive --help以获取文档。

根据您的需求,您还可以直接从存储库的本地副本构建(而不是仅创建一个tarball,以便在稍后的步骤中再次解压缩它)。


当我尝试时,tar balls不可用,但是git存储库可用。我只是不确定如何在.mk文件中使用git存储库,但Thomas的答案和查看文档已经帮助了我。 - D-Dᴙum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接