[bootlin/training-materials updates] master: yocto: slides: extend DEPENDS/RDEPENDS and add RRECOMMENDS (6986eaee)

Luca Ceresoli luca.ceresoli at bootlin.com
Fri Apr 14 19:05:18 CEST 2023


Repository : https://github.com/bootlin/training-materials
On branch  : master
Link       : https://github.com/bootlin/training-materials/commit/6986eaee68b58550fa9d7401111ba4cc85dd7398

>---------------------------------------------------------------

commit 6986eaee68b58550fa9d7401111ba4cc85dd7398
Author: Luca Ceresoli <luca.ceresoli at bootlin.com>
Date:   Fri Apr 14 19:05:18 2023 +0200

    yocto: slides: extend DEPENDS/RDEPENDS and add RRECOMMENDS
    
    Signed-off-by: Luca Ceresoli <luca.ceresoli at bootlin.com>


>---------------------------------------------------------------

6986eaee68b58550fa9d7401111ba4cc85dd7398
 slides/yocto-recipe-extra/yocto-recipe-extra.tex | 65 ++++++++++++++++--------
 1 file changed, 45 insertions(+), 20 deletions(-)

diff --git a/slides/yocto-recipe-extra/yocto-recipe-extra.tex b/slides/yocto-recipe-extra/yocto-recipe-extra.tex
index bff26933..7fe54206 100644
--- a/slides/yocto-recipe-extra/yocto-recipe-extra.tex
+++ b/slides/yocto-recipe-extra/yocto-recipe-extra.tex
@@ -465,31 +465,56 @@ ncurses
 
 \subsection{Dependencies in detail}
 
-\begin{frame}{Per-recipe sysroot and dependencies}
+\begin{frame}{\code{DEPENDS}}
   \begin{itemize}
-    \item The per-recipe sysroot is implemented based on the \code{DEPENDS}
-      variable
+    \item \code{DEPENDS} describes a build-time dependency
+    \item Typical case: a program needs the library and headers files from
+      a library to be configured and/or built
+    \item In other words: it needs the library in its {\em sysroot}
+    \item In \code{ninvaders.bb}, the line\\
+      \code{DEPENDS = "ncurses"}\\
+      creates a dependency
       \begin{itemize}
-        \item In \code{ninvaders.bb}, the line\\
-          \code{DEPENDS = "ncurses"}\\
-          creates a dependency
-          \begin{itemize}
-            \item Of \code{ninvaders.do_prepare_recipe_sysroot}
-            \item On \code{ncurses.do_populate_sysroot}
-          \end{itemize}
+        \item Of \code{ninvaders.do_prepare_recipe_sysroot}
+        \item On \code{ncurses.do_populate_sysroot}
       \end{itemize}
-    \item However, \code{RDEPENDS} has nothing to do with the sysroot
+  \end{itemize}
+\end{frame}
+
+\begin{frame}{\code{RDEPENDS}}
+  \begin{itemize}
+    \item \code{RDEPENDS} describes a runtime dependency
+    \item Typical case: a program uses another program at runtime via
+      sockets, DBUS, etc, or simply executes it
+    \item It does not need it at build time
+    \item In \code{inetutils_2.4.bb}, the line\\
+      \code{RDEPENDS:${PN}-ftpd += "xinetd"}\\
+      creates a dependency
+      \begin{itemize}
+      \item Of \code{inetutils-ftpd.do_build}
+      \item On \code{xinetd.do_package_write_rpm}
+      \end{itemize}
+    \item And adds in the inetutils-ftpd RPM package a dependency on
+      the xinetd RPM package
+  \end{itemize}
+\end{frame}
+
+\begin{frame}{\code{RRECOMMENDS}}
+  \begin{itemize}
+    \item \code{RRECOMMENDS} is similar to \code{RDEPENDS}
+    \item But if the dependency package is not built it will just be
+      skipped instead of failing the build
+    \item Typical cases:
       \begin{itemize}
-        \item In \code{inetutils_2.4.bb}, the line\\
-          \code{RDEPENDS:${PN}-ftpd += "xinetd"}\\
-          creates a dependency
-          \begin{itemize}
-            \item Of \code{inetutils-ftpd.do_build}
-            \item On \code{xinetd.do_package_write_rpm}
-          \end{itemize}
-        \item And adds in the inetutils-ftpd RPM package a dependency on
-          the xinetd RPM package
+        \item A package extends the feature of a program, but it is not
+          needed either for building nor for basic usage
+        \item Depending on a kernel module that might also be built-in in
+          the kernel Image
       \end{itemize}
+    \item In \code{watchdog_5.16.bb}, the line\\
+      \code{RRECOMMENDS:${PN} += "kernel-module-softdog"}\\
+      does nothing if the \code{softdog} kernel module is not built by
+      the kernel (could be builtin)
   \end{itemize}
 \end{frame}
 




More information about the training-materials-updates mailing list