// -*- mode:doc; -*-
// vim: set syntax=asciidoc:

Tips and tricks
~~~~~~~~~~~~~~~

[[package-name-variable-relation]]
Package name, config entry name and makefile variable relationship
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

In Buildroot, there is some relationship between:

* the _package name_, which is the package directory name (and the
  name of the +*.mk+ file);

* the config entry name that is declared in the +Config.in+ file;

* the makefile variable prefix.

It is mandatory to maintain consistency between these elements,
using the following rules:

* the package directory and the +*.mk+ name are the _package name_
  itself (e.g.: +package/foo-bar_boo/foo-bar_boo.mk+);

* the _make_ target name is the _package name_ itself (e.g.:
  +foo-bar_boo+);

* the config entry is the upper case _package name_ with `.` and `-`
  characters substituted with `_`, prefixed with +BR2_PACKAGE_+ (e.g.:
  +BR2_PACKAGE_FOO_BAR_BOO+);

* the +*.mk+ file variable prefix is the upper case _package name_
  `.` and `-` characters substituted with `_` (e.g.:
  +FOO_BAR_BOO_VERSION+).


[[github-download-url]]
How to add a package from github
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Packages on github often don't have a download area with release tarballs.
However, it is possible to download tarballs directly from the repository
on github.

If the package version matches a tag, then this tag should be used to
identify the version:

------------------------
FOO_VERSION = v1.0
FOO_SITE = http://github.com/<user>/<package>/tarball/$(FOO_VERSION)
------------------------

If the package has no release version, or its version cannot be
identified using tag, then the SHA1 of the particular commit should be
used to identify the version (the first 7 characters of the SHA1 are
enough):

------------------------
FOO_VERSION = 1234567
FOO_SITE = http://github.com/<user>/<package>/tarball/<branch>
------------------------

Note that the name of the tarball is the default +foo-1234567.tar.gz+
so it is not necessary to specify it in the +.mk+ file.
