<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.yoctoproject.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kergoth</id>
	<title>Yocto Project - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.yoctoproject.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kergoth"/>
	<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/Special:Contributions/Kergoth"/>
	<updated>2026-04-27T01:22:54Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Yocto_Build_Failure_Swat_Team&amp;diff=80855</id>
		<title>Yocto Build Failure Swat Team</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Yocto_Build_Failure_Swat_Team&amp;diff=80855"/>
		<updated>2020-11-10T15:45:54Z</updated>

		<summary type="html">&lt;p&gt;Kergoth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
The role of the SWAT team is to monitor the autobuilder and investigate all failures to ensure that they are logged and brought to the attention of the appropriate owner.&lt;br /&gt;
&lt;br /&gt;
All builds that are run on the [https://autobuilder.yoctoproject.org public autobuilder] are important for the Yocto Project, whether they be a post-merge validation run (for master or a release branch) or a pre-merge test build (for master-next, ross/mut, stable/* and others).  SWAT doesn&#039;t cover company-internal autobuilders.&lt;br /&gt;
&lt;br /&gt;
Every build should be monitored by the SWAT team unless the [[BuildLog]] entry for that build indicates otherwise.  SWAT is opt-out by whomever triggers a build on the autobuilder, not opt-in.&lt;br /&gt;
&lt;br /&gt;
SWAT isn&#039;t responsible for resolving any issues encountered on the autobuilder. Their focus is on performing minimal analysis of a failure in order to ensure that it is logged and brought to the attention of a appropriate owner, a process we&#039;ll refer to as pre-triage.&lt;br /&gt;
&lt;br /&gt;
== Roles ==&lt;br /&gt;
&lt;br /&gt;
Active member: the currently active member of the SWAT team is expected to monitor the autobuilder and pre-triage failures in a timely fashion. Team members are active for one week at a time and rotation is usually simple round robin through the members list.  If for some reason the next person isn&#039;t available then they can be defer a week until they are.&lt;br /&gt;
&lt;br /&gt;
SWAT Chair: the SWAT chair provides backup cover for the active member and is a first point of contact for SWAT. [[User:RossBurton | Ross Burton]], Armin Kuster and Richard Purdie are the SWAT Chair people.&lt;br /&gt;
&lt;br /&gt;
SWAT Facilitator: the SWAT facilitator is responsible for managing the rotation process. [[User:Stephen_K._Jolley | Stephen K. Jolley]] is the current SWAT Facilitator.&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
&lt;br /&gt;
The [[BuildLog]] wiki page is automatically updated by the autobuilder when a new build is triggered. This often includes guidance for SWAT (the &amp;quot;Reason&amp;quot; field when triggering the build) such as to ignore it (if the build is expected to break and the owner is monitoring themselves) or a request to report failures straight to a specific person (if the build only contains changes from a single person, such as a GCC upgrade).  Unless when told otherwise, the usual process is as follows:&lt;br /&gt;
&lt;br /&gt;
For builds against master or a release branch, any issues observed should be [[#Filing_bugs | filed in Bugzilla]].&lt;br /&gt;
&lt;br /&gt;
For builds against other branches (master-next, ross/mut, -next branches for stable releases, etc.), attempt to identify what patch in the branch is likely responsible for the failure. For example, if &amp;lt;tt&amp;gt;wget&amp;lt;/tt&amp;gt; fails with &amp;lt;tt&amp;gt;libgnutls&amp;lt;/tt&amp;gt; errors and there is a GnuTLS upgrade in the branch, that is the likely candidate.  If a patch can be identified that isn&#039;t also in master or release branch, reply on the mailing list with the failure details.  If it isn&#039;t obvious which patch is responsible for the failure then [[#Filing_bugs | file a bug]] and ensure the branch owner is either the assignee or on the CC list.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If in doubt, file a bug&#039;&#039;&#039;. All observed errors must be actioned unless a patch has already been sent for the issue, in which case please make note of this in the [[BuildLog]].&lt;br /&gt;
&lt;br /&gt;
If the issue is in the infrastructure or autobuilder itself then file a bug against , infrastructure bugs should be assigned to [[User:Halstead| Michael Halstead]] and autobuilder logic bugs to [[User:Rpurdie | Richard Purdie]].&lt;br /&gt;
&lt;br /&gt;
The results of pre-triage for an issue should be added to the corresponding entry in the [[BuildLog]], including a link to the resolution (patch name, bug link, etc) and a brief summary of the issue.  Every issue should be added to the build log so it acts as a build status report.&lt;br /&gt;
&lt;br /&gt;
Note that some builds, in particular the &amp;quot;perf&amp;quot; builds are not listed on [[BuildLog]] unless the build fails (to try and reduce noise on the log). Failures in performance test builds should be handled like any other build.&lt;br /&gt;
&lt;br /&gt;
The net result is all failures listed in [[BuildLog]] should have outcomes listed against them from the person on SWAT at the time.&lt;br /&gt;
&lt;br /&gt;
=== Filing bugs ===&lt;br /&gt;
&lt;br /&gt;
When filing the bug two things are required:&lt;br /&gt;
* A link to the build failure.  This can either be the build page (such as https://autobuilder.yoctoproject.org/typhoon/#/builders/34/builds/168) or the [http://errors.yoctoproject.org/Errors/ error reports] page (such as http://errors.yoctoproject.org/Errors/Details/199667/).&lt;br /&gt;
* The error itself. Trim the log down to just the error and any relevant context in the bug description, and also attach the complete log file.  Autobuilder logs are not persistent so the full log must be attached.&lt;br /&gt;
&lt;br /&gt;
=== Process summary ===&lt;br /&gt;
&lt;br /&gt;
* Monitor builds via one or more of:&lt;br /&gt;
** the autobuilder: [https://autobuilder.yoctoproject.org/typhoon/ main page], [https://autobuilder.yoctoproject.org/typhoon/#/console console view]. Orange builds have warnings, red builds failed with errors.&lt;br /&gt;
** the [http://errors.yoctoproject.org/Errors/ Error Reports] web page which has an entry for each recipe that fails. A link to the appropriate search is on the autobuilder&#039;s Console View.&lt;br /&gt;
** the [[BuildLog]] wiki page.  This has links to each build log that wasn&#039;t successful.&lt;br /&gt;
** the [https://lists.yoctoproject.org/listinfo/yocto-builds yocto-builds] mailing list. This gets a mail for every unsuccessful build.&lt;br /&gt;
* Pre-triage each failure:&lt;br /&gt;
** File a bug &#039;&#039;or&#039;&#039; respond to a patch &#039;&#039;or&#039;&#039; note known issues&lt;br /&gt;
** Update the [[BuildLog]] with the result of pre-triage, linking to the resolution where possible.&lt;br /&gt;
&lt;br /&gt;
== Questions / Contact ==&lt;br /&gt;
&lt;br /&gt;
If you have queries about the SWAT process you may reach out to the SWAT Facilitator [[User:Stephen_K._Jolley | Stephen K. Jolley]] or the SWAT Chair [[User:RossBurton | Ross Burton]].&lt;br /&gt;
&lt;br /&gt;
== Members ==&lt;br /&gt;
&lt;br /&gt;
[[User:Leonardo_Sandoval | Leo Sandoval]]&lt;br /&gt;
&lt;br /&gt;
[[User:SaulWold | Saul Wold]]&lt;br /&gt;
&lt;br /&gt;
[[User:PaulEggleton | Paul Eggleton]]&lt;br /&gt;
&lt;br /&gt;
[[User:Naveen Kumar Saini | Naveen Saini]]&lt;br /&gt;
&lt;br /&gt;
Armin Kuster (place me anywhere)&lt;br /&gt;
&lt;br /&gt;
[[User:Kergoth | Christopher Larson]]&lt;/div&gt;</summary>
		<author><name>Kergoth</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=LesserKnownFeatures&amp;diff=7166</id>
		<title>LesserKnownFeatures</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=LesserKnownFeatures&amp;diff=7166"/>
		<updated>2012-08-23T00:43:17Z</updated>

		<summary type="html">&lt;p&gt;Kergoth: Initial creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Let’s go over a few Yocto/OE capabilities which seem to be less commonly known.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Variable Typing&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
The first item I will cover is the &amp;quot;Variable Typing&amp;quot; support. This feature allows one to declare the &#039;type&#039; of a given metadata variable. This both enables a type check to ensure that it&#039;s syntactically valid, and returns an object of the appropriate type when using the python interface. Admittedly, this is promotion of something I created, but I do believe there&#039;s value here, and future posts will cover a variety of features created by a variety of individuals.&lt;br /&gt;
&lt;br /&gt;
The implementation in oe-core consists of two components:&lt;br /&gt;
&lt;br /&gt;
* Type creation python modules, whose job it is to construct objects of the defined type for a given variable in the metadata&lt;br /&gt;
* typecheck.bbclass, which iterates over all configuration variables with a type defined and uses oe.types to check the validity of the values&lt;br /&gt;
&lt;br /&gt;
This gives us a few benefits:&lt;br /&gt;
&lt;br /&gt;
* Automatic sanity checking of all configuration variables with a defined type&lt;br /&gt;
* Consolidates the logic surrounding what to do with the value of a given variable. For variables like PATH, this is simply a split(), but for boolean variables, any duplication can result in unclear semantics. For example, we may not know whether our choices are 1/0, empty/nonempty, true/false, etc.&lt;br /&gt;
* Make it easier to create a configuration UI, as the type information could be used to provide a better interface than a text edit box (e.g checkbox for &#039;boolean&#039;, dropdown for &#039;choice&#039;)&lt;br /&gt;
&lt;br /&gt;
To enable configuration time type checking of the config variables which have the appropriate metadata, set the following: `INHERIT += &amp;quot;typecheck&amp;quot;`. This is done by the &#039;mel&#039; distro automatically.&lt;br /&gt;
&lt;br /&gt;
List of currently available types: list, choice, regex, boolean, integer, float&lt;br /&gt;
&lt;br /&gt;
An example of the appropriate metadata with failing typecheck:&lt;br /&gt;
&lt;br /&gt;
    BAZ = &amp;quot;foo&amp;quot;&lt;br /&gt;
    BAZ[type] = &amp;quot;boolean&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    $ bitbake -p&lt;br /&gt;
    FATAL: BAZ: Invalid boolean value &#039;foo&#039;&lt;br /&gt;
&lt;br /&gt;
Further examples of metadata values:&lt;br /&gt;
&lt;br /&gt;
    FOO = &amp;quot;alpha&amp;quot;&lt;br /&gt;
    FOO[type] = &amp;quot;choice&amp;quot;&lt;br /&gt;
    FOO[choices] = &amp;quot;alpha beta theta&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    PACKAGES[type] = &amp;quot;list&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    LIBTOOL_HAS_SYSROOT = &amp;quot;yes&amp;quot;&lt;br /&gt;
    LIBTOOL_HAS_SYSROOT[type] = &amp;quot;boolean&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    PATH[type] = &amp;quot;list&amp;quot;&lt;br /&gt;
    PATH[separator] = &amp;quot;:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Examples of usage of these from python:&lt;br /&gt;
&lt;br /&gt;
    python () {&lt;br /&gt;
        import oe.data&lt;br /&gt;
        for pkg in oe.data.typed_value(&amp;quot;PACKAGES&amp;quot;, d):&lt;br /&gt;
            bb.note(&amp;quot;package: %s&amp;quot; % pkg)&lt;br /&gt;
        &lt;br /&gt;
        for path in oe.data.typed_value(&amp;quot;PATH&amp;quot;, d):&lt;br /&gt;
            bb.note(&amp;quot;PATH element: %s&amp;quot; % path)&lt;br /&gt;
        &lt;br /&gt;
        assert(oe.data.typed_value(&amp;quot;FOO&amp;quot;, d) == &amp;quot;alpha&amp;quot;)&lt;br /&gt;
        assert(oe.data.typed_value(&amp;quot;LIBTOOL_HAS_SYSROOT&amp;quot;, d) == True)&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OE python package&lt;br /&gt;
-----------------&lt;br /&gt;
&lt;br /&gt;
The OE python package has a number of modules which provide some valuable pieces of functionality. Please, take the time to look over these modules before writing any python in the metadata, as they can prevent unnecessary reinvention of the wheel.&lt;br /&gt;
&lt;br /&gt;
Examples (random selection of bits from the oe package):&lt;br /&gt;
&lt;br /&gt;
* oe.path.relative - return a relative path from src to dest&lt;br /&gt;
* oe.path.copytree - recursively copy a tree from src to dest&lt;br /&gt;
* oe.path.find - acts like the ‘find’ command, traversing a tree and yielding the full paths to the files&lt;br /&gt;
* oe.utils.inherits - return True if the metadata inherits from any of the specified classes&lt;br /&gt;
&lt;br /&gt;
Classes&lt;br /&gt;
-------&lt;br /&gt;
&lt;br /&gt;
* externalsrc&lt;br /&gt;
&lt;br /&gt;
	This class is used to build from an existing local source tree, rather than the usual fetch/unpack/patch process. This is an invaluable tool for active development.&lt;br /&gt;
&lt;br /&gt;
* gitver/gitpkgv&lt;br /&gt;
&lt;br /&gt;
	gitpkgv is used to extract the version from a git repository referenced from SRC_URI, and use it in the package versioning.&lt;br /&gt;
	gitver is used for the same purpose, but to extract from a local repository, rather than a bitbake fetched repository&lt;br /&gt;
&lt;br /&gt;
* lib_package&lt;br /&gt;
&lt;br /&gt;
	This class is used to split out the binaries from the main library for recipes whose primary artifact is the library&lt;br /&gt;
	&lt;br /&gt;
* recipe_sanity (used via INHERIT)&lt;br /&gt;
&lt;br /&gt;
	This class is used to run a set of basic sanity checks against the metadata of a recipe. It checks for some common user errors.&lt;br /&gt;
	&lt;br /&gt;
* archiver (used via INHERIT)&lt;br /&gt;
&lt;br /&gt;
	This class is used to archive sources/patches/logs for a recipe, usually for license compliance. It is quite configurable, to cover the common use cases, and ensure it can meet the needs of any legal department.&lt;/div&gt;</summary>
		<author><name>Kergoth</name></author>
	</entry>
</feed>