Building webOS Open Source Edition

Version added 16-Oct-2017| Modified 21-Mar-2019

This page describes how to build the webOS Open Source Edition (OSE) image. Before you begin, ensure that your system meets the Build System Requirements.


To build the image of webOS OSE, the build-webos repository is used.

The repository contains the top level code that aggregates the various OpenEmbedded layers into a whole from which the webOS OSE image can be built.


The following images can be built: 

  • webos-image: The production webOS OSE image without development tools.

  • webos-image-devel: The image with various development tools added to webos-image, including GDB and strace (system call tracer).

Cloning the Repository

Set up build-webos by cloning its Git repository and move into the cloned directory:

$ git clone
$ cd build-webos

Installing the Required Tools

Before you can build, you need to install some tools. If you try to build without them, BitBake will fail a sanity check and tell you what's missing, but not really how to get the missing pieces. On Ubuntu, you can force all of the missing pieces to be installed by entering:

$ sudo scripts/

Configuring the Build

To configure the build for Raspberry Pi 3 or QEMUx86 and to fetch the sources, type:

For Raspberry Pi 3
$ ./mcf raspberrypi3

For QEMUx86
$ ./mcf qemux86

Setting the Parallelism Values

You can use -p and -b options to set the make and BitBake parallelism values. The -p and -b options correspond to PARALLEL_MAKE and BB_NUMBER_THREADS variables described in Yocto Project Development Tasks Manual.

The default value for these options is 0, so the command above is equivalent to the following:

$ ./mcf -p 0 -b 0 raspberrypi3

Using 0 as arguments to these options sets the make and BitBake parallelism values to the number of CPU cores found on your computer, which means the build process will use all CPU cores.

If you do not want to use all CPU cores on your computer, use different values as arguments to -p and -b options.

Building the Image

Building webos-image

To kick off a full build of webOS OSE, enter the following:

$ source oe-init-build-env 
$ bitbake webos-image

Alternatively, you can enter:

$ make webos-image

This may take in the neighborhood of two hours on multi-core workstation with a fast disk subsystem and lots of memory, or many more hours on a laptop with less memory and slower disks.

For more details about BitBake, refer to the BitBake User Manual.

Building webos-image-devel

To build a webOS OSE image that includes GDB and strace for debugging, enter the following: 

$ source oe-init-build-env 
$ bitbake webos-image-devel

For details on setting up the environment to debug webOS OSE with GDB, see Setting Up for GDB Debugging.
For more information on how to use strace, refer to the article on strace.

Checking the Created Image

To see if the image has been created successfully, check the following location:

  • For Rasberry Pi, the resulting image will be created at BUILD/deploy/images/raspberrypi3/webos-image-raspberrypi3.rootfs.rpi-sdimg.

  • For emulator, the resulting image will be created at BUILD/deploy/images/qemux86/webos-image-qemux86.vmdk.


To blow away the build artifacts and prepare to do the clean build, you can remove the build directory and recreate it by typing:

$ rm -rf BUILD

$ ./mcf.status

What this retains are the caches of the downloaded source (under ./downloads) and shared state (under ./sstate-cache). These caches will save you a tremendous amount of time during development as they facilitate incremental builds, but can cause seemingly inexplicable behavior when corrupted. If you experience strangeness, use the command presented below to remove the shared state of suspicious components. In extreme cases, you may need to remove the entire shared state cache. See Yocto Project Overview and Concepts Manual for more information on it.

Building and Cleaning Individual Components

To build an individual component, enter:

$ source oe-init-build-env 
$ bitbake <component-name>

Alternatively, you can enter:

$ make <component-name>

To clean a component's build artifacts under BUILD, enter:

$ source oe-init-build-env
$ bitbake -c clean <component-name>

To remove the shared state for a component as well as its build artifacts to ensure it gets rebuilt afresh from its source, enter:

$ source oe-init-build-env
$ bitbake -c cleansstate <component-name>

Except as noted, this content is licensed under Creative Commons Attribution 4.0 and sample code is licensed under Apache License 2.0.