[bootlin/training-materials updates] master: yocto: slides: reorganize "Advanced configuration" subsection (174a22ce)
Luca Ceresoli
luca.ceresoli at bootlin.com
Tue Aug 30 18:07:03 CEST 2022
Repository : https://github.com/bootlin/training-materials
On branch : master
Link : https://github.com/bootlin/training-materials/commit/174a22ce3c44ad3f2cb428f2ae1f09399290a609
>---------------------------------------------------------------
commit 174a22ce3c44ad3f2cb428f2ae1f09399290a609
Author: Luca Ceresoli <luca.ceresoli at bootlin.com>
Date: Tue Aug 30 17:43:05 2022 +0200
yocto: slides: reorganize "Advanced configuration" subsection
- rename subsection to "Variables" as it is all that is about
- move the operators (=, :=, +=, ...) before the overrides, to explain the
parsing order issue before its solution and also to explain the most
natural assignment syntax before
- rewrite introductory text accordingly
- reword sentences introducing :append, :prepend and :remove
- convert slide "Operators 2/2" to "Operators caveats"
- separated the modifier overrides (append, prepend, remove) from the
conditional assignment overrides (OVERRIDES="")
- rewrite examples of machine-based override, mention OVERRIDES variable
- add new picture and explanation at the end about parsing order:
operators, then :append, then :prepend, then :remove
Signed-off-by: Luca Ceresoli <luca.ceresoli at bootlin.com>
>---------------------------------------------------------------
174a22ce3c44ad3f2cb428f2ae1f09399290a609
slides/yocto-advanced/yocto-advanced.tex | 132 ++--
slides/yocto-advanced/yocto-operators-order.dia | 785 ++++++++++++++++++++++++
2 files changed, 856 insertions(+), 61 deletions(-)
diff --git a/slides/yocto-advanced/yocto-advanced.tex b/slides/yocto-advanced/yocto-advanced.tex
index fba7c9f7..ccd27e5a 100644
--- a/slides/yocto-advanced/yocto-advanced.tex
+++ b/slides/yocto-advanced/yocto-advanced.tex
@@ -23,7 +23,7 @@
\end{itemize}
\end{frame}
-\subsection{Advanced configuration}
+\subsection{Variables}
\begin{frame}
\frametitle{Overview}
@@ -50,15 +50,42 @@
\end{frame}
\begin{frame}
- \frametitle{Operators and Overrides}
+ \frametitle{Operators}
\begin{itemize}
- \item BitBake uses a dedicated set of operators to assign values to variables
- \item The operators apply their effect immediately when executed
- \item The parsing order is difficult to predict, no assumption should be made about it.
- \item Variables in the global scope therefore have a value difficult to predict
- \item Bitbake supports \textbf{overrides}, to allow appending,
- prepending or modifying a variable at expansion time, when
- the variable's value is read
+ \item Various operators can be used to assign values to
+ configuration variables:
+ \begin{description}
+ \item[=] expand the value when using the variable
+ \item[:=] immediately expand the value
+ \item[+=] append (with space)
+ \item[=+] prepend (with space)
+ \item[.=] append (without space)
+ \item[=.] prepend (without space)
+ \item[?=] assign if no other value was previously assigned
+ \item[??=] same as previous, with a lower precedence
+ \end{description}
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Operators caveats}
+ \begin{itemize}
+ \item The operators apply their effect during parsing
+ \item The parsing order is difficult to predict, no assumption should
+ be made about it.
+ \item Example: if \code{+=} is parsed before \code{?=}, the latter will
+ be discarded.
+ \item To avoid the problem, avoid using \code{+=}, \code{=+}, \code{.=}
+ and \code{=.} in \code{$BUILDDIR/conf/local.conf}. Always use
+ overrides (see following slides).
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Overrides}
+ \begin{itemize}
+ \item Bitbake \textbf{overrides} allow appending, prepending or modifying
+ a variable at expansion time, when the variable's value is read
\item Overrides are written as \code{<VARIABLE>:<override> = "some_value"}
\item A different syntax was used before \textbf{Honister}, with no
retrocompatibility: \code{<VARIABLE>_<override> = "some_value"}
@@ -66,49 +93,48 @@
\end{frame}
\begin{frame}
- \frametitle{Methods and conditions 1/4}
+ \frametitle{Overrides to modify variable values}
\begin{itemize}
- \item Append the keyword \code{:append} to a configuration
- variable to add values {\bf after} the ones previously defined
+ \item The \code{append} override adds {\bf at the end} of the variable
(without space).
\begin{itemize}
\item \code{IMAGE_INSTALL:append = " dropbear"} adds
\code{dropbear} to the packages installed on the image.
\end{itemize}
- \item Append the keyword \code{:prepend} to add values {\bf
- before} the ones previously defined (without space).
+ \item The \code{prepend} override adds {\bf at the beginning} of the
+ variable (without space).
\begin{itemize}
\item \code{FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"}
%stopzone
adds the folder to the set of paths where files are located
(in a recipe).
\end{itemize}
+ \item The \code{remove} override removes all occurrences of a value
+ within a variable.
+ \begin{itemize}
+ \item \code{IMAGE_INSTALL:remove = "i2c-tools"}
+ \end{itemize}
\end{itemize}
\end{frame}
-\begin{frame}
- \frametitle{Methods and conditions 2/4}
+\begin{frame}[fragile]
+ \frametitle{Overrides for conditional assignment}
\begin{itemize}
- \item Append the keyword \code{:remove} to a configuration
- variable to remove all occurrences of a value within a
- configuration variable.
- \begin{itemize}
- \item \code{IMAGE_INSTALL:remove = "i2c-tools"}
- \end{itemize}
- \item Append the machine name to only define a configuration
- variable for a given machine. It tries to match with values from
- \code{MACHINEOVERRIDES} which include \code{MACHINE} and
- \code{SOC_FAMILY}.
- \begin{itemize}
- \item \code{KERNEL_DEVICETREE:beaglebone = "am335x-bone.dtb"}
- tells to use the kernel device tree \code{am335x-bone.dtb}
- only when the machine is \code{beaglebone}.
- \end{itemize}
+ \item Append the machine name to only define a configuration variable
+ for a given machine. It tries to match with values from
+ \code{OVERRIDES} which includes \code{MACHINE}, \code{SOC_FAMILY}.
\end{itemize}
+ \begin{block}{}
+ \begin{minted}[fontsize=\footnotesize]{shell}
+OVERRIDES="arm:armv7a:ti-soc:ti33x:beaglebone:poky"
+KERNEL_DEVICETREE:beaglebone = "am335x-bone.dtb" # This is applied
+KERNEL_DEVICETREE:dra7xx-evm = "dra7-evm.dtb" # This is ignored
+ \end{minted}
+ \end{block}
\end{frame}
\begin{frame}
- \frametitle{Methods and conditions 3/4}
+ \frametitle{Combining overrides 1/2}
\begin{itemize}
\item The previous methods can be combined.
\item If we define:
@@ -129,7 +155,7 @@
\end{frame}
\begin{frame}[fragile]
- \frametitle{Methods and conditions 4/4}
+ \frametitle{Combining overrides 2/2}
\begin{itemize}
\item The most specific variable takes precedence.
\item Example:
@@ -149,34 +175,18 @@ IMAGE_INSTALL = "busybox mtd-utils"
\end{frame}
\begin{frame}
- \frametitle{Operators 1/2}
- \begin{itemize}
- \item Various operators can be used to assign values to
- configuration variables:
- \begin{description}
- \item[=] expand the value when using the variable
- \item[:=] immediately expand the value
- \item[+=] append (with space)
- \item[=+] prepend (with space)
- \item[.=] append (without space)
- \item[=.] prepend (without space)
- \item[?=] assign if no other value was previously assigned
- \item[??=] same as previous, with a lower precedence
- \end{description}
- \end{itemize}
-\end{frame}
-
-\begin{frame}
- \frametitle{Operators 2/2}
- \begin{itemize}
- \item Avoid using \code{+=}, \code{=+}, \code{.=} and \code{=.}
- in \code{$BUILDDIR/conf/local.conf} due to ordering issues.
- \begin{itemize}
- \item If \code{+=} is parsed before \code{?=}, the latter will
- be discarded.
- \item Using \code{:append} unconditionally appends the value.
- \end{itemize}
- \end{itemize}
+ \frametitle{Order of variable assignment}
+ \begin{columns}
+ \column{0.4\textwidth}
+ \includegraphics[width=\textwidth]{slides/yocto-advanced/yocto-operators-order.pdf}
+ \column{0.6\textwidth}
+ \begin{enumerate}
+ \item All the operators are applied, in parsing order
+ \item \code{:append} overrides are applied
+ \item \code{:prepend} overrides are applied
+ \item \code{:remove} overrides are applied
+ \end{enumerate}
+ \end{columns}
\end{frame}
\subsection{Packages variants}
diff --git a/slides/yocto-advanced/yocto-operators-order.dia b/slides/yocto-advanced/yocto-operators-order.dia
new file mode 100644
index 00000000..ab76bab6
--- /dev/null
+++ b/slides/yocto-advanced/yocto-operators-order.dia
@@ -0,0 +1,785 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
+ <dia:diagramdata>
+ <dia:attribute name="background">
+ <dia:color val="#ffffffff"/>
+ </dia:attribute>
+ <dia:attribute name="pagebreak">
+ <dia:color val="#000099ff"/>
+ </dia:attribute>
+ <dia:attribute name="paper">
+ <dia:composite type="paper">
+ <dia:attribute name="name">
+ <dia:string>#Letter#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="tmargin">
+ <dia:real val="2.5399999618530273"/>
+ </dia:attribute>
+ <dia:attribute name="bmargin">
+ <dia:real val="2.5399999618530273"/>
+ </dia:attribute>
+ <dia:attribute name="lmargin">
+ <dia:real val="2.5399999618530273"/>
+ </dia:attribute>
+ <dia:attribute name="rmargin">
+ <dia:real val="2.5399999618530273"/>
+ </dia:attribute>
+ <dia:attribute name="is_portrait">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="scaling">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="fitto">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="grid">
+ <dia:composite type="grid">
+ <dia:attribute name="dynamic">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="width_x">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="width_y">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="visible_x">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="visible_y">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:composite type="color"/>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#d8e5e5ff"/>
+ </dia:attribute>
+ <dia:attribute name="guides">
+ <dia:composite type="guides">
+ <dia:attribute name="hguides"/>
+ <dia:attribute name="vguides"/>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="display">
+ <dia:composite type="display">
+ <dia:attribute name="antialiased">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="snap-to-grid">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="snap-to-object">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="show-grid">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="show-connection-points">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:diagramdata>
+ <dia:layer name="Arrière-plan" visible="true" connectable="true" active="true">
+ <dia:object type="Standard - ZigZagLine" version="1" id="O0">
+ <dia:attribute name="obj_pos">
+ <dia:point val="29,27"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="18.3882,26.95;29.05,31.3618"/>
+ </dia:attribute>
+ <dia:attribute name="orth_points">
+ <dia:point val="29,27"/>
+ <dia:point val="29,31"/>
+ <dia:point val="19,31"/>
+ <dia:point val="19,31"/>
+ </dia:attribute>
+ <dia:attribute name="orth_orient">
+ <dia:enum val="1"/>
+ <dia:enum val="0"/>
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="autorouting">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="22"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O5" connection="6"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Box" version="0" id="O1">
+ <dia:attribute name="obj_pos">
+ <dia:point val="14,23"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="13.95,22.95;24.05,29.05"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="14,23"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="10"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="6"/>
+ </dia:attribute>
+ <dia:attribute name="border_width">
+ <dia:real val="0.10000000149011612"/>
+ </dia:attribute>
+ <dia:attribute name="border_color">
+ <dia:color val="#a34804ff"/>
+ </dia:attribute>
+ <dia:attribute name="inner_color">
+ <dia:color val="#ffd192ff"/>
+ </dia:attribute>
+ <dia:attribute name="show_background">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O2">
+ <dia:attribute name="obj_pos">
+ <dia:point val="19,26"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="15.9275,23.3712;22.1086,28.6288"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#= := ?= ??=
++= =+ .= =.
+applied in
+parsing order#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="1.2347221747040749"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="19,24.5472"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000ff"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O1" connection="8"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Box" version="0" id="O3">
+ <dia:attribute name="obj_pos">
+ <dia:point val="14,16"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="13.95,15.95;48.05,20.05"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="14,16"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="34"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="4"/>
+ </dia:attribute>
+ <dia:attribute name="border_width">
+ <dia:real val="0.10000000149011612"/>
+ </dia:attribute>
+ <dia:attribute name="border_color">
+ <dia:color val="#6a8954ff"/>
+ </dia:attribute>
+ <dia:attribute name="inner_color">
+ <dia:color val="#c5e387ff"/>
+ </dia:attribute>
+ <dia:attribute name="show_background">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O4">
+ <dia:attribute name="obj_pos">
+ <dia:point val="31,18"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="23.4975,17.071;38.5025,18.929"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#metadata (config + recipes)#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="1.5874999389052391"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="31,18.5366"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000ff"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O3" connection="8"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Box" version="0" id="O5">
+ <dia:attribute name="obj_pos">
+ <dia:point val="26,23"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="25.95,22.95;32.05,27.05"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="26,23"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="6"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="4"/>
+ </dia:attribute>
+ <dia:attribute name="border_width">
+ <dia:real val="0.10000000149011612"/>
+ </dia:attribute>
+ <dia:attribute name="border_color">
+ <dia:color val="#a34804ff"/>
+ </dia:attribute>
+ <dia:attribute name="inner_color">
+ <dia:color val="#ffd192ff"/>
+ </dia:attribute>
+ <dia:attribute name="show_background">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O6">
+ <dia:attribute name="obj_pos">
+ <dia:point val="29,25"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="27.3725,24.2774;30.6275,25.7226"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#:append#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="1.2347221747040749"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="29,25.4173"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000ff"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O5" connection="8"/>
+ </dia:connections>
+ </dia:object>
+ <dia:group>
+ <dia:attribute name="meta">
+ <dia:composite type="dict"/>
+ </dia:attribute>
+ <dia:attribute name="matrix">
+ <dia:connections>
+ <dia:connection handle="0" to="O7" connection="8"/>
+ </dia:connections>
+ </dia:attribute>
+ <dia:object type="Standard - Box" version="0" id="O7">
+ <dia:attribute name="obj_pos">
+ <dia:point val="34,23"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="33.95,22.95;40.05,27.05"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="34,23"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="6"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="4"/>
+ </dia:attribute>
+ <dia:attribute name="border_width">
+ <dia:real val="0.10000000149011612"/>
+ </dia:attribute>
+ <dia:attribute name="border_color">
+ <dia:color val="#a34804ff"/>
+ </dia:attribute>
+ <dia:attribute name="inner_color">
+ <dia:color val="#ffd192ff"/>
+ </dia:attribute>
+ <dia:attribute name="show_background">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O8">
+ <dia:attribute name="obj_pos">
+ <dia:point val="37,25"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="35.2362,24.2774;38.7638,25.7226"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#:prepend#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="1.2347221747040749"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="37,25.4173"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000ff"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ </dia:group>
+ <dia:group>
+ <dia:attribute name="meta">
+ <dia:composite type="dict"/>
+ </dia:attribute>
+ <dia:attribute name="matrix">
+ <dia:connections>
+ <dia:connection handle="0" to="O9" connection="8"/>
+ </dia:connections>
+ </dia:attribute>
+ <dia:object type="Standard - Box" version="0" id="O9">
+ <dia:attribute name="obj_pos">
+ <dia:point val="42,23"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="41.95,22.95;48.05,27.05"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="42,23"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="6"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="4"/>
+ </dia:attribute>
+ <dia:attribute name="border_width">
+ <dia:real val="0.10000000149011612"/>
+ </dia:attribute>
+ <dia:attribute name="border_color">
+ <dia:color val="#a34804ff"/>
+ </dia:attribute>
+ <dia:attribute name="inner_color">
+ <dia:color val="#ffd192ff"/>
+ </dia:attribute>
+ <dia:attribute name="show_background">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O10">
+ <dia:attribute name="obj_pos">
+ <dia:point val="45,25"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="43.3888,24.2774;46.6112,25.7226"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#:remove#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="1.2347221747040749"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="45,25.4173"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000ff"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ </dia:group>
+ <dia:object type="Standard - ZigZagLine" version="1" id="O11">
+ <dia:attribute name="obj_pos">
+ <dia:point val="31,20"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="18.6382,19.95;31.05,23.05"/>
+ </dia:attribute>
+ <dia:attribute name="orth_points">
+ <dia:point val="31,20"/>
+ <dia:point val="31,21.5"/>
+ <dia:point val="19,21.5"/>
+ <dia:point val="19,23"/>
+ </dia:attribute>
+ <dia:attribute name="orth_orient">
+ <dia:enum val="1"/>
+ <dia:enum val="0"/>
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="autorouting">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.10000000149011612"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="22"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O3" connection="6"/>
+ <dia:connection handle="1" to="O1" connection="1"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - ZigZagLine" version="1" id="O12">
+ <dia:attribute name="obj_pos">
+ <dia:point val="31,20"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="30.95,19.95;45.3618,23.05"/>
+ </dia:attribute>
+ <dia:attribute name="orth_points">
+ <dia:point val="31,20"/>
+ <dia:point val="31,21.5"/>
+ <dia:point val="45,21.5"/>
+ <dia:point val="45,23"/>
+ </dia:attribute>
+ <dia:attribute name="orth_orient">
+ <dia:enum val="1"/>
+ <dia:enum val="0"/>
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="autorouting">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.10000000149011612"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="22"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O3" connection="6"/>
+ <dia:connection handle="1" to="O9" connection="1"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - ZigZagLine" version="1" id="O13">
+ <dia:attribute name="obj_pos">
+ <dia:point val="31,20.0503"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="30.95,20.0003;37.3618,22.9997"/>
+ </dia:attribute>
+ <dia:attribute name="orth_points">
+ <dia:point val="31,20.0503"/>
+ <dia:point val="31,21.5"/>
+ <dia:point val="37,21.5"/>
+ <dia:point val="37,22.9497"/>
+ </dia:attribute>
+ <dia:attribute name="orth_orient">
+ <dia:enum val="1"/>
+ <dia:enum val="0"/>
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="autorouting">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.10000000149011612"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="22"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O3" connection="8"/>
+ <dia:connection handle="1" to="O7" connection="8"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - ZigZagLine" version="1" id="O14">
+ <dia:attribute name="obj_pos">
+ <dia:point val="31,20"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="28.6382,19.95;31.05,23.05"/>
+ </dia:attribute>
+ <dia:attribute name="orth_points">
+ <dia:point val="31,20"/>
+ <dia:point val="31,21.5"/>
+ <dia:point val="29,21.5"/>
+ <dia:point val="29,23"/>
+ </dia:attribute>
+ <dia:attribute name="orth_orient">
+ <dia:enum val="1"/>
+ <dia:enum val="0"/>
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="autorouting">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0.10000000149011612"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="22"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O3" connection="6"/>
+ <dia:connection handle="1" to="O5" connection="1"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - ZigZagLine" version="1" id="O15">
+ <dia:attribute name="obj_pos">
+ <dia:point val="37,27"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="18.3882,26.95;37.05,33.3618"/>
+ </dia:attribute>
+ <dia:attribute name="orth_points">
+ <dia:point val="37,27"/>
+ <dia:point val="37,33"/>
+ <dia:point val="19,33"/>
+ <dia:point val="19,33"/>
+ </dia:attribute>
+ <dia:attribute name="orth_orient">
+ <dia:enum val="1"/>
+ <dia:enum val="0"/>
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="autorouting">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="22"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O7" connection="6"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - ZigZagLine" version="1" id="O16">
+ <dia:attribute name="obj_pos">
+ <dia:point val="45,27"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="18.3882,26.95;45.05,35.3618"/>
+ </dia:attribute>
+ <dia:attribute name="orth_points">
+ <dia:point val="45,27"/>
+ <dia:point val="45,35"/>
+ <dia:point val="19,35"/>
+ <dia:point val="19,35"/>
+ </dia:attribute>
+ <dia:attribute name="orth_orient">
+ <dia:enum val="1"/>
+ <dia:enum val="0"/>
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="autorouting">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="22"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O9" connection="6"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Box" version="0" id="O17">
+ <dia:attribute name="obj_pos">
+ <dia:point val="14,37"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="13.95,36.95;24.05,41.05"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="14,37"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="10"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="4"/>
+ </dia:attribute>
+ <dia:attribute name="border_width">
+ <dia:real val="0.10000000149011612"/>
+ </dia:attribute>
+ <dia:attribute name="border_color">
+ <dia:color val="#6a8954ff"/>
+ </dia:attribute>
+ <dia:attribute name="inner_color">
+ <dia:color val="#c5e387ff"/>
+ </dia:attribute>
+ <dia:attribute name="show_background">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O18">
+ <dia:attribute name="obj_pos">
+ <dia:point val="19,39"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="16.3038,38.071;21.6962,39.929"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#final value#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="1.5874999389052391"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="19,39.5366"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000ff"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O17" connection="8"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - ZigZagLine" version="1" id="O19">
+ <dia:attribute name="obj_pos">
+ <dia:point val="19,29"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="18.6382,28.95;19.3618,36.9997"/>
+ </dia:attribute>
+ <dia:attribute name="orth_points">
+ <dia:point val="19,29"/>
+ <dia:point val="19,32.9749"/>
+ <dia:point val="19,32.9749"/>
+ <dia:point val="19,36.9497"/>
+ </dia:attribute>
+ <dia:attribute name="orth_orient">
+ <dia:enum val="1"/>
+ <dia:enum val="0"/>
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="autorouting">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="22"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O1" connection="6"/>
+ <dia:connection handle="1" to="O17" connection="8"/>
+ </dia:connections>
+ </dia:object>
+ </dia:layer>
+</dia:diagram>
More information about the training-materials-updates
mailing list