Openembedded is a tool to build Linux-based distribudions from source where you can customize almost every aspect of operating system and it's default components. Used mainly for embedded systems development. I'll show today how you can check easily (command-line, of course) dependencies chain.
Sometimes you want to see why particular package has been included into the image.
$ bitbake -g devel-image
NOTE: Handling BitBake files: \ (1205/1205) [100 %]
Parsing of 1205 .bb files complete (1130 cached, 75 parsed). 1548 targets, 13 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
NOTE: preferred version 1.0.0a of openssl-native not available (for item openssl-native)
NOTE: Preparing runqueue
PN dependencies saved to 'pn-depends.dot'
Package dependencies saved to 'package-depends.dot'
Task dependencies saved to 'task-depends.dot'
By using:
grep package-name pn-depends.dot
you can track what is the dependency chain for particular package, for example, let's see what's the reason for inclusion of readline in resulting filesystem:
$ grep '>.*readline' pn-depends.dot
"gdb" -> "readline"
"python-native" -> "readline-native"
"sqlite3-native" -> "readline-native"
"sqlite3" -> "readline"
"readline" -> "readline" [style=dashed]
$ grep '>.*sqlite3' pn-depends.dot "python-native" -> "sqlite3-native" "qt4-embedded" -> "sqlite3" "utc-devel-image" -> "sqlite3" "sqlite3" -> "sqlite3" [style=dashed] "devel-image" -> "sqlite3" [style=dashed] "devel-image" -> "sqlite3-dbg" [style=dashed]
As we can see that it's the "devel-image" that requested "sqlite3" and then "readline" was incorporated as a dependency.
*.dot fomat can be visualised, but it's useles feature as the resulting graph may be too big to analyse.