### 2.3.2. Running Specific Tasks

Any given package consists of a set of tasks. The standard BitBake behavior in most cases is: `fetch`, `unpack`, `patch`, `configure`, `compile`, `install`, `package`, `package_write`, and `build`. The default task is `build` and any tasks on which it depends build first. Some tasks exist, such as `devshell`, that are not part of the default build chain. If you wish to run a task that is not part of the default build chain, you can use the `-c` option in BitBake as follows:

         $ bitbake matchbox-desktop -c devshell

If you wish to rerun a task, use the `-f` force option. For example, the following sequence forces recompilation after changing files in the working directory.

         $ bitbake matchbox-desktop
                   .
                   .
            [make some changes to the source code in the working directory]
                   .
                   .
         $ bitbake matchbox-desktop -c compile -f
         $ bitbake matchbox-desktop

This sequence first builds `matchbox-desktop` and then recompiles it. The last command reruns all tasks (basically the packaging tasks) after the compile. BitBake recognizes that the `compile` task was rerun and therefore understands that the other tasks also need to be run again.

You can view a list of tasks in a given package by running the `listtasks` task as follows:

         $ bitbake matchbox-desktop -c listtasks

The results are in the file `${WORKDIR}/temp/log.do_listtasks`.