Styleguide: Difference between revisions

From Openembedded.org
Jump to navigation Jump to search
(add suggestion on handling PR in inc files)
No edit summary
 
(29 intermediate revisions by 10 users not shown)
Line 1: Line 1:
= Naming Conventions =
This page has moved to the [https://docs.yoctoproject.org/dev/contributor-guide/recipe-style-guide.html Yocto Documentation Contributors Guide]
 
[[Versioning Policy|Use $packagename_$version.bb]]
 
= Format Guidelines =
 
* No spaces are allowed behind the line continuation symbol
* Use quotes on the right hand side of assignments: FOO = "BAR"
* 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
* The correct spacing for a variable is FOO = "BAR".
* Indentation of multiline variables such as SRC_URI is desireable.
 
= Style Guidelines =
 
* 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:
** do_fetch
** do_unpack
** do_patch
** do_configure
** do_compile
** do_install
** do_package
** do_stage
 
* Don't use ''cp'' to put files into staging or destination directories, use ''install'' instead.
* Don't use ''mkdir'' to create destination directories, use ''install -d'' instead.
 
* There is a standard set of variables often found in a .bb file and the preferred order (to make the file easily readable to seasoned developers) is
** DESCRIPTION
** AUTHOR
** HOMEPAGE
** SECTION
** PRIORITY
** LICENSE
** DEPENDS
** RDEPENDS
** RRECOMMENDS
** RSUGGESTS
** PROVIDES
** RPROVIDES
** RCONFLICTS
** SRCDATE
** PV
** PR
** SRC_URI
** S
** inherit ...
** build class specific variables, i.e. EXTRA_QMAKEVARS_POST
** task overrides, i.e. do_configure
** PACKAGE_ARCH
** PACKAGES
** FILES
 
= Example Recipe =
 
<pre>
DESCRIPTION = "X11 Code Viewer"
AUTHOR = "John Bazz <john.bazz@example.org>"
HOMEPAGE = "http://www.example.org/xcv/"
SECTION = "x11/applications"
PRIORITY = "optional"
LICENSE = "GPLv2"
DEPENDS = "libsm libx11 libxext libxaw"
RDEPENDS = "shared-mime-info"
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
SRC_URI = "cvs://anonymous@xcv.example.org/cvsroot/xcv;module=xcv \
          file://toolbar-resize-fix.patch;patch=1"
 
S = "${WORKDIR}/xcv/"
 
inherit autotools
 
do_configure_prepend() {
    rm ${S}/aclocal.m4
}
 
do_install() {
    install -d ${D}${bindir}
    install -d ${D}${mandir}/man1
 
    install -m 0755 xcv ${D}${bindir}/ 
    install -m 0644 xcv.1.gz ${D}${mandir}/man1/
}
</pre>
 
= 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:
 
<pre>
recipe: PR = "${INC_PR}.1"
 
inc file: INC_PR = "r1"
</pre>
 
 
[[Category:Policy]]

Latest revision as of 16:54, 30 August 2023

This page has moved to the Yocto Documentation Contributors Guide