BitBake

{{Short description|Build automation tool often used for building Linux distributions}}

{{third-party|date=March 2018}}

{{Infobox software

| name = BitBake

| logo =

| screenshot =

| caption =

| collapsible =

| author = Holger Schurig

| developer = OpenEmbedded

| released = {{Start date and age|2004|12|07}}{{cite web |title=Re: [yocto] Happy Birthday, Yocto Project |url=https://www.mail-archive.com/yocto@yoctoproject.org/msg16605.html |date=2013-11-15}}

| latest release version = 2.0.1{{cite web |title=Tag |url=https://git.openembedded.org/bitbake/tag/?h=2.0.1}}

| latest release date = {{Start date and age|2022|05|23}}

| latest preview version =

| latest preview date =

| repo = {{URL|https://git.openembedded.org/bitbake/}}

| programming language = Python

| operating system = Linux

| genre = Build automation

| license = GPLv2

| website = {{URL|openembedded.org}}

}}

BitBake is a task execution engine build automation tool that allows shell and Python tasks to run in parallel yet in order constrained by configured dependencies.

Engine

It was originally developed for and is commonly used to build embedded Linux distributions {{endash}} often using a cross compiler to target a system that differs architecturally from the build host.

BitBake provides capabilities similar to make but via significantly different configuration information. A BitBake recipe specifies how to build a package with information such as where to pull source code from (source URL), dependency constraints, and compile and install options. A source URL commonly specifies a git repo, but other protocols are supported including: http, https, ftp, cvs, svn, and local file system. A recipe also stores metadata for a package in standard variables.{{cite web |title=From Bitbake Hello World To an Image |website=Hambedded Linux |url=https://github.com/hambedded-linux/hambedded-linux.github.com/blob/source/source/_posts/2012-11-24-from-bitbake-hello-world-to-an-image.markdown|date=2017-04-26}}

During a build operation, recipes determine build order (constrained by dependencies) and processing tasks to be performed to produce the requested target {{endash}} recipe or package. A relatively high-level target can produce a complete system software image consisting of boot-time resources, a kernel and a root file system. A build typically includes building the cross-platform build toolchain that generates code for the target platform.

BitBake was inspired by Portage,{{cite web |title= It was inspired by the Portage package management system |website=BitBake User Manual |url=http://docs.yoctoproject.org/bitbake/bitbake-user-manual/bitbake-user-manual-intro.html#history-and-goals |date=2018-05-17}} which is the package management system used by the Gentoo Linux distribution. BitBake existed for some time in the OpenEmbedded project until it was separated out into a standalone, maintained, distribution-independent tool. BitBake is co-maintained by the Yocto Project and the OpenEmbedded project.

See also

{{Portal|Free and open-source software}}

  • {{Annotated link|Buildroot}}
  • {{Annotated link|Openmoko}}
  • {{Annotated link|MontaVista}}
  • {{Annotated link|List of build automation software}}

References

{{reflist}}