* Comments inside bb files are allowed using the '#' character at the beginning of a line.

* Comments inside bb files are allowed using the '#' character at the beginning of a line.

−

* Use either tabs '''or''' spaces for indentation, but don't mix the two in the same file

+

* Use spaces for indentation as developers tends to use different amount of spaces per one tab.

−

* The correct spacing for a variable is FOO = "BAR".

+

* Indentation of multiline variables such as SRC_URI is desireable.

* Indentation of multiline variables such as SRC_URI is desireable.

+

* Python functions should be four space indented, no tabs.

+

* Shell functions are usually tab character indented.

= Style Checking tools =

= Style Checking tools =

+

Please run ./contrib/oe-stylize.py on your recipes before submitting them.

Please run ./contrib/oe-stylize.py on your recipes before submitting them.

Line 18:

Line 21:

* Put the ''inherit'' declaration after the initial variables are set up and before any custom ''do_'' routines. This is flexible as ordering is often important.

* Put the ''inherit'' declaration after the initial variables are set up and before any custom ''do_'' routines. This is flexible as ordering is often important.

−

* If you define custom ''do_'' routines, keep them in the order of the tasks being executed, that is:

* If you define custom ''do_'' routines, keep them in the order of the tasks being executed, that is:

** do_fetch

** do_fetch

Line 26:

Line 28:

** do_compile

** do_compile

** do_install

** do_install

+

** do_populate_sysroot

** do_package

** do_package

−

** do_stage

* Don't use ''cp'' to put files into staging or destination directories, use ''install'' instead.

* Don't use ''cp'' to put files into staging or destination directories, use ''install'' instead.

Line 37:

Line 39:

** HOMEPAGE

** HOMEPAGE

** SECTION

** SECTION

−

** PRIORITY

** LICENSE

** LICENSE

** DEPENDS

** DEPENDS

Line 57:

Line 58:

** PACKAGES

** PACKAGES

** FILES

** FILES

+

+

* Package related variables for a given package are often grouped together for clarity.

= Example Recipe =

= Example Recipe =

<pre>

<pre>

−

DESCRIPTION = "X11 Code Viewer"

+

SUMMARY = "X11 Code Viewer"

+

DESCRIPTION = "Allow viewing of X11 code in a fancy way which allows easier \

+

and more productive X11 programming"

AUTHOR = "John Bazz <john.bazz@example.org>"

AUTHOR = "John Bazz <john.bazz@example.org>"

HOMEPAGE = "http://www.example.org/xcv/"

HOMEPAGE = "http://www.example.org/xcv/"

SECTION = "x11/applications"

SECTION = "x11/applications"

−

PRIORITY = "optional"

+

LICENSE = "GPL-2.0"

−

LICENSE = "GPLv2"

+

DEPENDS = "libsm libx11 libxext libxaw"

DEPENDS = "libsm libx11 libxext libxaw"

−

RDEPENDS = "shared-mime-info"

+

PV = "0.9+git${SRCPV}"

−

RRECOMMENDS = "ctags"

+

−

RCONFLICTS = "xcv2"

+

−

SRCDATE = "20060815"

+

−

PV = "0.0+cvs${SRCDATE}"

+

−

PR = "r5"

+

−

# upstream does not yet publish any release so we have to fetch last working version from CVS

+

# upstream does not yet publish any release so we have to fetch last working version from GIT

−

SRC_URI = "cvs://anonymous@xcv.example.org/cvsroot/xcv;module=xcv \

+

SRCREV = "6a5e79ae8a0f4a273a603b2df1742972510d3d8f"

−

file://toolbar-resize-fix.patch;patch=1"

+

SRC_URI = "git://xcv.example.org/xcv;protocol=http \

+

file://toolbar-resize-fix.patch"

S = "${WORKDIR}/xcv/"

S = "${WORKDIR}/xcv/"

Line 94:

Line 94:

install -m 0644 xcv.1.gz ${D}${mandir}/man1/

install -m 0644 xcv.1.gz ${D}${mandir}/man1/

}

}

+

+

RDEPENDS_${PN} = "shared-mime-info"

+

RRECOMMENDS_${PN} = "ctags"

+

RCONFLICTS_${PN} = "xcv2"

</pre>

</pre>

= PR variables with recipes that use INC files =

= PR variables with recipes that use INC files =

−

When recipe include files are used, the PR handling gets kind of messy. Its a pain to have to audit the PR in all the dependent recipes when you change something in an INC file. The following is a proposed solution:

+

When recipe include files are used, the PR handling gets kind of messy. Its a pain to have to audit the PR in all the dependent recipes when you change something in an INC file. We usually use the following solution:

<pre>

<pre>

Line 105:

Line 109:

</pre>

</pre>

−

When converting existing recipes to use INC_PR, set the initial INC_PR to the maximum of the current PR's.

+

When converting existing recipes to use INC_PR, set the initial INC_PR to the maximum of the current PRs.

[[Category:Policy]]

[[Category:Policy]]

+

+

Also see https://wiki.yoctoproject.org/wiki/Recipe_%26_Patch_Style_Guide

PR variables with recipes that use INC files

When recipe include files are used, the PR handling gets kind of messy. Its a pain to have to audit the PR in all the dependent recipes when you change something in an INC file. We usually use the following solution:

recipe: PR = "${INC_PR}.1"
inc file: INC_PR = "r1"

When converting existing recipes to use INC_PR, set the initial INC_PR to the maximum of the current PRs.