Skip to content

Commit

Permalink
yocto: slites: yocto-recipe-extra: move per-recipe sysroot and depend…
Browse files Browse the repository at this point in the history
…encies around

The "Per-recipe sysroot and dependencies" slide is somewhat misplaced in
the "per-recipe sysroot" subsection, and it will be even more after we
document RRECOMMENDS.

In preparation, move slides around:

 * Split "Dependencies" to its own section. It's only one slide for the
   moment, it will grow in the next commit with RRECOMMENDS.

 * Move per-recipe sysroot earlier. There is a mention to
   quilt-native:do_populate_sysroot in the "Package features" subsection,
   so it is a good idea to move it before. Since the "python code" and
   "varflags" section are close firends, let's leave them together and just
   put "per-recipe sysroot" at the beginning of the section.

No new/changed content except for this line:

  \subsection{Dependencies in detail}

Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
  • Loading branch information
lucaceresoli committed Apr 14, 2023
1 parent 5803b26 commit 5635a1d
Showing 1 changed file with 66 additions and 64 deletions.
130 changes: 66 additions & 64 deletions slides/yocto-recipe-extra/yocto-recipe-extra.tex
@@ -1,5 +1,70 @@
\section{Writing recipes - going further}

\subsection{The per-recipe sysroot}

\begin{frame}{Sysroot}
\begin{itemize}
\item The {\em sysroot} is the the logical root directory for headers
and libraries
\item Where {\em gcc} looks for headers, and {\em ld} looks for
libraries
\item Contains:
\begin{itemize}
\item The kernel headers
\item The C library and headers
\item Other libraries and their headers
\end{itemize}
\end{itemize}
\end{frame}

\begin{frame}{Per-recipe sysroot}
\begin{itemize}
\item Instead of a global sysroot, bitbake implements a {\em
per-recipe sysroot}
\item Before the actual build, each recipe prepares its own sysroot
\begin{itemize}
\item Contains libraries and headers {\em only} for the recipes it
\code{DEPENDS} on
\item Ensures the configuration stage will not detect libraries not
explicitly listed in \code{DEPENDS} but already built for other
reasons
\item \code{${WORKDIR}/recipe-sysroot} for target recipes
\item \code{${WORKDIR}/recipe-sysroot-native} for native recipes
\end{itemize}
\item At the end of the build, each recipe produces its destination
sysroot
\begin{itemize}
\item Its own slice of sysroot, with the libraries and headers it
directly provides
\item Used as input for other recipes to generate their
recipe-sysroot
\item \code{${WORKDIR}/sysroot-destdir}
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}{Per-recipe sysroot}
\begin{center}
\includegraphics[width=1.00\textwidth]{slides/yocto-recipe-extra/per-recipe-sysroot.pdf}
\end{center}
\end{frame}
\begin{frame}{The complete sysroot}
\begin{itemize}
\item A complete sysroot is available:
\begin{itemize}
\item For each image
\begin{itemize}
\item In \code{${WORKDIR}/recipe-sysroot} just like any recipe
\end{itemize}
\item In the SDK
\begin{itemize}
\item Covered later
\end{itemize}
\end{itemize}
\end{itemize}
\end{frame}
\subsection{Using Python code in metadata}
\begin{frame}
Expand Down Expand Up @@ -398,54 +463,7 @@ \subsection{Package splitting}
\end{itemize}
\end{frame}
\subsection{The per-recipe sysroot}
\begin{frame}{Sysroot}
\begin{itemize}
\item The {\em sysroot} is the the logical root directory for headers
and libraries
\item Where {\em gcc} looks for headers, and {\em ld} looks for
libraries
\item Contains:
\begin{itemize}
\item The kernel headers
\item The C library and headers
\item Other libraries and their headers
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}{Per-recipe sysroot}
\begin{itemize}
\item Instead of a global sysroot, bitbake implements a {\em
per-recipe sysroot}
\item Before the actual build, each recipe prepares its own sysroot
\begin{itemize}
\item Contains libraries and headers {\em only} for the recipes it
\code{DEPENDS} on
\item Ensures the configuration stage will not detect libraries not
explicitly listed in \code{DEPENDS} but already built for other
reasons
\item \code{${WORKDIR}/recipe-sysroot} for target recipes
\item \code{${WORKDIR}/recipe-sysroot-native} for native recipes
\end{itemize}
\item At the end of the build, each recipe produces its destination
sysroot
\begin{itemize}
\item Its own slice of sysroot, with the libraries and headers it
directly provides
\item Used as input for other recipes to generate their
recipe-sysroot
\item \code{${WORKDIR}/sysroot-destdir}
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}{Per-recipe sysroot}
\begin{center}
\includegraphics[width=1.00\textwidth]{slides/yocto-recipe-extra/per-recipe-sysroot.pdf}
\end{center}
\end{frame}
\subsection{Dependencies in detail}
\begin{frame}{Per-recipe sysroot and dependencies}
\begin{itemize}
Expand Down Expand Up @@ -475,22 +493,6 @@ \subsection{The per-recipe sysroot}
\end{itemize}
\end{frame}
\begin{frame}{The complete sysroot}
\begin{itemize}
\item A complete sysroot is available:
\begin{itemize}
\item For each image
\begin{itemize}
\item In \code{${WORKDIR}/recipe-sysroot} just like any recipe
\end{itemize}
\item In the SDK
\begin{itemize}
\item Covered later
\end{itemize}
\end{itemize}
\end{itemize}
\end{frame}
\subsection{Root filesystem creation}
\begin{frame}
Expand Down

0 comments on commit 5635a1d

Please sign in to comment.