Packaged staging and what it gives

Many people do not realize that Poky (and OpenEmbedded .dev) have so called “packaged staging” support.

What it is?

Let me try to describe it a bit. During normal builds “tmp/staging” directory is populated during “do_stage” tasks and there is no way to remove staged files in other way then by hand. With “packaged staging” this area is under package management — each built recipe has those files packaged along with resulting packages, stamps and cross tools.

OK, but what it gives? Why to bother with this at all?

Those are good questions… With fast machines (like my Core2Quad for example) build of “poky-image-sato” can be done in less then 2 hours so it looks like there is no need for any speedups… But not every one has such beasts. With packaged staging developer is able to do repeatable builds in nearly no time (compared to first build) as most of recipes are not built but unpacked from previous builds.

How to use it

To make use of packaged staging “conf/local.conf” needs some editing. Basically one line (inheriting packaged staging class) is important:

INHERIT += "packaged-staging"

To be able to make builds from scratch one more change (moving directory with staging packages outside of “tmp”) is needed:

DEPLOY_DIR_PSTAGE = "${OEROOT}/build/pstage/"

After those edits we need to make first build. I suggest “poky-image-sato” target as this will give all important libraries built and packaged. Everything behave like in normal build — software is built, staged, packaged and final image is created. Bonus is in “${OEROOT}/build/pstage/” subdirectories — extra packages which will be used in any of next builds.

Lets test it

Now when we have first built done (which took few hours) we can test how much will “packaged staging” improve our build time (I assume that both edits listed above were done).

So now comes interesting part — we will remove “tmp” directory and do build from scratch. Please notice what happens — nearly nothing is built (except “stagemanager-native” which handle “packaged staging” functionality) because everything is unpacked from packages done on previous build. If any recipe got updated since last time it will be built and packaged.

End notes

As you see packaged staging can be really useful for making builds — less time is needed, results of following builds are same. And in the end developer has more time for developing :)

Poky 3.1.1 Maintenance Release

Poky 3.1.1 has been released. This version is a maintenance release which fixes:

  • a problem with the source mirror URL and certain URLs
  • some upstream source URLs which changed
  • a missing recipe dependency
  • a problem when cdaudio was installed on the build system

You can download a tarball of this release from here.

New release of Poky Anjuta integration

Ross has made a new release of the Anjuta Poky integration. In his blog post he also includes an excellent short tutorial on using the plugin.

As usual packages are available from debian.o-hand.com or you can grab the source.

This release includes numerous fixes as well as some new features including support for using an external device (rather than QEMU) for deployment and also using a full Poky tree rather than the just an SDK toolchain.

More MX31 support in Poky

With the “Blinky” 3.1 release we included support for several i.MX31 platforms, notably the LogicPD LiteKit and the full-blown, consume all your desk space, Freescale ADS platform. We also included ‘experimental’ support for the Phytec phyCore-i.MX31 board, unfortunately due to problems with the kernel port the touchscreen driver did not function correctly. This has since been resolved and updated kernels and root filesystems are being included in the nightly builds.

Want to work on Poky fulltime?

OpenedHand (the commercial developer and supporter of Poky) have an open position for a fulltime OpenEmbedded / Poky developer, as well as other open positions for developers and designers. Check it all out at the OpenedHand employment page.

Nokia N800 emulation

Few days ago Nokia N800 tablet emulation was released into public. Richard integrated it into Poky so now we have “qemu” which can be used not only to test ARM images on ARM Versatile or Sharp Zaurus but also to run on Nokia N800 tablet. Of course it is not limited to Poky images — Maemo boots very nicely on it :)

Poky

Booting Poky is easy: “runqemu nokia800″ after building of “poky-image-sato” for “nokia800″ machine. After few minutes (needed to create NAND Flash image and boot into JFFS2 rootfs) Poky desktop appears:

Poky on emulated N800 - first screen Poky on emulated N800 - terminal Poky on emulated N800 - Dates

Status

Basic emulation works. There is no networking yet, DSP code is not emulated and few other limitations. But it is work in progress so expect improvements.

Poky Integration for Anjuta

With the latest release of Poky, “Pinky 3.1″, we are also announcing the release of our Anjuta plugin that allows integration with a cross-compiler SDK built from Poky. It integrates Anjuta with the QEMU device emulator, cross-gcc and cross-gdb. It allows a rapid hack, build, deploy, test cycle. This work was sponsored by iRex Technologies B.V. Thanks guys.

Anyway, enough talking, see the project page on the OH Laboratories site for more details. Here is a little screencast.



Click thumbnail for Flash version, or OGG version

Poky Version 3.1 (Pinky) Released

It gives me great pleasure to announce a new release of Poky, version 3.1 (Pinky).

This release has seen many major improvements to the core of the build system and in the usability of Poky output as a development environment.

A quick summary of the major changes is:

  • Development of Anjuta integration with Poky’s SDK and QEMU, making cross development of applications simple.
  • Addition of a users manual.
  • New machine support: Compulab EM-X270, Zylonite, Freescale MX31ADS, Phytec PhyCORE-iMX31, Logic iMX31 Lite and the HTC Universal (experimental).
  • Improved existing machine support, particularly the experimental Nokia tablet support.
  • Standalone toolchain and SDK application developers can develop against.
  • Addition of new tools to the SDK such as QEMU
  • Conversion to use the sysroot mode of gcc, making cross compiling both easier and more robust.
  • Conversion to use pkgconfig in sysroot mode
  • Updates to recent versions of almost all packages
  • Addition of NetworkManager to standard images
  • Addition of a Webkit based browser
  • uclibc support

The release also includes many bugfixes and other smaller tweaks and updates.

The release tarball:
http://pokylinux.org/releases/poky-pinky-3.1.tgz

Device Images:
http://pokylinux.org/releases/pinky-3.1/

New site, new release

Welcome to the brand spanking new, just out of the box, Poky website, launched to coincide with the latest ‘Pinky’ 3.1 release of Poky platform builder. I’d like to thank everyone who’s helped put together the new site, and the new release. Please leave comments here about the new site, or jump onto the mailing list or IRC to discuss the new release.

It’s always a bit tricky to explain what Poky does, but the simplest way I think about it is that you feed Poky a list, or recipe, of the software you want on your device, Poky parses the list, works out all the dependencies, collects the source code from the various repositories around the internet, and builds a complete platform containing just the software you listed and the minimum infrastructure needed to get it running. And in that view, Poky, and it’s upstream parent OpenEmbedded, are particularly open source dependent - they simply could not exist without the rich ecosystem of source code, freely available for download and usage, that we have today. So for that reason we owe a huge thanks to all of the upstream projects that create delicious code for Poky (and OE) to consume.