\begin{frame}[fragile] \frametitle{start the image} \begin{verbatim} % runqemu qemux86 core-image-minimal \end{verbatim} \end{frame} \begin{frame}[fragile] \frametitle{inspect the build} \begin{verbatim} tmp/ ├── buildstats ├── cache ├── deploy ├── log ├── sstate-control ├── stamps ├── sysroots ├── work └── work-shared \end{verbatim} \end{frame} \begin{frame}[fragile] \frametitle{inspect the build} \begin{verbatim} tmp/buildstats/core-image-minimal-qemux86/201408271416/ ├── acl-2.2.52-r0 ├── acl-native-2.2.52-r0 ├── alsa-lib-native-1.0.27.2-r0 ├── attr-2.4.47-r0 ├── attr-native-2.4.47-r0 ├── autoconf-native-2.69-r11 ... \end{verbatim} \end{frame} \begin{frame}[fragile] \frametitle{inspect the build} \begin{verbatim} tmp/buildstats/core-image-minimal-qemux86/201408271416/acl-2.2.52-r0/ ├── do_compile ├── do_compile_ptest_base ├── do_configure ├── do_configure_ptest_base ├── do_fetch ├── do_install ├── do_install_ptest_base ├── do_package ├── do_packagedata ├── do_package_write_rpm ├── do_patch ├── do_populate_lic ├── do_populate_sysroot └── do_unpack \end{verbatim} \end{frame} \begin{frame}[fragile] \frametitle{inspect the build} \begin{verbatim} 408271416/acl-2.2.52-r0/do_unpack Event: TaskStarted Started: 1409143746.65 acl-2.2.52-r0: do_unpack: Elapsed time: 0.22 seconds CPU usage: 7.1% EndIOinProgress: 0 EndReadsComp: 973062 EndReadsMerged: 543875573 EndSectRead: 36860156 EndSectWrite: 1158945211 EndTimeIO: 30104972 EndTimeReads: 5545878 EndTimeWrite: 1455538600 ... StartWritesComp: 12202741 Status: PASSED Ended: 1409143746.87 \end{verbatim} \end{frame} \begin{frame}[fragile] \frametitle{inspect the build} \begin{verbatim} tmp/ ├── buildstats ├── cache ├── deploy ├── log ├── sstate-control ├── stamps ├── sysroots ├── work └── work-shared \end{verbatim} \end{frame} \begin{frame}[fragile] \frametitle{inspect the build} \begin{verbatim} tmp/deploy/ ├── images │   └── qemux86 │   ├── bzImage -> bzImage--3.14+git0+09424... │   ├── core-image-minimal-qemux86-20140827121546.rootfs.ext3 │   ├── core-image-minimal-qemux86-20140827121546.rootfs.manifest │   ├── core-image-minimal-qemux86-20140827121546.rootfs.tar.bz2 │   ├── core-image-minimal-qemux86.ext3 -> core-image... │   ├── ... \end{verbatim} \end{frame} \begin{frame}[fragile] \frametitle{inspect the build} \begin{verbatim} tmp/deploy/ ├── licenses │   ├── acl │ │ ├── COPYING │ │ ├── COPYING.LGPL │ │ ├── generic_GPLv2 │ │ └── generic_LGPLv2.1 │   ├── acl-native │   ├── alsa-lib-native │   ├── apr-native │   ├── .. \end{verbatim} \end{frame} \begin{frame}[fragile] \frametitle{inspect the build} \begin{verbatim} tmp/deploy/ └── rpm ├── all │ ├── packagegroup-core-standalone-sdk-target-1.0-r8.all.rpm │ ├── packagegroup-core-standalone-sdk-target-dbg-1.0-r8.all.rpm │ ├── packagegroup-core-standalone-sdk-target-dev-1.0-r8.all.rpm │ ├── repodata │ ├── run-postinsts-1.0-r9.all.rpm │ ├── ... ├── i586 ├── qemux86 └── x86_64_nativesdk \end{verbatim} \end{frame} \begin{frame}[fragile] \frametitle{inspect the build} \begin{verbatim} ├── % cat sstate-control/manifest-. | /home/devel/poky/build/tmp/sysroots/x86_64-linux/usr/include/zconf.h | /home/devel/poky/build/tmp/sysroots/x86_64-linux/usr/include/zlib.h | /home/devel/poky/build/tmp/sysroots/x86_64-linux/usr/lib/libz.so.1 \end{verbatim} \begin{verbatim} ├── sysroots # for the differnet architectures \end{verbatim} \begin{verbatim} ├── work # work directories / where the sources are built | % ls tmp/work/qemux86-poky-linux/linux-yocto/3.14+gitAUTOINC+0942... | deploy-linux-yocto linux packages-split | deploy-rpms linux-qemux86-standard-build pkgdata | image linux-yocto.spec pseudo | license-destdir package sysroot-destdir | temp \end{verbatim} \end{frame} \begin{frame}[fragile] \frametitle{execute a specific task} \begin{verbatim} bitbake -c \end{verbatim} use \begin{verbatim} bitbake -c listtasks \end{verbatim} to get a list of all available tasks \end{frame} \begin{frame}[fragile] \frametitle{build dependencies} Save dependency tree information for the specified targets in the dot syntax. \begin{verbatim} bitbake -g \end{verbatim} use the UI 'task explorer' to get a interactive interface \begin{verbatim} bitbake -g -u taskexp \end{verbatim} \end{frame} \begin{frame}[fragile] \frametitle{developer shell} \begin{verbatim} bitbake -c devshell \end{verbatim} use ./configure and make to debug build issues \end{frame} \begin{frame}[fragile] \frametitle{cleanup} \begin{verbatim} % bitbake -c clean core-image-minimal \end{verbatim} \begin{itemize} \item doesn't cleanup dependencies \item doesn't remove deployed files \item triggers repackaging of all packages \end{itemize} \vspace{2em} To start from scratch backup the conf directory and remove everything from build. Otherwise sstate-cache will be used. \end{frame} \begin{frame}[fragile] \frametitle{cleanup} \begin{verbatim} % bitbake -c clean xserver-nodm-init \end{verbatim} \begin{itemize} \item doesn't cleanup dependencies \item removes deployed files \item removes downloaded files \item removes data from work and sysroot directory \item doesn't remove data from sstate \item triggers restoring files from sstate-cache \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{cleanup} \begin{verbatim} % bitbake -c cleanall xserver-nodm-init \end{verbatim} \begin{itemize} \item doesn't cleanup dependencies \item removes deployed files \item removes downloaded files \item removes data from work and sysroot directory \item removes data from sstate-cache \item triggers fetch, compilation and packaging of the component \item BUT changes will not be in the image \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{force recompilation} \begin{verbatim} % bitbake -f -c compile xserver-nodm-init \end{verbatim} \begin{itemize} \item changes are not in the image \item and not in the package \end{itemize} \end{frame}