Processes and Activities: Difference between revisions

From Yocto Project
Jump to navigationJump to search
No edit summary
No edit summary
Line 2: Line 2:


* [[BKMs for Package Updating]]
* [[BKMs for Package Updating]]
 
* [[SDK Generator]]
 
== BKMs for Package Updating ==
 
This page will be for capturing the BKMs of package upgrading as we get reviewed and process more of the packages.
 
=== Don't Retain older Versions ===
 
Unless there is a specific need (which will probably occur for GPLv2, this has also happened in the past when platforms have known bugs in the latest version) don't retain older versions of the recipe files and patches.
 
=== Use git mv to rename recipe and patches ===
 
From Josh:
Generally the way I perform recipe upgrades is to use git mv to rename the old file to the new version, this means that you don't have to consciously delete the old version later (win 1) and that git tracks the rename and the differences with the old file, which doesn't happen with a delete and add (win 2).
 
The advantage of this is that you and any reviewers can more easily see what has changed with the updated version of the recipe.
 
 
Nitin: Actually {git mv a b} is nothing but {mv a b; git rm a; git add b} And the file renames are detected by git automatically by looking at the file contents. Because of this git behavior, git shows some renames as renames and sometimes not. And I did not find a way to force git to understand renames. So if after "git mv" git is showing "file add & file remove", then don't get surprised, it's normal git operation.
 
==== Reset PR to 0 (or add PR) when upgrading recipes ====
 
This is a good visual reminder to bump in the future if needed.
 
=== For upgrades it's ok to use OE for inspiration ===
 
When upgrading packages, do the git mv as above, and build if it breaks, it's OK to check the OE equivalent and grab new patch or configuration change, just don't grab the whole recipe.
 
Be sure to add a credit to OE in your commit message when you do take a change like this.
 
Review: [[Merging packages from OpenEmbedded]]
 
=== For new package grab OE version, but sanitize them ===
 
Follow the recipe rules for Yocto when you take an OE recipe, be sure to clean all the OE'isms out
 
Again, give credit to OE in commit messages
 
Review: [[Merging packages from OpenEmbedded]]
 
=== Do NOT Merge .inc / .bb files ===
 
This was a decision that slipped by me, and was not communicated well, we do not want to merge the common ".inc" files and recipe (.bb) files. This is the case even if the .bb only contains a require and a PR="r0" line.  This does not mean split everything at this point, but don't merge going forward.
 
=== White Space Management ===
 
 
* Most variables such as SRC_URI should use spaces.
 
* Shell functions should use tabs
 
* Python functions should use spaces (4 spaces per indent).
 
=== Commenting in Pacthes ===
 
When you change or add patches, be sure to include attributions of where the patch came from, along with your full name and email similar to "Signed-off-by", no special tag is needed (yet?), but having your full name and email is important to track it.
 
=== New style patch application ===
 
The patch and pnum parameters have been renamed to the more logical apply and striplevel. The apply parameter takes either "yes" or "no" and the striplevel parameter takes an integer (0, 1, etc).
 
Both parameters are now optional with "sane" defaults.
 
The apply parameter is optional for SRC_URI lines with patch or diff extensions, which will default to being applied.
 
The striplevel parameter is also optional with a default striplevel of 1.
 
Old style parameters (patch and pnum) will continue to work for some time but it would be useful to move to the new style syntax as people are updating other parts of their recipes.
 
Therefore a patch line would be changed from:
 
file://some.patch;patch=1;pnum=2
 
to:
 
file://some.patch;striplevel=2
 
and a patch line:
 
file://another.diff;patch=1;pnum=1
 
could be changed to:
 
file://another.diff





Revision as of 20:19, 22 October 2010

Welcome to the Processes and Activities Page!


SDK Generator

SDK Userspace NFS Use Scenarios and Workflow

Scenario 1: Minimal installation using meta-toolchain with a QEMU SDK image

Sally is an embedded application developer who works for a large corporation which locks-down its developer workstations and does not allow developers root access. :(

Sally's System Administrator set up her workstation for Poky development by doing the following:

  1. Extracting the output from a meta-toolchain build (poky-glibc-x86_64-i586-toolchain-XYZ.tar.bz2) into /opt/poky
  2. Install and ensure that rpcbind or portmap is running (note: rpcbind requires an insecure option, -i to work)
  3. Run the poky-qemu-ifup command N times to create a bank of tun devices that can be used by QEMU networking. These devices are owned by a group that Sally is a member of.

Sally then sources the meta-toolchain environment file (source /opt/poky/environment-setup-i586-poky-linux), which adds the toolchain's usr/bin directory into her $PATH and sets some other build-related environment variables.

She then downloads a poky-image-sdk tarball and a QEMU kernel. Sally can copy the kernel and extract the SDK image tarball to an arbitrary work area, but she must extract the SDK image tarball using the following script:

poky-extract-sdk <poky-sdk-tarball> <extract-dir>

The documentation may recommend standard directories (e.g, ~/qemukernels/<kernel> ~/rootfs/<machinetype>), but Sally is free to choose another directory if that suits her needs better.

She then can run QEMU to automatically boot to this nfsroot with the following command:

runqemu-nfs {machine-type} <kernel> <rootfs-dir>

Where machine-type is optional if the kernel is named according to poky conventions (e.g, bzImage-qemux86.bin). This script would automatically start up the userspace NFS server using binaries from /opt/poky and create runtime files (such as exports, rmtab, *.pid files, and so on) in ~/.poky-sdk/

It would then start up QEMU with the next available tap network device and mount its rootfs.

When Sally shuts down the QEMU session (either gracefully or by simply killing it), the userspace NFS server would be shut down and the tap network device released automatically. Sally could also forcefully shut down the NFS server and networking with the following command:

poky-export-rootfs stop <path to rootfs>

Scenario 2: In-tree Poky setup with a QEMU SDK image

Roger is an embedded developer who, like Sally, works for a large corporation which locks-down its developer workstations and does not allow developers root access. :(

Roger's System Administrator sets up his workstation for Poky development by doing the following:

  1. Install and ensure that rpcbind or portmap is running (note: rpcbind requires an insecure option, -i to work)
  2. Run the poky-qemu-ifup command N times to create a bank of tun devices that can be used by QEMU networking. These devices are owned by a group that Roger is a member of.

Thus, the only difference is that Roger doesn't need the cross-toolchain installed in /opt/poky. That is because Roger is willing to do full Poky builds, and has the Poky tarball extracted in some area he prefers to work (e.g, ~/poky).

Roger sources the poky-init-build-env script, which sets up his environment for Poky builds. He then bitbakes a poky-image-sdk image, which creates a qemu kernel and SDK image tarball in his ~/poky/build/tmp/deploy/images/ directory.

Roger then extracts the SDK image tarball with:

poky-extract-sdk <poky-sdk-tarball> <extract-dir>

and then starts QEMU to boot to this using:

runqemu-nfs {machine-type} <kernel> <rootfs-dir>

Where machine-type is optional if the kernel is named according to poky conventions (e.g, bzImage-qemux86.bin). This script would automatically start up the userspace NFS server using binaries from the automatically detected Poky native sysroot and create runtime files (such as exports, rmtab, *.pid files, and so on) in ~/.poky-sdk/

It would then start up QEMU with the next available tap network device and mount its rootfs.

When Roger shuts down the QEMU session (either gracefully or by simply killing it), the userspace NFS server would be shut down and the tap network device released automatically. Roger could also forcefully shut down the NFS server and networking with the following command:

poky-export-rootfs stop <path to rootfs>

Scenario 3: Exporting a rootfs to a non-QEMU target

This allows developers to export a rootfs to non-qemu targets (i.e, real hardware).

First, the rootfs must be created using the poky-extract-sdk script, which creates the filesystem tree using pseudo:

poky-extract-sdk <poky-sdk-tarball> <extract-dir>

Then they can start/stop/restart the unfs server with:

poky-export-rootfs {start|stop|restart} <path to rootfs>

The developer would then configure their hardware to boot using a kernel accessed over tftp and with a rootfs pointed at the hosts's IP and exported directory.

QA

Milestone Test Report for Yocto

Fullpass Test Report for M3-20100911

Fullpass Test Report for M3-20100911

Sanity Test Report for M3-20100911

Sanity Test Report for M3-20100911

Sanity Test Report for M3-20100909

Sanity Test Report for M3-20100911

Partial Sanity Test Report for M3 20100905

Partial Test Report for M3 20100905

Fullpass Test for M2-20100731

Fullpass Test Report for M2-20100731

M2-20100725 & Bug Update for M2-20100728

I finished testing on QEMU/Netbook for M2-20100725 and verified some bugs with M2-20100728 build. Against M2-20100725 build, I reported 12 new bugs and verified 2 bugs as fixed. With the second build M2-20100728, I verified old critical bugs and reported another 2 new bugs. 2 old bugs are verified as fixed with this build.

M3 Test Execution Plan

M3 fullpass test plan.

M4 Test Execution Plan

M4 fullpass test plan.


There are still 5 open bugs for M2, 4 of them are CRITICAL. And 23 open bugs are marked to M3. As a summary, QEMU targets (x86/arm/mips/ppc) can work without critical bugs. Toolchain has one critical bug. Meanwhile, emenlow/netbook have critical issue with/within X environment.


Open Bugs for M2:

Other Open Bugs reported, target for M3 or later:

Verified Fixed Issues:

Existing Old Issues:

M1 Test Report 2010/7/10

Summary & Issue List

I finished sanitytest for M1 20100710 build. There is 2 new issues found in this testing. qemuppc boot up issue is fixed but qemu will report OOM error when booting qemuppc images. There is no mouse action response after X startup with qemumips images. qemuppc and qemuarm cannot shutdown entirely. There are totally 4 open bugs in this testing.

BTW, This time I still build qemu-native from WR's branch (git.pokylinux.org:poky-wr +yocto-kernel-clean).

Issue List:

Test Result Matrix:

SanityTest Result

Machine Image Boot Network(ping) X startup SSH Service Shutdown Comments
qemux86 poky-image-sato PASS PASS PASS PASS PASS
poky-image-sdk PASS PASS PASS PASS PASS
qemuxarm poky-image-sato PASS PASS PASS PASS FAIL
poky-image-sdk PASS PASS PASS PASS FAIL
qemumips poky-image-sato PASS PASS PASS PASS PASS No mouse action response, some icons broken
poky-image-sdk PASS PASS PASS PASS PASS No mouse action response, some icons broken
qemuppc poky-image-sato PASS PASS N/A PASS FAIL
poky-image-sdk PASS PASS N/A PASS FAIL

Detail Test Result

Test Result can be found here Milestone Test Result for 20100710

Testing Env

Host: Ubuntu 10.04 LTS
Kernel: 2.6.32-21-generic-pae
Poky gitinfo(used to build qemu-native): aa416b6133bd55b5ba4d2fb6f5faef274ba511a0 (git.pokylinux.org:poky-wr +yocto-kernel-clean)
Build Image Download URL: http://autobuilder.pokylinux.org/milestone/20100710-1/


M1 Test Report 2010/7/8

Summary & Issue List

I finished sanitytest for M1 20100708 build. There are 3 issues found in this testing. The major issue is that there is no cursor in qemuarm and qemumips images. I also tried qemuppc because there is some fixing in latest tree, but qemuppc still fails to startup. 5 issues found in last time testing are fixed. Qemuarm can boot up now. Qemuarm and qemumips can start X now.

BTW, This time I still build qemu-native from WR's branch (git.pokylinux.org:poky-wr +yocto-kernel-clean).

Issue List:

Test Result Matrix:

SanityTest Result

Machine Image Boot Network(ping) X startup SSH Service Shutdown Comments
qemux86 poky-image-sato PASS PASS PASS PASS PASS
poky-image-sdk PASS PASS PASS PASS PASS
qemuxarm poky-image-sato PASS PASS PASS PASS FAIL No cursor after X startup
poky-image-sdk PASS PASS PASS PASS FAIL No cursor after X startup
qemumips poky-image-sato PASS PASS PASS PASS PASS No cursor after X startup
poky-image-sdk PASS PASS PASS PASS PASS No cursor after X startup

Detail Test Result

Test Result can be found here Milestone Test Result for 20100708

Testing Env

Host: Ubuntu 10.04 LTS
Kernel: 2.6.32-21-generic-pae
Poky gitinfo(used to build qemu-native): aa416b6133bd55b5ba4d2fb6f5faef274ba511a0 (git.pokylinux.org:poky-wr +yocto-kernel-clean)
Build Image Download URL: http://autobuilder.pokylinux.org/milestone/20100708-1/

M1 Test Report 2010/6/29

Summary & Issue List

There are 8 target images be tested, only 3 ones can boot up, while SDK image for qemumips is not built out. Testing for qemuarm and qemuppc is blocked. Network in qemux86 image is not enabled. X failure is still within SDK image. And there is no cursor within qemux86 poky-image-sato. Detail issue list as below.

For BAT testing, LTP and POSIX testing are performed against qemux86 poky-image-sdk and qemumips poky-image-sato. Compared with last time test result, LTP result for qemux86 is same, while POSIX result has one more failure.

BTW, I build qemu-native by myself from poky WR’s branch (git.pokylinux.org:poky-wr). These qemu startup scripts, like “runqemu”, also come from the branch.

Issue List:

  1. No network in qemux86 image, (sato/sdk). It should be caused by lack of e1000 module built in WR kernel.
  2. No cursor after X startup in qemux86 poky-image-sato image.
  3. Qemux86 poky-image-sdk image fails to start X. (Known issue as Saul pointed)
  4. Fail to boot up qemuarm images, (sato/sdk). It seems no root partition when booting. See attachment “qemuarm-poky-image.log” for full log when booting QEMU. qemuarm log
  5. Fail to boot up qemuppc images, (sato/sdk). qemu reports “could not load PPC PREP bios ‘powerpc_rom.bin’”. See attachment “qemuppc-poky-image.log” for full log. qemuppc log
  6. By default, script “runqemu” does not start X for qemuarm, qemuppc and qemumips. I find there is no wnidow popup even I remove the X disable option, "-nographic" for qemumips.

Test Result Matrix:

SanityTest Result

Machine Image Boot Network(ping) X startup SSH Service Shutdown Comments
qemux86 poky-image-sato PASS FAIL PASS N/T PASS No cursor after X startup with show-cursor option
poky-image-sdk PASS FAIL FAIL N/T PASS
qemuxarm poky-image-sato FAIL BLOCK BLOCK BLOCK BLOCK
poky-image-sdk FAIL BLOCK BLOCK BLOCK BLOCK
qemumips poky-image-sato PASS PASS N/A PASS PASS option "-nographic" is set in script "poky-qemu-internal" for qemumips. There is no window popup even I remove the option.
poky-image-sdk N/A N/A N/A N/A N/A No SDK images for qemumips
qemuppc poky-image-sato FAIL BLOCK BLOCK BLOCK BLOCK
poky-image-sdk FAIL BLOCK BLOCK BLOCK BLOCK

BAT Result:

Machine Image LTP(FAIL/TOTAL) POSIX(FAIL/UNSUPPORT/TOTAL)
qemux86 poky-image-sdk 46/1120 51/99/1644
qemumips poky-image-sato 58/1116 N/A

Detail Test Result

Test Result can be found here Milestone Test Result for 20100629

Testing Env

Host: Ubuntu 10.04 LTS
Kernel: 2.6.32-21-generic-pae
Poky gitinfo(used to build qemu-native): 5280cfe8c9cd9c9a880683186c77c24d380978ed (git.pokylinux.org:poky-wr)
Build Image Download URL: Except for SDK images for qemuppc and qemuarm (from http://autobuilder.pokylinux.org/nightly/20100629-1/), all the other images come from http://autobuilder.pokylinux.org/nightly/20100628-1/.

Enable Automation Test in Poky

Currently we have implemented two automated sanity test cases in Poky. User can follow below steps to enable the automation test:

  • Make sure your working tree has latest test code. The first sanity test implementation is checked in poky master tree as commit, fd1d661b391dfad1edaac937a17c1165f635031a.
  • Make sure your machine has package "expect" installed. The package is necessary for testing. We will add a recipe for it later. Currently, you need install it by yourself. On Ubuntu host, you can use apt-get to install expect:
$ apt-get install expect
  • Edit /etc/sudoers to allow the user run sudo without prompted for a password. For example, you can do like following for user "tester":
$ cat /etc/sudoers
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#
....
....
....

%tester ALL=(ALL) NOPASSWD: NOPASSWD: ALL
  • Typically, you need a X environment to start QEMU. You can use your desktop's DISPLAY. Or, alternatively, you can install vncserver, and startup a X environment in localhost:x.0. (x can be 1, 2, 3.....n)
  • You need set "IMAGETEST" to "qemu" in build/conf/local.conf
$ cat local.conf
.....
# Set IMAGETEST to qemu if you want to build testcases and start
# testing in qemu after do_rootfs.
IMAGETEST = "qemu"
.....
  • Then you can run "bitbake poky-image-xxx" (xxx can be minimal, sato, sdk). After the kernel/image are generated, you need run "bitbake poky-image-xxx -c qemuimagetest". It will trigger automation test and you will get the result after a while. :)

Full Pass Specification

M2 Test Execution Plan

Since there are still some unclear requirements for Yocto project, currently it’s hard to define test plan to cover all future milestone/weekly testing. According to the suggestion from KangKang, I defined a test execution plan for M2 testing, which only covers tests for M2 requirement.


The fullpass test plan is here, M2 fullpass test plan. For each target, like qemux86, qemuarm, netbook, e-Menlow, etc, I define separate test plan for them, with sub-tests chosen from the fullpass test plan.

I setup a testlink page to track test case and test plan status, http://otc-qa.sh.intel.com/testlink_yocto/. You can use username/passwd: guest/guest, to browser test case and test plan.

Kernel

Distro

Yocto Release Process

Steps to release Yocto:

Run an autobuilder "generate-release" build. This will create images in /srv/www/vhosts/autobuilder.pokylinux.org/generate-release/<datestamp>/. Rename these files with the appropriate release name and version (Scott will have a script to do this by the next release).

For post-Green releases, there will be a release staging area that will be used to mirror the output before the files are released on the public web site.

On release branch:

  • Set DISTRO_VERSION in poky.conf
  • Update handbook references to stable release (introduction.xml, master branch needs this too)
  • Update version reference and updated date in handbook (poky-handbook.xml)
  • git commit -a -m "Purple 3.2 Release"
  • git tag -a purple-3.2 -m "Tag Purple 3.2"
  • git archive purple-3.2 --prefix=purple-3.2/ | bzip2 > /tmp/poky-purple-3.2.tar.bz2 scp /tmp/poky-purple-3.2.tar.bz2 o- hand.com:/srv/www/pokylinux.org/releases/poky-purple-3.2.tar.bz2

On master branch:

  • Set DISTRO_VERSION in poky.conf to new version
  • Update version reference and updated date in handbook (poky-handbook.xml)
  • cd handbook
  • make
  • scp -r poky-handbook.tgz poky-handbook.html poky-handbook.pdf *.png *.xml *.css *.svg o-hand.com:/srv/www/pokylinux.org/releases/purple-3.2/doc/
  • scp -r poky-handbook.tgz poky-handbook.html *.png *.xml *.css *.svg o-hand.com:/srv/www/pokylinux.org/releases/doc/

(or copy across by hand when remotely connected to machine?)

  • Edit web pages (website is controlled from a git repo)
    • support/index.php
    • getit/index.php
    • index.php
    • poky-wp-theme/common-funcs.inc
    • poky-wp-theme/front-page.php
  • Post release announcement on Blog
  • Post release announcement on mailing list

Core