How do I Add a A Package To Buildroot Which Is Available In A Git Repository?

Buildroot already has a bluez package, which will be part of the upcoming 2011.11 release. In the mean time, you can either use the latest Git version of Buildroot, or back-port the bluez package into an older version of Buildroot.

Coming back to the initial question, Buildroot is capable of fetching source code from Git repositories. As stated in the documentation, you simply need to do:

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

in your .mk file.


Minimal working in-tree 2016.05 example

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

The only interesting file is 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))

It downloads and builds: https://github.com/cirosantilli/hello-c

MYPKG_SITE_METHOD = git is inferred from the git: on SITE.

git submodule + *_OVERRIDE_SRCDIR for git forks

If you are going to modify the source of the repository, I recommend this approach: How to modify the source of Buildroot packages for package development?


It looks like there are tarballs of the bluez package already available. A Google search for "bluez" yields http://www.bluez.org/download/, which has links to several tarballs.

If for some reason you really want the code from the Git repository, you can make a local clone of the repository and then use the git archive command to create a tarball. See git archive --help for the documentation.

Depending on your needs, you may also be able to build directly from your local copy of the repository (rather than creating a tarball only to unpack it again in a later step).