[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