diff options
127 files changed, 1116 insertions, 1093 deletions
diff --git a/bitbake/bin/bitbake b/bitbake/bin/bitbake index c2d0ca7613..40b5d895c1 100755 --- a/bitbake/bin/bitbake +++ b/bitbake/bin/bitbake | |||
@@ -27,7 +27,7 @@ from bb.main import bitbake_main, BitBakeConfigParameters, BBMainException | |||
27 | 27 | ||
28 | bb.utils.check_system_locale() | 28 | bb.utils.check_system_locale() |
29 | 29 | ||
30 | __version__ = "2.15.0" | 30 | __version__ = "2.15.1" |
31 | 31 | ||
32 | if __name__ == "__main__": | 32 | if __name__ == "__main__": |
33 | if __version__ != bb.__version__: | 33 | if __version__ != bb.__version__: |
diff --git a/bitbake/bin/bitbake-worker b/bitbake/bin/bitbake-worker index 35fa1ab62b..d2b146a6a9 100755 --- a/bitbake/bin/bitbake-worker +++ b/bitbake/bin/bitbake-worker | |||
@@ -182,11 +182,8 @@ def fork_off_task(cfg, data, databuilder, workerdata, extraconfigdata, runtask): | |||
182 | elif workerdata["umask"]: | 182 | elif workerdata["umask"]: |
183 | umask = workerdata["umask"] | 183 | umask = workerdata["umask"] |
184 | if umask: | 184 | if umask: |
185 | # umask might come in as a number or text string.. | 185 | # Convert to a python numeric value as it could be a string |
186 | try: | 186 | umask = bb.utils.to_filemode(umask) |
187 | umask = int(umask, 8) | ||
188 | except TypeError: | ||
189 | pass | ||
190 | 187 | ||
191 | dry_run = cfg.dry_run or runtask['dry_run'] | 188 | dry_run = cfg.dry_run or runtask['dry_run'] |
192 | 189 | ||
diff --git a/bitbake/lib/bb/__init__.py b/bitbake/lib/bb/__init__.py index 62ceaaef6e..bf4c54d829 100644 --- a/bitbake/lib/bb/__init__.py +++ b/bitbake/lib/bb/__init__.py | |||
@@ -9,7 +9,7 @@ | |||
9 | # SPDX-License-Identifier: GPL-2.0-only | 9 | # SPDX-License-Identifier: GPL-2.0-only |
10 | # | 10 | # |
11 | 11 | ||
12 | __version__ = "2.15.0" | 12 | __version__ = "2.15.1" |
13 | 13 | ||
14 | import sys | 14 | import sys |
15 | if sys.version_info < (3, 9, 0): | 15 | if sys.version_info < (3, 9, 0): |
diff --git a/bitbake/lib/bb/tests/utils.py b/bitbake/lib/bb/tests/utils.py index 48e61dfcea..52b7bf85bf 100644 --- a/bitbake/lib/bb/tests/utils.py +++ b/bitbake/lib/bb/tests/utils.py | |||
@@ -692,3 +692,14 @@ class EnvironmentTests(unittest.TestCase): | |||
692 | self.assertIn("A", os.environ) | 692 | self.assertIn("A", os.environ) |
693 | self.assertEqual(os.environ["A"], "this is A") | 693 | self.assertEqual(os.environ["A"], "this is A") |
694 | self.assertNotIn("B", os.environ) | 694 | self.assertNotIn("B", os.environ) |
695 | |||
696 | class FilemodeTests(unittest.TestCase): | ||
697 | def test_filemode_convert(self): | ||
698 | self.assertEqual(0o775, bb.utils.to_filemode("0o775")) | ||
699 | self.assertEqual(0o775, bb.utils.to_filemode(0o775)) | ||
700 | self.assertEqual(0o775, bb.utils.to_filemode("775")) | ||
701 | with self.assertRaises(ValueError): | ||
702 | bb.utils.to_filemode("xyz") | ||
703 | with self.assertRaises(ValueError): | ||
704 | bb.utils.to_filemode("999") | ||
705 | |||
diff --git a/bitbake/lib/bb/tinfoil.py b/bitbake/lib/bb/tinfoil.py index f48baeb334..e7fbcbca0a 100644 --- a/bitbake/lib/bb/tinfoil.py +++ b/bitbake/lib/bb/tinfoil.py | |||
@@ -14,7 +14,7 @@ import time | |||
14 | import atexit | 14 | import atexit |
15 | import re | 15 | import re |
16 | from collections import OrderedDict, defaultdict | 16 | from collections import OrderedDict, defaultdict |
17 | from functools import partial | 17 | from functools import partial, wraps |
18 | from contextlib import contextmanager | 18 | from contextlib import contextmanager |
19 | 19 | ||
20 | import bb.cache | 20 | import bb.cache |
@@ -27,6 +27,135 @@ import bb.remotedata | |||
27 | from bb.main import setup_bitbake, BitBakeConfigParameters | 27 | from bb.main import setup_bitbake, BitBakeConfigParameters |
28 | import bb.fetch2 | 28 | import bb.fetch2 |
29 | 29 | ||
30 | def wait_for(f): | ||
31 | """ | ||
32 | Wrap a function that makes an asynchronous tinfoil call using | ||
33 | self.run_command() and wait for events to say that the call has been | ||
34 | successful, or an error has occurred. | ||
35 | """ | ||
36 | @wraps(f) | ||
37 | def wrapper(self, *args, handle_events=True, extra_events=None, event_callback=None, **kwargs): | ||
38 | if handle_events: | ||
39 | # A reasonable set of default events matching up with those we handle below | ||
40 | eventmask = [ | ||
41 | 'bb.event.BuildStarted', | ||
42 | 'bb.event.BuildCompleted', | ||
43 | 'logging.LogRecord', | ||
44 | 'bb.event.NoProvider', | ||
45 | 'bb.command.CommandCompleted', | ||
46 | 'bb.command.CommandFailed', | ||
47 | 'bb.build.TaskStarted', | ||
48 | 'bb.build.TaskFailed', | ||
49 | 'bb.build.TaskSucceeded', | ||
50 | 'bb.build.TaskFailedSilent', | ||
51 | 'bb.build.TaskProgress', | ||
52 | 'bb.runqueue.runQueueTaskStarted', | ||
53 | 'bb.runqueue.sceneQueueTaskStarted', | ||
54 | 'bb.event.ProcessStarted', | ||
55 | 'bb.event.ProcessProgress', | ||
56 | 'bb.event.ProcessFinished', | ||
57 | ] | ||
58 | if extra_events: | ||
59 | eventmask.extend(extra_events) | ||
60 | ret = self.set_event_mask(eventmask) | ||
61 | |||
62 | includelogs = self.config_data.getVar('BBINCLUDELOGS') | ||
63 | loglines = self.config_data.getVar('BBINCLUDELOGS_LINES') | ||
64 | |||
65 | # Call actual function | ||
66 | ret = f(self, *args, **kwargs) | ||
67 | |||
68 | if handle_events: | ||
69 | lastevent = time.time() | ||
70 | result = False | ||
71 | # Borrowed from knotty, instead somewhat hackily we use the helper | ||
72 | # as the object to store "shutdown" on | ||
73 | helper = bb.ui.uihelper.BBUIHelper() | ||
74 | helper.shutdown = 0 | ||
75 | parseprogress = None | ||
76 | termfilter = bb.ui.knotty.TerminalFilter(helper, helper, self.logger.handlers, quiet=self.quiet) | ||
77 | try: | ||
78 | while True: | ||
79 | try: | ||
80 | event = self.wait_event(0.25) | ||
81 | if event: | ||
82 | lastevent = time.time() | ||
83 | if event_callback and event_callback(event): | ||
84 | continue | ||
85 | if helper.eventHandler(event): | ||
86 | if isinstance(event, bb.build.TaskFailedSilent): | ||
87 | self.logger.warning("Logfile for failed setscene task is %s" % event.logfile) | ||
88 | elif isinstance(event, bb.build.TaskFailed): | ||
89 | bb.ui.knotty.print_event_log(event, includelogs, loglines, termfilter) | ||
90 | continue | ||
91 | if isinstance(event, bb.event.ProcessStarted): | ||
92 | if self.quiet > 1: | ||
93 | continue | ||
94 | parseprogress = bb.ui.knotty.new_progress(event.processname, event.total) | ||
95 | parseprogress.start(False) | ||
96 | continue | ||
97 | if isinstance(event, bb.event.ProcessProgress): | ||
98 | if self.quiet > 1: | ||
99 | continue | ||
100 | if parseprogress: | ||
101 | parseprogress.update(event.progress) | ||
102 | else: | ||
103 | bb.warn("Got ProcessProgress event for something that never started?") | ||
104 | continue | ||
105 | if isinstance(event, bb.event.ProcessFinished): | ||
106 | if self.quiet > 1: | ||
107 | continue | ||
108 | if parseprogress: | ||
109 | parseprogress.finish() | ||
110 | parseprogress = None | ||
111 | continue | ||
112 | if isinstance(event, bb.command.CommandCompleted): | ||
113 | result = True | ||
114 | break | ||
115 | if isinstance(event, (bb.command.CommandFailed, bb.command.CommandExit)): | ||
116 | self.logger.error(str(event)) | ||
117 | result = False | ||
118 | break | ||
119 | if isinstance(event, logging.LogRecord): | ||
120 | if event.taskpid == 0 or event.levelno > logging.INFO: | ||
121 | self.logger.handle(event) | ||
122 | continue | ||
123 | if isinstance(event, bb.event.NoProvider): | ||
124 | self.logger.error(str(event)) | ||
125 | result = False | ||
126 | break | ||
127 | elif helper.shutdown > 1: | ||
128 | break | ||
129 | termfilter.updateFooter() | ||
130 | if time.time() > (lastevent + (3*60)): | ||
131 | if not self.run_command('ping', handle_events=False): | ||
132 | print("\nUnable to ping server and no events, closing down...\n") | ||
133 | return False | ||
134 | except KeyboardInterrupt: | ||
135 | termfilter.clearFooter() | ||
136 | if helper.shutdown == 1: | ||
137 | print("\nSecond Keyboard Interrupt, stopping...\n") | ||
138 | ret = self.run_command("stateForceShutdown") | ||
139 | if ret and ret[2]: | ||
140 | self.logger.error("Unable to cleanly stop: %s" % ret[2]) | ||
141 | elif helper.shutdown == 0: | ||
142 | print("\nKeyboard Interrupt, closing down...\n") | ||
143 | interrupted = True | ||
144 | ret = self.run_command("stateShutdown") | ||
145 | if ret and ret[2]: | ||
146 | self.logger.error("Unable to cleanly shutdown: %s" % ret[2]) | ||
147 | helper.shutdown = helper.shutdown + 1 | ||
148 | termfilter.clearFooter() | ||
149 | finally: | ||
150 | termfilter.finish() | ||
151 | if helper.failed_tasks: | ||
152 | result = False | ||
153 | return result | ||
154 | else: | ||
155 | return ret | ||
156 | |||
157 | return wrapper | ||
158 | |||
30 | 159 | ||
31 | # We need this in order to shut down the connection to the bitbake server, | 160 | # We need this in order to shut down the connection to the bitbake server, |
32 | # otherwise the process will never properly exit | 161 | # otherwise the process will never properly exit |
@@ -700,6 +829,10 @@ class Tinfoil: | |||
700 | """ | 829 | """ |
701 | return self.run_command('buildFile', buildfile, task, internal) | 830 | return self.run_command('buildFile', buildfile, task, internal) |
702 | 831 | ||
832 | @wait_for | ||
833 | def build_file_sync(self, *args): | ||
834 | self.build_file(*args) | ||
835 | |||
703 | def build_targets(self, targets, task=None, handle_events=True, extra_events=None, event_callback=None): | 836 | def build_targets(self, targets, task=None, handle_events=True, extra_events=None, event_callback=None): |
704 | """ | 837 | """ |
705 | Builds the specified targets. This is equivalent to a normal invocation | 838 | Builds the specified targets. This is equivalent to a normal invocation |
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py index a2806fd360..1cc74ed546 100644 --- a/bitbake/lib/bb/utils.py +++ b/bitbake/lib/bb/utils.py | |||
@@ -1211,6 +1211,23 @@ def which(path, item, direction = 0, history = False, executable=False): | |||
1211 | return "", hist | 1211 | return "", hist |
1212 | return "" | 1212 | return "" |
1213 | 1213 | ||
1214 | def to_filemode(input): | ||
1215 | """ | ||
1216 | Take a bitbake variable contents defining a file mode and return | ||
1217 | the proper python representation of the number | ||
1218 | |||
1219 | Arguments: | ||
1220 | |||
1221 | - ``input``: a string or number to convert, e.g. a bitbake variable | ||
1222 | string, assumed to be an octal representation | ||
1223 | |||
1224 | Returns the python file mode as a number | ||
1225 | """ | ||
1226 | # umask might come in as a number or text string.. | ||
1227 | if type(input) is int: | ||
1228 | return input | ||
1229 | return int(input, 8) | ||
1230 | |||
1214 | @contextmanager | 1231 | @contextmanager |
1215 | def umask(new_mask): | 1232 | def umask(new_mask): |
1216 | """ | 1233 | """ |
diff --git a/documentation/bsp-guide/bsp.rst b/documentation/bsp-guide/bsp.rst index 09246b4ae4..7eaa4d8700 100644 --- a/documentation/bsp-guide/bsp.rst +++ b/documentation/bsp-guide/bsp.rst | |||
@@ -172,7 +172,7 @@ section. | |||
172 | #. *Optionally Clone the meta-intel BSP Layer:* If your hardware is | 172 | #. *Optionally Clone the meta-intel BSP Layer:* If your hardware is |
173 | based on current Intel CPUs and devices, you can leverage this BSP | 173 | based on current Intel CPUs and devices, you can leverage this BSP |
174 | layer. For details on the ``meta-intel`` BSP layer, see the layer's | 174 | layer. For details on the ``meta-intel`` BSP layer, see the layer's |
175 | :yocto_git:`README </meta-intel/tree/README>` file. | 175 | :yocto_git:`README </meta-intel/tree/README.md>` file. |
176 | 176 | ||
177 | #. *Navigate to Your Source Directory:* Typically, you set up the | 177 | #. *Navigate to Your Source Directory:* Typically, you set up the |
178 | ``meta-intel`` Git repository inside the :term:`Source Directory` (e.g. | 178 | ``meta-intel`` Git repository inside the :term:`Source Directory` (e.g. |
@@ -204,7 +204,7 @@ section. | |||
204 | .. note:: | 204 | .. note:: |
205 | 205 | ||
206 | To see the available branch names in a cloned repository, use the ``git | 206 | To see the available branch names in a cloned repository, use the ``git |
207 | branch -al`` command. See the | 207 | branch -a`` command. See the |
208 | ":ref:`dev-manual/start:checking out by branch in poky`" | 208 | ":ref:`dev-manual/start:checking out by branch in poky`" |
209 | section in the Yocto Project Development Tasks Manual for more | 209 | section in the Yocto Project Development Tasks Manual for more |
210 | information. | 210 | information. |
diff --git a/documentation/conf.py b/documentation/conf.py index 1eca8756ab..c07b6c4199 100644 --- a/documentation/conf.py +++ b/documentation/conf.py | |||
@@ -179,13 +179,13 @@ from sphinx.search import SearchEnglish | |||
179 | from sphinx.search import languages | 179 | from sphinx.search import languages |
180 | class DashFriendlySearchEnglish(SearchEnglish): | 180 | class DashFriendlySearchEnglish(SearchEnglish): |
181 | 181 | ||
182 | # Accept words that can include hyphens | 182 | # Accept words that can include 'inner' hyphens or dots |
183 | _word_re = re.compile(r'[\w\-]+') | 183 | _word_re = re.compile(r'[\w]+(?:[\.\-][\w]+)*') |
184 | 184 | ||
185 | js_splitter_code = r""" | 185 | js_splitter_code = r""" |
186 | function splitQuery(query) { | 186 | function splitQuery(query) { |
187 | return query | 187 | return query |
188 | .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}-]+/gu) | 188 | .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}\-\.]+/gu) |
189 | .filter(term => term.length > 0); | 189 | .filter(term => term.length > 0); |
190 | } | 190 | } |
191 | """ | 191 | """ |
diff --git a/documentation/dev-manual/building.rst b/documentation/dev-manual/building.rst index 865d2e1b67..32c7aa5da0 100644 --- a/documentation/dev-manual/building.rst +++ b/documentation/dev-manual/building.rst | |||
@@ -591,7 +591,7 @@ If build speed and package feed maintenance are considerations, you | |||
591 | should consider the points in this section that can help you optimize | 591 | should consider the points in this section that can help you optimize |
592 | your tunings to best consider build times and package feed maintenance. | 592 | your tunings to best consider build times and package feed maintenance. |
593 | 593 | ||
594 | - *Share the :term:`Build Directory`:* If at all possible, share the | 594 | - *Share the* :term:`Build Directory` *:* If at all possible, share the |
595 | :term:`TMPDIR` across builds. The Yocto Project supports switching between | 595 | :term:`TMPDIR` across builds. The Yocto Project supports switching between |
596 | different :term:`MACHINE` values in the same :term:`TMPDIR`. This practice | 596 | different :term:`MACHINE` values in the same :term:`TMPDIR`. This practice |
597 | is well supported and regularly used by developers when building for | 597 | is well supported and regularly used by developers when building for |
@@ -813,7 +813,7 @@ directory: | |||
813 | 813 | ||
814 | #. *Using Local Files Only:* Inside your ``local.conf`` file, add the | 814 | #. *Using Local Files Only:* Inside your ``local.conf`` file, add the |
815 | :term:`SOURCE_MIRROR_URL` variable, inherit the | 815 | :term:`SOURCE_MIRROR_URL` variable, inherit the |
816 | :ref:`ref-classes-own-mirrors` class, and use the | 816 | :ref:`ref-classes-own-mirrors` class, and add the |
817 | :term:`BB_NO_NETWORK` variable to your ``local.conf``:: | 817 | :term:`BB_NO_NETWORK` variable to your ``local.conf``:: |
818 | 818 | ||
819 | SOURCE_MIRROR_URL ?= "file:///home/your-download-dir/" | 819 | SOURCE_MIRROR_URL ?= "file:///home/your-download-dir/" |
diff --git a/documentation/dev-manual/disk-space.rst b/documentation/dev-manual/disk-space.rst index efca82601d..ba3afa5a2c 100644 --- a/documentation/dev-manual/disk-space.rst +++ b/documentation/dev-manual/disk-space.rst | |||
@@ -52,7 +52,7 @@ such as BSD based NAS:: | |||
52 | sstate-cache-management.py --remove-duplicated --cache-dir=sstate-cache | 52 | sstate-cache-management.py --remove-duplicated --cache-dir=sstate-cache |
53 | 53 | ||
54 | This command will ask you to confirm the deletions it identifies. | 54 | This command will ask you to confirm the deletions it identifies. |
55 | Run ``sstate-cache-management.sh`` for more details about this script. | 55 | Run ``sstate-cache-management.py`` for more details about this script. |
56 | 56 | ||
57 | .. note:: | 57 | .. note:: |
58 | 58 | ||
diff --git a/documentation/dev-manual/efficiently-fetching-sources.rst b/documentation/dev-manual/efficiently-fetching-sources.rst index a15f0a92ce..a3366226c0 100644 --- a/documentation/dev-manual/efficiently-fetching-sources.rst +++ b/documentation/dev-manual/efficiently-fetching-sources.rst | |||
@@ -6,7 +6,7 @@ Efficiently Fetching Source Files During a Build | |||
6 | The OpenEmbedded build system works with source files located through | 6 | The OpenEmbedded build system works with source files located through |
7 | the :term:`SRC_URI` variable. When | 7 | the :term:`SRC_URI` variable. When |
8 | you build something using BitBake, a big part of the operation is | 8 | you build something using BitBake, a big part of the operation is |
9 | locating and downloading all the source tarballs. For images, | 9 | locating and downloading all of the source code. For images, |
10 | downloading all the source for various packages can take a significant | 10 | downloading all the source for various packages can take a significant |
11 | amount of time. | 11 | amount of time. |
12 | 12 | ||
@@ -18,7 +18,7 @@ Setting up Effective Mirrors | |||
18 | ============================ | 18 | ============================ |
19 | 19 | ||
20 | A good deal that goes into a Yocto Project build is simply downloading | 20 | A good deal that goes into a Yocto Project build is simply downloading |
21 | all of the source tarballs. Maybe you have been working with another | 21 | source code. Maybe you have been working with another |
22 | build system for which you have built up a | 22 | build system for which you have built up a |
23 | sizable directory of source tarballs. Or, perhaps someone else has such | 23 | sizable directory of source tarballs. Or, perhaps someone else has such |
24 | a directory for which you have read access. If so, you can save time by | 24 | a directory for which you have read access. If so, you can save time by |
diff --git a/documentation/dev-manual/init-manager.rst b/documentation/dev-manual/init-manager.rst index ddce82b81f..d0fdfdf773 100644 --- a/documentation/dev-manual/init-manager.rst +++ b/documentation/dev-manual/init-manager.rst | |||
@@ -44,7 +44,7 @@ therefore increasing the total system boot time. systemd also substantially | |||
44 | increases system size because of its multiple components and the extra | 44 | increases system size because of its multiple components and the extra |
45 | dependencies it pulls. | 45 | dependencies it pulls. |
46 | 46 | ||
47 | On the contrary, BusyBox init is the simplest and the lightest solution and | 47 | By contrast, BusyBox init is the simplest and the lightest solution and |
48 | also comes with BusyBox mdev as device manager, a lighter replacement to | 48 | also comes with BusyBox mdev as device manager, a lighter replacement to |
49 | :wikipedia:`udev <Udev>`, which SysVinit and systemd both use. | 49 | :wikipedia:`udev <Udev>`, which SysVinit and systemd both use. |
50 | 50 | ||
diff --git a/documentation/dev-manual/layers.rst b/documentation/dev-manual/layers.rst index c649e2bd60..67482bf544 100644 --- a/documentation/dev-manual/layers.rst +++ b/documentation/dev-manual/layers.rst | |||
@@ -80,7 +80,7 @@ Follow these general steps to create your layer without using tools: | |||
80 | BBFILE_PATTERN_yoctobsp = "^${LAYERDIR}/" | 80 | BBFILE_PATTERN_yoctobsp = "^${LAYERDIR}/" |
81 | BBFILE_PRIORITY_yoctobsp = "5" | 81 | BBFILE_PRIORITY_yoctobsp = "5" |
82 | LAYERVERSION_yoctobsp = "4" | 82 | LAYERVERSION_yoctobsp = "4" |
83 | LAYERSERIES_COMPAT_yoctobsp = "dunfell" | 83 | LAYERSERIES_COMPAT_yoctobsp = "walnascar" |
84 | 84 | ||
85 | Here is an explanation of the layer configuration file: | 85 | Here is an explanation of the layer configuration file: |
86 | 86 | ||
@@ -306,7 +306,7 @@ The Yocto Project Compatibility Program consists of a layer application | |||
306 | process that requests permission to use the Yocto Project Compatibility | 306 | process that requests permission to use the Yocto Project Compatibility |
307 | Logo for your layer and application. The process consists of two parts: | 307 | Logo for your layer and application. The process consists of two parts: |
308 | 308 | ||
309 | #. Successfully passing a script (``yocto-check-layer``) that when run | 309 | #. Successfully passing a script (``yocto-check-layer``) that, when run |
310 | against your layer, tests it against constraints based on experiences | 310 | against your layer, tests it against constraints based on experiences |
311 | of how layers have worked in the real world and where pitfalls have | 311 | of how layers have worked in the real world and where pitfalls have |
312 | been found. Getting a "PASS" result from the script is required for | 312 | been found. Getting a "PASS" result from the script is required for |
@@ -478,7 +478,7 @@ name. To handle these errors, the best practice is to rename the ``.bbappend`` | |||
478 | to match the original recipe version. This also gives you the opportunity to see | 478 | to match the original recipe version. This also gives you the opportunity to see |
479 | if the ``.bbappend`` is still relevant for the new version of the recipe. | 479 | if the ``.bbappend`` is still relevant for the new version of the recipe. |
480 | 480 | ||
481 | Another method it to use the character ``%`` in the ``.bbappend`` filename. For | 481 | Another method is to use the character ``%`` in the ``.bbappend`` filename. For |
482 | example, to append information to every ``6.*`` minor versions of the recipe | 482 | example, to append information to every ``6.*`` minor versions of the recipe |
483 | ``someapp``, the ``someapp_6.%.bbappend`` file can be created. This way, an | 483 | ``someapp``, the ``someapp_6.%.bbappend`` file can be created. This way, an |
484 | error will only be triggered if the ``someapp`` recipe has a major version | 484 | error will only be triggered if the ``someapp`` recipe has a major version |
@@ -504,10 +504,9 @@ the "meta" layer at ``meta/recipes-bsp/formfactor``:: | |||
504 | SECTION = "base" | 504 | SECTION = "base" |
505 | LICENSE = "MIT" | 505 | LICENSE = "MIT" |
506 | LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" | 506 | LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" |
507 | PR = "r45" | ||
508 | 507 | ||
509 | SRC_URI = "file://config file://machconfig" | 508 | SRC_URI = "file://config file://machconfig" |
510 | S = "${WORKDIR}" | 509 | S = "${UNPACKDIR}" |
511 | 510 | ||
512 | PACKAGE_ARCH = "${MACHINE_ARCH}" | 511 | PACKAGE_ARCH = "${MACHINE_ARCH}" |
513 | INHIBIT_DEFAULT_DEPS = "1" | 512 | INHIBIT_DEFAULT_DEPS = "1" |
@@ -582,11 +581,10 @@ Directory`. Here is the main ``xserver-xf86-config`` recipe, which is named | |||
582 | SECTION = "x11/base" | 581 | SECTION = "x11/base" |
583 | LICENSE = "MIT" | 582 | LICENSE = "MIT" |
584 | LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" | 583 | LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" |
585 | PR = "r33" | ||
586 | 584 | ||
587 | SRC_URI = "file://xorg.conf" | 585 | SRC_URI = "file://xorg.conf" |
588 | 586 | ||
589 | S = "${WORKDIR}" | 587 | S = "${UNPACKDIR}" |
590 | 588 | ||
591 | CONFFILES:${PN} = "${sysconfdir}/X11/xorg.conf" | 589 | CONFFILES:${PN} = "${sysconfdir}/X11/xorg.conf" |
592 | 590 | ||
@@ -594,9 +592,9 @@ Directory`. Here is the main ``xserver-xf86-config`` recipe, which is named | |||
594 | ALLOW_EMPTY:${PN} = "1" | 592 | ALLOW_EMPTY:${PN} = "1" |
595 | 593 | ||
596 | do_install () { | 594 | do_install () { |
597 | if test -s ${WORKDIR}/xorg.conf; then | 595 | if test -s ${UNPACKDIR}/xorg.conf; then |
598 | install -d ${D}/${sysconfdir}/X11 | 596 | install -d ${D}/${sysconfdir}/X11 |
599 | install -m 0644 ${WORKDIR}/xorg.conf ${D}/${sysconfdir}/X11/ | 597 | install -m 0644 ${UNPACKDIR}/xorg.conf ${D}/${sysconfdir}/X11/ |
600 | fi | 598 | fi |
601 | } | 599 | } |
602 | 600 | ||
@@ -614,8 +612,8 @@ file is in the layer at ``recipes-graphics/xorg-xserver``:: | |||
614 | PITFT="${@bb.utils.contains("MACHINE_FEATURES", "pitft", "1", "0", d)}" | 612 | PITFT="${@bb.utils.contains("MACHINE_FEATURES", "pitft", "1", "0", d)}" |
615 | if [ "${PITFT}" = "1" ]; then | 613 | if [ "${PITFT}" = "1" ]; then |
616 | install -d ${D}/${sysconfdir}/X11/xorg.conf.d/ | 614 | install -d ${D}/${sysconfdir}/X11/xorg.conf.d/ |
617 | install -m 0644 ${WORKDIR}/xorg.conf.d/98-pitft.conf ${D}/${sysconfdir}/X11/xorg.conf.d/ | 615 | install -m 0644 ${UNPACKDIR}/xorg.conf.d/98-pitft.conf ${D}/${sysconfdir}/X11/xorg.conf.d/ |
618 | install -m 0644 ${WORKDIR}/xorg.conf.d/99-calibration.conf ${D}/${sysconfdir}/X11/xorg.conf.d/ | 616 | install -m 0644 ${UNPACKDIR}/xorg.conf.d/99-calibration.conf ${D}/${sysconfdir}/X11/xorg.conf.d/ |
619 | fi | 617 | fi |
620 | } | 618 | } |
621 | 619 | ||
diff --git a/documentation/dev-manual/libraries.rst b/documentation/dev-manual/libraries.rst index 521dbb9a7c..a8c38128ea 100644 --- a/documentation/dev-manual/libraries.rst +++ b/documentation/dev-manual/libraries.rst | |||
@@ -37,40 +37,10 @@ library files. | |||
37 | Some previously released versions of the Yocto Project defined the | 37 | Some previously released versions of the Yocto Project defined the |
38 | static library files through ``${PN}-dev``. | 38 | static library files through ``${PN}-dev``. |
39 | 39 | ||
40 | Here is the part of the BitBake configuration file, where you can see | 40 | Here is a small part of the BitBake configuration file, where you can see |
41 | how the static library files are defined:: | 41 | how the static library files are defined:: |
42 | 42 | ||
43 | PACKAGE_BEFORE_PN ?= "" | ||
44 | PACKAGES = "${PN}-src ${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PACKAGE_BEFORE_PN} ${PN}" | 43 | PACKAGES = "${PN}-src ${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PACKAGE_BEFORE_PN} ${PN}" |
45 | PACKAGES_DYNAMIC = "^${PN}-locale-.*" | ||
46 | FILES = "" | ||
47 | |||
48 | FILES:${PN} = "${bindir}/* ${sbindir}/* ${libexecdir}/* ${libdir}/lib*${SOLIBS} \ | ||
49 | ${sysconfdir} ${sharedstatedir} ${localstatedir} \ | ||
50 | ${base_bindir}/* ${base_sbindir}/* \ | ||
51 | ${base_libdir}/*${SOLIBS} \ | ||
52 | ${base_prefix}/lib/udev ${prefix}/lib/udev \ | ||
53 | ${base_libdir}/udev ${libdir}/udev \ | ||
54 | ${datadir}/${BPN} ${libdir}/${BPN}/* \ | ||
55 | ${datadir}/pixmaps ${datadir}/applications \ | ||
56 | ${datadir}/idl ${datadir}/omf ${datadir}/sounds \ | ||
57 | ${libdir}/bonobo/servers" | ||
58 | |||
59 | FILES:${PN}-bin = "${bindir}/* ${sbindir}/*" | ||
60 | |||
61 | FILES:${PN}-doc = "${docdir} ${mandir} ${infodir} ${datadir}/gtk-doc \ | ||
62 | ${datadir}/gnome/help" | ||
63 | SECTION:${PN}-doc = "doc" | ||
64 | |||
65 | FILES_SOLIBSDEV ?= "${base_libdir}/lib*${SOLIBSDEV} ${libdir}/lib*${SOLIBSDEV}" | ||
66 | FILES:${PN}-dev = "${includedir} ${FILES_SOLIBSDEV} ${libdir}/*.la \ | ||
67 | ${libdir}/*.o ${libdir}/pkgconfig ${datadir}/pkgconfig \ | ||
68 | ${datadir}/aclocal ${base_libdir}/*.o \ | ||
69 | ${libdir}/${BPN}/*.la ${base_libdir}/*.la \ | ||
70 | ${libdir}/cmake ${datadir}/cmake" | ||
71 | SECTION:${PN}-dev = "devel" | ||
72 | ALLOW_EMPTY:${PN}-dev = "1" | ||
73 | RDEPENDS:${PN}-dev = "${PN} (= ${EXTENDPKGV})" | ||
74 | 44 | ||
75 | FILES:${PN}-staticdev = "${libdir}/*.a ${base_libdir}/*.a ${libdir}/${BPN}/*.a" | 45 | FILES:${PN}-staticdev = "${libdir}/*.a ${base_libdir}/*.a ${libdir}/${BPN}/*.a" |
76 | SECTION:${PN}-staticdev = "devel" | 46 | SECTION:${PN}-staticdev = "devel" |
diff --git a/documentation/dev-manual/licenses.rst b/documentation/dev-manual/licenses.rst index bffff3675f..7d6636eeff 100644 --- a/documentation/dev-manual/licenses.rst +++ b/documentation/dev-manual/licenses.rst | |||
@@ -55,11 +55,11 @@ Consider this next example:: | |||
55 | 55 | ||
56 | LIC_FILES_CHKSUM = "file://src/ls.c;beginline=5;endline=16;\ | 56 | LIC_FILES_CHKSUM = "file://src/ls.c;beginline=5;endline=16;\ |
57 | md5=bb14ed3c4cda583abc85401304b5cd4e" | 57 | md5=bb14ed3c4cda583abc85401304b5cd4e" |
58 | LIC_FILES_CHKSUM = "file://${WORKDIR}/license.html;md5=5c94767cedb5d6987c902ac850ded2c6" | 58 | LIC_FILES_CHKSUM = "file://${UNPACKDIR}/license.html;md5=5c94767cedb5d6987c902ac850ded2c6" |
59 | 59 | ||
60 | The first line locates a file in ``${S}/src/ls.c`` and isolates lines | 60 | The first line locates a file in ``${S}/src/ls.c`` and isolates lines |
61 | five through 16 as license text. The second line refers to a file in | 61 | five through 16 as license text. The second line refers to a file in |
62 | :term:`WORKDIR`. | 62 | :term:`UNPACKDIR`. |
63 | 63 | ||
64 | Note that :term:`LIC_FILES_CHKSUM` variable is mandatory for all recipes, | 64 | Note that :term:`LIC_FILES_CHKSUM` variable is mandatory for all recipes, |
65 | unless the :term:`LICENSE` variable is set to "CLOSED". | 65 | unless the :term:`LICENSE` variable is set to "CLOSED". |
diff --git a/documentation/dev-manual/new-recipe.rst b/documentation/dev-manual/new-recipe.rst index c49881efe6..832aa300e1 100644 --- a/documentation/dev-manual/new-recipe.rst +++ b/documentation/dev-manual/new-recipe.rst | |||
@@ -188,13 +188,14 @@ the recipe. | |||
188 | Use lower-cased characters and do not include the reserved suffixes | 188 | Use lower-cased characters and do not include the reserved suffixes |
189 | ``-native``, ``-cross``, ``-initial``, or ``-dev`` casually (i.e. do not use | 189 | ``-native``, ``-cross``, ``-initial``, or ``-dev`` casually (i.e. do not use |
190 | them as part of your recipe name unless the string applies). Here are some | 190 | them as part of your recipe name unless the string applies). Here are some |
191 | examples: | 191 | examples (which includes the use of the string "git" as a special case of a |
192 | version identifier): | ||
192 | 193 | ||
193 | .. code-block:: none | 194 | .. code-block:: none |
194 | 195 | ||
195 | cups_1.7.0.bb | 196 | cups_2.4.12.bb |
196 | gawk_4.0.2.bb | 197 | gawk_5.3.2.bb |
197 | irssi_0.8.16-rc1.bb | 198 | psplash_git.bb |
198 | 199 | ||
199 | Running a Build on the Recipe | 200 | Running a Build on the Recipe |
200 | ============================= | 201 | ============================= |
@@ -276,11 +277,11 @@ upgrading the recipe to a future version is as simple as renaming the | |||
276 | recipe to match the new version. | 277 | recipe to match the new version. |
277 | 278 | ||
278 | Here is a simple example from the | 279 | Here is a simple example from the |
279 | ``meta/recipes-devtools/strace/strace_5.5.bb`` recipe where the source | 280 | :oe_git:`strace recipe </openembedded-core/tree/meta/recipes-devtools/strace>` |
280 | comes from a single tarball. Notice the use of the | 281 | where the source comes from a single tarball. Notice the use of the |
281 | :term:`PV` variable:: | 282 | :term:`PV` variable:: |
282 | 283 | ||
283 | SRC_URI = "https://strace.io/files/${PV}/strace-${PV}.tar.xz \ | 284 | SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/strace-${PV}.tar.xz \ |
284 | 285 | ||
285 | Files mentioned in :term:`SRC_URI` whose names end in a typical archive | 286 | Files mentioned in :term:`SRC_URI` whose names end in a typical archive |
286 | extension (e.g. ``.tar``, ``.tar.gz``, ``.tar.bz2``, ``.zip``, and so | 287 | extension (e.g. ``.tar``, ``.tar.gz``, ``.tar.bz2``, ``.zip``, and so |
@@ -292,7 +293,7 @@ another example that specifies these types of files, see the | |||
292 | Another way of specifying source is from an SCM. For Git repositories, | 293 | Another way of specifying source is from an SCM. For Git repositories, |
293 | you must specify :term:`SRCREV` and you should specify :term:`PV` to include | 294 | you must specify :term:`SRCREV` and you should specify :term:`PV` to include |
294 | a ``+`` sign in its definition. Here is an example from the recipe | 295 | a ``+`` sign in its definition. Here is an example from the recipe |
295 | :oe_git:`meta/recipes-sato/l3afpad/l3afpad_git.bb </openembedded-core/tree/meta/recipes-sato/l3afpad/l3afpad_git.bb>`:: | 296 | :oe_git:`l3afpad_git.bb </openembedded-core/tree/meta/recipes-sato/l3afpad/l3afpad_git.bb>`:: |
296 | 297 | ||
297 | SRC_URI = "git://github.com/stevenhoneyman/l3afpad.git;branch=master;protocol=https" | 298 | SRC_URI = "git://github.com/stevenhoneyman/l3afpad.git;branch=master;protocol=https" |
298 | 299 | ||
@@ -347,8 +348,8 @@ paste them into your recipe and then run the build again to continue. | |||
347 | continuing with the build. | 348 | continuing with the build. |
348 | 349 | ||
349 | This final example is a bit more complicated and is from the | 350 | This final example is a bit more complicated and is from the |
350 | ``meta/recipes-sato/rxvt-unicode/rxvt-unicode_9.20.bb`` recipe. The | 351 | :oe_git:`rxvt-unicode </openembedded-core/tree/meta/recipes-sato/rxvt-unicode>` |
351 | example's :term:`SRC_URI` statement identifies multiple files as the source | 352 | recipe. The example's :term:`SRC_URI` statement identifies multiple files as the source |
352 | files for the recipe: a tarball, a patch file, a desktop file, and an icon:: | 353 | files for the recipe: a tarball, a patch file, a desktop file, and an icon:: |
353 | 354 | ||
354 | SRC_URI = "http://dist.schmorp.de/rxvt-unicode/Attic/rxvt-unicode-${PV}.tar.bz2 \ | 355 | SRC_URI = "http://dist.schmorp.de/rxvt-unicode/Attic/rxvt-unicode-${PV}.tar.bz2 \ |
@@ -706,7 +707,7 @@ hierarchy to locations that would mirror their locations on the target | |||
706 | device. The installation process copies files from the | 707 | device. The installation process copies files from the |
707 | ``${``\ :term:`S`\ ``}``, | 708 | ``${``\ :term:`S`\ ``}``, |
708 | ``${``\ :term:`B`\ ``}``, and | 709 | ``${``\ :term:`B`\ ``}``, and |
709 | ``${``\ :term:`WORKDIR`\ ``}`` | 710 | ``${``\ :term:`UNPACKDIR`\ ``}`` |
710 | directories to the ``${``\ :term:`D`\ ``}`` | 711 | directories to the ``${``\ :term:`D`\ ``}`` |
711 | directory to create the structure as it should appear on the target | 712 | directory to create the structure as it should appear on the target |
712 | system. | 713 | system. |
@@ -1145,7 +1146,7 @@ Building an application from a single file that is stored locally (e.g. under | |||
1145 | ``files``) requires a recipe that has the file listed in the :term:`SRC_URI` | 1146 | ``files``) requires a recipe that has the file listed in the :term:`SRC_URI` |
1146 | variable. Additionally, you need to manually write the :ref:`ref-tasks-compile` | 1147 | variable. Additionally, you need to manually write the :ref:`ref-tasks-compile` |
1147 | and :ref:`ref-tasks-install` tasks. The :term:`S` variable defines the | 1148 | and :ref:`ref-tasks-install` tasks. The :term:`S` variable defines the |
1148 | directory containing the source code, which is set to :term:`WORKDIR` in this | 1149 | directory containing the source code, which is set to :term:`UNPACKDIR` in this |
1149 | case --- the directory BitBake uses for the build:: | 1150 | case --- the directory BitBake uses for the build:: |
1150 | 1151 | ||
1151 | SUMMARY = "Simple helloworld application" | 1152 | SUMMARY = "Simple helloworld application" |
@@ -1155,7 +1156,7 @@ case --- the directory BitBake uses for the build:: | |||
1155 | 1156 | ||
1156 | SRC_URI = "file://helloworld.c" | 1157 | SRC_URI = "file://helloworld.c" |
1157 | 1158 | ||
1158 | S = "${WORKDIR}" | 1159 | S = "${UNPACKDIR}" |
1159 | 1160 | ||
1160 | do_compile() { | 1161 | do_compile() { |
1161 | ${CC} ${LDFLAGS} helloworld.c -o helloworld | 1162 | ${CC} ${LDFLAGS} helloworld.c -o helloworld |
@@ -1211,8 +1212,6 @@ In the following example, ``lz4`` is a makefile-based package:: | |||
1211 | " | 1212 | " |
1212 | UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>.*)" | 1213 | UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>.*)" |
1213 | 1214 | ||
1214 | S = "${WORKDIR}/git" | ||
1215 | |||
1216 | CVE_STATUS[CVE-2014-4715] = "fixed-version: Fixed in r118, which is larger than the current version" | 1215 | CVE_STATUS[CVE-2014-4715] = "fixed-version: Fixed in r118, which is larger than the current version" |
1217 | 1216 | ||
1218 | EXTRA_OEMAKE = "PREFIX=${prefix} CC='${CC}' CFLAGS='${CFLAGS}' DESTDIR=${D} LIBDIR=${libdir} INCLUDEDIR=${includedir} BUILD_STATIC=no" | 1217 | EXTRA_OEMAKE = "PREFIX=${prefix} CC='${CC}' CFLAGS='${CFLAGS}' DESTDIR=${D} LIBDIR=${libdir} INCLUDEDIR=${includedir} BUILD_STATIC=no" |
@@ -1271,8 +1270,6 @@ is a simple example of an application without dependencies:: | |||
1271 | SRC_URI = "git://gitlab.com/ipcalc/ipcalc.git;protocol=https;branch=master" | 1270 | SRC_URI = "git://gitlab.com/ipcalc/ipcalc.git;protocol=https;branch=master" |
1272 | SRCREV = "4c4261a47f355946ee74013d4f5d0494487cc2d6" | 1271 | SRCREV = "4c4261a47f355946ee74013d4f5d0494487cc2d6" |
1273 | 1272 | ||
1274 | S = "${WORKDIR}/git" | ||
1275 | |||
1276 | inherit meson | 1273 | inherit meson |
1277 | 1274 | ||
1278 | Applications with dependencies are likely to inherit the | 1275 | Applications with dependencies are likely to inherit the |
@@ -1397,6 +1394,26 @@ doing the following: | |||
1397 | where you have installed them and whether those files are in | 1394 | where you have installed them and whether those files are in |
1398 | different locations than the defaults. | 1395 | different locations than the defaults. |
1399 | 1396 | ||
1397 | As a basic example of a :ref:`ref-classes-bin-package`-style recipe, consider | ||
1398 | this snippet from the | ||
1399 | :oe_git:`wireless-regdb </openembedded-core/tree/meta/recipes-kernel/wireless-regdb>` | ||
1400 | recipe file, which fetches a single tarball of binary content and manually | ||
1401 | installs with no need for any configuration or compilation:: | ||
1402 | |||
1403 | SRC_URI = "https://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.xz" | ||
1404 | SRC_URI[sha256sum] = "57f8e7721cf5a880c13ae0c202edbb21092a060d45f9e9c59bcd2a8272bfa456" | ||
1405 | |||
1406 | inherit bin_package allarch | ||
1407 | |||
1408 | do_install() { | ||
1409 | install -d -m0755 ${D}${nonarch_libdir}/crda | ||
1410 | install -d -m0755 ${D}${sysconfdir}/wireless-regdb/pubkeys | ||
1411 | install -m 0644 regulatory.bin ${D}${nonarch_libdir}/crda/regulatory.bin | ||
1412 | install -m 0644 wens.key.pub.pem ${D}${sysconfdir}/wireless-regdb/pubkeys/wens.key.pub.pem | ||
1413 | install -m 0644 -D regulatory.db ${D}${nonarch_base_libdir}/firmware/regulatory.db | ||
1414 | install -m 0644 regulatory.db.p7s ${D}${nonarch_base_libdir}/firmware/regulatory.db.p7s | ||
1415 | } | ||
1416 | |||
1400 | Following Recipe Style Guidelines | 1417 | Following Recipe Style Guidelines |
1401 | ================================= | 1418 | ================================= |
1402 | 1419 | ||
@@ -1428,7 +1445,7 @@ chapter of the BitBake User Manual. | |||
1428 | The following example shows some of the ways you can use variables in | 1445 | The following example shows some of the ways you can use variables in |
1429 | recipes:: | 1446 | recipes:: |
1430 | 1447 | ||
1431 | S = "${WORKDIR}/postfix-${PV}" | 1448 | S = "${UNPACKDIR}/postfix-${PV}" |
1432 | CFLAGS += "-DNO_ASM" | 1449 | CFLAGS += "-DNO_ASM" |
1433 | CFLAGS:append = " --enable-important-feature" | 1450 | CFLAGS:append = " --enable-important-feature" |
1434 | 1451 | ||
diff --git a/documentation/dev-manual/packages.rst b/documentation/dev-manual/packages.rst index 8845bf2fab..8bd48c8e8f 100644 --- a/documentation/dev-manual/packages.rst +++ b/documentation/dev-manual/packages.rst | |||
@@ -1024,7 +1024,7 @@ The ``devtool edit-recipe`` command lets you take a look at the recipe:: | |||
1024 | npmsw://${THISDIR}/${BPN}/npm-shrinkwrap.json \ | 1024 | npmsw://${THISDIR}/${BPN}/npm-shrinkwrap.json \ |
1025 | " | 1025 | " |
1026 | 1026 | ||
1027 | S = "${WORKDIR}/npm" | 1027 | S = "${UNPACKDIR}/npm" |
1028 | 1028 | ||
1029 | inherit npm | 1029 | inherit npm |
1030 | 1030 | ||
diff --git a/documentation/dev-manual/prebuilt-libraries.rst b/documentation/dev-manual/prebuilt-libraries.rst index a05f39ca1e..59621ca16d 100644 --- a/documentation/dev-manual/prebuilt-libraries.rst +++ b/documentation/dev-manual/prebuilt-libraries.rst | |||
@@ -97,7 +97,7 @@ The complete recipe would look like this:: | |||
97 | # we use a local link. | 97 | # we use a local link. |
98 | SRC_URI = "file://libft4222-linux-${PV}.tgz" | 98 | SRC_URI = "file://libft4222-linux-${PV}.tgz" |
99 | 99 | ||
100 | S = "${WORKDIR}" | 100 | S = "${UNPACKDIR}" |
101 | 101 | ||
102 | ARCH_DIR:x86-64 = "build-x86_64" | 102 | ARCH_DIR:x86-64 = "build-x86_64" |
103 | ARCH_DIR:i586 = "build-i386" | 103 | ARCH_DIR:i586 = "build-i386" |
@@ -170,7 +170,7 @@ as follows:: | |||
170 | The modifications cause the ``.so`` file to be the real library | 170 | The modifications cause the ``.so`` file to be the real library |
171 | and unset :term:`FILES_SOLIBSDEV` so that no libraries get packaged into | 171 | and unset :term:`FILES_SOLIBSDEV` so that no libraries get packaged into |
172 | ``${PN}-dev``. The changes are required because unless :term:`PACKAGES` is changed, | 172 | ``${PN}-dev``. The changes are required because unless :term:`PACKAGES` is changed, |
173 | ``${PN}-dev`` collects files before `${PN}`. ``${PN}-dev`` must not collect any of | 173 | ``${PN}-dev`` collects files before ``${PN}``. ``${PN}-dev`` must not collect any of |
174 | the files you want in ``${PN}``. | 174 | the files you want in ``${PN}``. |
175 | 175 | ||
176 | Finally, loadable modules, essentially unversioned libraries that are linked | 176 | Finally, loadable modules, essentially unversioned libraries that are linked |
@@ -204,6 +204,6 @@ versioned library example. The "magic" is setting the :term:`SOLIBS` and | |||
204 | 204 | ||
205 | do_install () { | 205 | do_install () { |
206 | install -d ${D}${libdir} | 206 | install -d ${D}${libdir} |
207 | install -m 0755 ${WORKDIR}/libfoo.so ${D}${libdir} | 207 | install -m 0755 ${UNPACKDIR}/libfoo.so ${D}${libdir} |
208 | } | 208 | } |
209 | 209 | ||
diff --git a/documentation/dev-manual/start.rst b/documentation/dev-manual/start.rst index d77da04276..44bd2de137 100644 --- a/documentation/dev-manual/start.rst +++ b/documentation/dev-manual/start.rst | |||
@@ -109,7 +109,7 @@ particular working environment and set of practices. | |||
109 | 109 | ||
110 | - Keep your cross-development toolchains updated. You can do this | 110 | - Keep your cross-development toolchains updated. You can do this |
111 | through provisioning either as new toolchain downloads or as | 111 | through provisioning either as new toolchain downloads or as |
112 | updates through a package update mechanism using ``opkg`` to | 112 | updates through a package update mechanism to |
113 | provide updates to an existing toolchain. The exact mechanics of | 113 | provide updates to an existing toolchain. The exact mechanics of |
114 | how and when to do this depend on local policy. | 114 | how and when to do this depend on local policy. |
115 | 115 | ||
@@ -159,7 +159,7 @@ particular working environment and set of practices. | |||
159 | are made. | 159 | are made. |
160 | 160 | ||
161 | - Allows triggering of automated image booting and testing under | 161 | - Allows triggering of automated image booting and testing under |
162 | the QuickEMUlator (QEMU). | 162 | the Quick EMUlator (QEMU). |
163 | 163 | ||
164 | - Supports incremental build testing and from-scratch builds. | 164 | - Supports incremental build testing and from-scratch builds. |
165 | 165 | ||
@@ -310,7 +310,7 @@ Project Build Host: | |||
310 | 310 | ||
311 | - GNU make &MIN_MAKE_VERSION; or greater | 311 | - GNU make &MIN_MAKE_VERSION; or greater |
312 | 312 | ||
313 | If your build host does not meet any of these listed version | 313 | If your build host does not satisfy all of these listed version |
314 | requirements, you can take steps to prepare the system so that you | 314 | requirements, you can take steps to prepare the system so that you |
315 | can still use the Yocto Project. See the | 315 | can still use the Yocto Project. See the |
316 | ":ref:`ref-manual/system-requirements:required git, tar, python, make and gcc versions`" | 316 | ":ref:`ref-manual/system-requirements:required git, tar, python, make and gcc versions`" |
@@ -568,7 +568,7 @@ extension accordingly. | |||
568 | Locating Yocto Project Source Files | 568 | Locating Yocto Project Source Files |
569 | =================================== | 569 | =================================== |
570 | 570 | ||
571 | This section shows you how to locate, fetch and configure the source | 571 | This section shows you how to locate, fetch, unpack, patch and configure the source |
572 | files you'll need to work with the Yocto Project. | 572 | files you'll need to work with the Yocto Project. |
573 | 573 | ||
574 | .. note:: | 574 | .. note:: |
@@ -720,11 +720,11 @@ Follow these steps to create a local version of the upstream | |||
720 | $ git branch | 720 | $ git branch |
721 | * master | 721 | * master |
722 | 722 | ||
723 | Your local repository of poky is identical to the | 723 | Your local repository of poky is initially identical to the |
724 | upstream poky repository at the time from which it was cloned. As you | 724 | upstream poky repository from which it was cloned. As you |
725 | work with the local branch, you can periodically use the | 725 | work with the local branch, you can periodically use the |
726 | ``git pull --rebase`` command to be sure you are up-to-date | 726 | ``git pull`` command to be sure you stay up-to-date |
727 | with the upstream branch. | 727 | with the upstream poky branch. |
728 | 728 | ||
729 | Checking Out by Branch in Poky | 729 | Checking Out by Branch in Poky |
730 | ------------------------------ | 730 | ------------------------------ |
diff --git a/documentation/dev-manual/temporary-source-code.rst b/documentation/dev-manual/temporary-source-code.rst index 08bf68d982..9a7cd0f771 100644 --- a/documentation/dev-manual/temporary-source-code.rst +++ b/documentation/dev-manual/temporary-source-code.rst | |||
@@ -18,11 +18,10 @@ build packages is available in the :term:`Build Directory` as defined by the | |||
18 | defined in the ``meta/conf/bitbake.conf`` configuration file in the | 18 | defined in the ``meta/conf/bitbake.conf`` configuration file in the |
19 | :term:`Source Directory`:: | 19 | :term:`Source Directory`:: |
20 | 20 | ||
21 | S = "${WORKDIR}/${BP}" | 21 | S = "${UNPACKDIR}/${BP}" |
22 | 22 | ||
23 | You should be aware that many recipes override the | 23 | You should be aware that many recipes override the |
24 | :term:`S` variable. For example, recipes that fetch their source from Git | 24 | :term:`S` variable when the default isn't accurate. |
25 | usually set :term:`S` to ``${WORKDIR}/git``. | ||
26 | 25 | ||
27 | .. note:: | 26 | .. note:: |
28 | 27 | ||
@@ -31,8 +30,16 @@ usually set :term:`S` to ``${WORKDIR}/git``. | |||
31 | 30 | ||
32 | BP = "${BPN}-${PV}" | 31 | BP = "${BPN}-${PV}" |
33 | 32 | ||
33 | This matches the location that the git fetcher unpacks to, and usually | ||
34 | matches unpacked content of release tarballs (e.g. they contain a single | ||
35 | directory which matches value of ${BP} exactly). | ||
34 | 36 | ||
35 | The path to the work directory for the recipe | 37 | The path to the unpack directory for the recipe |
38 | (:term:`UNPACKDIR`) is defined as follows:: | ||
39 | |||
40 | ${WORKDIR}/sources | ||
41 | |||
42 | In turn, the path to the work directory for the recipe | ||
36 | (:term:`WORKDIR`) is defined as | 43 | (:term:`WORKDIR`) is defined as |
37 | follows:: | 44 | follows:: |
38 | 45 | ||
diff --git a/documentation/migration-guides/migration-5.1.rst b/documentation/migration-guides/migration-5.1.rst index c9bb38699b..94b527bdcb 100644 --- a/documentation/migration-guides/migration-5.1.rst +++ b/documentation/migration-guides/migration-5.1.rst | |||
@@ -20,8 +20,7 @@ S = ${WORKDIR} no longer supported | |||
20 | If a recipe has :term:`S` set to be :term:`WORKDIR`, this is no longer | 20 | If a recipe has :term:`S` set to be :term:`WORKDIR`, this is no longer |
21 | supported, and an error will be issued. The recipe should be changed to:: | 21 | supported, and an error will be issued. The recipe should be changed to:: |
22 | 22 | ||
23 | S = "${WORKDIR}/sources" | 23 | S = "${UNPACKDIR}" |
24 | UNPACKDIR = "${S}" | ||
25 | 24 | ||
26 | Any :term:`WORKDIR` references where files from :term:`SRC_URI` are referenced | 25 | Any :term:`WORKDIR` references where files from :term:`SRC_URI` are referenced |
27 | should be changed to :term:`S`. These are commonly in :ref:`ref-tasks-compile`, | 26 | should be changed to :term:`S`. These are commonly in :ref:`ref-tasks-compile`, |
@@ -62,8 +61,7 @@ require to add an :term:`S` definition to a recipe that only uses | |||
62 | ``file://`` :term:`SRC_URI` entries. To be consistent, the following pattern is | 61 | ``file://`` :term:`SRC_URI` entries. To be consistent, the following pattern is |
63 | recommended:: | 62 | recommended:: |
64 | 63 | ||
65 | S = "${WORKDIR}/sources" | 64 | S = "${UNPACKDIR}" |
66 | UNPACKDIR = "${S}" | ||
67 | 65 | ||
68 | Building C files from :term:`UNPACKDIR` without setting :term:`S` to point at | 66 | Building C files from :term:`UNPACKDIR` without setting :term:`S` to point at |
69 | it does not work as the debug prefix mapping doesn't handle that. | 67 | it does not work as the debug prefix mapping doesn't handle that. |
diff --git a/documentation/migration-guides/migration-5.3.rst b/documentation/migration-guides/migration-5.3.rst index 09095c7bb2..4d2e1763ce 100644 --- a/documentation/migration-guides/migration-5.3.rst +++ b/documentation/migration-guides/migration-5.3.rst | |||
@@ -14,6 +14,56 @@ Migration notes for |yocto-ver| (|yocto-codename|) | |||
14 | This section provides migration information for moving to the Yocto | 14 | This section provides migration information for moving to the Yocto |
15 | Project |yocto-ver| Release (codename "|yocto-codename|") from the prior release. | 15 | Project |yocto-ver| Release (codename "|yocto-codename|") from the prior release. |
16 | 16 | ||
17 | :term:`WORKDIR` changes | ||
18 | ~~~~~~~~~~~~~~~~~~~~~~~ | ||
19 | |||
20 | ``S = ${WORKDIR}/something`` no longer supported | ||
21 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
22 | |||
23 | If a recipe has :term:`S` set to be ``${``\ :term:`WORKDIR`\ ``}/something``, | ||
24 | this is no longer supported, and an error will be issued. The recipe should be | ||
25 | changed to:: | ||
26 | |||
27 | S = "${UNPACKDIR}/something" | ||
28 | |||
29 | ``S = ${WORKDIR}/git`` and ``S = ${UNPACKDIR}/git`` should be removed | ||
30 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
31 | |||
32 | The Git fetcher now unpacks into the :term:`BB_GIT_DEFAULT_DESTSUFFIX` directory | ||
33 | rather than the ``git/`` directory under :term:`UNPACKDIR`. | ||
34 | :term:`BB_GIT_DEFAULT_DESTSUFFIX` is set in :term:`OpenEmbedded-Core | ||
35 | (OE-Core)`'s :oe_git:`bitbake.conf | ||
36 | </openembedded-core/tree/meta/conf/bitbake.conf>` to :term:`BP`. | ||
37 | |||
38 | This location matches the default value of :term:`S` set by bitbake.conf, so :term:`S` | ||
39 | setting in recipes can and should be removed. | ||
40 | |||
41 | Note that when :term:`S` is set to a subdirectory of the git checkout, then it | ||
42 | should be instead adjusted according to the previous point:: | ||
43 | |||
44 | S = "${UNPACKDIR}/${BP}/something" | ||
45 | |||
46 | Note that "git" as the source checkout location can be hardcoded | ||
47 | in other places in recipes; when it's in :term:`SRC_URI`, replace with | ||
48 | :term:`BB_GIT_DEFAULT_DESTSUFFIX`, otherwise replace with :term:`BP`. | ||
49 | |||
50 | How to make those adjustments without tedious manual editing | ||
51 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
52 | |||
53 | The following sed command can be used to remove S = "${WORKDIR}/git | ||
54 | across a whole layer:: | ||
55 | |||
56 | sed -i "/^S = \"\${WORKDIR}\/git\"/d" `find . -name *.bb -o -name *.inc -o -name *.bbclass` | ||
57 | |||
58 | Then, the following command can tweak the remaining :term:`S` assignments to | ||
59 | refer to :term:`UNPACKDIR` instead of :term:`WORKDIR`:: | ||
60 | |||
61 | sed -i "s/^S = \"\${WORKDIR}\//S = \"\${UNPACKDIR}\//g" `find . -name *.bb -o -name *.inc -o -name *.bbclass` | ||
62 | |||
63 | The first change can introduce a lot of consecutive empty lines, so those can be removed with:: | ||
64 | |||
65 | sed -i -z -E 's/([ \t\f\v\r]*\n){3,}/\n\n/g' `find . -name *.bb -o -name *.inc` | ||
66 | |||
17 | Supported kernel versions | 67 | Supported kernel versions |
18 | ~~~~~~~~~~~~~~~~~~~~~~~~~ | 68 | ~~~~~~~~~~~~~~~~~~~~~~~~~ |
19 | 69 | ||
diff --git a/documentation/overview-manual/concepts.rst b/documentation/overview-manual/concepts.rst index c9405cdd33..b34de4d361 100644 --- a/documentation/overview-manual/concepts.rst +++ b/documentation/overview-manual/concepts.rst | |||
@@ -704,7 +704,7 @@ the Yocto Project Reference Manual. | |||
704 | 704 | ||
705 | Each recipe has an area in the :term:`Build Directory` where the unpacked | 705 | Each recipe has an area in the :term:`Build Directory` where the unpacked |
706 | source code resides. The :term:`UNPACKDIR` variable points to this area for a | 706 | source code resides. The :term:`UNPACKDIR` variable points to this area for a |
707 | recipe's unpacked source code, and has the default ``sources-unpack`` name. The | 707 | recipe's unpacked source code, and has the default ``sources`` name. The |
708 | preceding figure and the following list describe the :term:`Build Directory`'s | 708 | preceding figure and the following list describe the :term:`Build Directory`'s |
709 | hierarchy: | 709 | hierarchy: |
710 | 710 | ||
@@ -2368,8 +2368,6 @@ The contents of ``libhello_0.1.bb`` are:: | |||
2368 | # Change <username> accordingly | 2368 | # Change <username> accordingly |
2369 | SRC_URI = "git://github.com/<username>/libhello;branch=main;protocol=https" | 2369 | SRC_URI = "git://github.com/<username>/libhello;branch=main;protocol=https" |
2370 | 2370 | ||
2371 | S = "${WORKDIR}/git" | ||
2372 | |||
2373 | do_install(){ | 2371 | do_install(){ |
2374 | install -d ${D}${includedir} | 2372 | install -d ${D}${includedir} |
2375 | install -d ${D}${libdir} | 2373 | install -d ${D}${libdir} |
@@ -2394,8 +2392,6 @@ The contents of ``sayhello_0.1.bb`` are:: | |||
2394 | DEPENDS += "libhello" | 2392 | DEPENDS += "libhello" |
2395 | RDEPENDS:${PN} += "libhello" | 2393 | RDEPENDS:${PN} += "libhello" |
2396 | 2394 | ||
2397 | S = "${WORKDIR}/git" | ||
2398 | |||
2399 | do_install(){ | 2395 | do_install(){ |
2400 | install -d ${D}/usr/bin | 2396 | install -d ${D}/usr/bin |
2401 | install -m 0700 sayhello ${D}/usr/bin | 2397 | install -m 0700 sayhello ${D}/usr/bin |
diff --git a/documentation/overview-manual/svg/analysis-for-package-splitting.svg b/documentation/overview-manual/svg/analysis-for-package-splitting.svg index 3ea4280882..16e831d65d 100644 --- a/documentation/overview-manual/svg/analysis-for-package-splitting.svg +++ b/documentation/overview-manual/svg/analysis-for-package-splitting.svg | |||
@@ -1483,12 +1483,12 @@ | |||
1483 | x="291.66635" | 1483 | x="291.66635" |
1484 | y="381.29614" | 1484 | y="381.29614" |
1485 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" | 1485 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" |
1486 | id="tspan15"> sources-unpack <─────────────────────── UNPACKDIR</tspan><tspan | 1486 | id="tspan15"> sources <────────────────────────────── UNPACKDIR</tspan><tspan |
1487 | sodipodi:role="line" | 1487 | sodipodi:role="line" |
1488 | x="291.66635" | 1488 | x="291.66635" |
1489 | y="394.62952" | 1489 | y="394.62952" |
1490 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" | 1490 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" |
1491 | id="tspan29"> ${BP} <──────────────────────────────── S / B</tspan><tspan | 1491 | id="tspan29"> ${BP} <────────────────────────────── S / B</tspan><tspan |
1492 | sodipodi:role="line" | 1492 | sodipodi:role="line" |
1493 | x="291.66635" | 1493 | x="291.66635" |
1494 | y="407.96289" | 1494 | y="407.96289" |
@@ -1543,12 +1543,12 @@ | |||
1543 | x="291.66635" | 1543 | x="291.66635" |
1544 | y="541.29663" | 1544 | y="541.29663" |
1545 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" | 1545 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" |
1546 | id="tspan32"> sources-unpack <─────────────────────── UNPACKDIR</tspan><tspan | 1546 | id="tspan32"> sources <────────────────────────────── UNPACKDIR</tspan><tspan |
1547 | sodipodi:role="line" | 1547 | sodipodi:role="line" |
1548 | x="291.66635" | 1548 | x="291.66635" |
1549 | y="554.63" | 1549 | y="554.63" |
1550 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" | 1550 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" |
1551 | id="tspan33"> ${BP} <──────────────────────────────── S / B</tspan><tspan | 1551 | id="tspan33"> ${BP} <────────────────────────────── S / B</tspan><tspan |
1552 | sodipodi:role="line" | 1552 | sodipodi:role="line" |
1553 | x="291.66635" | 1553 | x="291.66635" |
1554 | y="567.96338" | 1554 | y="567.96338" |
diff --git a/documentation/overview-manual/svg/bitbake_tasks_map.svg b/documentation/overview-manual/svg/bitbake_tasks_map.svg index 09ef36faae..1ba962ccc6 100644 --- a/documentation/overview-manual/svg/bitbake_tasks_map.svg +++ b/documentation/overview-manual/svg/bitbake_tasks_map.svg | |||
@@ -1,4 +1,4 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | <!-- Do not edit this file with editors other than draw.io --> | 2 | <!-- Do not edit this file with editors other than draw.io --> |
3 | <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | 3 | <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> |
4 | <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="12270px" height="3804px" viewBox="-0.5 -0.5 12270 3804" content="<mxfile host="app.diagrams.net" modified="2023-11-01T08:31:56.536Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" etag="p-CQVME_iMteI52En1Eq" version="22.0.8" type="device"><diagram name="Page-1" id="c7558073-3199-34d8-9f00-42111426c3f3">7V1bc6M6tv41rprzYAohro9JnO7O2X1JJZk9Z89LCtvEZtox3oA7nfn1R1yEQcjmLmRHPVV7YowxRp++dV9rAm9ef3/27d36m7d0NhNFXv6ewNlEUaCl6uj/oiPvyRFFM2FyZOW7y+QYOBx4dP/rpAfl9OjeXTpB4cTQ8zahuyseXHjbrbMIC8ds3/feiqe9eJvit+7slVM68LiwN+Wj/3KX4To5air64fgXx12t8TcD3UremduLnyvf22/T79t6Wyd559XGl0l/Y7C2l95b7hC8ncAb3/PC5K/X3zfOJnqu+Ikln/t05N3sln1nG9b5gPOn9ja72cPZi/UlfHp//N+7+WoKLTO5zi97s08fRnq74Tt+OvHvc6LLgAm8flu7ofO4sxfRu28IEOjYOnzdpG+/uJvNjbfxfPQ6fhrwemkH6+zjL942/GS/upsIK1/duePboett0Tc+2tsgPeHR2/vx9ddhiCCgaPAK/Qf9tOg/0QmBtPK81caxd24gLbzX+I1FEJ/66SW5PPqz8AWacp1+RfnRpU/zl+OHzu/cofRRfna8Vyf00TVl/K6lpuuaYt7Er98OAFLM9Ng6Dx4tPWinoF1lFz+sHvojXcAmi4l3XW7tnCUCevrS88O1t/K29ub2cPT6cPSr5+3SVfqPE4bv6T6196FXXGP02Pz3/0MvZMnQ8Ou/8m/OosckZ6/es1fLq2i7opeLjR0E7uJp7W6TNz65G3z9AmAWe//XeaAnwN97fIHSpQ9tf+WEJ89Mt2G0fifx6DsbdIe/ikRGg1b8UfT07ffcCTvPRY8jd+X76EAO5oZqFGBu6QTLVH1AT6nyAOzkHg4wz35Me+SrssEI+b/dMA989PKv3FsH2Ecv3vN7IPlUo91SQH4Q+t7PTDpBgmknClzKC8dRsjNz78jxv4+0e7BUG3v3mFZRSABACmniE4psnv7EMPsne7RCDWioBphytRqAl7CgBijqUGoAwoxYzDaLCWuspWIwXUugKsOv5SpSxVKZc4nrip6ijiRvfmmhVXNpARhsaXUGS3uJy5nR6SnKVdluUxmUlq5a/ywubidttLsyelA/K023FFsHm+38dUusMFaqlpbVt2bZzeSHJiPDpyVsihj/ICABUObC/jBBUephAjxmfUyx5kg/fyDbQ1UFhLmDMFThWUIYyOrJDwzlfyqrbgLDY2NYxVrZuWFYHZiH9+EP7fr+38Gnuf63/Cd0vb9n0ykQEOYQwup5ahLoE+xZmBrL1Ddhigb0ztIO7Wn09zTwF/EZ+t/7KAB7nSAkwgdCxxFsxMjIcAFnV/4iMsgX0YO7RkhHhqbjHy6J/lpF/x++7vBtpJfG75Q2XGNzH+/OdJvlPTlZvJl766y+6W+Q3nGzbPrTvDgDGv5tWLO74X/ZxrhV186Se2fHTmjAN84ZAb15/s9hGIgDmDVhwQEYKKOb8RhIZ6S3tXI2nuapS9LpMjKqQVsaV7QFNG0UISa81yNAr3e3Tl3o0Y1Ozn1/GUZzCD3glY7RQtpOIQBXM/3to4BRhSpfPIjvnDP9Dd/D/HBAnRjX3/759enu29XNl+enq4fPt0/PPx4nxiyn6M3JCwjlr6PyB4vKn0qLPLPV/nB6ghDd58qWsLbo7j2psSNbQi7ZcuPO1+j2PUF6/ZAeVHQJOzZS3tOUsY1eHCBh7XYTFHbCnK1BYXxlz2R3zhmFBfa7oLAeKcwyinrb+PyF6wfPjr8u2W6tnd6l633TWKugLMQZxLjUyjwdlDVPnj5MTDYzhwTSzxHp2nkiHRB1V4ygfl6k3sKG/zC4NziL0Fht6lvPys3zcaDFR1JiU0rV9REoVTHalDcI7YEPqCt67/EdJlCfamNoDzKf2YuyBKa+LDwRfTlTie4Y8sieCCifldLKA2S6UGftzEZD4YI6gSwXE7+ruNPST54/UAnZeYUDPgqIFU6KFxqDGEB1BA0AtqrAESgeHMW9B60YoVjDgGKKYv2sHL4fBcVQ46QlVmMU68YoKD4rx8OHQTEnkbfmKDbHcJ9BU6CYRxSbxnmiuNSdkJFnjM+yOuEZGzRHx0yxOVqODq5OONWfTdT6dmVNnFJfo6kSZ6VLbRynPUrTyl7bafAWh2tF6VI7MNIXv3cJ3pGr+KxcQhJiu/HsZSCkZD9SclrqZDp+ATruFHYOuSmXLUprlxLhrsLc0BefpUQrN1QEcw3FXBCOzFzoFsZR6FOFLnuRU81OKHR9TIBooxTyANYurKjXZUVOkp0VIv1INSq8MsT5BoteawCWS6cQXa7382hxJUST9mtEejF37gPH39qvTnY0plDpUOZ0CVya225O/I+2EaEOLbjsiVGBQlKqSkknUiBLToVwnEzlzEgWnMqCU+tWfA6VAkIJExLuQ5lAePKj0k8dQN7YZ15iZ6Ui8jMSPeud6flQSC/ouSd61samZ4BTshvRc8EtKKpK2PGsVlt3xSnuvFj0Wpl/OLHohUHfD78BItPXoBTVa0y5TSvHib/ZPx30XJzLWN2cpHrRov+lX52XYPE/mmzT4389rT1WL9K1z7Jb8o2wcG+/wgimoRZfhWfly2kzCJcHFHaQZXrdQK8KOZNlejm49vXu5vb74+3F0Qob1bhEH5RpfGzpQwFtWuAydFR0bkRak3HEmGGgg9pKNx8zkohmFxasKNEiTtdZ+CPwQ81x6Iv7W9rZ4WJ9cSzKl3JmURRz1uzKPFeqJbtKsqwXGNa0YAOORe/cO76LnprjT/rzMPMA8S6EWjcvQcGoHHvaEcmQ5klCJYfSyBCwYNRyzkTsrt24c2khKHVYSqU4ctlSataDjjMHW+gMNe2KE0wy9LBpxV4RozvYlJGajYuuu6f6SFVLVd667hplW4AH6greA9/zwunSCcKl6wsW64fFshY3J2gMKCx5DMoj56iIrmLHG95U05k1Wh3Q6TvnjM58Z+HunGnKaoLN+mEzC9RgM8A07InbOgs244jNao9EMDirJDP4HIngvtorR5BYPyQGoSzhrkYneAx7mBjR2LgBfEFjJ8ipmsawD5QXGjNZDZYcZxLaKcwVQhIfB4C9t9XuKEcNLuXoPhCOjb6kqCpLSjEHkpYHp0KcBc5Ijo7T84k/HuQBkh2oz6ybLwf6byfVEYF8NqNwt4vNfimMiN6MCE0iGoxalHm4GpQMpvxnnZU7hAfgdCGp2rlyFmf6mclnEGrjzgVB9UNQqmZl1HOCoJjrZ2XDIMvbEamQ/ebtQKUooIAMygAwKd56rNcPsPzlIiVcaCsFnlQeZCAQ0IkEFDI5DxhSubMkNQA9XPKWVdaQCyCQyok2Agb9wkBVasNgMC6waDpIp3XPPfM056lQQmb7i1SD5V73bLC2AFaTPMB9SfIrq2cY6D9XztRbmCEM24P2kZdeSn5P7sP4KANFs8y6MZJWjuSiQ4Losi5rFY1QymVChG8TAPJKya/u3FJFJwqSAGbhujOmyA8Mk3CfLXaOrW8RS72Ha3e7ij4dwRYbb/Njgev5wZ6TX7zNMjIC5XBtR7/PDSIg+k7gxD+XfsHHvx4ffvx4ep7dPTweue6bG/+cOfpeeeHtXLRHI+LzHak/8ZIvFuWuTHnQ6lUyodGkGJV0RWK4zOxW1e+d3PwNSL6tiCqIF1FHpYC6zrYBMr5bMbsmE5pZFbOTQ4YZMXurwWsddTUVFtzEkmVZFdshfkWWF7aJuxUTBBrvIspOPOt9lfVOqlGf2LsTu9W+Ak01JlU1RtlXfLZ1XnrP7jYI7egX1HO1I80gLG5le+OutujvBYJbtBmvI/3BXdibq/SNV3e5TEJLTuD+155vsNWdLi66rnY90WbRtRBRBAlnANrOy5SXY/oX1/uvvmKlGCSsKe1MLYpiRRomPVa8lWfAXLqjjlULGLO41kf8stSiWmM4tw3gM20LUdbC2764q72fGZNz/8BXgsY4oDEcZDRoOGZLW2YJxSLGyKo3gElxB7Btt6LQ4gpckFja70cQGJcEhqPm9H5SVTHz4ehMoU3i4wLP+y0iyp8C0HwDWpHJTty06ZJsLQulss4uXbkD7kAegvIiW6/DQfgS/yucN8rWyEUtcnDHZyV3E/889OUy0Ha/k88QV9Hp8Y16WwstgrsLnGqNxg526PegFy/u70gLIpJBib1BuMFy72i6BowL2jXAqLNraO3rB9w1lV2PxK4xxK4Z0/qjaEuM90ilC0PsEVPskREly5S0MCgeE8Z7ppzbwYmFgT6+iwcYCBODZ0iX8ktlmjubsYlR9gIKQUBcxRKCYExBAGptG7ayAFZ6T8W2AbLYN2NKG7VGpJzxruGzb1QUc/B2+40dOs8NW+EJxYkFlDVAJnNToJyN4GGEZeFlqpYAQEiAMYuezBrbhqkEgBrzEUrN0sk7p8qKFHQFZ23VGPzce1OadqmysKQqVeTKAo3oasIoWRbSrHViP/VaDMo1FBuEqci0UWo9jkqhwkyrGECDsFpwoRizPBKrYXBUsxrepJx0scnunDOrS4xZ7m/MMgSczVlW1LKDTMxZHia3VMFdkU80mGScXKoqpdW/1Gm4vC3+6GNys2YC3A9yzKk8jcbkinJIRVVr23gaHzbesYzloyZe6QOGysDCU8tpzIH9nhSTiYmNA5MnB1Nw1XKIBK//xa0+oyrC0irX1o+GqyGEeG6GaMZxwZ5Qte5kAohHn48tJbXGnlAdT2pk6wlVaQmswhNazYaqBiTLKtoMHDQnUseZSCCmC5xak9qd6/oP5HREE5+pumJAWZ9OT9Xkb0JZ5mUVPMYPj2lKXR7TVL54DN85ZzwmBkT1yGIWjxOi0PMZhcfEhKi+ua+2oxbPxBm6+3A5dybrxV3RNLg341ErO1l5oNV51MxX0GpPymE0eco6/CtAztIo8XHGQ6gUnU8U4t51U1kCAo79wHEKiH7Q1JHwMtMMDX3k4QNV8rnofSu6juf2wlxS40OZ65iuSmTaA1WVKLqslfQm7u0QbZRtfCeKHB0tzjT4EHqEUVuPMBjpEWhPEUlPMhGtqTvFAOgVF+ppiEH5jtOCqGM3VvqArlV54+Gp8wfyxevVzSQqS0jUUgnJONLvEX1x/F1y/j11Ylz/68fDH7O7h4mB3vyUJC8ePluvoAXtiK/23NlMBqsY20SXRyy9dHxMikvnxd7H9xcgkexuV08xcSuHA1+dl5BrljotwEpiOKqt2m7RUqePapLG64+LZ2SCG2Qf+uRVR5LSiU94Ly+BM4xRgzPcOVMn8ba5ZE2yurosjSg2UTuJlJi0MjD9Tek1QA+6KTQhOQKT1sOL5kYfbOqZgoPKnIF5JmDMLYxBCcY0I0vRaX7UAYHMpwf/UQCZVyADrdpVwBzFfA7pqK15CxQzR7ECJQ7ZmE+Xq2BjbnE8zRLheIIxn310ngSMeYWxCrhUjit76IwVAVu6vgAzt2AmRttZBiWay3JIu2LwORHK3S42e4RNAWZ+wQx1naRmGp5pw1QGxDOf+dMPtzd397fP6XRrgWleMW2ZUDKL00QNSsYNALoEWLqVoQZK6OCq/Vgh56FmYkGxNJ0D+B4FUHWWgZmeWV0wh+HES6a2yWfAQngWuCVJAEuzcwy1HHdjbZOZfAYshKuXYyCTEQseYMxnxGImYMwtjDVYjiDzgGQ+YxYir4d3PMtEAyONMkGJbVaPyaebLOr/7zvRw372nYW7E1MAuGxdYahEhiatnblCK6IYbgoALpoT7Zp6a9ek6kXPEeKxekOyBmzXpFg0dbLT+n6MdjMmIYNorWayzGVGrWYstbR0XBU+fUC/n5UGgmtUKXPWXNtiNdCCv8r4DwlAKHPmeLb4zKEQLUJ6Kx42DS47hFhGC+YTHUL4o76643qg3HuTyo4IrJxdO2bWjaC/nuhPjzp5FOjPolgRzNt34JYiotMbN1yWKWc1uIyvTm/ZnXPGZRt3LnisHx6zTKuU6EfhMcZqXCbUc8CL3Zdo5aX1ZSwyNwMHTK0oxw6dz8bK9IRy2YGNG0BJgSeV8+UEAjqRAJEqgRBAG2ZP7749HAeUvdsFEEjlprYCBv3CQFVqw2A4LqBlGgwZ5LD9RaroypygpI+1JcOUNJIH0CivrK4MN29ErrSV24z5HqnOcO0G0UPaBN4k7vUT2u42OuKF6+h8OZoyGL1+8aNvwYd1+zXC53Ye7Ca5Ced+lgbg7JAx5GwXrhNI6GOztHES+pW5d6Iv9pMnQl5gbgdRiD8CmJy9S32y5d+Ez9/jA6vFIqd578nzJoWB6jd9fCNakh16cD6i/qD+V8v2dtnt22udj26qwfM427SNlCWLLFukyUsME2takTN12qB6WszfGEwnAnwa5Gnt0/Ps9vFJpN9xnH6nk6mktAKoQ8oKGw2PotAxjNngv2N/ZRTSqhe0meTdnJXTPcXYMYhn2VV6QQHOrOLFC6qMOnWgiE9D4HN8fOp84RNU5uIvsuU6SG74soj+Vxbmn91wvb9sB3u1DEfvKFBVtZ7yR6cqIMvqoFV2reAyt7zczfKJBwAOn1k6S+/5xQkX67Ite8Y21AWmvkf1bGQOkCpTUM0y+R2C6r7fydodgAcK3iM6WSYa+eheptMejWrfWHKV/AiNxg4KtAjuLnCq2d4Oduj3oBcv7u9IQhA6UW0i1nQNGJe0b6KusDX2DWS6bxQhDIQw6FkYaGMLA0UIg0phoAlhwJswoOwbtsIA8tk4BgmDhbd9cVd73xECgW9gA6AW0wkshZJLANjCWhHioNI2UIQ8GHXbgOptw1gY8Nm1JhYGcXKAEAW8Y1onMK3R8gtpofQBUV3pNReyIOqDKWTBiPsG1tk3bKWBymcKCpIG+y1C2E8hDPgGtULoNzTPJ1tJoFYau0ISCKNgVEFgVu8ZxlKgTZ0pw8rSC2oDAnHqfnX9qMpXZooKTYESDlHSe35d/NGmg8eBrBIZMcrpOeIWME6dPxlkjrgKBdPxh2G1/xw8NhgGwDj5gWFAnD1Yzoy2KJhz0YmGDCv5DxV9KbIUysAeWlPDPqr49+EP7fr+38Gnuf63/Cd0vb9n0ynOKGHHnHnerJpqkvVsmuTzq0+nVxe4ts1YFB5w2YWftTI/05eeDxXDJPzO+AccY2fyfLxfjmokOKBIP38oMi8P2tx4C3sjJXR6CbzJvMEvpZ0dpHX4Vcv82UcHBPom4rwlbIENaxLg+dSJ1mBDSntO+kIqfbNhR+dNOdVzPt/Y744fCA7ptZcSjUOoOS/DtVHRKuM17b3COd/ykfL9/Kivqpr9ZdLaIGpmsHK2aFWTpgVh1E+h+psmiC6NbACIMYvNlejQ9f139HKavLj/M36rWcn+IZR0t6Xdy8oNj/ykZHJD9IsWa3uLdj9arbDTbyp+Vy8dBxrtbu4IvNiHoA9DStFK+1ijzaWGB5WhULClDbeXFS7N+GhUiX0yR9/FB/7x3YvXB53tBP+TQ6h7fNOJ+C1XsSgyr9OkZCtTZdxw7QK1SveWiOCKVB6u0jppzdLZhnA1kQBXuWlUsWnGnK2F53DjpnW02VqMNw23VZLuNgjt6BcI9YlnTAMIVNK6ADIlVMM2B04ThZLV2dBCGoy6c5ClUb1t2IoDXSmvsxi3MK5bXqs9Okbna3RMduecKRdRVr29EqNj+vIv6oQDxaA4F2kjkAf0n1hcAu/+j8+zi0bdWfcSBboFJZzjg6FMGU0Pdcmghc0H6ydqsoqbZ1PfjO5j36rSlQrBdtGuMZPd1VIe106MnSqq48lwmTejKleUTEciPzFQfhF+tDlpcBVbeLvo93qRPUdvWl8MW85ykVaqNyI73/kdzaZzt6vjp+eu/Sl4D3zPC6feNgIXzSLrJBuO+B+4C3wOO/BcB4akF91vtDHZyAajTrgbUFnRK/3W4wVBC4qycMFx6kjQDKS4qAS1UlzLbF1wejmtU7jgSBecaFY27s5RoYRLP/kJypjlgXDCCze2fl57dn3/+nlHHuYzxJcqF8E02G0KOYCX5xZh6Ywz5WpnHHXi3YAKbmUsbjRv3O3j00Uj77wdchaRY0TzxukUKA/nijOMUSRz5phr4pf7EFLZqiuVDciZVOYzRBHY7/FE2otmRabyWDGJQSkmZUYZ2/CYIaL83DEZ5qcaTMbZODF855wx2T7wBYn1RWLQJKuJLcq8ZRXSBi0OyGNtAqMjaWOC+6oZrbLwGAwT+qwRqZShQY4NT+42/SQB5T7Clkal/3wUXp0j/Ale7YtXoQSUIq8atJa4GqRGJYejVjy5jwK+YGdvOwU9PnmbpePHRcS+Y4cIINGv8qNiYjv+7853AidGuEutT8YHsmrh+6ubP64+3zYpzv5l+24cXYzHul+74bX9M/run1vvLbq1t7Ud3UAyd/0tvb24zHm3jyueEQ+vohP3QRzoRwecWvf66e5rhxt1ftuvu036hOt+WXRyXCz+vVGxuIy2Q1zr/ebGiFl5k4aV3g2/sJiG8RLDJH76blSLK7vBkIjIjiX4FrXltRhMkzUJFtsY0mrLoQKoBAZUMzs+AInxKUFFZsXZxIcNtSSgOcisMCsjeiKzIpoFLDIrRtw5AJKCgYPMCrxPheeTH+vfNMrW/5Ezrb7N/448zGdge+nsNt779KiSnLWm2f1c5Qix1LGmDXEKk79iWoiscJefYbXpaytIcVhSrB3YtjgLB+E754wUKWwYeygSP8Hz1cPNl6KvQlDf0NRHbbTFmPqqG221tkAQLcU+zthbOq/nHPR3r0F9l9VNrWsunXmDa8qeX+uq7u5n7atKZT/H09oJ8g5f75e7jB3B8/fyydV3k/pTntHz6/vx4Uujx9jgKSZ+4/pXR4+zwdVjwRe7Zn0nNkARrUdb/Sb2R9eDGma+m69Xj4+NPNIvMUTC1EGeoeCwXgu0QxL/fVRcN+i9pK7peHvZu50TM3Dphmo6re++f7l9uHuq//VtvXfCi0zEwYgOAjQXskprwTio/1gF2iiKcZpfgP+uM8ihbRW2KLzO9OfqGT24e9vIhdeHqSc4ZJw2cTtWd136gCZXFGqrhM+b+MBkmDptqxyuwemoU1kCU1+WqEp7pl5UOzYuQWVn3gceWKpO5LBalNJpBdd5FFy5Cpk206PyXt3jravyHtrBz+jeN0GkQSydSMGIjnuNotDN9ZqbNkpwC/9eo4B8U0tmAENmEDumseo7nD3S3vLp8HD2x3fKW7qVo70y9zZL6l6ptmEKMMqbLHTLcIIHJiS5QVmwvDBGYWu/xu8m+TfRHbbZMS2yVOqBNb30w3CXPuq5qmWbVrY8GZ5cWBhPeYGZlrpxZ08dF969W1qKQkxepvVAgbSpesAYygmnyqOkcfOw8u3NFlWu2y9KlUerfKMPj2rT3KC3KYo5+/ikSYx3YzrDZ/LhZyVSAUdfYL76H2Q3zllAKonSDyP0OEAa61R6aJA2Kst5sUccRuPUJ7UMrPOAmi78VLeAcgA/XkeCOh6EnBd1/tnt/dcffz3P7h6ea+vjx4LagmAaEoyqS7g9Op6GSKnkBorFtlRHlfnssn3Icn9+89H59RErkuJHINgm7mCtKGipeb3Z1EAmib2qXJl1JFLigXHKESNS4gffN0T+E9N8eHo9NXNbvFl4uo2ZXbDTeYBOm3h+LT347kH7z+rd/e/1p6vdf7b6dbiWnWntNiI4esaLFgxoWjDV0S0014aaqwYI01jFzTxGy7xUQXUNW4cCc/8QNgqSsErYIhvz7v6PvmM3D/ff2obpjl90dtsg7CL/o6SIL9bO4mf8xJ1d9FzzekJ2Un64sUhua1IiTXTOgaopYbIr5LfRrEYg4SKjAbYgn+VLByfHRTtHz7s1J5IgZHknpGizJkWmDNadUwV8ekKevt0LMHMMZhMW7TKFAmSmbWZVwGcN1eyrYGUugXyCgXVF0k2W2FWUFj6FHoNek0bR/nbJ9rUcEdyptrWcCp2Da3rfboVjOeqmLKmWnP0jQjOmIammZiBFJfkvoUUnP3mw5n0qHsfDGYOLoMyFBmWQ0lK0Mg2D4uJhG5PBMkbEZE7EZEwRkxlz2wCiNIq2bZiGZMwW2lO3iIzx8UIyHTQhpW63IlXpvVtRu3JBiJU3DPF0LPvRckHyA3qqWw1a/Zc92IK0ECZlQ5OyF04kWxTRhmAz9YcorFiRPgE7swCraq+bUWkbO/I8qZQaqVZrEmnWpIWXSLVS6Z1j2zTm/o/P/3q4e7qd3T00Ci/Wi1jmrt4szlgzeJm7fqN46+C1mEP1hiEN6YY/o1nBarE/DJOSO+78Xv2HdC2rKCGhCSRKSoUKdMmkOF+N0iyJ/sgJKkfJqXPj/q/uwtnG7YXijIGk7/06brvToDV75IPydntE1c7zxl00ALP9ElviNb/DDqOu8Scgf/LrkgZOcwexTNz5P+12hH97sH/Ff5a/I3kkWaOApqW2X+9unuPG/c83X/54/GeThBH3ZZJOIiDvaZOtXSxgtl5Y60HefP3xeDtrT265sz5MX31KzXEPpDNViJk0hkWbFAKVw6imQv2uPFwnDhUe93Z3Jp1UIzqMwUgAvA/i6v+4s1fgoCeL6CSWdwt351B6ks3t5AMxMtAOcf1M95TQX+m3rO0g+xlJ97LWTQXIrMXo4NPVw+fbp+c/b7/PfkSdAaaFwz8em03LEFttoK2m6hrZ9Z/akQyqdPE+lG+QmRnc2qJtEU09bt5+jLpqSBksT199zhK2YTmDd+FtX6ZItXACKfwdXpz7jlG7LdL/BiEllEfrhqgMRTygTYfwEbI4moxk/Oj9HHBqf/XQxdEajNNvh70QbCUD5Ul9GSiwWBeLnMlAfOOcpfkEQYjMoenCXhxcAReZrsmyjKpWgxEgQwk3nGFTSKUed/iNCcHHx6erp1uRL8xlvjCO9KpQskz5aA4lraCDDu8+Qr8nJz5TegJfHIAYmRcmUCXLKqw0kCltAGkzDZVeIhf0lYbM9TqgWnnNbipLsgyr1Lvo1b3ju+hXR8mrTSL5x9U8HtDYXn+DuAVNZSxfGS+Wf9K2GdBxnY0xjqZi2O42Ce/Hilkaws581vJ8725iJ/U+jKdM5wqX807vaEbKYWR1dNIh7pNebVKIUy3d6GNJzGextrdxM103eoXHXafxreQS+OsT7/r+EDVK3g7sV4fSuFf4n/vyP2d9pU4IYuo4DGswB9DxUuHO+2RQbTW/iMkSUvZpMopo6aKtE3q+6xAZOEg38+N9Zy8WvhdkGzXAOySwfyUXiJvFBzGY8QggvKVDJDCOasJiKw0WNdUP4VCs7Jg1d5M6lKqjVHoNOksdDOb3ouDxEIP7eYYvgj7YRykT8UynOq3zX5P2Gv3mVAXLJvlNdedspekPDe5W5Er1Y26Q7S8UnZa2cCxVarg9WOk26a75uXG6Qm772fF9ldC6sd8dPziC8FQzy9Q9JI68fSxS0IUDN9Et39ZOhJON56VZWYlmiR6VHcnT09rah4HzMCIGyERijkqL11F76g9WRVSj9K4ruuP/RFk1CRJf3NU+W+Ai8hNEOkGAnrFrbxKTws8+1ljufLu6+XL3/XYAKTG7e3x6+CFkxPibysJ5rJnSRpEZKk1pG2xLDTptyonZOgiSOTeJVbH23iYnkl5TtwxS5pwp2mThNDY1ps72lwArYwkAcFA603Eo49FUkLX96huw1Poa2tiDo0srVy8t5dkVx0dGJ+VjGkceI+VhH49QQLIWjWK8UWvRhnqqNLXx7J4qWfUcDfij1C/QOkIO9mBp7T/P7sHKxIMFQKY8Vkp69mCPlZaZfX6Plai3MSCFX1mClaZen9tTBWpprCfUqXVMPT1a9NL3Ir0ne+8zehDrb97Sic74fw==</diagram></mxfile>" style="background-color: rgb(255, 255, 255);"><defs><style type="text/css">@import url(https://fonts.googleapis.com/css?family=Liberation+Sans);
</style></defs><g><rect x="9428" y="2640" width="1120" height="600" rx="90" ry="90" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><path d="M 8868 3120.57 Q 8656.57 3120.57 8656.57 1980.33" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 8656.57 1959.33 L 8665.9 1987.33 L 8656.57 1980.33 L 8647.24 1987.33 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 9228 3600 Q 9228 3760.57 9608 3760.57 Q 9988 3760.57 9988 3280.42" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 9988 3253.42 L 10006 3289.42 L 9988 3280.42 L 9970 3289.42 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="8868" y="2640" width="480" height="960" rx="72" ry="72" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><rect x="2868" y="2640" width="1080" height="960" rx="144" ry="144" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><rect x="1082" y="840" width="1080" height="440" rx="66" ry="66" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><rect x="2148" y="2640" width="560" height="960" rx="84" ry="84" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><path d="M 4928 160 L 4928 360" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 4928.57 160 L 4928.57 200.57 Q 4928.57 240.57 4888.57 240.57 L 1662.29 240.57 Q 1622.29 240.57 1622.19 280.57 L 1622.06 334.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1622.01 355.53 L 1608.08 327.49 L 1622.06 334.53 L 1636.08 327.56 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 4928.57 160 L 4928.57 200.57 Q 4928.57 240.57 4968.57 240.57 L 5808.57 240.57 Q 5848.57 240.57 5848.38 280.57 L 5848.12 334.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 5848.02 355.53 L 5834.16 327.46 L 5848.12 334.53 L 5862.16 327.6 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 4928.57 160 L 4928.57 200.57 Q 4928.57 240.57 4968.57 240.57 L 7273.71 240.57 Q 7313.71 240.57 7313.81 280.57 L 7313.94 334.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 7313.99 355.53 L 7299.92 327.56 L 7313.94 334.53 L 7327.92 327.49 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 4928.57 160 L 4928.57 200.57 Q 4928.57 240.57 4888.57 240.57 L 2620 240.57 Q 2580 240.57 2580.01 280.57 L 2580.02 334.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2580.02 355.53 L 2566.01 327.53 L 2580.02 334.53 L 2594.01 327.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="4788" y="0" width="280" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 20px; margin-left: 1198px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">tmp</font></div></div></div></foreignObject><text x="1232" y="24" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">tmp</text></switch></g><path d="M 4928 520 L 4928 1040" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><rect x="4788" y="360" width="280" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 110px; margin-left: 1198px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">work</font></div></div></div></foreignObject><text x="1232" y="114" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">work</text></switch></g><path d="M 4928 1200 L 4928.29 1240.57 Q 4928.57 1280.57 4968.57 1280.57 L 5648.57 1280.57 Q 5688.57 1280.57 5688.57 1320.29 L 5688.57 1360" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 4928 1200 L 4928.29 1240.57 Q 4928.57 1280.57 4888.57 1280.57 L 3156 1280.57 Q 3116 1280.57 3115.98 1320.29 L 3115.96 1360" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 4588 1120 Q 4398.29 1120.57 4398.24 1334.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 4398.24 1355.53 L 4388.91 1327.53 L 4398.24 1334.53 L 4407.58 1327.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="4588" y="1040" width="680" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 280px; margin-left: 1148px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter"><b>${MULTIMACH_TARGET_OS}</b></font></div></div></div></foreignObject><text x="1232" y="284" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">${MULTIMACH_TARGET_OS}</text></switch></g><path d="M 3115.96 1520 L 3116 1680" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><rect x="2975.96" y="1360" width="280" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 360px; margin-left: 745px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">libhello</font></div></div></div></foreignObject><text x="779" y="364" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">libhello</text></switch></g><path d="M 5688.57 1520 L 5688.57 1560.57 Q 5688.57 1600.57 5688.57 1570.29 L 5688.57 1555.14 Q 5688.57 1540 5688.29 1580 L 5688 1620" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><rect x="5548" y="1360" width="280" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 360px; margin-left: 1388px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">sayhello</font></div></div></div></foreignObject><text x="1422" y="364" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">sayhello</text></switch></g><path d="M 3116 1840 L 3116 1960.57 Q 3116 2000.57 3076 2000.57 L 2036 2000.57 Q 1996 2000.57 1996 2040.57 L 1996 2134.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1996 2155.53 L 1986.67 2127.53 L 1996 2134.53 L 2005.33 2127.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 3116 1840 L 3116 1960.57 Q 3116 2000.57 3076 2000.57 L 2468 2000.57 Q 2428 2000.57 2428 2040.57 L 2428 2134.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2428 2155.53 L 2418.67 2127.53 L 2428 2134.53 L 2437.33 2127.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 3116 1840 L 3115.96 2134.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 3115.96 2155.53 L 3101.96 2127.53 L 3115.96 2134.53 L 3129.96 2127.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 3116 1840 L 3116 1960.57 Q 3116 2000.57 3156 2000.57 L 4268 2000.57 Q 4308 2000.57 4308 2040.57 L 4308 2134.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 4308 2155.53 L 4294 2127.53 L 4308 2134.53 L 4322 2127.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 3116 1840 L 3116 1960.57 Q 3116 2000.57 3076 2000.57 L 1508 2000.57 Q 1468 2000.57 1468 2040.57 L 1468 2134.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1468 2155.53 L 1458.67 2127.53 L 1468 2134.53 L 1477.33 2127.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="2976" y="1680" width="280" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 440px; margin-left: 745px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">0.1-r0</font></div></div></div></foreignObject><text x="779" y="444" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">0.1-r0</text></switch></g><path d="M 5688.57 1780 L 5688.57 1960.57 Q 5688.57 2000.57 5648.57 2000.57 L 5568.57 2000.57 Q 5528.57 2000.57 5528.43 2040.57 L 5528.09 2134.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 5528.02 2155.53 L 5514.12 2127.48 L 5528.09 2134.53 L 5542.12 2127.58 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 5688.57 1780 L 5688.57 1960.57 Q 5688.57 2000.57 5728.57 2000.57 L 6988 2000.57 Q 7028 2000.57 7028 2040.57 L 7028 2134.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 7028 2155.53 L 7014 2127.53 L 7028 2134.53 L 7042 2127.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 5688.57 1780 L 5688.57 1960.57 Q 5688.57 2000.57 5728.57 2000.57 L 7676 2000.57 Q 7716 2000.57 7715.99 2040.57 L 7715.97 2134.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 7715.96 2155.53 L 7701.97 2127.52 L 7715.97 2134.53 L 7729.97 2127.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 5688.57 1780 L 5688.57 1960.57 Q 5688.57 2000.57 5728.57 2000.57 L 8313.71 2000.57 Q 8353.71 2000.57 8353.79 2040.57 L 8353.95 2134.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 8353.99 2155.53 L 8339.94 2127.55 L 8353.95 2134.53 L 8367.94 2127.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 5688.57 1780 L 5688.57 1960.57 Q 5688.57 2000.57 5728.57 2000.57 L 9068 2000.57 Q 9108 2000.57 9108 2040.57 L 9108 2134.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 9108 2155.53 L 9094 2127.53 L 9108 2134.53 L 9122 2127.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 5688.57 1780 L 5688.57 1960.57 Q 5688.57 2000.57 5728.57 2000.57 L 9948 2000.57 Q 9988 2000.57 9988 2040.57 L 9988 2134.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 9988 2155.53 L 9974 2127.53 L 9988 2134.53 L 10002 2127.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="5548" y="1620" width="280" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 425px; margin-left: 1388px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">0.1-r0</font></div></div></div></foreignObject><text x="1422" y="429" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">0.1-r0</text></switch></g><path d="M 1622.29 520 L 1622.29 560.57 Q 1622.29 600.57 1622.29 560.57 L 1622.29 540.57 Q 1622.29 520.57 1622.29 560.29 L 1622.29 600" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1762 440 Q 2215.43 440.57 2215.04 205.47" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 2215.01 184.47 L 2224.39 212.46 L 2215.04 205.47 L 2205.72 212.49 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="1482" y="360" width="280" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 110px; margin-left: 371px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">downloads</font></div></div></div></foreignObject><text x="405" y="114" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">downloads</text></switch></g><path d="M 1622 760 L 1622.14 800.57 Q 1622.29 840.57 1622.29 800.57 L 1622.29 780.57 Q 1622.29 760.57 1622.29 800.29 L 1622.29 840" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><rect x="1482" y="600" width="280" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 170px; margin-left: 371px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">git2</font></div></div></div></foreignObject><text x="405" y="174" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">git2</text></switch></g><path d="M 2082 1160 L 2628 1160.53 Q 2668 1160.57 2668 1200.57 L 2668 2200.57 Q 2668 2240.57 2628 2240.41 L 2568.42 2240.16" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2541.42 2240.05 L 2577.49 2222.2 L 2568.42 2240.16 L 2577.34 2258.2 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="1162" y="880" width="920" height="160" rx="24" ry="24" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 240px; margin-left: 291px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">github.com.<username>.sayhello</div></div></div></foreignObject><text x="405" y="244" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">github.com.<username>.sayhello</text></switch></g><path d="M 2082 960 L 6628 960.57 Q 6668 960.57 6668 1000.57 L 6668 2200.57 Q 6668 2240.57 6708 2240.48 L 6887.58 2240.09" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 6914.58 2240.03 L 6878.62 2258.11 L 6887.58 2240.09 L 6878.54 2222.11 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="1162" y="1080" width="920" height="160" rx="24" ry="24" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 290px; margin-left: 291px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">github.com.<username>.libhello</div></div></div></foreignObject><text x="405" y="294" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">github.com.<username>.libhello</text></switch></g><path d="M 2428 2320 Q 2428 2320 2428 2614.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2428 2635.53 L 2414 2607.53 L 2428 2614.53 L 2442 2607.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="2328" y="2160" width="200" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 48px; height: 1px; padding-top: 560px; margin-left: 583px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">git</font></div></div></div></foreignObject><text x="607" y="564" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">git</text></switch></g><rect x="2212" y="2720" width="456" height="80" rx="12" ry="12" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 690px; margin-left: 554px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Makefile</div></div></div></foreignObject><text x="610" y="694" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">Makefile</text></switch></g><path d="M 2212 2880.57 L 2117.14 2880.57 Q 2077.14 2880.57 2077.14 2840.57 L 2077.14 2714.86 Q 2077.14 2674.86 2037.14 2674.9 L 1966.47 2674.97" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 1945.47 2675 L 1973.46 2665.63 L 1966.47 2674.97 L 1973.48 2684.3 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="2212" y="2840" width="456" height="80" rx="12" ry="12" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 720px; margin-left: 554px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">LICENSE</div></div></div></foreignObject><text x="610" y="724" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">LICENSE</text></switch></g><path d="M 2212 3000 Q 2028 3000.57 2028 3060.57 Q 2028 3120.57 2171.58 3120.13" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2198.58 3120.04 L 2162.62 3132.15 L 2171.58 3120.13 L 2162.55 3108.15 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="2212" y="2960" width="456" height="80" rx="12" ry="12" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 750px; margin-left: 554px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">fix.patch</div></div></div></foreignObject><text x="610" y="754" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">fix.patch</text></switch></g><path d="M 2214.74 3151.44 Q 1988 3151.43 1988 3278.29 Q 1988 3405.14 2179.58 3405.02" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2206.58 3405.01 L 2170.6 3423.03 L 2179.58 3405.02 L 2170.57 3387.03 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="2212" y="3080" width="456" height="80" rx="12" ry="12" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 780px; margin-left: 554px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">hellolib.c</div></div></div></foreignObject><text x="610" y="784" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">hellolib.c</text></switch></g><rect x="1896" y="2160" width="200" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 48px; height: 1px; padding-top: 560px; margin-left: 475px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">temp</font></div></div></div></foreignObject><text x="499" y="564" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">temp</text></switch></g><path d="M 4308 2320 L 4308 2640" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><rect x="4068" y="2160" width="480" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 560px; margin-left: 1018px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">sysroot-destdir</font></div></div></div></foreignObject><text x="1077" y="564" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">sysroot-destdir</text></switch></g><path d="M 5528 2320 L 5528 2614.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 5528 2635.53 L 5518.67 2607.53 L 5528 2614.53 L 5537.33 2607.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="5308" y="2160" width="440" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 108px; height: 1px; padding-top: 560px; margin-left: 1328px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">recipe-sysroot</font></div></div></div></foreignObject><text x="1382" y="564" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">recipe-sysroot</text></switch></g><path d="M 3116 2320 L 3116 2694.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 3116 2715.53 L 3106.67 2687.53 L 3116 2694.53 L 3125.33 2687.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="2989.96" y="2160" width="252" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 61px; height: 1px; padding-top: 560px; margin-left: 748px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">image</font></div></div></div></foreignObject><text x="779" y="564" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">image</text></switch></g><path d="M 3116 2880 L 3116 2920.57 Q 3116 2960.57 3115.99 2987.55 L 3115.99 3014.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 3115.98 3035.53 L 3106.65 3007.53 L 3115.99 3014.53 L 3125.32 3007.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 3116 2880 Q 3116 2960.57 3354.86 2960.57 Q 3593.71 2960.57 3593.91 3014.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 3593.98 3035.53 L 3584.55 3007.56 L 3593.91 3014.53 L 3603.22 3007.49 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="3029" y="2720" width="174" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 42px; height: 1px; padding-top: 700px; margin-left: 758px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">usr</font></div></div></div></foreignObject><text x="779" y="704" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">usr</text></switch></g><path d="M 3115.98 3200 L 3116 3294.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 3116 3315.53 L 3106.66 3287.53 L 3116 3294.53 L 3125.33 3287.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="3008.48" y="3040" width="215" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 52px; height: 1px; padding-top: 780px; margin-left: 753px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">include</font></div></div></div></foreignObject><text x="779" y="784" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">include</text></switch></g><path d="M 3593.71 3200 L 3593.71 3240.57 Q 3593.71 3280.57 3593.76 3287.55 L 3593.82 3294.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 3593.97 3315.53 L 3579.77 3287.63 L 3593.82 3294.53 L 3607.76 3287.43 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="3507" y="3040" width="174" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 42px; height: 1px; padding-top: 780px; margin-left: 878px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">lib</font></div></div></div></foreignObject><text x="899" y="784" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">lib</text></switch></g><rect x="2956" y="3320" width="320" height="100" rx="15" ry="15" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 843px; margin-left: 740px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">hellolib.h</div></div></div></foreignObject><text x="779" y="846" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">hellolib.h</text></switch></g><rect x="3348" y="3350" width="480" height="80" rx="12" ry="12" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 848px; margin-left: 838px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">libhello.so.1</div></div></div></foreignObject><text x="897" y="851" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">libhello.so.1</text></switch></g><rect x="3348" y="3450" width="480" height="100" rx="15" ry="15" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 875px; margin-left: 838px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">libhello.so.1.0</div></div></div></foreignObject><text x="897" y="879" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">libhello.so.1.0</text></switch></g><rect x="3320" y="3320" width="548" height="250" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><path d="M 4428 3600 Q 4428 3760.57 4978.29 3760.57 Q 5528.57 3760.57 5528.14 3640.42" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 5528.05 3613.42 L 5546.18 3649.35 L 5528.14 3640.42 L 5510.18 3649.48 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="4068" y="2640" width="480" height="960" rx="72" ry="72" fill="#eeeeee" stroke="#36393d" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 780px; margin-left: 1018px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Everything in <b>image</b> folder that is present in <b>SYSROOT_DIRS</b> will be copied here.</div></div></div></foreignObject><text x="1077" y="784" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">Everything in image...</text></switch></g><path d="M 3678 3600 Q 3678.29 3760.57 3993.14 3760.57 Q 4308 3760.57 4308 3640.42" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 4308 3613.42 L 4326 3649.42 L 4308 3640.42 L 4290 3649.42 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><path d="M 2428 3600 Q 2428 3760.57 2941.14 3760.57 Q 3454.29 3760.57 3454.4 3639.46" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 3454.43 3612.46 L 3472.39 3648.47 L 3454.4 3639.46 L 3436.39 3648.44 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="2748" y="3680" width="360" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 935px; margin-left: 732px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_install</font></div></div></div></foreignObject><text x="732" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_install</text></switch></g><rect x="2220" y="3350" width="456" height="110" rx="16.5" ry="16.5" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 851px; margin-left: 556px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">libhello.so.1.0</div></div></div></foreignObject><text x="612" y="855" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">libhello.so.1.0</text></switch></g><rect x="1668" y="3180" width="440" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 810px; margin-left: 472px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_configure<br /></font></div></div></div></foreignObject><text x="472" y="814" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_configure
</text></switch></g><rect x="2212" y="3200" width="456" height="80" rx="12" ry="12" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 810px; margin-left: 554px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">hellolib.h</div></div></div></foreignObject><text x="610" y="814" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">hellolib.h</text></switch></g><rect x="1788" y="3000" width="320" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 765px; margin-left: 487px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_patch<br /></font></div></div></div></foreignObject><text x="487" y="769" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_patch
</text></switch></g><rect x="2494" y="1620" width="360" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 420px; margin-left: 669px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_unpack<br /></font></div></div></div></foreignObject><text x="669" y="424" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_unpack
</text></switch></g><ellipse cx="2434" cy="1680" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 420px; margin-left: 595px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">6</b></font></div></div></div></foreignObject><text x="609" y="424" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">6</text></switch></g><ellipse cx="1728" cy="3060" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 765px; margin-left: 418px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">7</b></font></div></div></div></foreignObject><text x="432" y="769" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">7</text></switch></g><ellipse cx="1608" cy="3240" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 810px; margin-left: 388px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">8</b></font></div></div></div></foreignObject><text x="402" y="814" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">8</text></switch></g><rect x="1748" y="3310" width="360" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 843px; margin-left: 482px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_compile<br /></font></div></div></div></foreignObject><text x="482" y="846" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_compile
</text></switch></g><ellipse cx="1688" cy="3370" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 843px; margin-left: 408px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">9</b></font></div></div></div></foreignObject><text x="422" y="846" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">9</text></switch></g><ellipse cx="2688" cy="3740" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 935px; margin-left: 658px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">10</b></font></div></div></div></foreignObject><text x="672" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">10</text></switch></g><rect x="3728" y="3680" width="640" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 935px; margin-left: 1012px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_populate_sysroot</font></div></div></div></foreignObject><text x="1012" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_populate_sysroot</text></switch></g><ellipse cx="3668" cy="3740" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 935px; margin-left: 903px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">11</b></font></div></div></div></foreignObject><text x="917" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">11</text></switch></g><path d="M 7028 3280 Q 7028 3760.57 7372 3760.57 Q 7716 3760.57 7715.97 3640.42" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 7715.96 3613.42 L 7733.97 3649.41 L 7715.97 3640.42 L 7697.97 3649.42 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="6748" y="2640" width="560" height="640" rx="84" ry="84" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><path d="M 7028 2320 Q 7028 2320 7028 2614.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 7028 2635.53 L 7014 2607.53 L 7028 2614.53 L 7042 2607.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="6928" y="2160" width="200" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 48px; height: 1px; padding-top: 560px; margin-left: 1733px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">git</font></div></div></div></foreignObject><text x="1757" y="564" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">git</text></switch></g><rect x="6800" y="2720" width="456" height="80" rx="12" ry="12" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 690px; margin-left: 1701px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Makefile</div></div></div></foreignObject><text x="1757" y="694" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">Makefile</text></switch></g><rect x="6800" y="2840" width="456" height="80" rx="12" ry="12" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 720px; margin-left: 1701px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">LICENSE</div></div></div></foreignObject><text x="1757" y="724" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">LICENSE</text></switch></g><path d="M 6800 3000 Q 6588 3000.57 6588 3088 Q 6588 3175.43 6759.58 3175.08" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 6786.58 3175.03 L 6750.62 3193.1 L 6759.58 3175.08 L 6750.55 3157.1 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="6800" y="2960" width="456" height="80" rx="12" ry="12" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 750px; margin-left: 1701px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">sayhello.c</div></div></div></foreignObject><text x="1757" y="754" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">sayhello.c</text></switch></g><rect x="6800" y="3120" width="456" height="110" rx="16.5" ry="16.5" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 794px; margin-left: 1701px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">sayhello</div></div></div></foreignObject><text x="1757" y="797" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">sayhello</text></switch></g><path d="M 7835.96 3600 Q 7828 3760.57 8090.86 3760.57 Q 8353.71 3760.57 8353.94 3640.42" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 8353.99 3613.42 L 8371.93 3649.45 L 8353.94 3640.42 L 8335.93 3649.38 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="7475.96" y="2640" width="480" height="960" rx="72" ry="72" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><path d="M 7715.96 2320 L 7715.96 2614.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 7715.96 2635.53 L 7706.63 2607.53 L 7715.96 2614.53 L 7725.29 2607.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="7589.96" y="2160" width="252" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 61px; height: 1px; padding-top: 560px; margin-left: 1898px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">image</font></div></div></div></foreignObject><text x="1929" y="564" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">image</text></switch></g><path d="M 7716 2880 L 7716 2940 Q 7716 2980 7716.01 3017.26 L 7716.01 3054.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 7716.02 3075.53 L 7706.68 3047.53 L 7716.01 3054.53 L 7725.35 3047.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="7629" y="2720" width="174" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 42px; height: 1px; padding-top: 700px; margin-left: 1908px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">usr</font></div></div></div></foreignObject><text x="1929" y="704" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">usr</text></switch></g><path d="M 7716.02 3240 L 7716 3394.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 7716 3415.53 L 7706.67 3387.53 L 7716 3394.53 L 7725.34 3387.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="7608.52" y="3080" width="215" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 52px; height: 1px; padding-top: 790px; margin-left: 1903px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">bin</font></div></div></div></foreignObject><text x="1929" y="794" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">bin</text></switch></g><rect x="1268" y="2160" width="400" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 560px; margin-left: 318px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">libhello-0.1</font></div></div></div></foreignObject><text x="367" y="564" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">libhello-0.1</text></switch></g><path d="M 1241 2160 Q 1241.71 2220 1245.14 2050.29 Q 1248.57 1880.57 1785.14 1880.57 Q 2321.71 1880.57 2321.08 2127.06" fill="none" stroke="#000000" stroke-width="8" stroke-miterlimit="10" stroke-dasharray="8 16" pointer-events="stroke"/><path d="M 2321.02 2151.06 L 2310.44 2119.03 L 2321.08 2127.06 L 2331.77 2119.08 Z" fill="#000000" stroke="#000000" stroke-width="8" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 472px; margin-left: 435px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); border-color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); border: 1px solid rgb(0, 0, 0); white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" style="font-size: 14px;">S = "${WORKDIR}/git"</font></div></div></div></foreignObject><text x="435" y="475" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="11px" text-anchor="middle">S = "${WORKDIR}/git"</text></switch></g><rect x="3203" y="1620" width="252" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 61px; height: 1px; padding-top: 418px; margin-left: 802px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">WORKDIR</font></div></div></div></foreignObject><text x="832" y="421" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">WORKDIR</text></switch></g><rect x="2923" y="2160" width="106" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 24px; height: 1px; padding-top: 553px; margin-left: 732px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">D</font></div></div></div></foreignObject><text x="744" y="556" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">D</text></switch></g><rect x="2268" y="2160" width="106" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 24px; height: 1px; padding-top: 553px; margin-left: 568px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">S</font></div></div></div></foreignObject><text x="580" y="556" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">S</text></switch></g><rect x="2162" y="2160" width="106" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 24px; height: 1px; padding-top: 553px; margin-left: 542px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">B</font></div></div></div></foreignObject><text x="554" y="556" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">B</text></switch></g><rect x="1188" y="2160" width="106" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 24px; height: 1px; padding-top: 553px; margin-left: 298px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">S</font></div></div></div></foreignObject><text x="310" y="556" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">S</text></switch></g><rect x="1835" y="2160" width="106" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 24px; height: 1px; padding-top: 553px; margin-left: 460px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">T</font></div></div></div></foreignObject><text x="472" y="556" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">T</text></switch></g><rect x="3628" y="3160" width="200" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 48px; height: 1px; padding-top: 803px; margin-left: 908px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">libdir</font></div></div></div></foreignObject><text x="932" y="806" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">libdir</text></switch></g><rect x="3135" y="3160" width="320" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 803px; margin-left: 785px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">includedir</font></div></div></div></foreignObject><text x="824" y="806" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">includedir</text></switch></g><rect x="5603.48" y="2280" width="464.52" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 114px; height: 1px; padding-top: 583px; margin-left: 1402px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">RECIPE_SYSROOT</font></div></div></div></foreignObject><text x="1459" y="586" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">RECIPE_SYSROOT</text></switch></g><path d="M 7226.86 2260 Q 7226.86 2110.29 7197.14 2110.29 Q 7167.43 2110.29 7167.49 1985.47" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 7167.5 1964.47 L 7176.82 1992.48 L 7167.49 1985.47 L 7158.15 1992.47 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="7174" y="2260" width="106" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 24px; height: 1px; padding-top: 578px; margin-left: 1795px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">S</font></div></div></div></foreignObject><text x="1807" y="581" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">S</text></switch></g><rect x="7068" y="2260" width="106" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 24px; height: 1px; padding-top: 578px; margin-left: 1768px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">B</font></div></div></div></foreignObject><text x="1780" y="581" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">B</text></switch></g><rect x="7803" y="2260" width="106" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 24px; height: 1px; padding-top: 578px; margin-left: 1952px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">D</font></div></div></div></foreignObject><text x="1964" y="581" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">D</text></switch></g><rect x="5788" y="1580" width="252" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 61px; height: 1px; padding-top: 408px; margin-left: 1448px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">WORKDIR</font></div></div></div></foreignObject><text x="1479" y="411" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">WORKDIR</text></switch></g><rect x="4640" y="3680" width="800" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 935px; margin-left: 1260px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_prepare_recipe_sysroot</font></div></div></div></foreignObject><text x="1260" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_prepare_recipe_sysroot</text></switch></g><rect x="7536" y="3420" width="360" height="110" rx="16.5" ry="16.5" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 869px; margin-left: 1885px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">sayhello</div></div></div></foreignObject><text x="1929" y="872" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">sayhello</text></switch></g><rect x="4988" y="2640" width="1080" height="960" rx="144" ry="144" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><path d="M 5236 2880 Q 5236 2960.57 5235.99 3014.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 5235.98 3035.53 L 5226.65 3007.53 L 5235.99 3014.53 L 5245.32 3007.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 5236 2880 Q 5236 2960.57 5474.86 2960.57 Q 5713.71 2960.57 5713.91 3014.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 5713.98 3035.53 L 5704.55 3007.56 L 5713.91 3014.53 L 5723.22 3007.49 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="5149" y="2720" width="174" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 42px; height: 1px; padding-top: 700px; margin-left: 1288px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">usr</font></div></div></div></foreignObject><text x="1309" y="704" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">usr</text></switch></g><path d="M 5235.98 3200 L 5236 3294.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 5236 3315.53 L 5226.66 3287.53 L 5236 3294.53 L 5245.33 3287.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="5128.48" y="3040" width="215" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 52px; height: 1px; padding-top: 780px; margin-left: 1283px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">include</font></div></div></div></foreignObject><text x="1309" y="784" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">include</text></switch></g><path d="M 5713.71 3200 L 5713.71 3240.57 Q 5713.71 3280.57 5713.76 3287.55 L 5713.82 3294.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 5713.97 3315.53 L 5704.43 3287.6 L 5713.82 3294.53 L 5723.1 3287.46 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="5627" y="3040" width="174" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 42px; height: 1px; padding-top: 780px; margin-left: 1408px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">lib</font></div></div></div></foreignObject><text x="1429" y="784" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">lib</text></switch></g><rect x="5076" y="3320" width="320" height="100" rx="15" ry="15" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 843px; margin-left: 1270px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">hellolib.h</div></div></div></foreignObject><text x="1309" y="846" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">hellolib.h</text></switch></g><rect x="5468" y="3350" width="480" height="80" rx="12" ry="12" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 848px; margin-left: 1368px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">libhello.so.1</div></div></div></foreignObject><text x="1427" y="851" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">libhello.so.1</text></switch></g><rect x="5468" y="3450" width="480" height="100" rx="15" ry="15" fill="#f5f5f5" stroke="#666666" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 875px; margin-left: 1368px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">libhello.so.1.0</div></div></div></foreignObject><text x="1427" y="879" fill="#333333" font-family="Liberation Sans" font-size="12px" text-anchor="middle">libhello.so.1.0</text></switch></g><rect x="5440" y="3320" width="548" height="250" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><rect x="3880" y="1680" width="1560" height="280" fill="none" stroke="#36393d" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 455px; margin-left: 1165px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" style="font-size: 15px;">This also contains other files from other <br />dependencies. Default dependencies are:<br />basically <b style=""><u>gcc</u></b>, <b style=""><u>compilerlibs</u></b> and <b style=""><u style="">libc</u></b></font></div></div></div></foreignObject><text x="1165" y="459" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">This also contains other files from other...</text></switch></g><rect x="4368" y="2280" width="510" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 126px; height: 1px; padding-top: 583px; margin-left: 1093px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">SYSROOT_DESTDIR</font></div></div></div></foreignObject><text x="1156" y="586" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">SYSROOT_DESTDIR</text></switch></g><path d="M 330 960 L 1121.58 960" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1148.58 960 L 1112.58 978 L 1121.58 960 L 1112.58 942 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><path d="M 330 1160 L 1121.58 1160" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1148.58 1160 L 1112.58 1178 L 1121.58 1160 L 1112.58 1142 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="2" y="860" width="328" height="400" rx="49.2" ry="49.2" fill="#000000" stroke="#23445d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 80px; height: 1px; padding-top: 265px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font color="#fcfcfc">Github</font></div></div></div></foreignObject><text x="41" y="269" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">Github</text></switch></g><rect x="535" y="900" width="320" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 240px; margin-left: 174px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_fetch<br /></font></div></div></div></foreignObject><text x="174" y="244" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_fetch
</text></switch></g><ellipse cx="475" cy="960" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 240px; margin-left: 105px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">1</b></font></div></div></div></foreignObject><text x="119" y="244" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">1</text></switch></g><rect x="535" y="1100" width="320" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 290px; margin-left: 174px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_fetch<br /></font></div></div></div></foreignObject><text x="174" y="294" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_fetch
</text></switch></g><ellipse cx="475" cy="1160" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 290px; margin-left: 105px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">5</b></font></div></div></div></foreignObject><text x="119" y="294" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">5</text></switch></g><rect x="6228" y="2980" width="440" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 760px; margin-left: 1612px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_configure<br /></font></div></div></div></foreignObject><text x="1612" y="764" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_configure
</text></switch></g><ellipse cx="6168" cy="3040" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 760px; margin-left: 1528px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">12</b></font></div></div></div></foreignObject><text x="1542" y="764" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">12</text></switch></g><rect x="6308" y="3110" width="360" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 793px; margin-left: 1622px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_compile<br /></font></div></div></div></foreignObject><text x="1622" y="796" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_compile
</text></switch></g><ellipse cx="6248" cy="3170" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 793px; margin-left: 1548px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">13</b></font></div></div></div></foreignObject><text x="1562" y="796" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">13</text></switch></g><rect x="2508" y="900" width="360" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 240px; margin-left: 672px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_unpack<br /></font></div></div></div></foreignObject><text x="672" y="244" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_unpack
</text></switch></g><ellipse cx="2448" cy="960" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 240px; margin-left: 598px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">2</b></font></div></div></div></foreignObject><text x="612" y="244" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">2</text></switch></g><path d="M 5848.57 520 Q 5848.57 600.57 5849.05 594.61" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 5847.36 615.54 L 5835.66 586.51 L 5849.05 594.61 L 5863.57 588.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 5848.57 520 Q 5848.57 560.57 5593.14 560.57 Q 5337.71 560.57 5337.31 594.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 5337.05 615.53 L 5323.39 587.36 L 5337.31 594.53 L 5351.39 587.7 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 5848.57 520 Q 5848.57 560.57 6108.57 560.57 Q 6368.57 560.57 6368.24 594.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 6368.04 615.53 L 6354.31 587.39 L 6368.24 594.53 L 6382.31 587.66 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="5708" y="360" width="280" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 110px; margin-left: 1428px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">conf</font></div></div></div></foreignObject><text x="1462" y="114" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">conf</text></switch></g><path d="M 5149 660 Q 5108 660 5108 510.29 Q 5108 360.57 5252 360.57 Q 5396 360.57 5396 205.47" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 5396 184.47 L 5405.33 212.47 L 5396 205.47 L 5386.67 212.47 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="5149" y="620" width="376" height="80" rx="12" ry="12" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 92px; height: 1px; padding-top: 165px; margin-left: 1288px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">local.conf</div></div></div></foreignObject><text x="1334" y="169" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">local.conf</text></switch></g><path d="M 5847.43 700 Q 5847.43 860 6048 860 Q 6248.57 860 6248.09 994.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 6248.02 1015.53 L 6238.78 987.49 L 6248.09 994.53 L 6257.45 987.56 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="5627" y="620" width="440" height="80" rx="12" ry="12" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 108px; height: 1px; padding-top: 165px; margin-left: 1408px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">bblayers.conf</div></div></div></foreignObject><text x="1462" y="169" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">bblayers.conf</text></switch></g><rect x="6707" y="1360" width="921" height="600" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 415px; margin-left: 1678px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 15px;"><b><u>S</u></b> defaults generally to <b><u>${WORKDIR}/${BPN}-${PV}</u></b><br />In <b>git</b> recipes change it to <b><u>${WORKDIR}/git</u></b></font></div></div></div></foreignObject><text x="1792" y="419" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">S defaults generally to ${WORKDIR}/${B...</text></switch></g><rect x="6228" y="2700" width="440" height="160" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 695px; margin-left: 1612px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_patch<br /><i>(No patches)</i><br /></font></div></div></div></foreignObject><text x="1612" y="699" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_patch...</text></switch></g><ellipse cx="6168" cy="2780" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 695px; margin-left: 1528px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">3</b></font></div></div></div></foreignObject><text x="1542" y="699" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">3</text></switch></g><ellipse cx="4580" cy="3740" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 935px; margin-left: 1131px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">4</b></font></div></div></div></foreignObject><text x="1145" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">4</text></switch></g><rect x="6927" y="3560" width="360" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 905px; margin-left: 1777px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_install<br /></font></div></div></div></foreignObject><text x="1777" y="909" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_install
</text></switch></g><ellipse cx="6868" cy="3620" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 905px; margin-left: 1703px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">14</b></font></div></div></div></foreignObject><text x="1717" y="909" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">14</text></switch></g><path d="M 8354.02 2320 L 8354.02 2614.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 8354.02 2635.53 L 8344.69 2607.53 L 8354.02 2614.53 L 8363.35 2607.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="8228" y="2160" width="252" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 61px; height: 1px; padding-top: 560px; margin-left: 2058px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">package</font></div></div></div></foreignObject><text x="2089" y="564" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">package</text></switch></g><rect x="8441.04" y="2260" width="146.96" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 35px; height: 1px; padding-top: 578px; margin-left: 2111px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">PKGD</font></div></div></div></foreignObject><text x="2129" y="581" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">PKGD</text></switch></g><path d="M 8461.77 3600 Q 8461.14 3760.57 8784.57 3760.57 Q 9108 3760.57 9108 3640.42" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 9108 3613.42 L 9126 3649.42 L 9108 3640.42 L 9090 3649.42 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="8138.52" y="2640" width="431" height="960" rx="64.65" ry="64.65" fill="#eeeeee" stroke="#36393d" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 106px; height: 1px; padding-top: 780px; margin-left: 2036px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">A copy of <b>${D}<br /></b>excluding<br /><b>/sysroot-only</b></div></div></div></foreignObject><text x="2089" y="784" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">A copy of ${D}...</text></switch></g><rect x="7960.96" y="3680" width="360" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 935px; margin-left: 2035px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_package<br /></font></div></div></div></foreignObject><text x="2035" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_package
</text></switch></g><ellipse cx="7901.96" cy="3740" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 935px; margin-left: 1961px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">15</b></font></div></div></div></foreignObject><text x="1975" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">15</text></switch></g><path d="M 9108 2320 L 9108 2614.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 9108 2635.53 L 9098.67 2607.53 L 9108 2614.53 L 9117.33 2607.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="8868" y="2160" width="480" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 560px; margin-left: 2218px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">packages-split</font></div></div></div></foreignObject><text x="2277" y="564" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">packages-split</text></switch></g><rect x="9308" y="2260" width="240" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 578px; margin-left: 2328px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">PKGDEST</font></div></div></div></foreignObject><text x="2357" y="581" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">PKGDEST</text></switch></g><path d="M 9108 2840 L 9108 2895.1" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 9108 2916.1 L 9098.67 2888.1 L 9108 2895.1 L 9117.33 2888.1 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="8982" y="2680" width="252" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 61px; height: 1px; padding-top: 690px; margin-left: 2247px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">sayhello</font></div></div></div></foreignObject><text x="2277" y="694" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">sayhello</text></switch></g><path d="M 9108 3080 L 9108 3120.57 Q 9108 3160.57 9108 3162.55 L 9108 3164.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 9107.98 3185.53 L 9098.67 3157.52 L 9108 3164.53 L 9117.34 3157.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="9021" y="2920" width="174" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 42px; height: 1px; padding-top: 750px; margin-left: 2256px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">usr</font></div></div></div></foreignObject><text x="2277" y="754" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">usr</text></switch></g><path d="M 9107.98 3350 L 9107.97 3414.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 9107.96 3435.53 L 9098.63 3407.53 L 9107.97 3414.53 L 9117.3 3407.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="9000.48" y="3190" width="215" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 52px; height: 1px; padding-top: 818px; margin-left: 2251px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">bin</font></div></div></div></foreignObject><text x="2277" y="821" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">bin</text></switch></g><rect x="7689.48" y="1360" width="1287" height="595" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 320px; height: 1px; padding-top: 414px; margin-left: 1923px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><span style="font-size: 15px;">Folders created here are present in <b><u>PACKAGES</u></b> variable, BitBake knows what and where to put things using the <b><u>FILES</u></b> variable, example: <b><u>FILES:${PN}</u></b> files will go to <b><u>${PN}</u></b> folder which is in <b><u>PACKAGES</u></b></span></div></div></div></foreignObject><text x="2083" y="418" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">Folders created here are present in PACKAGES variable...</text></switch></g><rect x="8640.48" y="3680" width="360" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 935px; margin-left: 2205px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_package<br /></font></div></div></div></foreignObject><text x="2205" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_package
</text></switch></g><ellipse cx="8581.48" cy="3740" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 935px; margin-left: 2131px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">16</b></font></div></div></div></foreignObject><text x="2145" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">16</text></switch></g><path d="M 9988 2320 L 9988 2674.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 9988 2695.53 L 9978.67 2667.53 L 9988 2674.53 L 9997.33 2667.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="9748" y="2160" width="480" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 560px; margin-left: 2438px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">deploy-<b><i>pkg</i></b></font></div></div></div></foreignObject><text x="2497" y="564" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">deploy-pkg</text></switch></g><path d="M 9988 2860 L 9988 3014.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 9988 3035.53 L 9978.67 3007.53 L 9988 3014.53 L 9997.33 3007.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="9748" y="2700" width="480" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 695px; margin-left: 2438px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter"><b>${PACKAGE_ARCH}</b></font></div></div></div></foreignObject><text x="2497" y="699" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">${PACKAGE_ARCH}</text></switch></g><rect x="9028" y="1360" width="1640" height="595" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 408px; height: 1px; padding-top: 414px; margin-left: 2258px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 15px;">This can be <b><u>rpms</u></b>, <b><u>debs</u></b> or <b><u>ipks</u></b>.<br />These are provided by<br /><b><u>package_rpm</u></b>, <b><u>package_deb</u></b> and <b><u>package_ipk</u></b> classes respectively, use <b><u>PACKAGE_CLASSES</u></b> for that as<br />content of <b><u>PACKAGE_CLASSES</u></b> will be appended<br />to <b><u>INHERIT</u></b><br /></font></div></div></div></foreignObject><text x="2462" y="418" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">This can be rpms, debs or ipks....</text></switch></g><path d="M 10522 3105 L 10708 3105.59 Q 10748 3105.71 10748 3065.71 L 10748 1320.57 Q 10748 1280.57 10708 1280.57 L 7353.71 1280.57 Q 7313.71 1280.57 7313.8 1240.57 L 7313.92 1180.42" fill="none" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 7313.97 1153.42 L 7331.9 1189.45 L 7313.92 1180.42 L 7295.9 1189.38 Z" fill="#000000" stroke="#000000" stroke-width="12" stroke-miterlimit="10" pointer-events="all"/><rect x="9454" y="3040" width="1068" height="130" rx="19.5" ry="19.5" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 265px; height: 1px; padding-top: 776px; margin-left: 2365px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">sayhello-0.1-r0.${PACKAGE_ARCH}.<i>pkg</i></div></div></div></foreignObject><text x="2497" y="780" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">sayhello-0.1-r0.${PACKAGE_ARCH}.pkg</text></switch></g><rect x="10788" y="2640" width="1480" height="680" fill="none" stroke="#36393d" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 368px; height: 1px; padding-top: 745px; margin-left: 2698px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 15px;">This task also depends on <b><u>PACKAGE_CLASSES</u></b>,<br /><b><u><i>pkg</i></u></b> can be <b><u>rpm</u></b>, <b><u>deb</u></b> or <b><u>ipk</u></b> for <b><u>package_rpm</u></b>,<br /><b><u>package_deb</u></b> or <u style="font-weight: bold;">package_ipk</u> respectively.<br />The generated package generally named using:<br /><b><u>${PN}</u></b>, <b><u>${PR}</u></b>, <b><u>${PACKAGE_ARCH}</u></b> and <b><u><i>pkg</i></u></b><br /></font></div></div></div></foreignObject><text x="2882" y="749" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">This task also depends on PACKAGE_CLASSES,...</text></switch></g><path d="M 7314 520 L 7314 654.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 7314 675.53 L 7300 647.53 L 7314 654.53 L 7328 647.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 7454 440 Q 7454 440 7742.53 440" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 7763.53 440 L 7735.53 449.33 L 7742.53 440 L 7735.53 430.67 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="7174" y="360" width="280" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 110px; margin-left: 1795px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">deploy</font></div></div></div></foreignObject><text x="1829" y="114" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">deploy</text></switch></g><path d="M 7313.71 840 L 7313.71 880.57 Q 7313.71 920.57 7313.71 910.29 L 7313.71 905.14 Q 7313.71 900 7313.81 927.26 L 7313.91 954.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 7313.98 975.53 L 7299.88 947.58 L 7313.91 954.53 L 7327.88 947.48 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="7054.48" y="680" width="519" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 190px; margin-left: 1765px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><b>${DEPLOY_DIR_<i>pkg</i>}</b></div></div></div></foreignObject><text x="1828" y="194" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">${DEPLOY_DIR_pkg}</text></switch></g><rect x="9488" y="3680" width="600" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 935px; margin-left: 2447px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_package_write_<i>pkg</i><br /></font></div></div></div></foreignObject><text x="2447" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_package_write_pkg
</text></switch></g><ellipse cx="9408" cy="3740" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 935px; margin-left: 2338px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">17</b></font></div></div></div></foreignObject><text x="2352" y="939" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">17</text></switch></g><path d="M 10048 3740 Q 11528.57 3740 11528.03 3345.47" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 11528.01 3324.47 L 11537.38 3352.46 L 11528.03 3345.47 L 11518.71 3352.48 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="7074" y="980" width="480" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 265px; margin-left: 1770px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">${PACKAGE_ARCH}</div></div></div></foreignObject><text x="1829" y="269" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">${PACKAGE_ARCH}</text></switch></g><rect x="7768" y="672.52" width="1660" height="167.48" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 413px; height: 1px; padding-top: 189px; margin-left: 1943px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 15px;">For packages, this can be <b><u>IPK</u></b>, <b><u>RPM</u></b> or <b><u>DEB</u></b> (<i>check step 17</i>)</font></div></div></div></foreignObject><text x="2150" y="193" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">For packages, this can be IPK, RPM or DEB (check step 17)</text></switch></g><rect x="7369.48" y="480" width="320" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 133px; margin-left: 1843px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">DEPLOY_DIR</font></div></div></div></foreignObject><text x="1882" y="136" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">DEPLOY_DIR</text></switch></g><rect x="4988" y="80" width="240" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 33px; margin-left: 1248px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">TMPDIR</font></div></div></div></foreignObject><text x="1277" y="36" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">TMPDIR</text></switch></g><rect x="1668" y="480" width="250.72" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 61px; height: 1px; padding-top: 133px; margin-left: 418px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">DL_DIR</font></div></div></div></foreignObject><text x="448" y="136" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">DL_DIR</text></switch></g><path d="M 7573.48 760 L 7630.29 760.34 Q 7670.29 760.57 7706.42 758.98 L 7742.55 757.38" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 7763.53 756.46 L 7735.97 767.02 L 7742.55 757.38 L 7735.15 748.37 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="10488" y="2380" width="600" height="120" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 610px; margin-left: 2697px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_package_write_<i>pkg</i><br /></font></div></div></div></foreignObject><text x="2697" y="614" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">do_package_write_pkg
</text></switch></g><ellipse cx="10408" cy="2440" rx="60.00000000000001" ry="60.00000000000001" fill="#000000" stroke="#56517e" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 610px; margin-left: 2588px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1"><b style="font-size: 15px;">18</b></font></div></div></div></foreignObject><text x="2602" y="614" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">18</text></switch></g><path d="M 10268 2310.29 Q 10879.43 2310.29 10879.43 1999.43 Q 10879.43 1688.57 10878.68 1140.47" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 10878.65 1119.47 L 10888.02 1147.46 L 10878.68 1140.47 L 10869.35 1147.48 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="10148" y="2260" width="120" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><path d="M 10088 2200 Q 10088.57 2077.14 10173.14 2077.14 Q 10257.71 2077.14 10257.94 1980.47" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 10257.99 1959.47 L 10267.26 1987.49 L 10257.94 1980.47 L 10248.59 1987.45 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="9628" y="805" width="1667.52" height="310" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 415px; height: 1px; padding-top: 240px; margin-left: 2408px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 15px;">This can be <b><u>PKGWRITEDIRRPM</u></b>, <b><u>PKGWRITEDIRDEB</u></b> or <b><u>PKGWRITEDIRIPK</u></b> for <b><u>package_rpm</u></b>, <b><u>package_deb</u></b><br />or <b><u>package_ipk</u></b> respectively<br /></font></div></div></div></foreignObject><text x="2615" y="244" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">This can be PKGWRITEDIRRPM, PKGWRITEDIRDEB or PKGWRITEDIRIPK for pack...</text></switch></g><rect x="628" y="2470" width="1313" height="410" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 326px; height: 1px; padding-top: 669px; margin-left: 158px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><span style="font-size: 15px;">License checking happens in <b><u>do_populate_lic</u></b> after <b><u>do_patch<br /></u></b>and before that a checksum check<br />happends on <b><u>LIC_FILES_CHKSUM</u></b> if the<br />license is not <b><u>CLOSED</u></b><br /></span></div></div></div></foreignObject><text x="321" y="672" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">License checking happens in do_populate_lic after do_pa...</text></switch></g><rect x="3528.48" y="1360" width="1739.52" height="280" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 433px; height: 1px; padding-top: 375px; margin-left: 883px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><span style="font-size: 15px;">This variable is used to separate recipes<br />based on their target. This has value of<br /><b><u>${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}</u></b><br /></span></div></div></div></foreignObject><text x="1100" y="379" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">This variable is used to separate recipes...</text></switch></g><path d="M 6588 660 Q 6863.43 660 6863.4 505.47" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 6863.39 484.47 L 6872.73 512.47 L 6863.4 505.47 L 6854.06 512.47 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="6148" y="620" width="440" height="80" rx="12" ry="12" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 108px; height: 1px; padding-top: 165px; margin-left: 1538px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">conf-notes.txt</div></div></div></foreignObject><text x="1592" y="169" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">conf-notes.txt</text></switch></g><path d="M 2580.02 520 Q 2580 660 3042.53 660" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 3063.53 660 L 3035.53 669.33 L 3042.53 660 L 3035.53 650.67 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 2374 440 Q 2215.43 440.57 2215.04 205.47" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 2215.01 184.47 L 2224.39 212.46 L 2215.04 205.47 L 2205.72 212.49 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="2374" y="360" width="412.04" height="160" rx="24" ry="24" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 101px; height: 1px; padding-top: 110px; margin-left: 595px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">sstate-cache</font></div></div></div></foreignObject><text x="645" y="114" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">sstate-cache</text></switch></g><rect x="2643.92" y="480" width="332.04" height="100" rx="15" ry="15" fill="#000000" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 81px; height: 1px; padding-top: 133px; margin-left: 662px;"><div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">SSTATE_DIR</font></div></div></div></foreignObject><text x="702" y="136" fill="#ffffff" font-family="Liberation Sans" font-size="12px" text-anchor="middle" font-weight="bold">SSTATE_DIR</text></switch></g><rect x="8927.96" y="3440" width="360" height="110" rx="16.5" ry="16.5" fill="#eeeeee" stroke="#36393d" stroke-width="4" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 874px; margin-left: 2233px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">sayhello</div></div></div></foreignObject><text x="2277" y="877" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">sayhello</text></switch></g><path d="M 4660 1960 Q 4660 2300 4904.57 2300 Q 5149.14 2300 5148.94 2611.65" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="stroke"/><path d="M 5148.92 2632.65 L 5139.61 2604.64 L 5148.94 2611.65 L 5158.27 2604.65 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><rect x="3068" y="480" width="1640" height="360" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 408px; height: 1px; padding-top: 165px; margin-left: 768px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><span style="font-size: 15px;">This folder contains cache for recipes build output, this is used by BitBake, if the recipe checksum did not change it knows that the output to use is the same.<br /></span></div></div></div></foreignObject><text x="972" y="169" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">This folder contains cache for recipes build output, this is used by...</text></switch></g><rect x="1395" y="0" width="1640" height="180" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 408px; height: 1px; padding-top: 23px; margin-left: 350px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><span style="font-size: 15px;"><font data-font-src="https://fonts.googleapis.com/css?family=Liberation+Sans">These directories can be shared accross builds to save disk space and build time</font><br /></span></div></div></div></foreignObject><text x="554" y="26" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">These directories can be shared accross builds to save disk space an...</text></switch></g><rect x="7768" y="350" width="1667.52" height="180" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 415px; height: 1px; padding-top: 110px; margin-left: 1943px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 15px;">This directory contains other output directories such as <b><u>images</u></b>, <b><u>sdk</u></b> and <b><u>licenses</u></b><br /></font></div></div></div></foreignObject><text x="2150" y="114" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">This directory contains other output directories such as images, sdk...</text></switch></g><rect x="5908" y="1020" width="680" height="520" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 320px; margin-left: 1478px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 15px;">This file contains all <b>layers</b> that BitBake should consider when looking for metadata.<br /></font></div></div></div></foreignObject><text x="1562" y="324" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">This file contains all layer...</text></switch></g><rect x="5396" y="20" width="1760" height="160" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 438px; height: 1px; padding-top: 25px; margin-left: 1350px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 15px;">This is base configuration file containing essential user config such as <b><u>MACHINE</u></b> and <b><u>DISTRO</u></b><br /></font></div></div></div></foreignObject><text x="1569" y="29" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">This is base configuration file containing essential user config such as...</text></switch></g><rect x="6140" y="320" width="964.52" height="160" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-dasharray="12 12" pointer-events="all"/><g transform="translate(-0.5 -0.5)scale(4)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 239px; height: 1px; padding-top: 100px; margin-left: 1536px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 15px;">The message to show after <b>source oe-init-build-env</b><br /></font></div></div></div></foreignObject><text x="1656" y="104" fill="rgb(0, 0, 0)" font-family="Liberation Sans" font-size="12px" text-anchor="middle">The message to show after source oe-init...</text></switch></g><rect x="10948" y="2400" width="120" height="80" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><rect x="10348" y="3065" width="80" height="80" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><rect x="9948" y="3700" width="100" height="80" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><rect x="10028" y="2200" width="80" height="80" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/><rect x="7454" y="725" width="80" height="80" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" pointer-events="all"/></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg> \ No newline at end of file | 4 | <svg xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent; color-scheme: light dark;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="3068px" height="951px" viewBox="-0.5 -0.5 3068 951" content="<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0" version="27.1.6">
 <diagram name="Page-1" id="c7558073-3199-34d8-9f00-42111426c3f3">
 <mxGraphModel dx="2252" dy="796" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="826" pageHeight="1169" background="none" math="0" shadow="0">
 <root>
 <mxCell id="0" />
 <mxCell id="1" parent="0" />
 <mxCell id="eV5wDCu3Df9HtTySJIbg-398" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="1940" y="840" width="280" height="150" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-383" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.75;entryY=1;entryDx=0;entryDy=0;endArrow=classicThin;endFill=1;dashed=1;curved=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-380" target="eV5wDCu3Df9HtTySJIbg-382" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="1747" y="960" />
 <mxPoint x="1747" y="669" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-407" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;curved=1;strokeWidth=3;fillColor=#d0cee2;strokeColor=#000000;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-380" target="eV5wDCu3Df9HtTySJIbg-398" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="1890" y="1120" />
 <mxPoint x="2080" y="1120" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-380" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="1800" y="840" width="120" height="240" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-211" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="300" y="840" width="270" height="240" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-142" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;glass=0;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="-146.5" y="390" width="270" height="110" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-162" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="120" y="840" width="140" height="240" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-101" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=none;endFill=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-98" target="eV5wDCu3Df9HtTySJIbg-99" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-338" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;rounded=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-98" target="eV5wDCu3Df9HtTySJIbg-130" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="815" y="240" />
 <mxPoint x="-11" y="240" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-344" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;rounded=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-98" target="eV5wDCu3Df9HtTySJIbg-343" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="815" y="240" />
 <mxPoint x="1045" y="240" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-402" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;rounded=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-98" target="eV5wDCu3Df9HtTySJIbg-401" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="815" y="240" />
 <mxPoint x="1411" y="240" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="utO5BPZsFb6q0V3ioqD--12" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;rounded=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-98" target="eV5wDCu3Df9HtTySJIbg-440" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="815" y="240" />
 <mxPoint x="228" y="240" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-98" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;tmp&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillStyle=auto;glass=0;shadow=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="780" y="180" width="70" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-102" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-99" target="eV5wDCu3Df9HtTySJIbg-100" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-99" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;work&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="780" y="270" width="70" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-106" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;endArrow=none;endFill=0;rounded=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-100" target="eV5wDCu3Df9HtTySJIbg-105" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-155" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=none;endFill=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-100" target="eV5wDCu3Df9HtTySJIbg-103" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="utO5BPZsFb6q0V3ioqD--14" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;curved=1;dashed=1;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-100" target="eV5wDCu3Df9HtTySJIbg-434" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-100" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;&lt;b&gt;${MULTIMACH_TARGET_OS}&lt;/b&gt;&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="730" y="440" width="170" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-110" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=none;endFill=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-103" target="eV5wDCu3Df9HtTySJIbg-108" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-103" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;libhello&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="326.99" y="520" width="70" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-111" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=none;endFill=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-105" target="eV5wDCu3Df9HtTySJIbg-109" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-105" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;sayhello&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="970" y="520" width="70" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-169" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-108" target="eV5wDCu3Df9HtTySJIbg-166" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="362" y="680" />
 <mxPoint x="82" y="680" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-170" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-108" target="eV5wDCu3Df9HtTySJIbg-156" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="362" y="680" />
 <mxPoint x="190" y="680" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-179" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-108" target="eV5wDCu3Df9HtTySJIbg-175" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-197" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-108" target="eV5wDCu3Df9HtTySJIbg-171" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="362" y="680" />
 <mxPoint x="660" y="680" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-108" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;0.1-r0&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="327" y="600" width="70" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-309" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-109" target="eV5wDCu3Df9HtTySJIbg-172" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="1005" y="680" />
 <mxPoint x="965" y="680" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-311" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-109" target="eV5wDCu3Df9HtTySJIbg-240" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="1005" y="680" />
 <mxPoint x="1340" y="680" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-312" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-109" target="eV5wDCu3Df9HtTySJIbg-249" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="1005" y="680" />
 <mxPoint x="1512" y="680" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-360" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-109" target="eV5wDCu3Df9HtTySJIbg-358" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="1005" y="680" />
 <mxPoint x="1672" y="680" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-368" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-109" target="eV5wDCu3Df9HtTySJIbg-366" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="1005" y="680" />
 <mxPoint x="1860" y="680" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-388" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-109" target="eV5wDCu3Df9HtTySJIbg-387" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="1005" y="680" />
 <mxPoint x="2080" y="680" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-109" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;0.1-r0&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="970" y="585" width="70" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-134" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-130" target="eV5wDCu3Df9HtTySJIbg-133" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="utO5BPZsFb6q0V3ioqD--19" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;curved=1;dashed=1;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-130" target="utO5BPZsFb6q0V3ioqD--17" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-130" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;downloads&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="-46.5" y="270" width="70" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-143" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;endArrow=none;endFill=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-133" target="eV5wDCu3Df9HtTySJIbg-142" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-133" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;git2&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="-46.5" y="330" width="70" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-223" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=3;fillColor=#d0cee2;strokeColor=#000000;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-136" target="eV5wDCu3Df9HtTySJIbg-156" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="250" y="470" />
 <mxPoint x="250" y="758" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-135" value="github.com.&amp;lt;username&amp;gt;.sayhello" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#eeeeee;strokeColor=#36393d;" parent="1" vertex="1">
 <mxGeometry x="-126.5" y="400" width="230" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-337" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=3;fillColor=#d0cee2;strokeColor=#000000;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-135" target="eV5wDCu3Df9HtTySJIbg-240" edge="1">
 <mxGeometry relative="1" as="geometry">
 <mxPoint x="160" y="500" as="sourcePoint" />
 <Array as="points">
 <mxPoint x="1250" y="420" />
 <mxPoint x="1250" y="740" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-136" value="github.com.&amp;lt;username&amp;gt;.libhello" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#eeeeee;strokeColor=#36393d;" parent="1" vertex="1">
 <mxGeometry x="-126.5" y="450" width="230" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-164" style="edgeStyle=orthogonalEdgeStyle;curved=1;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-156" target="eV5wDCu3Df9HtTySJIbg-162" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-156" value="sources/libhello-0.1" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="150" y="737.5" width="65" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-159" value="Makefile" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
 <mxGeometry x="136" y="860" width="114" height="20" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-433" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;endArrow=classicThin;endFill=1;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-160" target="eV5wDCu3Df9HtTySJIbg-432" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-160" value="LICENSE" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#eeeeee;strokeColor=#36393d;" parent="1" vertex="1">
 <mxGeometry x="136" y="890" width="114" height="20" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-215" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;curved=1;endArrow=classicThin;endFill=1;strokeWidth=3;fillColor=#d0cee2;strokeColor=#000000;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-161" target="eV5wDCu3Df9HtTySJIbg-163" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="90" y="930" />
 <mxPoint x="90" y="960" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-161" value="fix.patch" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
 <mxGeometry x="136" y="920" width="114" height="20" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-219" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0.006;exitY=0.893;exitDx=0;exitDy=0;curved=1;exitPerimeter=0;strokeWidth=3;fillColor=#d0cee2;strokeColor=#000000;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-163" target="eV5wDCu3Df9HtTySJIbg-214" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="80" y="968" />
 <mxPoint x="80" y="1031" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-163" value="hellolib.c" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
 <mxGeometry x="136" y="950" width="114" height="20" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-166" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;temp&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="57" y="720" width="50" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-210" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=none;endFill=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-171" target="eV5wDCu3Df9HtTySJIbg-209" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-171" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;sysroot-destdir&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="600" y="720" width="120" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-307" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-172" target="eV5wDCu3Df9HtTySJIbg-293" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-172" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;recipe-sysroot&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="910" y="720" width="110" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-182" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-175" target="eV5wDCu3Df9HtTySJIbg-177" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-175" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;image&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="330.49" y="720" width="63" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-183" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-177" target="eV5wDCu3Df9HtTySJIbg-180" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-184" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=classicThin;endFill=1;curved=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-177" target="eV5wDCu3Df9HtTySJIbg-181" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-177" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;usr&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="340.25" y="860" width="43.5" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-188" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-180" target="eV5wDCu3Df9HtTySJIbg-187" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-180" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;include&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="335.12" y="940" width="53.75" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-192" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-181" target="eV5wDCu3Df9HtTySJIbg-191" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-181" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;lib&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="459.75" y="940" width="43.5" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-187" value="hellolib.h" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
 <mxGeometry x="322" y="1010" width="80" height="25" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-189" value="libhello.so.1" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
 <mxGeometry x="420" y="1017.5" width="120" height="20" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-190" value="libhello.so.1.0" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
 <mxGeometry x="420" y="1042.5" width="120" height="25" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-191" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;dashed=1;arcSize=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="413" y="1010" width="137" height="62.5" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-286" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;strokeWidth=3;fillColor=#d0cee2;strokeColor=#000000;curved=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-209" target="eV5wDCu3Df9HtTySJIbg-293" edge="1">
 <mxGeometry relative="1" as="geometry">
 <mxPoint x="830" y="1330" as="sourcePoint" />
 <mxPoint x="925" y="1130" as="targetPoint" />
 <Array as="points">
 <mxPoint x="690" y="1120" />
 <mxPoint x="965" y="1120" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-209" value="Everything in &lt;b&gt;image&lt;/b&gt; folder that is present in &lt;b&gt;SYSROOT_DIRS&lt;/b&gt; will be copied here." style="rounded=1;whiteSpace=wrap;html=1;fillColor=#eeeeee;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;strokeColor=#36393d;" parent="1" vertex="1">
 <mxGeometry x="600" y="840" width="120" height="240" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-233" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;curved=1;strokeWidth=3;fillColor=#d0cee2;strokeColor=#000000;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-211" target="eV5wDCu3Df9HtTySJIbg-209" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="503" y="1120" />
 <mxPoint x="660" y="1120" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-212" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.543;entryY=0.999;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;curved=1;fillColor=#d0cee2;strokeColor=#000000;strokeWidth=3;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-162" target="eV5wDCu3Df9HtTySJIbg-211" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="190" y="1120" />
 <mxPoint x="447" y="1120" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-213" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;do_install&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#36393d;fillColor=#eeeeee;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="270" y="1100" width="90" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-214" value="libhello.so.1.0" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#eeeeee;strokeColor=#36393d;" parent="1" vertex="1">
 <mxGeometry x="138" y="1017.5" width="114" height="27.5" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-217" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;do_configure&lt;br&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#36393d;fillColor=#eeeeee;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry y="975" width="110" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-218" value="hellolib.h" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
 <mxGeometry x="136" y="980" width="114" height="20" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-221" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;do_patch&lt;br&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#36393d;fillColor=#eeeeee;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="30" y="930" width="80" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-224" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;do_unpack&lt;br&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#36393d;fillColor=#eeeeee;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="206.5" y="585" width="90" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-225" value="&lt;font size=&quot;1&quot; color=&quot;#ffffff&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;&lt;b style=&quot;font-size: 15px;&quot;&gt;6&lt;/b&gt;&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;fillColor=#000000;strokeColor=#56517e;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="176.5" y="585" width="30" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-226" value="&lt;font size=&quot;1&quot; color=&quot;#ffffff&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;&lt;b style=&quot;font-size: 15px;&quot;&gt;7&lt;/b&gt;&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;fillColor=#000000;strokeColor=#56517e;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry y="930" width="30" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-227" value="&lt;font size=&quot;1&quot; color=&quot;#ffffff&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;&lt;b style=&quot;font-size: 15px;&quot;&gt;8&lt;/b&gt;&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;fillColor=#000000;strokeColor=#56517e;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="-30" y="975" width="30" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-229" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;do_compile&lt;br&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#36393d;fillColor=#eeeeee;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="20" y="1007.5" width="90" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-228" value="&lt;font size=&quot;1&quot; color=&quot;#ffffff&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;&lt;b style=&quot;font-size: 15px;&quot;&gt;9&lt;/b&gt;&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;fillColor=#000000;strokeColor=#56517e;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="-10" y="1007.5" width="30" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-231" value="&lt;font size=&quot;1&quot; color=&quot;#ffffff&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;&lt;b style=&quot;font-size: 15px;&quot;&gt;10&lt;/b&gt;&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;fillColor=#000000;strokeColor=#56517e;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="240" y="1100" width="30" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-235" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;do_populate_sysroot&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#36393d;fillColor=#eeeeee;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="515" y="1100" width="160" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-236" value="&lt;font size=&quot;1&quot; color=&quot;#ffffff&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;&lt;b style=&quot;font-size: 15px;&quot;&gt;11&lt;/b&gt;&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;fillColor=#000000;strokeColor=#56517e;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="485" y="1100" width="30" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-355" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;curved=1;strokeWidth=3;fillColor=#d0cee2;strokeColor=#000000;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-238" target="eV5wDCu3Df9HtTySJIbg-247" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="1340" y="1120" />
 <mxPoint x="1512" y="1120" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-238" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="1270" y="840" width="140" height="160" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-239" style="edgeStyle=orthogonalEdgeStyle;curved=1;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-240" target="eV5wDCu3Df9HtTySJIbg-238" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="w4JjUiD6-ryT0rcgaIPJ-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="eV5wDCu3Df9HtTySJIbg-240">
 <mxGeometry relative="1" as="geometry">
 <mxPoint x="1300" y="740" as="targetPoint" />
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-240" value="&lt;div&gt;sources/sayhello-0.1&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="1307" y="720" width="65" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-241" value="Makefile" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
 <mxGeometry x="1283" y="860" width="114" height="20" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-242" value="LICENSE" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
 <mxGeometry x="1283" y="890" width="114" height="20" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-330" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;curved=1;fillColor=#d0cee2;strokeColor=#000000;strokeWidth=3;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-244" target="eV5wDCu3Df9HtTySJIbg-245" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="1230" y="930" />
 <mxPoint x="1230" y="974" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-244" value="sayhello.c" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
 <mxGeometry x="1283" y="920" width="114" height="20" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-245" value="sayhello" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#eeeeee;strokeColor=#36393d;" parent="1" vertex="1">
 <mxGeometry x="1283" y="960" width="114" height="27.5" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-363" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;curved=1;strokeWidth=3;fillColor=#d0cee2;strokeColor=#000000;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-247" target="eV5wDCu3Df9HtTySJIbg-361" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="1540" y="1120" />
 <mxPoint x="1671" y="1120" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-247" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="1451.99" y="840" width="120" height="240" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-248" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-249" target="eV5wDCu3Df9HtTySJIbg-247" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-249" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;image&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="1480.49" y="720" width="63" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-250" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-252" target="eV5wDCu3Df9HtTySJIbg-254" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-252" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;usr&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="1490.25" y="860" width="43.5" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-253" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-254" target="eV5wDCu3Df9HtTySJIbg-292" edge="1">
 <mxGeometry relative="1" as="geometry">
 <mxPoint x="1512" y="1010" as="targetPoint" />
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-254" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;bin&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="1485.1299999999999" y="950" width="53.75" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-266" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;fillColor=#bac8d3;strokeColor=#000000;strokeWidth=2;dashPattern=1 2;curved=1;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" edge="1">
 <mxGeometry relative="1" as="geometry">
 <mxPoint x="-0.5" y="610" as="sourcePoint" />
 <mxPoint x="150" y="765" as="targetPoint" />
 <Array as="points">
 <mxPoint x="89.5" y="610.5" />
 <mxPoint x="89.5" y="765.5" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-267" value="&lt;div&gt;&lt;font style=&quot;font-size: 14px;&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;S = &quot;${UNPACKDIR}/${BP}&quot;&lt;/font&gt;&lt;/div&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBorderColor=default;spacingTop=2;spacingLeft=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="eV5wDCu3Df9HtTySJIbg-266" vertex="1" connectable="0">
 <mxGeometry x="-0.2703" y="1" relative="1" as="geometry">
 <mxPoint x="-71" y="-32" as="offset" />
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-270" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;WORKDIR&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#000000;strokeColor=none;fillStyle=auto;glass=0;shadow=0;fontColor=#ffffff;fontStyle=1" parent="1" vertex="1">
 <mxGeometry x="383.75" y="585" width="63" height="25" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-271" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;D&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#000000;strokeColor=none;fillStyle=auto;glass=0;shadow=0;fontColor=#ffffff;fontStyle=1" parent="1" vertex="1">
 <mxGeometry x="313.75" y="720" width="26.5" height="25" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-272" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;S&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#000000;strokeColor=none;fillStyle=auto;glass=0;shadow=0;fontColor=#ffffff;fontStyle=1" parent="1" vertex="1">
 <mxGeometry x="150" y="720" width="26.5" height="25" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-273" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;B&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#000000;strokeColor=none;fillStyle=auto;glass=0;shadow=0;fontColor=#ffffff;fontStyle=1" parent="1" vertex="1">
 <mxGeometry x="123.5" y="720" width="26.5" height="25" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-275" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;T&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#000000;strokeColor=none;fillStyle=auto;glass=0;shadow=0;fontColor=#ffffff;fontStyle=1" parent="1" vertex="1">
 <mxGeometry x="41.75" y="720" width="26.5" height="25" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-276" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;libdir&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#000000;strokeColor=none;fillStyle=auto;glass=0;shadow=0;fontColor=#ffffff;fontStyle=1" parent="1" vertex="1">
 <mxGeometry x="490" y="970" width="50" height="25" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-277" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;includedir&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#000000;strokeColor=none;fillStyle=auto;glass=0;shadow=0;fontColor=#ffffff;fontStyle=1" parent="1" vertex="1">
 <mxGeometry x="366.75" y="970" width="80" height="25" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-279" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;RECIPE_SYSROOT&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#000000;strokeColor=none;fillStyle=auto;glass=0;shadow=0;fontColor=#ffffff;fontStyle=1" parent="1" vertex="1">
 <mxGeometry x="983.87" y="750" width="116.13" height="25" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-351" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;dashed=1;endArrow=classicThin;endFill=1;curved=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-281" target="eV5wDCu3Df9HtTySJIbg-350" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-281" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;S&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#000000;strokeColor=none;fillStyle=auto;glass=0;shadow=0;fontColor=#ffffff;fontStyle=1" parent="1" vertex="1">
 <mxGeometry x="1376.5" y="745" width="26.5" height="25" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-282" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;B&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#000000;strokeColor=none;fillStyle=auto;glass=0;shadow=0;fontColor=#ffffff;fontStyle=1" parent="1" vertex="1">
 <mxGeometry x="1350" y="745" width="26.5" height="25" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-283" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;D&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#000000;strokeColor=none;fillStyle=auto;glass=0;shadow=0;fontColor=#ffffff;fontStyle=1" parent="1" vertex="1">
 <mxGeometry x="1533.75" y="745" width="26.5" height="25" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-284" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;WORKDIR&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#000000;strokeColor=none;fillStyle=auto;glass=0;shadow=0;fontColor=#ffffff;fontStyle=1" parent="1" vertex="1">
 <mxGeometry x="1030" y="575" width="63" height="25" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-287" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;do_prepare_recipe_sysroot&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#36393d;fillColor=#eeeeee;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="743" y="1100" width="200" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-292" value="sayhello" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#eeeeee;strokeColor=#36393d;" parent="1" vertex="1">
 <mxGeometry x="1467" y="1035" width="90" height="27.5" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-293" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="830" y="840" width="270" height="240" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-294" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=classicThin;endFill=1;curved=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-296" target="eV5wDCu3Df9HtTySJIbg-298" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-295" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=classicThin;endFill=1;curved=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-296" target="eV5wDCu3Df9HtTySJIbg-300" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-296" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;usr&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="870.25" y="860" width="43.5" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-297" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-298" target="eV5wDCu3Df9HtTySJIbg-301" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-298" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;include&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="865.12" y="940" width="53.75" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-299" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-300" target="eV5wDCu3Df9HtTySJIbg-304" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-300" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;lib&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="989.75" y="940" width="43.5" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-301" value="hellolib.h" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
 <mxGeometry x="852" y="1010" width="80" height="25" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-302" value="libhello.so.1" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
 <mxGeometry x="950" y="1017.5" width="120" height="20" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-303" value="libhello.so.1.0" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
 <mxGeometry x="950" y="1042.5" width="120" height="25" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-304" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;dashed=1;arcSize=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="943" y="1010" width="137" height="62.5" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-308" value="&lt;font style=&quot;font-size: 15px;&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;This also contains other files from other&amp;nbsp;&lt;br&gt;dependencies. Default dependencies are:&lt;br&gt;basically &lt;b style=&quot;&quot;&gt;&lt;u&gt;gcc&lt;/u&gt;&lt;/b&gt;, &lt;b style=&quot;&quot;&gt;&lt;u&gt;compilerlibs&lt;/u&gt;&lt;/b&gt; and &lt;b style=&quot;&quot;&gt;&lt;u style=&quot;&quot;&gt;libc&lt;/u&gt;&lt;/b&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#36393d;fillColor=none;rounded=1;arcSize=0;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="553" y="600" width="390" height="70" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-310" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;SYSROOT_DESTDIR&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#000000;strokeColor=none;fillStyle=auto;glass=0;shadow=0;fontColor=#ffffff;fontStyle=1" parent="1" vertex="1">
 <mxGeometry x="675" y="750" width="127.5" height="25" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-322" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=3;fillColor=#d0cee2;strokeColor=#000000;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-314" target="eV5wDCu3Df9HtTySJIbg-135" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-323" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=3;fillColor=#d0cee2;strokeColor=#000000;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-314" target="eV5wDCu3Df9HtTySJIbg-136" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-314" value="&lt;font color=&quot;#fcfcfc&quot;&gt;Github&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#000000;strokeColor=#23445d;" parent="1" vertex="1">
 <mxGeometry x="-416.5" y="395" width="82" height="100" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-316" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;do_fetch&lt;br&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#36393d;fillColor=#eeeeee;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="-283.25" y="405" width="80" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-317" value="&lt;font size=&quot;1&quot; color=&quot;#ffffff&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;&lt;b style=&quot;font-size: 15px;&quot;&gt;1&lt;/b&gt;&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;fillColor=#000000;strokeColor=#56517e;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="-313.25" y="405" width="30" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-326" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;do_fetch&lt;br&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#36393d;fillColor=#eeeeee;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="-283.25" y="455" width="80" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-327" value="&lt;font size=&quot;1&quot; color=&quot;#ffffff&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;&lt;b style=&quot;font-size: 15px;&quot;&gt;5&lt;/b&gt;&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;fillColor=#000000;strokeColor=#56517e;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="-313.25" y="455" width="30" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-331" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;do_configure&lt;br&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#36393d;fillColor=#eeeeee;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="1140" y="925" width="110" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-332" value="&lt;font size=&quot;1&quot; color=&quot;#ffffff&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;&lt;b style=&quot;font-size: 15px;&quot;&gt;12&lt;/b&gt;&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;fillColor=#000000;strokeColor=#56517e;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="1110" y="925" width="30" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-333" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;do_compile&lt;br&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#36393d;fillColor=#eeeeee;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="1160" y="957.5" width="90" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-334" value="&lt;font size=&quot;1&quot; color=&quot;#ffffff&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;&lt;b style=&quot;font-size: 15px;&quot;&gt;13&lt;/b&gt;&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;fillColor=#000000;strokeColor=#56517e;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="1130" y="957.5" width="30" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-340" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;do_unpack&lt;br&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#36393d;fillColor=#eeeeee;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="210" y="405" width="90" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-341" value="&lt;font size=&quot;1&quot; color=&quot;#ffffff&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;&lt;b style=&quot;font-size: 15px;&quot;&gt;2&lt;/b&gt;&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;fillColor=#000000;strokeColor=#56517e;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="180" y="405" width="30" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-349" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;curved=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-343" target="eV5wDCu3Df9HtTySJIbg-346" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-438" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;curved=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-343" target="eV5wDCu3Df9HtTySJIbg-345" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="1045" y="320" />
 <mxPoint x="917" y="320" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-439" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;curved=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-343" target="eV5wDCu3Df9HtTySJIbg-436" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="1045" y="320" />
 <mxPoint x="1175" y="320" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-343" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;conf&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="1010" y="270" width="70" height="40" as="geometry" />
 </mxCell>
 <mxCell id="utO5BPZsFb6q0V3ioqD--26" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=1;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;curved=1;dashed=1;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-345" target="utO5BPZsFb6q0V3ioqD--25" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="860" y="345" />
 <mxPoint x="860" y="270" />
 <mxPoint x="932" y="270" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-345" value="local.conf" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#eeeeee;strokeColor=#36393d;" parent="1" vertex="1">
 <mxGeometry x="870.25" y="335" width="94" height="20" as="geometry" />
 </mxCell>
 <mxCell id="utO5BPZsFb6q0V3ioqD--24" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;curved=1;endArrow=classicThin;endFill=1;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-346" target="utO5BPZsFb6q0V3ioqD--22" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-346" value="bblayers.conf" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#eeeeee;strokeColor=#36393d;" parent="1" vertex="1">
 <mxGeometry x="989.75" y="335" width="110" height="20" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-350" value="&lt;font style=&quot;font-size: 15px;&quot;&gt;&lt;b&gt;&lt;u&gt;S&lt;/u&gt;&lt;/b&gt; defaults generally to &lt;b&gt;&lt;u&gt;${UNPACKDIR}/${BP}&lt;/u&gt;&lt;/b&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;arcSize=0;" parent="1" vertex="1">
 <mxGeometry x="1259.75" y="520" width="230.25" height="150" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-352" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;do_patch&lt;br&gt;&lt;i&gt;(No patches)&lt;/i&gt;&lt;br&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#36393d;fillColor=#eeeeee;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="1140" y="855" width="110" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-353" value="&lt;font size=&quot;1&quot; color=&quot;#ffffff&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;&lt;b style=&quot;font-size: 15px;&quot;&gt;3&lt;/b&gt;&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;fillColor=#000000;strokeColor=#56517e;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="1110" y="860" width="30" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-354" value="&lt;font size=&quot;1&quot; color=&quot;#ffffff&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;&lt;b style=&quot;font-size: 15px;&quot;&gt;4&lt;/b&gt;&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;fillColor=#000000;strokeColor=#56517e;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="713" y="1100" width="30" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-356" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;do_install&lt;br&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#36393d;fillColor=#eeeeee;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="1314.75" y="1070" width="90" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-357" value="&lt;font size=&quot;1&quot; color=&quot;#ffffff&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;&lt;b style=&quot;font-size: 15px;&quot;&gt;14&lt;/b&gt;&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;fillColor=#000000;strokeColor=#56517e;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="1285" y="1070" width="30" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-362" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-358" target="eV5wDCu3Df9HtTySJIbg-361" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-358" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;package&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="1640" y="720" width="63" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-359" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;PKGD&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#000000;strokeColor=none;fillStyle=auto;glass=0;shadow=0;fontColor=#ffffff;fontStyle=1" parent="1" vertex="1">
 <mxGeometry x="1693.26" y="745" width="36.74" height="25" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-384" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;curved=1;strokeWidth=3;fillColor=#d0cee2;strokeColor=#000000;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-361" target="eV5wDCu3Df9HtTySJIbg-380" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="1698" y="1120" />
 <mxPoint x="1860" y="1120" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-361" value="A copy of&amp;nbsp;&lt;b&gt;${D}&lt;br&gt;&lt;/b&gt;excluding&lt;br&gt;&lt;b&gt;/sysroot-only&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#eeeeee;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;strokeColor=#36393d;" parent="1" vertex="1">
 <mxGeometry x="1617.63" y="840" width="107.75" height="240" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-364" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;do_package&lt;br&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#36393d;fillColor=#eeeeee;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="1573.24" y="1100" width="90" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-365" value="&lt;font size=&quot;1&quot; color=&quot;#ffffff&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;&lt;b style=&quot;font-size: 15px;&quot;&gt;15&lt;/b&gt;&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;fillColor=#000000;strokeColor=#56517e;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="1543.49" y="1100" width="30" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-381" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-366" target="eV5wDCu3Df9HtTySJIbg-380" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-366" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;packages-split&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="1800" y="720" width="120" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-367" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;PKGDEST&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#000000;strokeColor=none;fillStyle=auto;glass=0;shadow=0;fontColor=#ffffff;fontStyle=1" parent="1" vertex="1">
 <mxGeometry x="1910" y="745" width="60" height="25" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-377" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-369" target="eV5wDCu3Df9HtTySJIbg-373" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-369" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;sayhello&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="1828.5" y="850" width="63" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-372" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-373" target="eV5wDCu3Df9HtTySJIbg-375" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-373" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;usr&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="1838.25" y="910" width="43.5" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-374" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-375" target="utO5BPZsFb6q0V3ioqD--10" edge="1">
 <mxGeometry relative="1" as="geometry">
 <mxPoint x="1860" y="1037.5" as="targetPoint" />
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-375" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;bin&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="1833.12" y="977.5" width="53.75" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-382" value="&lt;span style=&quot;font-size: 15px;&quot;&gt;Folders created here are present in &lt;b&gt;&lt;u&gt;PACKAGES&lt;/u&gt;&lt;/b&gt; variable, BitBake knows what and where to put things using the &lt;b&gt;&lt;u&gt;FILES&lt;/u&gt;&lt;/b&gt; variable, example: &lt;b&gt;&lt;u&gt;FILES:${PN}&lt;/u&gt;&lt;/b&gt; files will go to &lt;b&gt;&lt;u&gt;${PN}&lt;/u&gt;&lt;/b&gt;&amp;nbsp;folder which is in &lt;b&gt;&lt;u&gt;PACKAGES&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;arcSize=0;" parent="1" vertex="1">
 <mxGeometry x="1505.37" y="520" width="321.75" height="148.75" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-385" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;do_package&lt;br&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#36393d;fillColor=#eeeeee;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="1743.12" y="1100" width="90" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-386" value="&lt;font size=&quot;1&quot; color=&quot;#ffffff&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;&lt;b style=&quot;font-size: 15px;&quot;&gt;16&lt;/b&gt;&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;fillColor=#000000;strokeColor=#56517e;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="1713.37" y="1100" width="30" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-390" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-387" target="eV5wDCu3Df9HtTySJIbg-389" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-387" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;deploy-&lt;b&gt;&lt;i&gt;pkg&lt;/i&gt;&lt;/b&gt;&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="2020" y="720" width="120" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-396" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-389" target="eV5wDCu3Df9HtTySJIbg-395" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-389" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;&lt;b&gt;${PACKAGE_ARCH}&lt;/b&gt;&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="2020" y="855" width="120" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-393" value="&lt;font style=&quot;font-size: 15px;&quot;&gt;This can be &lt;b&gt;&lt;u&gt;rpms&lt;/u&gt;&lt;/b&gt;, &lt;b&gt;&lt;u&gt;debs&lt;/u&gt;&lt;/b&gt; or &lt;b&gt;&lt;u&gt;ipks&lt;/u&gt;&lt;/b&gt;.&lt;br&gt;These are provided by&lt;br&gt;&lt;b&gt;&lt;u&gt;package_rpm&lt;/u&gt;&lt;/b&gt;, &lt;b&gt;&lt;u&gt;package_deb&lt;/u&gt;&lt;/b&gt; and &lt;b&gt;&lt;u&gt;package_ipk&lt;/u&gt;&lt;/b&gt; classes respectively, use &lt;b&gt;&lt;u&gt;PACKAGE_CLASSES&lt;/u&gt;&lt;/b&gt; for that as&lt;br&gt;content of &lt;b&gt;&lt;u&gt;PACKAGE_CLASSES&lt;/u&gt;&lt;/b&gt; will be appended&lt;br&gt;to &lt;b&gt;&lt;u&gt;INHERIT&lt;/u&gt;&lt;/b&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;arcSize=0;" parent="1" vertex="1">
 <mxGeometry x="1840" y="520" width="410" height="148.75" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-415" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;strokeWidth=3;fillColor=#d0cee2;strokeColor=#000000;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-395" target="eV5wDCu3Df9HtTySJIbg-413" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="2270" y="956" />
 <mxPoint x="2270" y="500" />
 <mxPoint x="1412" y="500" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-395" value="sayhello-0.1-r0.${PACKAGE_ARCH}.&lt;i&gt;pkg&lt;/i&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#eeeeee;strokeColor=#36393d;" parent="1" vertex="1">
 <mxGeometry x="1946.5" y="940" width="267" height="32.5" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-397" value="&lt;font style=&quot;font-size: 15px;&quot;&gt;This task also depends on &lt;b&gt;&lt;u&gt;PACKAGE_CLASSES&lt;/u&gt;&lt;/b&gt;,&lt;br&gt;&lt;b&gt;&lt;u&gt;&lt;i&gt;pkg&lt;/i&gt;&lt;/u&gt;&lt;/b&gt;&amp;nbsp;can be &lt;b&gt;&lt;u&gt;rpm&lt;/u&gt;&lt;/b&gt;, &lt;b&gt;&lt;u&gt;deb&lt;/u&gt;&lt;/b&gt; or &lt;b&gt;&lt;u&gt;ipk&lt;/u&gt;&lt;/b&gt; for &lt;b&gt;&lt;u&gt;package_rpm&lt;/u&gt;&lt;/b&gt;,&lt;br&gt;&lt;b&gt;&lt;u&gt;package_deb&lt;/u&gt;&lt;/b&gt; or &lt;u style=&quot;font-weight: bold;&quot;&gt;package_ipk&lt;/u&gt;&amp;nbsp;respectively.&lt;br&gt;The generated package generally named using:&lt;br&gt;&lt;b&gt;&lt;u&gt;${PN}&lt;/u&gt;&lt;/b&gt;, &lt;b&gt;&lt;u&gt;${PR}&lt;/u&gt;&lt;/b&gt;, &lt;b&gt;&lt;u&gt;${PACKAGE_ARCH}&lt;/u&gt;&lt;/b&gt; and&amp;nbsp;&lt;b&gt;&lt;u&gt;&lt;i&gt;pkg&lt;/i&gt;&lt;/u&gt;&lt;/b&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;strokeColor=#36393d;arcSize=0;" parent="1" vertex="1">
 <mxGeometry x="2280" y="840" width="370" height="170" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-404" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-401" target="eV5wDCu3Df9HtTySJIbg-403" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="utO5BPZsFb6q0V3ioqD--21" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=default;curved=1;dashed=1;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-401" target="utO5BPZsFb6q0V3ioqD--20" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-401" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;deploy&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="1376.5" y="270" width="70" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-414" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-403" target="eV5wDCu3Df9HtTySJIbg-413" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-403" value="&lt;b&gt;${DEPLOY_DIR_&lt;i&gt;pkg&lt;/i&gt;}&lt;/b&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="1346.62" y="350" width="129.75" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-408" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;do_package_write_&lt;i&gt;pkg&lt;/i&gt;&lt;br&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#36393d;fillColor=#eeeeee;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="1955" y="1100" width="150" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-409" value="&lt;font size=&quot;1&quot; color=&quot;#ffffff&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;&lt;b style=&quot;font-size: 15px;&quot;&gt;17&lt;/b&gt;&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;fillColor=#000000;strokeColor=#56517e;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="1920" y="1100" width="30" height="30" as="geometry" />
 </mxCell>
 <mxCell id="utO5BPZsFb6q0V3ioqD--11" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;dashed=1;endArrow=classicThin;endFill=1;curved=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="IR5jgyizBFApjn6Bth0e-3" target="eV5wDCu3Df9HtTySJIbg-397" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-413" value="${PACKAGE_ARCH}" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="1351.5" y="425" width="120" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-416" value="&lt;font style=&quot;font-size: 15px;&quot;&gt;For packages, this can be &lt;b&gt;&lt;u&gt;IPK&lt;/u&gt;&lt;/b&gt;, &lt;b&gt;&lt;u&gt;RPM&lt;/u&gt;&lt;/b&gt; or &lt;b&gt;&lt;u&gt;DEB&lt;/u&gt;&lt;/b&gt; (&lt;i&gt;check step 17&lt;/i&gt;)&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;arcSize=0;" parent="1" vertex="1">
 <mxGeometry x="1525" y="348.13" width="415" height="41.87" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-417" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;DEPLOY_DIR&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#000000;strokeColor=none;fillStyle=auto;glass=0;shadow=0;fontColor=#ffffff;fontStyle=1" parent="1" vertex="1">
 <mxGeometry x="1425.37" y="300" width="80" height="25" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-418" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;TMPDIR&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#000000;strokeColor=none;fillStyle=auto;glass=0;shadow=0;fontColor=#ffffff;fontStyle=1" parent="1" vertex="1">
 <mxGeometry x="830" y="200" width="60" height="25" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-419" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;DL_DIR&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#000000;strokeColor=none;fillStyle=auto;glass=0;shadow=0;fontColor=#ffffff;fontStyle=1" parent="1" vertex="1">
 <mxGeometry y="300" width="62.68" height="25" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-422" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endArrow=classicThin;endFill=1;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-403" target="eV5wDCu3Df9HtTySJIbg-416" edge="1">
 <mxGeometry relative="1" as="geometry">
 <mxPoint x="1480.4900000000002" y="387.48571428571427" as="sourcePoint" />
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-424" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;do_package_write_&lt;i&gt;pkg&lt;/i&gt;&lt;br&gt;&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=#36393d;fillColor=#eeeeee;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="2205" y="775" width="150" height="30" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-425" value="&lt;font size=&quot;1&quot; color=&quot;#ffffff&quot; data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;&lt;b style=&quot;font-size: 15px;&quot;&gt;18&lt;/b&gt;&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rounded=1;fillColor=#000000;strokeColor=#56517e;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" vertex="1">
 <mxGeometry x="2170" y="775" width="30" height="30" as="geometry" />
 </mxCell>
 <mxCell id="utO5BPZsFb6q0V3ioqD--8" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.75;entryY=1;entryDx=0;entryDy=0;dashed=1;endArrow=classicThin;endFill=1;curved=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-427" target="eV5wDCu3Df9HtTySJIbg-429" edge="1">
 <mxGeometry relative="1" as="geometry">
 <Array as="points">
 <mxPoint x="2303" y="758" />
 <mxPoint x="2303" y="602" />
 </Array>
 </mxGeometry>
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-427" value="" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#000000;strokeColor=none;fillStyle=auto;glass=0;shadow=0;fontColor=#ffffff;" parent="1" vertex="1">
 <mxGeometry x="2120" y="745" width="30" height="25" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-428" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;endArrow=classicThin;endFill=1;dashed=1;curved=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="IR5jgyizBFApjn6Bth0e-4" target="eV5wDCu3Df9HtTySJIbg-393" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-429" value="&lt;font style=&quot;font-size: 15px;&quot;&gt;This can be &lt;b&gt;&lt;u&gt;PKGWRITEDIRRPM&lt;/u&gt;&lt;/b&gt;, &lt;b&gt;&lt;u&gt;PKGWRITEDIRDEB&lt;/u&gt;&lt;/b&gt; or &lt;b&gt;&lt;u&gt;PKGWRITEDIRIPK&lt;/u&gt;&lt;/b&gt; for &lt;b&gt;&lt;u&gt;package_rpm&lt;/u&gt;&lt;/b&gt;, &lt;b&gt;&lt;u&gt;package_deb&lt;/u&gt;&lt;/b&gt;&lt;br&gt;or &lt;b&gt;&lt;u&gt;package_ipk&lt;/u&gt;&lt;/b&gt; respectively&lt;br&gt;&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;arcSize=0;" parent="1" vertex="1">
 <mxGeometry x="1990" y="381.25" width="416.88" height="77.5" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-432" value="&lt;span style=&quot;font-size: 15px;&quot;&gt;License checking happens in &lt;b&gt;&lt;u&gt;do_populate_lic&lt;/u&gt;&lt;/b&gt; after &lt;b&gt;&lt;u&gt;do_patch&lt;br&gt;&lt;/u&gt;&lt;/b&gt;and before that a checksum check&lt;br&gt;happends on&amp;nbsp;&lt;b&gt;&lt;u&gt;LIC_FILES_CHKSUM&lt;/u&gt;&lt;/b&gt; if the&lt;br&gt;license is not &lt;b&gt;&lt;u&gt;CLOSED&lt;/u&gt;&lt;/b&gt;&lt;br&gt;&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;arcSize=0;fillColor=none;" parent="1" vertex="1">
 <mxGeometry x="-260" y="797.5" width="328.25" height="102.5" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-434" value="&lt;span style=&quot;font-size: 15px;&quot;&gt;This variable is used to separate recipes&lt;br&gt;based on their target. This has value of&lt;br&gt;&lt;b&gt;&lt;u&gt;${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}&lt;/u&gt;&lt;/b&gt;&lt;br&gt;&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;arcSize=0;fillColor=none;" parent="1" vertex="1">
 <mxGeometry x="465.12" y="520" width="434.88" height="70" as="geometry" />
 </mxCell>
 <mxCell id="utO5BPZsFb6q0V3ioqD--28" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.75;entryY=1;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;dashed=1;curved=1;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-436" target="utO5BPZsFb6q0V3ioqD--27" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-436" value="conf-notes.txt" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#eeeeee;strokeColor=#36393d;" parent="1" vertex="1">
 <mxGeometry x="1120" y="335" width="110" height="20" as="geometry" />
 </mxCell>
 <mxCell id="utO5BPZsFb6q0V3ioqD--16" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;curved=1;dashed=1;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-440" target="utO5BPZsFb6q0V3ioqD--15" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="utO5BPZsFb6q0V3ioqD--18" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;curved=1;dashed=1;endArrow=classicThin;endFill=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-440" target="utO5BPZsFb6q0V3ioqD--17" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-440" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;sstate-cache&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillStyle=auto;glass=0;shadow=0;" parent="1" vertex="1">
 <mxGeometry x="176.5" y="270" width="103.01" height="40" as="geometry" />
 </mxCell>
 <mxCell id="eV5wDCu3Df9HtTySJIbg-442" value="&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Architects+Daughter&quot;&gt;SSTATE_DIR&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#000000;strokeColor=none;fillStyle=auto;glass=0;shadow=0;fontColor=#ffffff;fontStyle=1" parent="1" vertex="1">
 <mxGeometry x="243.98000000000002" y="300" width="83.01" height="25" as="geometry" />
 </mxCell>
 <mxCell id="utO5BPZsFb6q0V3ioqD--10" value="sayhello" style="rounded=1;whiteSpace=wrap;html=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;fillColor=#eeeeee;strokeColor=#36393d;" parent="1" vertex="1">
 <mxGeometry x="1814.99" y="1040" width="90" height="27.5" as="geometry" />
 </mxCell>
 <mxCell id="utO5BPZsFb6q0V3ioqD--13" style="edgeStyle=orthogonalEdgeStyle;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.149;entryY=-0.003;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=classicThin;endFill=1;curved=1;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;" parent="1" source="eV5wDCu3Df9HtTySJIbg-308" target="eV5wDCu3Df9HtTySJIbg-293" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="utO5BPZsFb6q0V3ioqD--15" value="&lt;span style=&quot;font-size: 15px;&quot;&gt;This folder contains cache for recipes build output, this is used by BitBake, if the recipe checksum did not change it knows that the output to use is the same.&lt;br&gt;&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;arcSize=0;fillColor=none;" parent="1" vertex="1">
 <mxGeometry x="350" y="300" width="410" height="90" as="geometry" />
 </mxCell>
 <mxCell id="utO5BPZsFb6q0V3ioqD--17" value="&lt;span style=&quot;font-size: 15px;&quot;&gt;&lt;font data-font-src=&quot;https://fonts.googleapis.com/css?family=Liberation+Sans&quot;&gt;These directories can be shared accross builds to save disk space and build time&lt;/font&gt;&lt;br&gt;&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;arcSize=0;fillColor=none;" parent="1" vertex="1">
 <mxGeometry x="-68.25" y="180" width="410" height="45" as="geometry" />
 </mxCell>
 <mxCell id="utO5BPZsFb6q0V3ioqD--20" value="&lt;font style=&quot;font-size: 15px;&quot;&gt;This directory contains other output directories such as &lt;b&gt;&lt;u&gt;images&lt;/u&gt;&lt;/b&gt;, &lt;b&gt;&lt;u&gt;sdk&lt;/u&gt;&lt;/b&gt; and &lt;b&gt;&lt;u&gt;licenses&lt;/u&gt;&lt;/b&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;arcSize=0;" parent="1" vertex="1">
 <mxGeometry x="1525" y="267.5" width="416.88" height="45" as="geometry" />
 </mxCell>
 <mxCell id="utO5BPZsFb6q0V3ioqD--22" value="&lt;font style=&quot;font-size: 15px;&quot;&gt;This file contains all &lt;b&gt;layers&lt;/b&gt; that BitBake should consider when looking for metadata.&lt;br&gt;&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;arcSize=0;fillColor=none;" parent="1" vertex="1">
 <mxGeometry x="1060" y="435" width="170" height="130" as="geometry" />
 </mxCell>
 <mxCell id="utO5BPZsFb6q0V3ioqD--25" value="&lt;font style=&quot;font-size: 15px;&quot;&gt;This is base configuration file containing essential user config such as &lt;b&gt;&lt;u&gt;MACHINE&lt;/u&gt;&lt;/b&gt; and &lt;b&gt;&lt;u&gt;DISTRO&lt;/u&gt;&lt;/b&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;arcSize=0;fillColor=none;" parent="1" vertex="1">
 <mxGeometry x="932" y="185" width="440" height="40" as="geometry" />
 </mxCell>
 <mxCell id="utO5BPZsFb6q0V3ioqD--27" value="&lt;font style=&quot;font-size: 15px;&quot;&gt;The message to show after &lt;b&gt;source oe-init-build-env&lt;/b&gt;&lt;br&gt;&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fontFamily=Liberation Sans;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DLiberation%2BSans;arcSize=0;fillColor=none;" parent="1" vertex="1">
 <mxGeometry x="1118" y="260" width="241.13" height="40" as="geometry" />
 </mxCell>
 <mxCell id="IR5jgyizBFApjn6Bth0e-1" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeWidth=1;glass=0;" parent="1" vertex="1">
 <mxGeometry x="2320" y="780" width="30" height="20" as="geometry" />
 </mxCell>
 <mxCell id="IR5jgyizBFApjn6Bth0e-2" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeWidth=1;glass=0;" parent="1" vertex="1">
 <mxGeometry x="2170" y="946.25" width="20" height="20" as="geometry" />
 </mxCell>
 <mxCell id="IR5jgyizBFApjn6Bth0e-3" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeWidth=1;glass=0;" parent="1" vertex="1">
 <mxGeometry x="2070" y="1105" width="25" height="20" as="geometry" />
 </mxCell>
 <mxCell id="IR5jgyizBFApjn6Bth0e-4" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeWidth=1;glass=0;" parent="1" vertex="1">
 <mxGeometry x="2090" y="730" width="20" height="20" as="geometry" />
 </mxCell>
 <mxCell id="IR5jgyizBFApjn6Bth0e-5" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeWidth=1;glass=0;" parent="1" vertex="1">
 <mxGeometry x="1446.5" y="361.25" width="20" height="20" as="geometry" />
 </mxCell>
 </root>
 </mxGraphModel>
 </diagram>
</mxfile>
"><defs/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="eV5wDCu3Df9HtTySJIbg-398"><g><rect x="2357" y="660" width="280" height="150" rx="22.5" ry="22.5" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-dasharray="3 3" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-383"><g><path d="M 2217 780 Q 2163.7 780 2163.68 495.12" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 2163.68 489.87 L 2166.02 496.87 L 2163.68 495.12 L 2161.35 496.87 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-407"><g><path d="M 2307 900 Q 2307 940 2402 940 Q 2497 940 2497 820.1" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2497 813.35 L 2501.5 822.35 L 2497 820.1 L 2492.5 822.35 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-380"><g><rect x="2217" y="660" width="120" height="240" rx="18" ry="18" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-dasharray="3 3" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-211"><g><rect x="717" y="660" width="270" height="240" rx="36" ry="36" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-dasharray="3 3" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-142"><g><rect x="270.5" y="210" width="270" height="110" rx="16.5" ry="16.5" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-dasharray="3 3" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-162"><g><rect x="537" y="660" width="140" height="240" rx="21" ry="21" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-dasharray="3 3" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-101"><g><path d="M 1232 40 L 1232 90" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-338"><g><path d="M 1232 40 L 1232 50 Q 1232 60 1222 60 L 415.5 60 Q 405.5 60 405.5 70 L 405.5 83.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 405.5 88.88 L 402 81.88 L 405.5 83.63 L 409 81.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-344"><g><path d="M 1232 40 L 1232 50 Q 1232 60 1242 60 L 1452 60 Q 1462 60 1462 70 L 1462 83.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1462 88.88 L 1458.5 81.88 L 1462 83.63 L 1465.5 81.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-402"><g><path d="M 1232 40 L 1232 50 Q 1232 60 1242 60 L 1818.5 60 Q 1828.5 60 1828.5 70 L 1828.5 83.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1828.5 88.88 L 1825 81.88 L 1828.5 83.63 L 1832 81.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="utO5BPZsFb6q0V3ioqD--12"><g><path d="M 1232 40 L 1232 50 Q 1232 60 1222 60 L 655 60 Q 645 60 645 70 L 645 83.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 645 88.88 L 641.5 81.88 L 645 83.63 L 648.5 81.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-98"><g><rect x="1197" y="0" width="70" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 20px; margin-left: 1198px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">tmp</font></div></div></div></foreignObject><text x="1232" y="24" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">tmp</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-102"><g><path d="M 1232 130 L 1232 260" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-99"><g><rect x="1197" y="90" width="70" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 110px; margin-left: 1198px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">work</font></div></div></div></foreignObject><text x="1232" y="114" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">work</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-106"><g><path d="M 1232 300 L 1232 310 Q 1232 320 1242 320 L 1412 320 Q 1422 320 1422 330 L 1422 340" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-155"><g><path d="M 1232 300 L 1232 310 Q 1232 320 1222 320 L 789 320 Q 779 320 779 330 L 778.99 340" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/></g></g><g data-cell-id="utO5BPZsFb6q0V3ioqD--14"><g><path d="M 1147 280 Q 1099.6 280 1099.56 333.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 1099.56 338.88 L 1097.23 331.88 L 1099.56 333.63 L 1101.9 331.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-100"><g><rect x="1147" y="260" width="170" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 280px; margin-left: 1148px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter"><b>${MULTIMACH_TARGET_OS}</b></font></div></div></div></foreignObject><text x="1232" y="284" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">${MULTIMACH_TARGET_OS}</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-110"><g><path d="M 778.99 380 L 779 420" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-103"><g><rect x="743.99" y="340" width="70" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 360px; margin-left: 745px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">libhello</font></div></div></div></foreignObject><text x="779" y="364" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">libhello</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-111"><g><path d="M 1422 380 L 1422 390 Q 1422 400 1422 392.5 L 1422 388.75 Q 1422 385 1422 395 L 1422 405" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-105"><g><rect x="1387" y="340" width="70" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 360px; margin-left: 1388px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">sayhello</font></div></div></div></foreignObject><text x="1422" y="364" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">sayhello</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-169"><g><path d="M 779 460 L 779 490 Q 779 500 769 500 L 509 500 Q 499 500 499 510 L 499 533.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 499 538.88 L 496.67 531.88 L 499 533.63 L 501.33 531.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-170"><g><path d="M 779 460 L 779 490 Q 779 500 769 500 L 617 500 Q 607 500 607 510 L 607 547.5 Q 607 557.5 606.43 557.5 L 605.87 557.5" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 600.62 557.5 L 607.62 555.17 L 605.87 557.5 L 607.62 559.83 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-179"><g><path d="M 779 460 L 778.99 533.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 778.99 538.88 L 775.49 531.88 L 778.99 533.63 L 782.49 531.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-197"><g><path d="M 779 460 L 779 490 Q 779 500 789 500 L 1067 500 Q 1077 500 1077 510 L 1077 533.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1077 538.88 L 1073.5 531.88 L 1077 533.63 L 1080.5 531.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-108"><g><rect x="744" y="420" width="70" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 440px; margin-left: 745px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">0.1-r0</font></div></div></div></foreignObject><text x="779" y="444" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">0.1-r0</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-309"><g><path d="M 1422 445 L 1422 490 Q 1422 500 1412 500 L 1392 500 Q 1382 500 1382 510 L 1382 533.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1382 538.88 L 1378.5 531.88 L 1382 533.63 L 1385.5 531.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-311"><g><path d="M 1422 445 L 1422 490 Q 1422 500 1432 500 L 1746.5 500 Q 1756.5 500 1756.5 510 L 1756.5 533.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1756.5 538.88 L 1753 531.88 L 1756.5 533.63 L 1760 531.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-312"><g><path d="M 1422 445 L 1422 490 Q 1422 500 1432 500 L 1919 500 Q 1929 500 1929 510 L 1928.99 533.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1928.99 538.88 L 1925.49 531.88 L 1928.99 533.63 L 1932.49 531.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-360"><g><path d="M 1422 445 L 1422 490 Q 1422 500 1432 500 L 2078.5 500 Q 2088.5 500 2088.5 510 L 2088.5 533.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2088.5 538.88 L 2085 531.88 L 2088.5 533.63 L 2092 531.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-368"><g><path d="M 1422 445 L 1422 490 Q 1422 500 1432 500 L 2267 500 Q 2277 500 2277 510 L 2277 533.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2277 538.88 L 2273.5 531.88 L 2277 533.63 L 2280.5 531.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-388"><g><path d="M 1422 445 L 1422 490 Q 1422 500 1432 500 L 2487 500 Q 2497 500 2497 510 L 2497 533.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2497 538.88 L 2493.5 531.88 L 2497 533.63 L 2500.5 531.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-109"><g><rect x="1387" y="405" width="70" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 425px; margin-left: 1388px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">0.1-r0</font></div></div></div></foreignObject><text x="1422" y="429" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">0.1-r0</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-134"><g><path d="M 405.5 130 L 405.5 140 Q 405.5 150 405.5 140 L 405.5 135 Q 405.5 130 405.5 140 L 405.5 150" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/></g></g><g data-cell-id="utO5BPZsFb6q0V3ioqD--19"><g><path d="M 440.5 110 Q 553.8 110 553.75 51.37" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 553.75 46.12 L 556.09 53.12 L 553.75 51.37 L 551.42 53.12 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-130"><g><rect x="370.5" y="90" width="70" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 110px; margin-left: 372px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">downloads</font></div></div></div></foreignObject><text x="406" y="114" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">downloads</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-143"><g><path d="M 405.5 190 L 405.5 200 Q 405.5 210 405.5 200 L 405.5 195 Q 405.5 190 405.5 200 L 405.5 210" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-133"><g><rect x="370.5" y="150" width="70" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 170px; margin-left: 372px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">git2</font></div></div></div></foreignObject><text x="406" y="174" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">git2</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-223"><g><path d="M 520.5 290 L 657 290 Q 667 290 667 300 L 667 567.5 Q 667 577.5 657 577.5 L 642.1 577.5" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 635.35 577.5 L 644.35 573 L 642.1 577.5 L 644.35 582 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-135"><g><rect x="290.5" y="220" width="230" height="40" rx="6" ry="6" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 240px; margin-left: 292px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">github.com.<username>.sayhello</div></div></div></foreignObject><text x="406" y="244" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">github.com.<username>.sayhello</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-337"><g><path d="M 520.5 240 L 1657 240 Q 1667 240 1667 250 L 1667 550 Q 1667 560 1677 560 L 1713.9 560" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1720.65 560 L 1711.65 564.5 L 1713.9 560 L 1711.65 555.5 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-136"><g><rect x="290.5" y="270" width="230" height="40" rx="6" ry="6" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 290px; margin-left: 292px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">github.com.<username>.libhello</div></div></div></foreignObject><text x="406" y="294" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">github.com.<username>.libhello</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-164"><g><path d="M 599.5 597.5 Q 599.5 628.8 603.25 628.8 Q 607 628.8 607 653.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 607 658.88 L 603.5 651.88 L 607 653.63 L 610.5 651.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-156"><g><rect x="567" y="557.5" width="65" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 63px; height: 1px; padding-top: 578px; margin-left: 568px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">sources/libhello-0.1</div></div></div></foreignObject><text x="600" y="581" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">sources/lib...</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-159"><g><rect x="553" y="680" width="114" height="20" rx="3" ry="3" fill="#f5f5f5" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));" stroke="#666666" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 690px; margin-left: 554px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Makefile</div></div></div></foreignObject><text x="610" y="694" fill="#333333" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">Makefile</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-433"><g><path d="M 553 720 L 529.2 720 Q 519.2 720 519.2 710 L 519.2 678.8 Q 519.2 668.8 509.2 668.79 L 491.62 668.76" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 486.37 668.75 L 493.37 666.43 L 491.62 668.76 L 493.36 671.1 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-160"><g><rect x="553" y="710" width="114" height="20" rx="3" ry="3" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 720px; margin-left: 554px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">LICENSE</div></div></div></foreignObject><text x="610" y="724" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">LICENSE</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-215"><g><path d="M 553 750 Q 507 750 507 765 Q 507 780 542.9 780" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 549.65 780 L 540.65 783 L 542.9 780 L 540.65 777 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-161"><g><rect x="553" y="740" width="114" height="20" rx="3" ry="3" fill="#f5f5f5" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));" stroke="#666666" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 750px; margin-left: 554px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">fix.patch</div></div></div></foreignObject><text x="610" y="754" fill="#333333" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">fix.patch</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-219"><g><path d="M 553.68 787.86 Q 497 787.9 497 819.6 Q 497 851.3 544.9 851.26" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 551.65 851.25 L 542.65 855.76 L 544.9 851.26 L 542.64 846.76 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-163"><g><rect x="553" y="770" width="114" height="20" rx="3" ry="3" fill="#f5f5f5" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));" stroke="#666666" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 780px; margin-left: 554px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">hellolib.c</div></div></div></foreignObject><text x="610" y="784" fill="#333333" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">hellolib.c</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-166"><g><rect x="474" y="540" width="50" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 48px; height: 1px; padding-top: 560px; margin-left: 475px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">temp</font></div></div></div></foreignObject><text x="499" y="564" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">temp</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-210"><g><path d="M 1077 580 L 1077 660" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-171"><g><rect x="1017" y="540" width="120" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 560px; margin-left: 1018px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">sysroot-destdir</font></div></div></div></foreignObject><text x="1077" y="564" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">sysroot-destdir</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-307"><g><path d="M 1382 580 L 1382 653.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1382 658.88 L 1379.67 651.88 L 1382 653.63 L 1384.33 651.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-172"><g><rect x="1327" y="540" width="110" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 108px; height: 1px; padding-top: 560px; margin-left: 1328px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">recipe-sysroot</font></div></div></div></foreignObject><text x="1382" y="564" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">recipe-sysroot</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-182"><g><path d="M 779 580 L 779 673.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 779 678.88 L 776.67 671.88 L 779 673.63 L 781.33 671.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-175"><g><rect x="747.49" y="540" width="63" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 61px; height: 1px; padding-top: 560px; margin-left: 748px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">image</font></div></div></div></foreignObject><text x="779" y="564" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">image</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-183"><g><path d="M 779.1 720 L 779.1 730 Q 779.1 740 779.06 746.82 L 779.03 753.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 779 758.88 L 776.7 751.87 L 779.03 753.63 L 781.37 751.89 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-184"><g><path d="M 779 720 Q 779 740 838.75 740 Q 898.5 740 898.5 753.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 898.5 758.88 L 896.17 751.88 L 898.5 753.63 L 900.83 751.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-177"><g><rect x="757.25" y="680" width="43.5" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 42px; height: 1px; padding-top: 700px; margin-left: 758px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">usr</font></div></div></div></foreignObject><text x="779" y="704" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">usr</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-188"><g><path d="M 778.99 800 L 779 823.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 779 828.88 L 776.67 821.88 L 779 823.63 L 781.33 821.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-180"><g><rect x="752.12" y="760" width="53.75" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 52px; height: 1px; padding-top: 780px; margin-left: 753px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">include</font></div></div></div></foreignObject><text x="779" y="784" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">include</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-192"><g><path d="M 898.6 800 L 898.6 810 Q 898.6 820 898.58 821.82 L 898.56 823.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 898.51 828.88 L 895.08 821.85 L 898.56 823.63 L 902.08 821.92 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-181"><g><rect x="876.75" y="760" width="43.5" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 42px; height: 1px; padding-top: 780px; margin-left: 878px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">lib</font></div></div></div></foreignObject><text x="899" y="784" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">lib</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-187"><g><rect x="739" y="830" width="80" height="25" rx="3.75" ry="3.75" fill="#f5f5f5" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));" stroke="#666666" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 843px; margin-left: 740px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">hellolib.h</div></div></div></foreignObject><text x="779" y="846" fill="#333333" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">hellolib.h</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-189"><g><rect x="837" y="837.5" width="120" height="20" rx="3" ry="3" fill="#f5f5f5" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));" stroke="#666666" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 848px; margin-left: 838px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">libhello.so.1</div></div></div></foreignObject><text x="897" y="851" fill="#333333" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">libhello.so.1</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-190"><g><rect x="837" y="862.5" width="120" height="25" rx="3.75" ry="3.75" fill="#f5f5f5" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));" stroke="#666666" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 875px; margin-left: 838px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">libhello.so.1.0</div></div></div></foreignObject><text x="897" y="879" fill="#333333" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">libhello.so.1.0</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-191"><g><rect x="830" y="830" width="137" height="62.5" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-dasharray="3 3" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-286"><g><path d="M 1107 900 Q 1107 940 1244.5 940 Q 1382 940 1382 910.1" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1382 903.35 L 1386.5 912.35 L 1382 910.1 L 1377.5 912.35 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-209"><g><rect x="1017" y="660" width="120" height="240" rx="18" ry="18" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" stroke-dasharray="3 3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 780px; margin-left: 1018px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Everything in <b>image</b> folder that is present in <b>SYSROOT_DIRS</b> will be copied here.</div></div></div></foreignObject><text x="1077" y="784" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">Everything in image...</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-233"><g><path d="M 919.5 900 Q 919.5 940 998.25 940 Q 1077 940 1077 910.1" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1077 903.35 L 1081.5 912.35 L 1077 910.1 L 1072.5 912.35 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-212"><g><path d="M 607 900 Q 607 940 735.3 940 Q 863.6 940 863.61 909.86" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 863.61 903.11 L 868.11 912.12 L 863.61 909.86 L 859.11 912.11 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-213"><g><rect x="687" y="920" width="90" height="30" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 935px; margin-left: 732px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_install</font></div></div></div></foreignObject><text x="732" y="939" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">do_install</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-214"><g><rect x="555" y="837.5" width="114" height="27.5" rx="4.13" ry="4.13" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 851px; margin-left: 556px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">libhello.so.1.0</div></div></div></foreignObject><text x="612" y="855" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">libhello.so.1.0</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-217"><g><rect x="417" y="795" width="110" height="30" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 810px; margin-left: 472px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_configure<br /></font></div></div></div></foreignObject><text x="472" y="814" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">do_configure
</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-218"><g><rect x="553" y="800" width="114" height="20" rx="3" ry="3" fill="#f5f5f5" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));" stroke="#666666" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 810px; margin-left: 554px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">hellolib.h</div></div></div></foreignObject><text x="610" y="814" fill="#333333" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">hellolib.h</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-221"><g><rect x="447" y="750" width="80" height="30" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 765px; margin-left: 487px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_patch<br /></font></div></div></div></foreignObject><text x="487" y="769" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">do_patch
</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-224"><g><rect x="623.5" y="405" width="90" height="30" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 420px; margin-left: 669px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_unpack<br /></font></div></div></div></foreignObject><text x="669" y="424" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">do_unpack
</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-225"><g><ellipse cx="608.5" cy="420" rx="15" ry="15" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(86, 81, 126), rgb(164, 160, 198));" stroke="#56517e" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 420px; margin-left: 595px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1" style="color: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));"><b style="font-size: 15px;">6</b></font></div></div></div></foreignObject><text x="609" y="424" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">6</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-226"><g><ellipse cx="432" cy="765" rx="15" ry="15" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(86, 81, 126), rgb(164, 160, 198));" stroke="#56517e" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 765px; margin-left: 418px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1" style="color: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));"><b style="font-size: 15px;">7</b></font></div></div></div></foreignObject><text x="432" y="769" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">7</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-227"><g><ellipse cx="402" cy="810" rx="15" ry="15" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(86, 81, 126), rgb(164, 160, 198));" stroke="#56517e" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 810px; margin-left: 388px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1" style="color: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));"><b style="font-size: 15px;">8</b></font></div></div></div></foreignObject><text x="402" y="814" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">8</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-229"><g><rect x="437" y="827.5" width="90" height="30" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 843px; margin-left: 482px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_compile<br /></font></div></div></div></foreignObject><text x="482" y="846" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">do_compile
</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-228"><g><ellipse cx="422" cy="842.5" rx="15" ry="15" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(86, 81, 126), rgb(164, 160, 198));" stroke="#56517e" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 843px; margin-left: 408px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1" style="color: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));"><b style="font-size: 15px;">9</b></font></div></div></div></foreignObject><text x="422" y="846" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">9</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-231"><g><ellipse cx="672" cy="935" rx="15" ry="15" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(86, 81, 126), rgb(164, 160, 198));" stroke="#56517e" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 935px; margin-left: 658px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1" style="color: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));"><b style="font-size: 15px;">10</b></font></div></div></div></foreignObject><text x="672" y="939" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">10</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-235"><g><rect x="932" y="920" width="160" height="30" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 935px; margin-left: 1012px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_populate_sysroot</font></div></div></div></foreignObject><text x="1012" y="939" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">do_populate_sysroot</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-236"><g><ellipse cx="917" cy="935" rx="15" ry="15" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(86, 81, 126), rgb(164, 160, 198));" stroke="#56517e" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 935px; margin-left: 903px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1" style="color: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));"><b style="font-size: 15px;">11</b></font></div></div></div></foreignObject><text x="917" y="939" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">11</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-355"><g><path d="M 1757 820 Q 1757 940 1843 940 Q 1929 940 1928.99 910.1" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1928.99 903.35 L 1933.49 912.35 L 1928.99 910.1 L 1924.49 912.36 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-238"><g><rect x="1687" y="660" width="140" height="160" rx="21" ry="21" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-dasharray="3 3" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-239"><g><path d="M 1756.5 580 Q 1756.5 620 1756.92 653.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1756.99 658.88 L 1753.4 651.93 L 1756.92 653.63 L 1760.4 651.84 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="w4JjUiD6-ryT0rcgaIPJ-1"><g><path d="M 1724 560 L 1723.37 560" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1718.12 560 L 1725.12 556.5 L 1723.37 560 L 1725.12 563.5 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-240"><g><rect x="1724" y="540" width="65" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 63px; height: 1px; padding-top: 560px; margin-left: 1725px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><div>sources/sayhello-0.1</div><div><br /></div></div></div></div></foreignObject><text x="1757" y="564" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">sources/say...</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-241"><g><rect x="1700" y="680" width="114" height="20" rx="3" ry="3" fill="#f5f5f5" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));" stroke="#666666" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 690px; margin-left: 1701px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Makefile</div></div></div></foreignObject><text x="1757" y="694" fill="#333333" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">Makefile</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-242"><g><rect x="1700" y="710" width="114" height="20" rx="3" ry="3" fill="#f5f5f5" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));" stroke="#666666" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 720px; margin-left: 1701px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">LICENSE</div></div></div></foreignObject><text x="1757" y="724" fill="#333333" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">LICENSE</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-330"><g><path d="M 1700 750 Q 1647 750 1647 771.9 Q 1647 793.8 1689.9 793.76" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1696.65 793.75 L 1687.65 798.26 L 1689.9 793.76 L 1687.64 789.26 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-244"><g><rect x="1700" y="740" width="114" height="20" rx="3" ry="3" fill="#f5f5f5" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));" stroke="#666666" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 750px; margin-left: 1701px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">sayhello.c</div></div></div></foreignObject><text x="1757" y="754" fill="#333333" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">sayhello.c</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-245"><g><rect x="1700" y="780" width="114" height="27.5" rx="4.13" ry="4.13" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 794px; margin-left: 1701px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">sayhello</div></div></div></foreignObject><text x="1757" y="797" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">sayhello</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-363"><g><path d="M 1958.99 900 Q 1957 900 1957 920 Q 1957 940 2022.75 940 Q 2088.5 940 2088.5 910.1" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2088.5 903.35 L 2093 912.35 L 2088.5 910.1 L 2084 912.35 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-247"><g><rect x="1868.99" y="660" width="120" height="240" rx="18" ry="18" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-dasharray="3 3" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-248"><g><path d="M 1928.99 580 L 1928.99 653.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1928.99 658.88 L 1926.66 651.88 L 1928.99 653.63 L 1931.32 651.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-249"><g><rect x="1897.49" y="540" width="63" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 61px; height: 1px; padding-top: 560px; margin-left: 1898px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">image</font></div></div></div></foreignObject><text x="1929" y="564" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">image</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-250"><g><path d="M 1929.1 720 L 1929.1 735 Q 1929.1 745 1929.06 754.32 L 1929.03 763.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1929.01 768.88 L 1926.7 761.87 L 1929.03 763.63 L 1931.37 761.89 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-252"><g><rect x="1907.25" y="680" width="43.5" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 42px; height: 1px; padding-top: 700px; margin-left: 1908px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">usr</font></div></div></div></foreignObject><text x="1929" y="704" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">usr</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-253"><g><path d="M 1929.01 810 L 1929 848.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1929 853.88 L 1926.67 846.88 L 1929 848.63 L 1931.33 846.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-254"><g><rect x="1902.13" y="770" width="53.75" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 52px; height: 1px; padding-top: 790px; margin-left: 1903px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">bin</font></div></div></div></foreignObject><text x="1929" y="794" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">bin</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-266"><g><path d="M 416.5 430 Q 506.5 430 506.5 507.5 Q 506.5 585 558.76 585" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="2 4" pointer-events="stroke"/><path d="M 564.76 585 L 556.76 587.67 L 558.76 585 L 556.76 582.33 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-267"><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 421px; margin-left: 438px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; border-color: #000000; "><div style="display: inline-block; font-size: 11px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); border-width: 1px; border-style: solid; border-color: inherit; border: 1px solid light-dark(#000000, #ffffff); white-space: nowrap; "><div><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" style="font-size: 14px;">S = "${UNPACKDIR}/${BP}"</font></div></div></div></div></foreignObject><text x="438" y="424" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="11px" text-anchor="middle">S = "${UNPACKDIR}/${BP}"</text></switch></g></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-270"><g><rect x="800.75" y="405" width="63" height="25" rx="3.75" ry="3.75" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 61px; height: 1px; padding-top: 418px; margin-left: 802px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">WORKDIR</font></div></div></div></foreignObject><text x="832" y="421" fill="#ffffff" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle" font-weight="bold">WORKDIR</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-271"><g><rect x="730.75" y="540" width="26.5" height="25" rx="3.75" ry="3.75" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 25px; height: 1px; padding-top: 553px; margin-left: 732px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">D</font></div></div></div></foreignObject><text x="744" y="556" fill="#ffffff" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle" font-weight="bold">D</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-272"><g><rect x="567" y="540" width="26.5" height="25" rx="3.75" ry="3.75" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 25px; height: 1px; padding-top: 553px; margin-left: 568px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">S</font></div></div></div></foreignObject><text x="580" y="556" fill="#ffffff" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle" font-weight="bold">S</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-273"><g><rect x="540.5" y="540" width="26.5" height="25" rx="3.75" ry="3.75" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 25px; height: 1px; padding-top: 553px; margin-left: 542px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">B</font></div></div></div></foreignObject><text x="554" y="556" fill="#ffffff" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle" font-weight="bold">B</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-275"><g><rect x="458.75" y="540" width="26.5" height="25" rx="3.75" ry="3.75" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 25px; height: 1px; padding-top: 553px; margin-left: 460px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">T</font></div></div></div></foreignObject><text x="472" y="556" fill="#ffffff" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle" font-weight="bold">T</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-276"><g><rect x="907" y="790" width="50" height="25" rx="3.75" ry="3.75" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 48px; height: 1px; padding-top: 803px; margin-left: 908px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">libdir</font></div></div></div></foreignObject><text x="932" y="806" fill="#ffffff" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle" font-weight="bold">libdir</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-277"><g><rect x="783.75" y="790" width="80" height="25" rx="3.75" ry="3.75" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 803px; margin-left: 785px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">includedir</font></div></div></div></foreignObject><text x="824" y="806" fill="#ffffff" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle" font-weight="bold">includedir</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-279"><g><rect x="1400.87" y="570" width="116.13" height="25" rx="3.75" ry="3.75" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 114px; height: 1px; padding-top: 583px; margin-left: 1402px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">RECIPE_SYSROOT</font></div></div></div></foreignObject><text x="1459" y="586" fill="#ffffff" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle" font-weight="bold">RECIPE_SYSROOT</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-351"><g><path d="M 1806.8 565 Q 1806.8 527.5 1799.35 527.5 Q 1791.9 527.5 1791.88 496.37" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 1791.88 491.12 L 1794.21 498.12 L 1791.88 496.37 L 1789.55 498.12 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-281"><g><rect x="1793.5" y="565" width="26.5" height="25" rx="3.75" ry="3.75" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 25px; height: 1px; padding-top: 578px; margin-left: 1795px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">S</font></div></div></div></foreignObject><text x="1807" y="581" fill="#ffffff" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle" font-weight="bold">S</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-282"><g><rect x="1767" y="565" width="26.5" height="25" rx="3.75" ry="3.75" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 25px; height: 1px; padding-top: 578px; margin-left: 1768px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">B</font></div></div></div></foreignObject><text x="1780" y="581" fill="#ffffff" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle" font-weight="bold">B</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-283"><g><rect x="1950.75" y="565" width="26.5" height="25" rx="3.75" ry="3.75" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 25px; height: 1px; padding-top: 578px; margin-left: 1952px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">D</font></div></div></div></foreignObject><text x="1964" y="581" fill="#ffffff" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle" font-weight="bold">D</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-284"><g><rect x="1447" y="395" width="63" height="25" rx="3.75" ry="3.75" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 61px; height: 1px; padding-top: 408px; margin-left: 1448px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">WORKDIR</font></div></div></div></foreignObject><text x="1479" y="411" fill="#ffffff" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle" font-weight="bold">WORKDIR</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-287"><g><rect x="1160" y="920" width="200" height="30" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 935px; margin-left: 1260px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_prepare_recipe_sysroot</font></div></div></div></foreignObject><text x="1260" y="939" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">do_prepare_recipe_sysroot</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-292"><g><rect x="1884" y="855" width="90" height="27.5" rx="4.13" ry="4.13" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 869px; margin-left: 1885px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">sayhello</div></div></div></foreignObject><text x="1929" y="872" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">sayhello</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-293"><g><rect x="1247" y="660" width="270" height="240" rx="36" ry="36" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-dasharray="3 3" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-294"><g><path d="M 1309.1 720 Q 1309.1 740 1309.03 753.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1309 758.88 L 1306.7 751.87 L 1309.03 753.63 L 1311.37 751.89 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-295"><g><path d="M 1309 720 Q 1309 740 1368.75 740 Q 1428.5 740 1428.5 753.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1428.5 758.88 L 1426.17 751.88 L 1428.5 753.63 L 1430.83 751.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-296"><g><rect x="1287.25" y="680" width="43.5" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 42px; height: 1px; padding-top: 700px; margin-left: 1288px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">usr</font></div></div></div></foreignObject><text x="1309" y="704" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">usr</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-297"><g><path d="M 1308.99 800 L 1309 823.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1309 828.88 L 1306.67 821.88 L 1309 823.63 L 1311.33 821.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-298"><g><rect x="1282.12" y="760" width="53.75" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 52px; height: 1px; padding-top: 780px; margin-left: 1283px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">include</font></div></div></div></foreignObject><text x="1309" y="784" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">include</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-299"><g><path d="M 1428.6 800 L 1428.6 810 Q 1428.6 820 1428.58 821.82 L 1428.56 823.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1428.51 828.88 L 1426.25 821.86 L 1428.56 823.63 L 1430.91 821.91 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-300"><g><rect x="1406.75" y="760" width="43.5" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 42px; height: 1px; padding-top: 780px; margin-left: 1408px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">lib</font></div></div></div></foreignObject><text x="1429" y="784" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">lib</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-301"><g><rect x="1269" y="830" width="80" height="25" rx="3.75" ry="3.75" fill="#f5f5f5" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));" stroke="#666666" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 843px; margin-left: 1270px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">hellolib.h</div></div></div></foreignObject><text x="1309" y="846" fill="#333333" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">hellolib.h</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-302"><g><rect x="1367" y="837.5" width="120" height="20" rx="3" ry="3" fill="#f5f5f5" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));" stroke="#666666" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 848px; margin-left: 1368px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">libhello.so.1</div></div></div></foreignObject><text x="1427" y="851" fill="#333333" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">libhello.so.1</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-303"><g><rect x="1367" y="862.5" width="120" height="25" rx="3.75" ry="3.75" fill="#f5f5f5" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));" stroke="#666666" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 875px; margin-left: 1368px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">libhello.so.1.0</div></div></div></foreignObject><text x="1427" y="879" fill="#333333" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">libhello.so.1.0</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-304"><g><rect x="1360" y="830" width="137" height="62.5" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-dasharray="3 3" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-308"><g><rect x="970" y="420" width="390" height="70" fill="none" stroke="#36393d" style="stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke-dasharray="3 3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 455px; margin-left: 1165px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" style="font-size: 15px;">This also contains other files from other <br />dependencies. Default dependencies are:<br />basically <b style=""><u>gcc</u></b>, <b style=""><u>compilerlibs</u></b> and <b style=""><u style="">libc</u></b></font></div></div></div></foreignObject><text x="1165" y="459" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">This also contains other files from other...</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-310"><g><rect x="1092" y="570" width="127.5" height="25" rx="3.75" ry="3.75" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 126px; height: 1px; padding-top: 583px; margin-left: 1093px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">SYSROOT_DESTDIR</font></div></div></div></foreignObject><text x="1156" y="586" fill="#ffffff" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle" font-weight="bold">SYSROOT_DESTDIR</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-322"><g><path d="M 82.5 240 L 280.4 240" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 287.15 240 L 278.15 244.5 L 280.4 240 L 278.15 235.5 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-323"><g><path d="M 82.5 290 L 280.4 290" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 287.15 290 L 278.15 294.5 L 280.4 290 L 278.15 285.5 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-314"><g><rect x="0.5" y="215" width="82" height="100" rx="12.3" ry="12.3" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(35, 68, 93), rgb(160, 188, 210));" stroke="#23445d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 80px; height: 1px; padding-top: 265px; margin-left: 2px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font color="#fcfcfc" style="color: light-dark(rgb(252, 252, 252), rgb(20, 20, 20));">Github</font></div></div></div></foreignObject><text x="42" y="269" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">Github</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-316"><g><rect x="133.75" y="225" width="80" height="30" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 240px; margin-left: 174px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_fetch<br /></font></div></div></div></foreignObject><text x="174" y="244" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">do_fetch
</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-317"><g><ellipse cx="118.75" cy="240" rx="15" ry="15" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(86, 81, 126), rgb(164, 160, 198));" stroke="#56517e" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 240px; margin-left: 105px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1" style="color: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));"><b style="font-size: 15px;">1</b></font></div></div></div></foreignObject><text x="119" y="244" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">1</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-326"><g><rect x="133.75" y="275" width="80" height="30" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 290px; margin-left: 174px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_fetch<br /></font></div></div></div></foreignObject><text x="174" y="294" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">do_fetch
</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-327"><g><ellipse cx="118.75" cy="290" rx="15" ry="15" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(86, 81, 126), rgb(164, 160, 198));" stroke="#56517e" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 290px; margin-left: 105px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1" style="color: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));"><b style="font-size: 15px;">5</b></font></div></div></div></foreignObject><text x="119" y="294" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">5</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-331"><g><rect x="1557" y="745" width="110" height="30" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 760px; margin-left: 1612px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_configure<br /></font></div></div></div></foreignObject><text x="1612" y="764" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">do_configure
</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-332"><g><ellipse cx="1542" cy="760" rx="15" ry="15" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(86, 81, 126), rgb(164, 160, 198));" stroke="#56517e" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 760px; margin-left: 1528px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1" style="color: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));"><b style="font-size: 15px;">12</b></font></div></div></div></foreignObject><text x="1542" y="764" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">12</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-333"><g><rect x="1577" y="777.5" width="90" height="30" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 793px; margin-left: 1622px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_compile<br /></font></div></div></div></foreignObject><text x="1622" y="796" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">do_compile
</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-334"><g><ellipse cx="1562" cy="792.5" rx="15" ry="15" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(86, 81, 126), rgb(164, 160, 198));" stroke="#56517e" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 793px; margin-left: 1548px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1" style="color: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));"><b style="font-size: 15px;">13</b></font></div></div></div></foreignObject><text x="1562" y="796" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">13</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-340"><g><rect x="627" y="225" width="90" height="30" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 240px; margin-left: 672px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_unpack<br /></font></div></div></div></foreignObject><text x="672" y="244" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">do_unpack
</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-341"><g><ellipse cx="612" cy="240" rx="15" ry="15" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(86, 81, 126), rgb(164, 160, 198));" stroke="#56517e" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 240px; margin-left: 598px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1" style="color: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));"><b style="font-size: 15px;">2</b></font></div></div></div></foreignObject><text x="612" y="244" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">2</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-349"><g><path d="M 1462 130 Q 1462 150 1462.07 148.64" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1461.81 153.88 L 1458.66 146.72 L 1462.07 148.64 L 1465.65 147.07 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-438"><g><path d="M 1462 130 Q 1462 140 1398.15 140 Q 1334.3 140 1334.27 148.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1334.25 153.88 L 1330.78 146.87 L 1334.27 148.63 L 1337.78 146.89 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-439"><g><path d="M 1462 130 Q 1462 140 1527 140 Q 1592 140 1592 148.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1592 153.88 L 1588.5 146.88 L 1592 148.63 L 1595.5 146.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-343"><g><rect x="1427" y="90" width="70" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 110px; margin-left: 1428px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">conf</font></div></div></div></foreignObject><text x="1462" y="114" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">conf</text></switch></g></g></g><g data-cell-id="utO5BPZsFb6q0V3ioqD--26"><g><path d="M 1287.25 165 Q 1277 165 1277 127.5 Q 1277 90 1313 90 Q 1349 90 1349 51.37" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 1349 46.12 L 1351.33 53.12 L 1349 51.37 L 1346.67 53.12 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-345"><g><rect x="1287.25" y="155" width="94" height="20" rx="3" ry="3" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 92px; height: 1px; padding-top: 165px; margin-left: 1288px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">local.conf</div></div></div></foreignObject><text x="1334" y="169" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">local.conf</text></switch></g></g></g><g data-cell-id="utO5BPZsFb6q0V3ioqD--24"><g><path d="M 1461.8 175 Q 1461.8 215 1511.9 215 Q 1562 215 1562 248.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 1562 253.88 L 1559.67 246.88 L 1562 248.63 L 1564.33 246.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-346"><g><rect x="1406.75" y="155" width="110" height="20" rx="3" ry="3" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 108px; height: 1px; padding-top: 165px; margin-left: 1408px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">bblayers.conf</div></div></div></foreignObject><text x="1462" y="169" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">bblayers.conf</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-350"><g><rect x="1676.75" y="340" width="230.25" height="150" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-dasharray="3 3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 415px; margin-left: 1678px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font style="font-size: 15px;"><b><u>S</u></b> defaults generally to <b><u>${UNPACKDIR}/${BP}</u></b><br /></font></div></div></div></foreignObject><text x="1792" y="419" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">S defaults generally to ${UNPACKDIR}/$...</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-352"><g><rect x="1557" y="675" width="110" height="40" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 695px; margin-left: 1612px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_patch<br /><i>(No patches)</i><br /></font></div></div></div></foreignObject><text x="1612" y="699" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">do_patch...</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-353"><g><ellipse cx="1542" cy="695" rx="15" ry="15" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(86, 81, 126), rgb(164, 160, 198));" stroke="#56517e" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 695px; margin-left: 1528px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1" style="color: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));"><b style="font-size: 15px;">3</b></font></div></div></div></foreignObject><text x="1542" y="699" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">3</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-354"><g><ellipse cx="1145" cy="935" rx="15" ry="15" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(86, 81, 126), rgb(164, 160, 198));" stroke="#56517e" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 935px; margin-left: 1131px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1" style="color: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));"><b style="font-size: 15px;">4</b></font></div></div></div></foreignObject><text x="1145" y="939" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">4</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-356"><g><rect x="1731.75" y="890" width="90" height="30" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 905px; margin-left: 1777px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_install<br /></font></div></div></div></foreignObject><text x="1777" y="909" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">do_install
</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-357"><g><ellipse cx="1717" cy="905" rx="15" ry="15" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(86, 81, 126), rgb(164, 160, 198));" stroke="#56517e" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 905px; margin-left: 1703px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1" style="color: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));"><b style="font-size: 15px;">14</b></font></div></div></div></foreignObject><text x="1717" y="909" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">14</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-362"><g><path d="M 2088.51 580 L 2088.51 653.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2088.51 658.88 L 2086.17 651.88 L 2088.51 653.63 L 2090.84 651.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-358"><g><rect x="2057" y="540" width="63" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 61px; height: 1px; padding-top: 560px; margin-left: 2058px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">package</font></div></div></div></foreignObject><text x="2089" y="564" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">package</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-359"><g><rect x="2110.26" y="565" width="36.74" height="25" rx="3.75" ry="3.75" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 35px; height: 1px; padding-top: 578px; margin-left: 2111px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">PKGD</font></div></div></div></foreignObject><text x="2129" y="581" fill="#ffffff" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle" font-weight="bold">PKGD</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-384"><g><path d="M 2115.44 900 Q 2115.4 940 2196.2 940 Q 2277 940 2277 910.1" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2277 903.35 L 2281.5 912.35 L 2277 910.1 L 2272.5 912.35 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-361"><g><rect x="2034.63" y="660" width="107.75" height="240" rx="16.16" ry="16.16" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" stroke-dasharray="3 3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 106px; height: 1px; padding-top: 780px; margin-left: 2036px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">A copy of <b>${D}<br /></b>excluding<br /><b>/sysroot-only</b></div></div></div></foreignObject><text x="2089" y="784" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">A copy of ${D}...</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-364"><g><rect x="1990.24" y="920" width="90" height="30" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 935px; margin-left: 2035px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_package<br /></font></div></div></div></foreignObject><text x="2035" y="939" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">do_package
</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-365"><g><ellipse cx="1975.49" cy="935" rx="15" ry="15" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(86, 81, 126), rgb(164, 160, 198));" stroke="#56517e" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 935px; margin-left: 1961px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1" style="color: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));"><b style="font-size: 15px;">15</b></font></div></div></div></foreignObject><text x="1975" y="939" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">15</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-381"><g><path d="M 2277 580 L 2277 653.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2277 658.88 L 2274.67 651.88 L 2277 653.63 L 2279.33 651.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-366"><g><rect x="2217" y="540" width="120" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 560px; margin-left: 2218px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">packages-split</font></div></div></div></foreignObject><text x="2277" y="564" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">packages-split</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-367"><g><rect x="2327" y="565" width="60" height="25" rx="3.75" ry="3.75" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 578px; margin-left: 2328px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">PKGDEST</font></div></div></div></foreignObject><text x="2357" y="581" fill="#ffffff" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle" font-weight="bold">PKGDEST</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-377"><g><path d="M 2277 710 L 2277 723.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2277 728.88 L 2274.67 721.88 L 2277 723.63 L 2279.33 721.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-369"><g><rect x="2245.5" y="670" width="63" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 61px; height: 1px; padding-top: 690px; margin-left: 2247px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">sayhello</font></div></div></div></foreignObject><text x="2277" y="694" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">sayhello</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-372"><g><path d="M 2277.1 770 L 2277.1 780 Q 2277.1 790 2277.09 790.57 L 2277.08 791.13" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2277.01 796.38 L 2274.78 789.35 L 2277.08 791.13 L 2279.44 789.42 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-373"><g><rect x="2255.25" y="730" width="43.5" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 42px; height: 1px; padding-top: 750px; margin-left: 2256px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">usr</font></div></div></div></foreignObject><text x="2277" y="754" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">usr</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-374"><g><path d="M 2276.99 837.5 L 2276.99 853.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2276.99 858.88 L 2274.66 851.88 L 2276.99 853.63 L 2279.33 851.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-375"><g><rect x="2250.12" y="797.5" width="53.75" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 52px; height: 1px; padding-top: 818px; margin-left: 2251px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">bin</font></div></div></div></foreignObject><text x="2277" y="821" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">bin</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-382"><g><rect x="1922.37" y="340" width="321.75" height="148.75" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-dasharray="3 3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 320px; height: 1px; padding-top: 414px; margin-left: 1923px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-size: 15px;">Folders created here are present in <b><u>PACKAGES</u></b> variable, BitBake knows what and where to put things using the <b><u>FILES</u></b> variable, example: <b><u>FILES:${PN}</u></b> files will go to <b><u>${PN}</u></b> folder which is in <b><u>PACKAGES</u></b></span></div></div></div></foreignObject><text x="2083" y="418" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">Folders created here are present in PACKAGES variable...</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-385"><g><rect x="2160.12" y="920" width="90" height="30" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 935px; margin-left: 2205px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_package<br /></font></div></div></div></foreignObject><text x="2205" y="939" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">do_package
</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-386"><g><ellipse cx="2145.37" cy="935" rx="15" ry="15" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(86, 81, 126), rgb(164, 160, 198));" stroke="#56517e" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 935px; margin-left: 2131px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1" style="color: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));"><b style="font-size: 15px;">16</b></font></div></div></div></foreignObject><text x="2145" y="939" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">16</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-390"><g><path d="M 2497 580 L 2497 668.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2497 673.88 L 2494.67 666.88 L 2497 668.63 L 2499.33 666.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-387"><g><rect x="2437" y="540" width="120" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 560px; margin-left: 2438px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">deploy-<b><i>pkg</i></b></font></div></div></div></foreignObject><text x="2497" y="564" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">deploy-pkg</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-396"><g><path d="M 2497 715 L 2497 753.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 2497 758.88 L 2494.67 751.88 L 2497 753.63 L 2499.33 751.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-389"><g><rect x="2437" y="675" width="120" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 695px; margin-left: 2438px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter"><b>${PACKAGE_ARCH}</b></font></div></div></div></foreignObject><text x="2497" y="699" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">${PACKAGE_ARCH}</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-393"><g><rect x="2257" y="340" width="410" height="148.75" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-dasharray="3 3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 408px; height: 1px; padding-top: 414px; margin-left: 2258px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font style="font-size: 15px;">This can be <b><u>rpms</u></b>, <b><u>debs</u></b> or <b><u>ipks</u></b>.<br />These are provided by<br /><b><u>package_rpm</u></b>, <b><u>package_deb</u></b> and <b><u>package_ipk</u></b> classes respectively, use <b><u>PACKAGE_CLASSES</u></b> for that as<br />content of <b><u>PACKAGE_CLASSES</u></b> will be appended<br />to <b><u>INHERIT</u></b><br /></font></div></div></div></foreignObject><text x="2462" y="418" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">This can be rpms, debs or ipks....</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-415"><g><path d="M 2630.5 776.25 L 2677 776.29 Q 2687 776.3 2687 766.3 L 2687 330 Q 2687 320 2677 320 L 1838.5 320 Q 1828.5 320 1828.5 310 L 1828.5 295.1" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1828.5 288.35 L 1833 297.35 L 1828.5 295.1 L 1824 297.35 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="#000000" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-395"><g><rect x="2363.5" y="760" width="267" height="32.5" rx="4.88" ry="4.88" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 265px; height: 1px; padding-top: 776px; margin-left: 2365px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">sayhello-0.1-r0.${PACKAGE_ARCH}.<i>pkg</i></div></div></div></foreignObject><text x="2497" y="780" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">sayhello-0.1-r0.${PACKAGE_ARCH}.pkg</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-397"><g><rect x="2697" y="660" width="370" height="170" fill="none" stroke="#36393d" style="stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke-dasharray="3 3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 368px; height: 1px; padding-top: 745px; margin-left: 2698px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font style="font-size: 15px;">This task also depends on <b><u>PACKAGE_CLASSES</u></b>,<br /><b><u><i>pkg</i></u></b> can be <b><u>rpm</u></b>, <b><u>deb</u></b> or <b><u>ipk</u></b> for <b><u>package_rpm</u></b>,<br /><b><u>package_deb</u></b> or <u style="font-weight: bold;">package_ipk</u> respectively.<br />The generated package generally named using:<br /><b><u>${PN}</u></b>, <b><u>${PR}</u></b>, <b><u>${PACKAGE_ARCH}</u></b> and <b><u><i>pkg</i></u></b><br /></font></div></div></div></foreignObject><text x="2882" y="749" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">This task also depends on PACKAGE_CLASSES,...</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-404"><g><path d="M 1828.5 130 L 1828.5 163.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1828.5 168.88 L 1825 161.88 L 1828.5 163.63 L 1832 161.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="utO5BPZsFb6q0V3ioqD--21"><g><path d="M 1863.5 110 Q 1863.5 110 1935.63 110" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 1940.88 110 L 1933.88 112.33 L 1935.63 110 L 1933.88 107.67 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-401"><g><rect x="1793.5" y="90" width="70" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 110px; margin-left: 1795px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">deploy</font></div></div></div></foreignObject><text x="1829" y="114" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">deploy</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-414"><g><path d="M 1828.5 210 L 1828.5 220 Q 1828.5 230 1828.5 227.5 L 1828.5 226.25 Q 1828.5 225 1828.5 231.82 L 1828.5 238.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1828.5 243.88 L 1825 236.88 L 1828.5 238.63 L 1832 236.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-403"><g><rect x="1763.62" y="170" width="129.75" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 190px; margin-left: 1765px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b>${DEPLOY_DIR_<i>pkg</i>}</b></div></div></div></foreignObject><text x="1828" y="194" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">${DEPLOY_DIR_pkg}</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-408"><g><rect x="2372" y="920" width="150" height="30" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 935px; margin-left: 2447px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_package_write_<i>pkg</i><br /></font></div></div></div></foreignObject><text x="2447" y="939" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">do_package_write_pkg
</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-409"><g><ellipse cx="2352" cy="935" rx="15" ry="15" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(86, 81, 126), rgb(164, 160, 198));" stroke="#56517e" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 935px; margin-left: 2338px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1" style="color: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));"><b style="font-size: 15px;">17</b></font></div></div></div></foreignObject><text x="2352" y="939" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">17</text></switch></g></g></g><g data-cell-id="utO5BPZsFb6q0V3ioqD--11"><g><path d="M 2512 935 Q 2882 935 2882 836.37" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 2882 831.12 L 2884.33 838.12 L 2882 836.37 L 2879.67 838.12 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-413"><g><rect x="1768.5" y="245" width="120" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 265px; margin-left: 1770px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">${PACKAGE_ARCH}</div></div></div></foreignObject><text x="1829" y="269" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">${PACKAGE_ARCH}</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-416"><g><rect x="1942" y="168.13" width="415" height="41.87" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-dasharray="3 3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 413px; height: 1px; padding-top: 189px; margin-left: 1943px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font style="font-size: 15px;">For packages, this can be <b><u>IPK</u></b>, <b><u>RPM</u></b> or <b><u>DEB</u></b> (<i>check step 17</i>)</font></div></div></div></foreignObject><text x="2150" y="193" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">For packages, this can be IPK, RPM or DEB (check step 17)</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-417"><g><rect x="1842.37" y="120" width="80" height="25" rx="3.75" ry="3.75" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 133px; margin-left: 1843px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">DEPLOY_DIR</font></div></div></div></foreignObject><text x="1882" y="136" fill="#ffffff" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle" font-weight="bold">DEPLOY_DIR</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-418"><g><rect x="1247" y="20" width="60" height="25" rx="3.75" ry="3.75" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 33px; margin-left: 1248px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">TMPDIR</font></div></div></div></foreignObject><text x="1277" y="36" fill="#ffffff" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle" font-weight="bold">TMPDIR</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-419"><g><rect x="417" y="120" width="62.68" height="25" rx="3.75" ry="3.75" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 61px; height: 1px; padding-top: 133px; margin-left: 418px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">DL_DIR</font></div></div></div></foreignObject><text x="448" y="136" fill="#ffffff" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle" font-weight="bold">DL_DIR</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-422"><g><path d="M 1893.37 190 L 1907.7 190 Q 1917.7 190 1926.67 189.65 L 1935.64 189.31" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 1940.88 189.11 L 1933.98 191.71 L 1935.64 189.31 L 1933.8 187.05 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-424"><g><rect x="2622" y="595" width="150" height="30" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 610px; margin-left: 2697px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">do_package_write_<i>pkg</i><br /></font></div></div></div></foreignObject><text x="2697" y="614" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">do_package_write_pkg
</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-425"><g><ellipse cx="2602" cy="610" rx="15" ry="15" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); stroke: light-dark(rgb(86, 81, 126), rgb(164, 160, 198));" stroke="#56517e" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 28px; height: 1px; padding-top: 610px; margin-left: 2588px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter" color="#ffffff" size="1" style="color: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));"><b style="font-size: 15px;">18</b></font></div></div></div></foreignObject><text x="2602" y="614" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">18</text></switch></g></g></g><g data-cell-id="utO5BPZsFb6q0V3ioqD--8"><g><path d="M 2567 577.5 Q 2720 577.5 2720 499.75 Q 2720 422 2719.68 285.12" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 2719.66 279.87 L 2722.01 286.86 L 2719.68 285.12 L 2717.35 286.87 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-427"><g><rect x="2537" y="565" width="30" height="25" rx="3.75" ry="3.75" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="none" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-428"><g><path d="M 2522 550 Q 2522 519.4 2543.25 519.4 Q 2564.5 519.4 2564.5 495.12" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 2564.5 489.87 L 2566.83 496.87 L 2564.5 495.12 L 2562.17 496.87 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-429"><g><rect x="2407" y="201.25" width="416.88" height="77.5" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-dasharray="3 3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 415px; height: 1px; padding-top: 240px; margin-left: 2408px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font style="font-size: 15px;">This can be <b><u>PKGWRITEDIRRPM</u></b>, <b><u>PKGWRITEDIRDEB</u></b> or <b><u>PKGWRITEDIRIPK</u></b> for <b><u>package_rpm</u></b>, <b><u>package_deb</u></b><br />or <b><u>package_ipk</u></b> respectively<br /></font></div></div></div></foreignObject><text x="2615" y="244" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">This can be PKGWRITEDIRRPM, PKGWRITEDIRDEB or PKGWRITEDIRIPK for pack...</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-432"><g><rect x="157" y="617.5" width="328.25" height="102.5" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-dasharray="3 3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 326px; height: 1px; padding-top: 669px; margin-left: 158px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-size: 15px;">License checking happens in <b><u>do_populate_lic</u></b> after <b><u>do_patch<br /></u></b>and before that a checksum check<br />happends on <b><u>LIC_FILES_CHKSUM</u></b> if the<br />license is not <b><u>CLOSED</u></b><br /></span></div></div></div></foreignObject><text x="321" y="672" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">License checking happens in do_populate_lic after do_pa...</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-434"><g><rect x="882.12" y="340" width="434.88" height="70" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-dasharray="3 3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 433px; height: 1px; padding-top: 375px; margin-left: 883px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-size: 15px;">This variable is used to separate recipes<br />based on their target. This has value of<br /><b><u>${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}</u></b><br /></span></div></div></div></foreignObject><text x="1100" y="379" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">This variable is used to separate recipes...</text></switch></g></g></g><g data-cell-id="utO5BPZsFb6q0V3ioqD--28"><g><path d="M 1647 165 Q 1715.8 165 1715.84 126.37" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 1715.85 121.12 L 1718.17 128.12 L 1715.84 126.37 L 1713.51 128.12 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-436"><g><rect x="1537" y="155" width="110" height="20" rx="3" ry="3" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 108px; height: 1px; padding-top: 165px; margin-left: 1538px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">conf-notes.txt</div></div></div></foreignObject><text x="1592" y="169" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">conf-notes.txt</text></switch></g></g></g><g data-cell-id="utO5BPZsFb6q0V3ioqD--16"><g><path d="M 645.01 130 Q 645 165 760.63 165" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 765.88 165 L 758.88 167.33 L 760.63 165 L 758.88 162.67 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="utO5BPZsFb6q0V3ioqD--18"><g><path d="M 593.5 110 Q 553.8 110 553.75 51.37" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 553.75 46.12 L 556.09 53.12 L 553.75 51.37 L 551.42 53.12 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-440"><g><rect x="593.5" y="90" width="103.01" height="40" rx="6" ry="6" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 101px; height: 1px; padding-top: 110px; margin-left: 595px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">sstate-cache</font></div></div></div></foreignObject><text x="645" y="114" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">sstate-cache</text></switch></g></g></g><g data-cell-id="eV5wDCu3Df9HtTySJIbg-442"><g><rect x="660.98" y="120" width="83.01" height="25" rx="3.75" ry="3.75" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 81px; height: 1px; padding-top: 133px; margin-left: 662px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#ffffff, #121212); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; "><font data-font-src="https://fonts.googleapis.com/css?family=Architects+Daughter">SSTATE_DIR</font></div></div></div></foreignObject><text x="702" y="136" fill="#ffffff" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle" font-weight="bold">SSTATE_DIR</text></switch></g></g></g><g data-cell-id="utO5BPZsFb6q0V3ioqD--10"><g><rect x="2231.99" y="860" width="90" height="27.5" rx="4.13" ry="4.13" fill="#eeeeee" style="fill: light-dark(rgb(238, 238, 238), rgb(32, 32, 32)); stroke: light-dark(rgb(54, 57, 61), rgb(186, 189, 192));" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 874px; margin-left: 2233px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">sayhello</div></div></div></foreignObject><text x="2277" y="877" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">sayhello</text></switch></g></g></g><g data-cell-id="utO5BPZsFb6q0V3ioqD--13"><g><path d="M 1165 490 Q 1165 575 1226.1 575 Q 1287.2 575 1287.23 652.91" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 1287.23 658.16 L 1284.89 651.16 L 1287.23 652.91 L 1289.56 651.16 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="utO5BPZsFb6q0V3ioqD--15"><g><rect x="767" y="120" width="410" height="90" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-dasharray="3 3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 408px; height: 1px; padding-top: 165px; margin-left: 768px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-size: 15px;">This folder contains cache for recipes build output, this is used by BitBake, if the recipe checksum did not change it knows that the output to use is the same.<br /></span></div></div></div></foreignObject><text x="972" y="169" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">This folder contains cache for recipes build output, this is used by...</text></switch></g></g></g><g data-cell-id="utO5BPZsFb6q0V3ioqD--17"><g><rect x="348.75" y="0" width="410" height="45" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-dasharray="3 3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 408px; height: 1px; padding-top: 23px; margin-left: 350px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-size: 15px;"><font data-font-src="https://fonts.googleapis.com/css?family=Liberation+Sans">These directories can be shared accross builds to save disk space and build time</font><br /></span></div></div></div></foreignObject><text x="554" y="26" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">These directories can be shared accross builds to save disk space an...</text></switch></g></g></g><g data-cell-id="utO5BPZsFb6q0V3ioqD--20"><g><rect x="1942" y="87.5" width="416.88" height="45" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-dasharray="3 3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 415px; height: 1px; padding-top: 110px; margin-left: 1943px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font style="font-size: 15px;">This directory contains other output directories such as <b><u>images</u></b>, <b><u>sdk</u></b> and <b><u>licenses</u></b><br /></font></div></div></div></foreignObject><text x="2150" y="114" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">This directory contains other output directories such as images, sdk...</text></switch></g></g></g><g data-cell-id="utO5BPZsFb6q0V3ioqD--22"><g><rect x="1477" y="255" width="170" height="130" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-dasharray="3 3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 320px; margin-left: 1478px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font style="font-size: 15px;">This file contains all <b>layers</b> that BitBake should consider when looking for metadata.<br /></font></div></div></div></foreignObject><text x="1562" y="324" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">This file contains all layer...</text></switch></g></g></g><g data-cell-id="utO5BPZsFb6q0V3ioqD--25"><g><rect x="1349" y="5" width="440" height="40" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-dasharray="3 3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 438px; height: 1px; padding-top: 25px; margin-left: 1350px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font style="font-size: 15px;">This is base configuration file containing essential user config such as <b><u>MACHINE</u></b> and <b><u>DISTRO</u></b><br /></font></div></div></div></foreignObject><text x="1569" y="29" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">This is base configuration file containing essential user config such as...</text></switch></g></g></g><g data-cell-id="utO5BPZsFb6q0V3ioqD--27"><g><rect x="1535" y="80" width="241.13" height="40" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-dasharray="3 3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 239px; height: 1px; padding-top: 100px; margin-left: 1536px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: "Liberation Sans"; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font style="font-size: 15px;">The message to show after <b>source oe-init-build-env</b><br /></font></div></div></div></foreignObject><text x="1656" y="104" fill="light-dark(#000000, #ffffff)" font-family=""Liberation Sans"" font-size="12px" text-anchor="middle">The message to show after source oe-init...</text></switch></g></g></g><g data-cell-id="IR5jgyizBFApjn6Bth0e-1"><g><rect x="2737" y="600" width="30" height="20" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" pointer-events="all"/></g></g><g data-cell-id="IR5jgyizBFApjn6Bth0e-2"><g><rect x="2587" y="766.25" width="20" height="20" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" pointer-events="all"/></g></g><g data-cell-id="IR5jgyizBFApjn6Bth0e-3"><g><rect x="2487" y="925" width="25" height="20" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" pointer-events="all"/></g></g><g data-cell-id="IR5jgyizBFApjn6Bth0e-4"><g><rect x="2507" y="550" width="20" height="20" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" pointer-events="all"/></g></g><g data-cell-id="IR5jgyizBFApjn6Bth0e-5"><g><rect x="1863.5" y="181.25" width="20" height="20" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" pointer-events="all"/></g></g></g></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg> \ No newline at end of file |
diff --git a/documentation/overview-manual/svg/configuration-compile-autoreconf.svg b/documentation/overview-manual/svg/configuration-compile-autoreconf.svg index c0de45681a..3be08018cb 100644 --- a/documentation/overview-manual/svg/configuration-compile-autoreconf.svg +++ b/documentation/overview-manual/svg/configuration-compile-autoreconf.svg | |||
@@ -1277,12 +1277,12 @@ | |||
1277 | x="287.2186" | 1277 | x="287.2186" |
1278 | y="300.76147" | 1278 | y="300.76147" |
1279 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" | 1279 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" |
1280 | id="tspan21"> sources-unpack <───────────────────── UNPACKDIR</tspan><tspan | 1280 | id="tspan21"> sources <──────────────────────────── UNPACKDIR</tspan><tspan |
1281 | sodipodi:role="line" | 1281 | sodipodi:role="line" |
1282 | x="287.2186" | 1282 | x="287.2186" |
1283 | y="314.09485" | 1283 | y="314.09485" |
1284 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" | 1284 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" |
1285 | id="tspan22"> ${BP} <────────────────────────────── S / B</tspan><tspan | 1285 | id="tspan22"> ${BP} <──────────────────────────── S / B</tspan><tspan |
1286 | sodipodi:role="line" | 1286 | sodipodi:role="line" |
1287 | x="287.2186" | 1287 | x="287.2186" |
1288 | y="327.42822" | 1288 | y="327.42822" |
@@ -1322,12 +1322,12 @@ | |||
1322 | x="287.2186" | 1322 | x="287.2186" |
1323 | y="420.76184" | 1323 | y="420.76184" |
1324 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" | 1324 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" |
1325 | id="tspan35"> sources-unpack <───────────────────── UNPACKDIR</tspan><tspan | 1325 | id="tspan35"> sources <──────────────────────────── UNPACKDIR</tspan><tspan |
1326 | sodipodi:role="line" | 1326 | sodipodi:role="line" |
1327 | x="287.2186" | 1327 | x="287.2186" |
1328 | y="434.09521" | 1328 | y="434.09521" |
1329 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" | 1329 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" |
1330 | id="tspan36"> ${BP} <────────────────────────────── S / B</tspan><tspan | 1330 | id="tspan36"> ${BP} <──────────────────────────── S / B</tspan><tspan |
1331 | sodipodi:role="line" | 1331 | sodipodi:role="line" |
1332 | x="287.2186" | 1332 | x="287.2186" |
1333 | y="447.42859" | 1333 | y="447.42859" |
diff --git a/documentation/overview-manual/svg/patching.svg b/documentation/overview-manual/svg/patching.svg index b0de175a20..5c56b5ac23 100644 --- a/documentation/overview-manual/svg/patching.svg +++ b/documentation/overview-manual/svg/patching.svg | |||
@@ -1074,12 +1074,12 @@ | |||
1074 | x="283.34647" | 1074 | x="283.34647" |
1075 | y="318.12881" | 1075 | y="318.12881" |
1076 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" | 1076 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" |
1077 | id="tspan21"> sources-unpack <──────────────────── UNPACKDIR</tspan><tspan | 1077 | id="tspan21"> sources <─────────────────────────── UNPACKDIR</tspan><tspan |
1078 | sodipodi:role="line" | 1078 | sodipodi:role="line" |
1079 | x="283.34647" | 1079 | x="283.34647" |
1080 | y="331.46219" | 1080 | y="331.46219" |
1081 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" | 1081 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" |
1082 | id="tspan31"> ${BP} <───────────────────────────── S</tspan><tspan | 1082 | id="tspan31"> ${BP} <─────────────────────────── S</tspan><tspan |
1083 | sodipodi:role="line" | 1083 | sodipodi:role="line" |
1084 | x="283.34647" | 1084 | x="283.34647" |
1085 | y="344.79556" | 1085 | y="344.79556" |
@@ -1099,12 +1099,12 @@ | |||
1099 | x="283.34647" | 1099 | x="283.34647" |
1100 | y="384.79568" | 1100 | y="384.79568" |
1101 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" | 1101 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" |
1102 | id="tspan35"> sources-unpack <──────────────────── UNPACKDIR</tspan><tspan | 1102 | id="tspan35"> sources <─────────────────────────── UNPACKDIR</tspan><tspan |
1103 | sodipodi:role="line" | 1103 | sodipodi:role="line" |
1104 | x="283.34647" | 1104 | x="283.34647" |
1105 | y="398.12906" | 1105 | y="398.12906" |
1106 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" | 1106 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" |
1107 | id="tspan47"> ${BP} <───────────────────────────── S</tspan></text> | 1107 | id="tspan47"> ${BP} <─────────────────────────── S</tspan></text> |
1108 | <text | 1108 | <text |
1109 | xml:space="preserve" | 1109 | xml:space="preserve" |
1110 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.8889px;line-height:125%;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.42682px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | 1110 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.8889px;line-height:125%;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.42682px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" |
diff --git a/documentation/overview-manual/svg/source-fetching.svg b/documentation/overview-manual/svg/source-fetching.svg index b7bab32773..39d7e0c2a7 100644 --- a/documentation/overview-manual/svg/source-fetching.svg +++ b/documentation/overview-manual/svg/source-fetching.svg | |||
@@ -1017,12 +1017,12 @@ | |||
1017 | x="281.13275" | 1017 | x="281.13275" |
1018 | y="317.37775" | 1018 | y="317.37775" |
1019 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" | 1019 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" |
1020 | id="tspan22"> sources-unpack <─────────────────────── UNPACKDIR</tspan><tspan | 1020 | id="tspan22"> sources <────────────────────────────── UNPACKDIR</tspan><tspan |
1021 | sodipodi:role="line" | 1021 | sodipodi:role="line" |
1022 | x="281.13275" | 1022 | x="281.13275" |
1023 | y="330.71112" | 1023 | y="330.71112" |
1024 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" | 1024 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" |
1025 | id="tspan32"> ${BP} <──────────────────────────────── S</tspan><tspan | 1025 | id="tspan32"> ${BP} <────────────────────────────── S</tspan><tspan |
1026 | sodipodi:role="line" | 1026 | sodipodi:role="line" |
1027 | x="281.13275" | 1027 | x="281.13275" |
1028 | y="344.04449" | 1028 | y="344.04449" |
@@ -1042,12 +1042,12 @@ | |||
1042 | x="281.13275" | 1042 | x="281.13275" |
1043 | y="384.04462" | 1043 | y="384.04462" |
1044 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" | 1044 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" |
1045 | id="tspan36"> sources-unpack <─────────────────────── UNPACKDIR</tspan><tspan | 1045 | id="tspan36"> sources <────────────────────────────── UNPACKDIR</tspan><tspan |
1046 | sodipodi:role="line" | 1046 | sodipodi:role="line" |
1047 | x="281.13275" | 1047 | x="281.13275" |
1048 | y="397.37799" | 1048 | y="397.37799" |
1049 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" | 1049 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Mono PS';-inkscape-font-specification:'Nimbus Mono PS, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;text-anchor:start;stroke:none;stroke-width:1.42682px" |
1050 | id="tspan44"> ${BP} <──────────────────────────────── S</tspan></text> | 1050 | id="tspan44"> ${BP} <────────────────────────────── S</tspan></text> |
1051 | <text | 1051 | <text |
1052 | xml:space="preserve" | 1052 | xml:space="preserve" |
1053 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5555px;line-height:125%;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.42682px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | 1053 | style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5555px;line-height:125%;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.42682px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" |
diff --git a/documentation/ref-manual/classes.rst b/documentation/ref-manual/classes.rst index f2f6e6e411..4705ca3f4d 100644 --- a/documentation/ref-manual/classes.rst +++ b/documentation/ref-manual/classes.rst | |||
@@ -1591,6 +1591,10 @@ The tests you can list with the :term:`WARN_QA` and | |||
1591 | For example, assignments such as ``FILES:${PN} = "xyz"`` effectively | 1591 | For example, assignments such as ``FILES:${PN} = "xyz"`` effectively |
1592 | turn into ``FILES = "xyz"``. | 1592 | turn into ``FILES = "xyz"``. |
1593 | 1593 | ||
1594 | - ``recipe-naming:`` Checks that the recipe name and recipe class match, so | ||
1595 | that ``*-native`` recipes inherit :ref:`ref-classes-native` and | ||
1596 | ``nativesdk-*`` recipes inherit :ref:`ref-classes-nativesdk`. | ||
1597 | |||
1594 | - ``rpaths:`` Checks for rpaths in the binaries that contain build | 1598 | - ``rpaths:`` Checks for rpaths in the binaries that contain build |
1595 | system paths such as :term:`TMPDIR`. If this test fails, bad ``-rpath`` | 1599 | system paths such as :term:`TMPDIR`. If this test fails, bad ``-rpath`` |
1596 | options are being passed to the linker commands and your binaries | 1600 | options are being passed to the linker commands and your binaries |
diff --git a/documentation/ref-manual/structure.rst b/documentation/ref-manual/structure.rst index 2190f5b90e..d6dbb29401 100644 --- a/documentation/ref-manual/structure.rst +++ b/documentation/ref-manual/structure.rst | |||
@@ -611,7 +611,7 @@ example, consider ``linux-yocto-kernel-3.0`` on the machine ``qemux86`` | |||
611 | built within the Yocto Project. For this package, a work directory of | 611 | built within the Yocto Project. For this package, a work directory of |
612 | ``tmp/work/qemux86-poky-linux/linux-yocto/3.0+git1+<.....>``, referred | 612 | ``tmp/work/qemux86-poky-linux/linux-yocto/3.0+git1+<.....>``, referred |
613 | to as the :term:`WORKDIR`, is created. Within this directory, the source is | 613 | to as the :term:`WORKDIR`, is created. Within this directory, the source is |
614 | unpacked to ``linux-qemux86-standard-build`` and then patched by Quilt. | 614 | unpacked to ``sources/linux-qemux86-standard-build`` and then patched by Quilt. |
615 | (See the ":ref:`dev-manual/quilt:using quilt in your workflow`" section in | 615 | (See the ":ref:`dev-manual/quilt:using quilt in your workflow`" section in |
616 | the Yocto Project Development Tasks Manual for more information.) Within | 616 | the Yocto Project Development Tasks Manual for more information.) Within |
617 | the ``linux-qemux86-standard-build`` directory, standard Quilt | 617 | the ``linux-qemux86-standard-build`` directory, standard Quilt |
diff --git a/documentation/ref-manual/tasks.rst b/documentation/ref-manual/tasks.rst index d85d1151f0..e379c424d8 100644 --- a/documentation/ref-manual/tasks.rst +++ b/documentation/ref-manual/tasks.rst | |||
@@ -412,8 +412,7 @@ them. You can learn more by looking at the | |||
412 | ------------- | 412 | ------------- |
413 | 413 | ||
414 | Unpacks the source code into a working directory pointed to by | 414 | Unpacks the source code into a working directory pointed to by |
415 | ``${``\ :term:`UNPACKDIR`\ ``}``. A legacy way to specify | 415 | ``${``\ :term:`UNPACKDIR`\ ``}``. |
416 | this directory is through the :term:`S` and :term:`WORKDIR` variables. | ||
417 | For more information on how source files are unpacked, see the | 416 | For more information on how source files are unpacked, see the |
418 | ":ref:`overview-manual/concepts:source fetching`" | 417 | ":ref:`overview-manual/concepts:source fetching`" |
419 | section in the Yocto Project Overview and Concepts Manual. | 418 | section in the Yocto Project Overview and Concepts Manual. |
diff --git a/documentation/ref-manual/variables.rst b/documentation/ref-manual/variables.rst index c6ae3fb8bc..c56418e2a2 100644 --- a/documentation/ref-manual/variables.rst +++ b/documentation/ref-manual/variables.rst | |||
@@ -265,7 +265,7 @@ system and gives an overview of their function and contents. | |||
265 | build process. By default, this directory is the same as the | 265 | build process. By default, this directory is the same as the |
266 | :term:`S` directory, which is defined as:: | 266 | :term:`S` directory, which is defined as:: |
267 | 267 | ||
268 | S = "${WORKDIR}/${BP}" | 268 | S = "${UNPACKDIR}/${BP}" |
269 | 269 | ||
270 | You can separate the (:term:`S`) directory and the directory pointed to | 270 | You can separate the (:term:`S`) directory and the directory pointed to |
271 | by the :term:`B` variable. Most Autotools-based recipes support | 271 | by the :term:`B` variable. Most Autotools-based recipes support |
@@ -560,6 +560,13 @@ system and gives an overview of their function and contents. | |||
560 | :term:`BB_GENERATE_SHALLOW_TARBALLS` | 560 | :term:`BB_GENERATE_SHALLOW_TARBALLS` |
561 | See :term:`bitbake:BB_GENERATE_SHALLOW_TARBALLS` in the BitBake manual. | 561 | See :term:`bitbake:BB_GENERATE_SHALLOW_TARBALLS` in the BitBake manual. |
562 | 562 | ||
563 | :term:`BB_GIT_DEFAULT_DESTSUFFIX` | ||
564 | See :term:`bitbake:BB_GIT_DEFAULT_DESTSUFFIX` in the BitBake manual. | ||
565 | |||
566 | In :term:`OpenEmbedded-Core (OE-Core)`, this variable is set to | ||
567 | :term:`BP` by default in :oe_git:`bitbake.conf | ||
568 | </openembedded-core/tree/meta/conf/bitbake.conf>`. | ||
569 | |||
563 | :term:`BB_GIT_SHALLOW` | 570 | :term:`BB_GIT_SHALLOW` |
564 | See :term:`bitbake:BB_GIT_SHALLOW` in the BitBake manual. | 571 | See :term:`bitbake:BB_GIT_SHALLOW` in the BitBake manual. |
565 | 572 | ||
@@ -5350,6 +5357,27 @@ system and gives an overview of their function and contents. | |||
5350 | the :term:`KERNEL_PATH` variable. Both variables are common variables | 5357 | the :term:`KERNEL_PATH` variable. Both variables are common variables |
5351 | used by external Makefiles to point to the kernel source directory. | 5358 | used by external Makefiles to point to the kernel source directory. |
5352 | 5359 | ||
5360 | :term:`KERNEL_SPLIT_MODULES` | ||
5361 | When inheriting the :ref:`ref-classes-kernel-module-split` class, this | ||
5362 | variable controls whether kernel modules are split into separate packages | ||
5363 | or bundled into a single package. | ||
5364 | |||
5365 | For some use cases, a monolithic kernel module package | ||
5366 | :term:`KERNEL_PACKAGE_NAME` that contains all modules built from the | ||
5367 | kernel sources may be preferred to speed up the installation. | ||
5368 | |||
5369 | By default, this variable is set to ``1``, resulting in one package per | ||
5370 | module. Setting it to any other value will generate a single monolithic | ||
5371 | package containing all kernel modules. | ||
5372 | |||
5373 | .. note:: | ||
5374 | |||
5375 | If :term:`KERNEL_SPLIT_MODULES` is set to 0, it is still possible to | ||
5376 | install all kernel modules at once by adding ``kernel-modules`` (assuming | ||
5377 | :term:`KERNEL_PACKAGE_NAME` is ``kernel-modules``) to :term:`IMAGE_INSTALL`. | ||
5378 | The way it works is that a placeholder "kernel-modules" package will be | ||
5379 | created and will depend on every other individual kernel module packages. | ||
5380 | |||
5353 | :term:`KERNEL_SRC` | 5381 | :term:`KERNEL_SRC` |
5354 | The location of the kernel sources. This variable is set to the value | 5382 | The location of the kernel sources. This variable is set to the value |
5355 | of the :term:`STAGING_KERNEL_DIR` within the :ref:`ref-classes-module` | 5383 | of the :term:`STAGING_KERNEL_DIR` within the :ref:`ref-classes-module` |
@@ -8039,7 +8067,7 @@ system and gives an overview of their function and contents. | |||
8039 | :term:`S` | 8067 | :term:`S` |
8040 | The location in the :term:`Build Directory` where | 8068 | The location in the :term:`Build Directory` where |
8041 | unpacked recipe source code resides. By default, this directory is | 8069 | unpacked recipe source code resides. By default, this directory is |
8042 | ``${``\ :term:`WORKDIR`\ ``}/${``\ :term:`BPN`\ ``}-${``\ :term:`PV`\ ``}``, | 8070 | ``${``\ :term:`UNPACKDIR`\ ``}/${``\ :term:`BPN`\ ``}-${``\ :term:`PV`\ ``}``, |
8043 | where ``${BPN}`` is the base recipe name and ``${PV}`` is the recipe | 8071 | where ``${BPN}`` is the base recipe name and ``${PV}`` is the recipe |
8044 | version. If the source tarball extracts the code to a directory named | 8072 | version. If the source tarball extracts the code to a directory named |
8045 | anything other than ``${BPN}-${PV}``, or if the source code is | 8073 | anything other than ``${BPN}-${PV}``, or if the source code is |
@@ -8052,19 +8080,10 @@ system and gives an overview of their function and contents. | |||
8052 | ``poky/build``. In this case, the work directory the build system | 8080 | ``poky/build``. In this case, the work directory the build system |
8053 | uses to keep the unpacked recipe for ``db`` is the following:: | 8081 | uses to keep the unpacked recipe for ``db`` is the following:: |
8054 | 8082 | ||
8055 | poky/build/tmp/work/qemux86-poky-linux/db/5.1.19-r3/db-5.1.19 | 8083 | poky/build/tmp/work/qemux86-poky-linux/db/5.1.19-r3/sources/db-5.1.19 |
8056 | 8084 | ||
8057 | The unpacked source code resides in the ``db-5.1.19`` folder. | 8085 | The unpacked source code resides in the ``db-5.1.19`` folder. |
8058 | 8086 | ||
8059 | This next example assumes a Git repository. By default, Git | ||
8060 | repositories are cloned to ``${WORKDIR}/git`` during | ||
8061 | :ref:`ref-tasks-fetch`. Since this path is different | ||
8062 | from the default value of :term:`S`, you must set it specifically so the | ||
8063 | source can be located:: | ||
8064 | |||
8065 | SRC_URI = "git://path/to/repo.git;branch=main" | ||
8066 | S = "${WORKDIR}/git" | ||
8067 | |||
8068 | :term:`SANITY_REQUIRED_UTILITIES` | 8087 | :term:`SANITY_REQUIRED_UTILITIES` |
8069 | Specifies a list of command-line utilities that should be checked for | 8088 | Specifies a list of command-line utilities that should be checked for |
8070 | during the initial sanity checking process when running BitBake. If | 8089 | during the initial sanity checking process when running BitBake. If |
@@ -8439,7 +8458,6 @@ system and gives an overview of their function and contents. | |||
8439 | sources are fetched from a Git repository and ``setup.py`` is in a | 8458 | sources are fetched from a Git repository and ``setup.py`` is in a |
8440 | ``python/pythonmodule`` subdirectory, you would have this:: | 8459 | ``python/pythonmodule`` subdirectory, you would have this:: |
8441 | 8460 | ||
8442 | S = "${WORKDIR}/git" | ||
8443 | SETUPTOOLS_SETUP_PATH = "${S}/python/pythonmodule" | 8461 | SETUPTOOLS_SETUP_PATH = "${S}/python/pythonmodule" |
8444 | 8462 | ||
8445 | :term:`SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS` | 8463 | :term:`SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS` |
diff --git a/documentation/ref-manual/yocto-project-supported-features.rst b/documentation/ref-manual/yocto-project-supported-features.rst index 06e298cbe5..0e6c33cf6e 100644 --- a/documentation/ref-manual/yocto-project-supported-features.rst +++ b/documentation/ref-manual/yocto-project-supported-features.rst | |||
@@ -86,7 +86,7 @@ Below is a list of primary tested features, their maintainer(s) and builder(s): | |||
86 | - meta-aws | 86 | - meta-aws |
87 | * - `meta-intel <https://git.yoctoproject.org/meta-intel>`__ | 87 | * - `meta-intel <https://git.yoctoproject.org/meta-intel>`__ |
88 | - meta-intel layer testing | 88 | - meta-intel layer testing |
89 | - TBD | 89 | - meta-intel mailing list <meta-intel@lists.yoctoproject.org> |
90 | - meta-intel | 90 | - meta-intel |
91 | * - `meta-exein <https://github.com/exein-io/meta-exein>`__ | 91 | * - `meta-exein <https://github.com/exein-io/meta-exein>`__ |
92 | - meta-exein layer testing | 92 | - meta-exein layer testing |
@@ -209,7 +209,8 @@ builder(s): | |||
209 | - Builder(s) | 209 | - Builder(s) |
210 | * - :wikipedia:`PowerPC (32-bit) <PowerPC>` | 210 | * - :wikipedia:`PowerPC (32-bit) <PowerPC>` |
211 | - PowerPC architecture testing (32-bit) | 211 | - PowerPC architecture testing (32-bit) |
212 | - TBD | 212 | - Peter Marko, |
213 | Adrian Freihofer | ||
213 | - qemuppc, | 214 | - qemuppc, |
214 | qemuppc-tc | 215 | qemuppc-tc |
215 | * - :oe_git:`meta-openembedded </meta-openembedded>` | 216 | * - :oe_git:`meta-openembedded </meta-openembedded>` |
diff --git a/documentation/test-manual/ptest.rst b/documentation/test-manual/ptest.rst index 2c021af515..4e6be35df5 100644 --- a/documentation/test-manual/ptest.rst +++ b/documentation/test-manual/ptest.rst | |||
@@ -46,13 +46,19 @@ Running ptest | |||
46 | ============= | 46 | ============= |
47 | 47 | ||
48 | The ``ptest-runner`` package installs a shell script that loops through | 48 | The ``ptest-runner`` package installs a shell script that loops through |
49 | all installed ptest test suites and runs them in sequence. Consequently, | 49 | all installed ptest test suites and runs them in sequence. |
50 | you might want to add this package to your image. | 50 | |
51 | During the execution ``ptest-runner`` keeps count of total and failed | ||
52 | ``ptests``. At end the execution summary is written to the console. | ||
53 | If any of the ``run-ptest`` fails, ``ptest-runner`` returns '1'. | ||
54 | |||
55 | Consequently, you might want to add ``ptest-runner`` to your image. | ||
56 | |||
51 | 57 | ||
52 | Getting Your Package Ready | 58 | Getting Your Package Ready |
53 | ========================== | 59 | ========================== |
54 | 60 | ||
55 | In order to enable a recipe to run installed ptests on target hardware, | 61 | In order to enable a recipe to run installed ``ptests`` on target hardware, |
56 | you need to prepare the recipes that build the packages you want to | 62 | you need to prepare the recipes that build the packages you want to |
57 | test. Here is what you have to do for each recipe: | 63 | test. Here is what you have to do for each recipe: |
58 | 64 | ||
@@ -77,8 +83,9 @@ test. Here is what you have to do for each recipe: | |||
77 | 83 | ||
78 | - *Create run-ptest:* This script starts your test. Locate the | 84 | - *Create run-ptest:* This script starts your test. Locate the |
79 | script where you will refer to it using | 85 | script where you will refer to it using |
80 | :term:`SRC_URI`. Here is an | 86 | :term:`SRC_URI`. Be sure ``run-ptest`` exits with 0 to mark it |
81 | example that starts a test for ``dbus``:: | 87 | as successfully executed otherwise will be marked as fail. |
88 | Here is an example that starts a test for ``dbus``:: | ||
82 | 89 | ||
83 | #!/bin/sh | 90 | #!/bin/sh |
84 | cd test | 91 | cd test |
diff --git a/meta-poky/conf/templates/default/local.conf.sample b/meta-poky/conf/templates/default/local.conf.sample index 0a33288cf0..3d830d5b76 100644 --- a/meta-poky/conf/templates/default/local.conf.sample +++ b/meta-poky/conf/templates/default/local.conf.sample | |||
@@ -21,9 +21,7 @@ | |||
21 | # | 21 | # |
22 | #MACHINE ?= "qemuarm" | 22 | #MACHINE ?= "qemuarm" |
23 | #MACHINE ?= "qemuarm64" | 23 | #MACHINE ?= "qemuarm64" |
24 | #MACHINE ?= "qemumips" | 24 | #MACHINE ?= "qemuriscv64" |
25 | #MACHINE ?= "qemumips64" | ||
26 | #MACHINE ?= "qemuppc" | ||
27 | #MACHINE ?= "qemux86" | 25 | #MACHINE ?= "qemux86" |
28 | #MACHINE ?= "qemux86-64" | 26 | #MACHINE ?= "qemux86-64" |
29 | # | 27 | # |
diff --git a/meta/classes-global/base.bbclass b/meta/classes-global/base.bbclass index b86f50e283..6be1f5c2df 100644 --- a/meta/classes-global/base.bbclass +++ b/meta/classes-global/base.bbclass | |||
@@ -30,8 +30,9 @@ PREFERRED_TOOLCHAIN:class-crosssdk = "${PREFERRED_TOOLCHAIN_SDK}" | |||
30 | PREFERRED_TOOLCHAIN:class-nativesdk = "${PREFERRED_TOOLCHAIN_SDK}" | 30 | PREFERRED_TOOLCHAIN:class-nativesdk = "${PREFERRED_TOOLCHAIN_SDK}" |
31 | 31 | ||
32 | TOOLCHAIN ??= "${PREFERRED_TOOLCHAIN}" | 32 | TOOLCHAIN ??= "${PREFERRED_TOOLCHAIN}" |
33 | TOOLCHAIN_NATIVE ??= "${PREFERRED_TOOLCHAIN_NATIVE}" | ||
33 | 34 | ||
34 | inherit toolchain/gcc-native | 35 | inherit_defer toolchain/${TOOLCHAIN_NATIVE}-native |
35 | inherit_defer toolchain/${TOOLCHAIN} | 36 | inherit_defer toolchain/${TOOLCHAIN} |
36 | 37 | ||
37 | def lsb_distro_identifier(d): | 38 | def lsb_distro_identifier(d): |
@@ -154,6 +155,7 @@ do_fetch[file-checksums] = "${@bb.fetch.get_checksum_file_list(d)}" | |||
154 | do_fetch[file-checksums] += " ${@get_lic_checksum_file_list(d)}" | 155 | do_fetch[file-checksums] += " ${@get_lic_checksum_file_list(d)}" |
155 | do_fetch[prefuncs] += "fetcher_hashes_dummyfunc" | 156 | do_fetch[prefuncs] += "fetcher_hashes_dummyfunc" |
156 | do_fetch[network] = "1" | 157 | do_fetch[network] = "1" |
158 | do_fetch[umask] = "${OE_SHARED_UMASK}" | ||
157 | python base_do_fetch() { | 159 | python base_do_fetch() { |
158 | 160 | ||
159 | src_uri = (d.getVar('SRC_URI') or "").split() | 161 | src_uri = (d.getVar('SRC_URI') or "").split() |
diff --git a/meta/classes-global/sanity.bbclass b/meta/classes-global/sanity.bbclass index d1452967fc..1044ed9cc6 100644 --- a/meta/classes-global/sanity.bbclass +++ b/meta/classes-global/sanity.bbclass | |||
@@ -514,12 +514,9 @@ def check_userns(): | |||
514 | # built buildtools-extended-tarball) | 514 | # built buildtools-extended-tarball) |
515 | # | 515 | # |
516 | def check_gcc_version(sanity_data): | 516 | def check_gcc_version(sanity_data): |
517 | import subprocess | 517 | version = oe.utils.get_host_gcc_version(sanity_data) |
518 | 518 | if bb.utils.vercmp_string_op(version, "8.0", "<"): | |
519 | build_cc, version = oe.utils.get_host_compiler_version(sanity_data) | 519 | return "Your version of gcc is older than 8.0 and will break builds. Please install a newer version of gcc (you could use the project's buildtools-extended-tarball or use scripts/install-buildtools).\n" |
520 | if build_cc.strip() == "gcc": | ||
521 | if bb.utils.vercmp_string_op(version, "8.0", "<"): | ||
522 | return "Your version of gcc is older than 8.0 and will break builds. Please install a newer version of gcc (you could use the project's buildtools-extended-tarball or use scripts/install-buildtools).\n" | ||
523 | return None | 520 | return None |
524 | 521 | ||
525 | # Tar version 1.24 and onwards handle overwriting symlinks correctly | 522 | # Tar version 1.24 and onwards handle overwriting symlinks correctly |
@@ -609,7 +606,7 @@ def drop_v14_cross_builds(d): | |||
609 | 606 | ||
610 | def check_cpp_toolchain_flag(d, flag, error_message=None): | 607 | def check_cpp_toolchain_flag(d, flag, error_message=None): |
611 | """ | 608 | """ |
612 | Checks if the C++ toolchain support the given flag | 609 | Checks if the g++ compiler supports the given flag |
613 | """ | 610 | """ |
614 | import shlex | 611 | import shlex |
615 | import subprocess | 612 | import subprocess |
@@ -622,7 +619,7 @@ def check_cpp_toolchain_flag(d, flag, error_message=None): | |||
622 | } | 619 | } |
623 | """ | 620 | """ |
624 | 621 | ||
625 | cmd = shlex.split(d.getVar("BUILD_CXX")) + ["-x", "c++","-", "-o", "/dev/null", flag] | 622 | cmd = ["g++", "-x", "c++","-", "-o", "/dev/null", flag] |
626 | try: | 623 | try: |
627 | subprocess.run(cmd, input=cpp_code, capture_output=True, text=True, check=True) | 624 | subprocess.run(cmd, input=cpp_code, capture_output=True, text=True, check=True) |
628 | return None | 625 | return None |
@@ -700,11 +697,11 @@ def check_sanity_version_change(status, d): | |||
700 | if not check_app_exists("${MAKE}", d): | 697 | if not check_app_exists("${MAKE}", d): |
701 | missing = missing + "GNU make," | 698 | missing = missing + "GNU make," |
702 | 699 | ||
703 | if not check_app_exists('${BUILD_CC}', d): | 700 | if not check_app_exists('gcc', d): |
704 | missing = missing + "C Compiler (%s)," % d.getVar("BUILD_CC") | 701 | missing = missing + "C Compiler (gcc)," |
705 | 702 | ||
706 | if not check_app_exists('${BUILD_CXX}', d): | 703 | if not check_app_exists('g++', d): |
707 | missing = missing + "C++ Compiler (%s)," % d.getVar("BUILD_CXX") | 704 | missing = missing + "C++ Compiler (g++)," |
708 | 705 | ||
709 | required_utilities = d.getVar('SANITY_REQUIRED_UTILITIES') | 706 | required_utilities = d.getVar('SANITY_REQUIRED_UTILITIES') |
710 | 707 | ||
diff --git a/meta/classes-global/sstate.bbclass b/meta/classes-global/sstate.bbclass index 2968cc4c2e..53bc2e3940 100644 --- a/meta/classes-global/sstate.bbclass +++ b/meta/classes-global/sstate.bbclass | |||
@@ -745,7 +745,7 @@ def pstaging_fetch(sstatefetch, d): | |||
745 | if bb.utils.to_boolean(d.getVar("SSTATE_VERIFY_SIG"), False): | 745 | if bb.utils.to_boolean(d.getVar("SSTATE_VERIFY_SIG"), False): |
746 | uris += ['file://{0}.sig;downloadfilename={0}.sig'.format(sstatefetch)] | 746 | uris += ['file://{0}.sig;downloadfilename={0}.sig'.format(sstatefetch)] |
747 | 747 | ||
748 | with bb.utils.umask(0o002): | 748 | with bb.utils.umask(bb.utils.to_filemode(d.getVar("OE_SHARED_UMASK"))): |
749 | bb.utils.mkdirhier(dldir) | 749 | bb.utils.mkdirhier(dldir) |
750 | 750 | ||
751 | for srcuri in uris: | 751 | for srcuri in uris: |
@@ -776,9 +776,10 @@ sstate_task_prefunc[dirs] = "${WORKDIR}" | |||
776 | python sstate_task_postfunc () { | 776 | python sstate_task_postfunc () { |
777 | shared_state = sstate_state_fromvars(d) | 777 | shared_state = sstate_state_fromvars(d) |
778 | 778 | ||
779 | omask = os.umask(0o002) | 779 | shared_umask = bb.utils.to_filemode(d.getVar("OE_SHARED_UMASK")) |
780 | if omask != 0o002: | 780 | omask = os.umask(shared_umask) |
781 | bb.note("Using umask 0o002 (not %0o) for sstate packaging" % omask) | 781 | if omask != shared_umask: |
782 | bb.note("Using umask %0o (not %0o) for sstate packaging" % (shared_umask, omask)) | ||
782 | sstate_package(shared_state, d) | 783 | sstate_package(shared_state, d) |
783 | os.umask(omask) | 784 | os.umask(omask) |
784 | 785 | ||
@@ -843,7 +844,8 @@ python sstate_create_and_sign_package () { | |||
843 | 844 | ||
844 | # Create the required sstate directory if it is not present. | 845 | # Create the required sstate directory if it is not present. |
845 | if not sstate_pkg.parent.is_dir(): | 846 | if not sstate_pkg.parent.is_dir(): |
846 | with bb.utils.umask(0o002): | 847 | shared_umask = bb.utils.to_filemode(d.getVar("OE_SHARED_UMASK")) |
848 | with bb.utils.umask(shared_umask): | ||
847 | bb.utils.mkdirhier(str(sstate_pkg.parent)) | 849 | bb.utils.mkdirhier(str(sstate_pkg.parent)) |
848 | 850 | ||
849 | if sign_pkg: | 851 | if sign_pkg: |
diff --git a/meta/classes-global/uninative.bbclass b/meta/classes-global/uninative.bbclass index 75e0c19704..c246a1ecd6 100644 --- a/meta/classes-global/uninative.bbclass +++ b/meta/classes-global/uninative.bbclass | |||
@@ -142,7 +142,7 @@ def enable_uninative(d): | |||
142 | loader = d.getVar("UNINATIVE_LOADER") | 142 | loader = d.getVar("UNINATIVE_LOADER") |
143 | if os.path.exists(loader): | 143 | if os.path.exists(loader): |
144 | bb.debug(2, "Enabling uninative") | 144 | bb.debug(2, "Enabling uninative") |
145 | d.setVar("NATIVELSBSTRING", "universal%s" % oe.utils.host_gcc_version(d)) | 145 | d.setVar("NATIVELSBSTRING", "universal") |
146 | d.appendVar("SSTATEPOSTUNPACKFUNCS", " uninative_changeinterp") | 146 | d.appendVar("SSTATEPOSTUNPACKFUNCS", " uninative_changeinterp") |
147 | d.appendVarFlag("SSTATEPOSTUNPACKFUNCS", "vardepvalueexclude", "| uninative_changeinterp") | 147 | d.appendVarFlag("SSTATEPOSTUNPACKFUNCS", "vardepvalueexclude", "| uninative_changeinterp") |
148 | d.appendVar("BUILD_LDFLAGS", " -Wl,--allow-shlib-undefined -Wl,--dynamic-linker=${UNINATIVE_LOADER} -pthread") | 148 | d.appendVar("BUILD_LDFLAGS", " -Wl,--allow-shlib-undefined -Wl,--dynamic-linker=${UNINATIVE_LOADER} -pthread") |
diff --git a/meta/classes-recipe/go-mod-update-modules.bbclass b/meta/classes-recipe/go-mod-update-modules.bbclass new file mode 100644 index 0000000000..5fccd0bb0d --- /dev/null +++ b/meta/classes-recipe/go-mod-update-modules.bbclass | |||
@@ -0,0 +1,152 @@ | |||
1 | addtask do_update_modules after do_configure | ||
2 | do_update_modules[nostamp] = "1" | ||
3 | do_update_modules[network] = "1" | ||
4 | |||
5 | # This class maintains two files, BPN-go-mods.inc and BPN-licenses.inc. | ||
6 | # | ||
7 | # -go-mods.inc will append SRC_URI with all of the Go modules that are | ||
8 | # dependencies of this recipe. | ||
9 | # | ||
10 | # -licenses.inc will append LICENSE and LIC_FILES_CHKSUM with the found licenses | ||
11 | # in the modules. | ||
12 | # | ||
13 | # These files are machine-generated and should not be modified. | ||
14 | |||
15 | python do_update_modules() { | ||
16 | import subprocess, tempfile, json, re, urllib.parse | ||
17 | from oe.license import tidy_licenses | ||
18 | from oe.license_finder import find_licenses | ||
19 | |||
20 | def unescape_path(path): | ||
21 | """Unescape capital letters using exclamation points.""" | ||
22 | return re.sub(r'!([a-z])', lambda m: m.group(1).upper(), path) | ||
23 | |||
24 | def fold_uri(uri): | ||
25 | """Fold URI for sorting shorter module paths before longer.""" | ||
26 | return uri.replace(';', ' ').replace('/', '!') | ||
27 | |||
28 | def parse_existing_licenses(): | ||
29 | hashes = {} | ||
30 | for url in d.getVar("LIC_FILES_CHKSUM").split(): | ||
31 | (method, host, path, user, pswd, parm) = bb.fetch.decodeurl(url) | ||
32 | if "spdx" in parm and parm["spdx"] != "Unknown": | ||
33 | hashes[parm["md5"]] = urllib.parse.unquote_plus(parm["spdx"]) | ||
34 | return hashes | ||
35 | |||
36 | bpn = d.getVar("BPN") | ||
37 | thisdir = d.getVar("THISDIR") | ||
38 | s_dir = d.getVar("S") | ||
39 | |||
40 | with tempfile.TemporaryDirectory(prefix='go-mod-') as mod_cache_dir: | ||
41 | notice = """ | ||
42 | # This file has been generated by go-mod-update-modules.bbclass | ||
43 | # | ||
44 | # Do not modify it by hand, as the contents will be replaced when | ||
45 | # running the update-modules task. | ||
46 | |||
47 | """ | ||
48 | |||
49 | env = dict(os.environ, GOMODCACHE=mod_cache_dir) | ||
50 | |||
51 | source = d.expand("${UNPACKDIR}/${GO_SRCURI_DESTSUFFIX}") | ||
52 | output = subprocess.check_output(("go", "mod", "edit", "-json"), cwd=source, env=env, text=True) | ||
53 | go_mod = json.loads(output) | ||
54 | |||
55 | output = subprocess.check_output(("go", "list", "-json=Dir,Module", "-deps", f"{go_mod['Module']['Path']}/..."), cwd=source, env=env, text=True) | ||
56 | |||
57 | # | ||
58 | # Licenses | ||
59 | # | ||
60 | |||
61 | # load hashes from the existing licenses.inc | ||
62 | extra_hashes = parse_existing_licenses() | ||
63 | |||
64 | # The output of this isn't actually valid JSON, but a series of dicts. | ||
65 | # Wrap in [] and join the dicts with , | ||
66 | # Very frustrating that the json parser in python can't repeatedly | ||
67 | # parse from a stream. | ||
68 | pkgs = json.loads('[' + output.replace('}\n{', '},\n{') + ']') | ||
69 | # Collect licenses for the dependencies. | ||
70 | licenses = set() | ||
71 | lic_files_chksum = [] | ||
72 | lic_files = {} | ||
73 | |||
74 | for pkg in pkgs: | ||
75 | mod = pkg.get('Module', None) | ||
76 | if not mod or mod.get('Main', False): | ||
77 | continue | ||
78 | |||
79 | mod_dir = mod['Dir'] | ||
80 | |||
81 | if not mod_dir.startswith(mod_cache_dir): | ||
82 | continue | ||
83 | |||
84 | path = os.path.relpath(mod_dir, mod_cache_dir) | ||
85 | |||
86 | for license_name, license_file, license_md5 in find_licenses(mod['Dir'], d, first_only=True, extra_hashes=extra_hashes): | ||
87 | lic_files[os.path.join(path, license_file)] = (license_name, license_md5) | ||
88 | |||
89 | for lic_file in lic_files: | ||
90 | license_name, license_md5 = lic_files[lic_file] | ||
91 | if license_name == "Unknown": | ||
92 | bb.warn(f"Unknown license: {lic_file} {license_md5}") | ||
93 | |||
94 | licenses.add(lic_files[lic_file][0]) | ||
95 | lic_files_chksum.append( | ||
96 | f'file://pkg/mod/{lic_file};md5={license_md5};spdx={urllib.parse.quote_plus(license_name)}') | ||
97 | |||
98 | licenses_filename = os.path.join(thisdir, f"{bpn}-licenses.inc") | ||
99 | with open(licenses_filename, "w") as f: | ||
100 | f.write(notice) | ||
101 | f.write(f'LICENSE += "& {" & ".join(tidy_licenses(licenses))}"\n\n') | ||
102 | f.write('LIC_FILES_CHKSUM += "\\\n') | ||
103 | for lic in sorted(lic_files_chksum, key=fold_uri): | ||
104 | f.write(' ' + lic + ' \\\n') | ||
105 | f.write('"\n') | ||
106 | |||
107 | # | ||
108 | # Sources | ||
109 | # | ||
110 | |||
111 | # Collect the module cache files downloaded by the go list command as | ||
112 | # the go list command knows best what the go list command needs and it | ||
113 | # needs more files in the module cache than the go install command as | ||
114 | # it doesn't do the dependency pruning mentioned in the Go module | ||
115 | # reference, https://go.dev/ref/mod, for go 1.17 or higher. | ||
116 | src_uris = [] | ||
117 | downloaddir = os.path.join(mod_cache_dir, 'cache', 'download') | ||
118 | for dirpath, _, filenames in os.walk(downloaddir): | ||
119 | # We want to process files under @v directories | ||
120 | path, base = os.path.split(os.path.relpath(dirpath, downloaddir)) | ||
121 | if base != '@v': | ||
122 | continue | ||
123 | |||
124 | path = unescape_path(path) | ||
125 | zipver = None | ||
126 | for name in filenames: | ||
127 | ver, ext = os.path.splitext(name) | ||
128 | if ext == '.zip': | ||
129 | chksum = bb.utils.sha256_file(os.path.join(dirpath, name)) | ||
130 | src_uris.append(f'gomod://{path};version={ver};sha256sum={chksum}') | ||
131 | zipver = ver | ||
132 | break | ||
133 | for name in filenames: | ||
134 | ver, ext = os.path.splitext(name) | ||
135 | if ext == '.mod' and ver != zipver: | ||
136 | chksum = bb.utils.sha256_file(os.path.join(dirpath, name)) | ||
137 | src_uris.append(f'gomod://{path};version={ver};mod=1;sha256sum={chksum}') | ||
138 | |||
139 | |||
140 | go_mods_filename = os.path.join(thisdir, f"{bpn}-go-mods.inc") | ||
141 | with open(go_mods_filename, "w") as f: | ||
142 | f.write(notice) | ||
143 | f.write('SRC_URI += "\\\n') | ||
144 | for uri in sorted(src_uris, key=fold_uri): | ||
145 | f.write(' ' + uri + ' \\\n') | ||
146 | f.write('"\n') | ||
147 | |||
148 | subprocess.check_output(("go", "clean", "-modcache"), cwd=source, env=env, text=True) | ||
149 | } | ||
150 | |||
151 | # This doesn't work as we need to wipe the inc files first so we don't try looking for LICENSE files that don't yet exist | ||
152 | # RECIPE_UPGRADE_EXTRA_TASKS += "do_update_modules" | ||
diff --git a/meta/classes-recipe/go-mod.bbclass b/meta/classes-recipe/go-mod.bbclass index 93ae72235f..a15dda8f0e 100644 --- a/meta/classes-recipe/go-mod.bbclass +++ b/meta/classes-recipe/go-mod.bbclass | |||
@@ -23,7 +23,7 @@ GOBUILDFLAGS:append = " -modcacherw" | |||
23 | inherit go | 23 | inherit go |
24 | 24 | ||
25 | export GOMODCACHE = "${S}/pkg/mod" | 25 | export GOMODCACHE = "${S}/pkg/mod" |
26 | GO_MOD_CACHE_DIR = "${@os.path.relpath(d.getVar('GOMODCACHE'), d.getVar('WORKDIR'))}" | 26 | GO_MOD_CACHE_DIR = "${@os.path.relpath(d.getVar('GOMODCACHE'), d.getVar('UNPACKDIR'))}" |
27 | do_unpack[cleandirs] += "${GOMODCACHE}" | 27 | do_unpack[cleandirs] += "${GOMODCACHE}" |
28 | 28 | ||
29 | GO_WORKDIR ?= "${GO_IMPORT}" | 29 | GO_WORKDIR ?= "${GO_IMPORT}" |
diff --git a/meta/classes-recipe/kernelsrc.bbclass b/meta/classes-recipe/kernelsrc.bbclass index ecb02dc9ed..9336184298 100644 --- a/meta/classes-recipe/kernelsrc.bbclass +++ b/meta/classes-recipe/kernelsrc.bbclass | |||
@@ -15,3 +15,7 @@ LOCAL_VERSION = "${@get_kernellocalversion_file("${STAGING_KERNEL_BUILDDIR}")}" | |||
15 | 15 | ||
16 | inherit linux-kernel-base | 16 | inherit linux-kernel-base |
17 | 17 | ||
18 | # The final packages get the kernel version instead of the default 1.0 | ||
19 | python do_package:prepend() { | ||
20 | d.setVar('PKGV', d.getVar("KERNEL_VERSION").split("-")[0]) | ||
21 | } | ||
diff --git a/meta/classes-recipe/populate_sdk_base.bbclass b/meta/classes-recipe/populate_sdk_base.bbclass index 8ef4b2be77..e6685cde97 100644 --- a/meta/classes-recipe/populate_sdk_base.bbclass +++ b/meta/classes-recipe/populate_sdk_base.bbclass | |||
@@ -373,7 +373,6 @@ EOF | |||
373 | -e 's#@SDK_VERSION@#${SDK_VERSION}#g' \ | 373 | -e 's#@SDK_VERSION@#${SDK_VERSION}#g' \ |
374 | -e '/@SDK_PRE_INSTALL_COMMAND@/d' \ | 374 | -e '/@SDK_PRE_INSTALL_COMMAND@/d' \ |
375 | -e '/@SDK_POST_INSTALL_COMMAND@/d' \ | 375 | -e '/@SDK_POST_INSTALL_COMMAND@/d' \ |
376 | -e 's#@SDK_GCC_VER@#${@oe.utils.host_gcc_version(d, taskcontextonly=True)}#g' \ | ||
377 | -e 's#@SDK_ARCHIVE_TYPE@#${SDK_ARCHIVE_TYPE}#g' \ | 376 | -e 's#@SDK_ARCHIVE_TYPE@#${SDK_ARCHIVE_TYPE}#g' \ |
378 | ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh | 377 | ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.sh |
379 | 378 | ||
diff --git a/meta/classes-recipe/populate_sdk_ext.bbclass b/meta/classes-recipe/populate_sdk_ext.bbclass index 2d7d661d25..20dfdf02d4 100644 --- a/meta/classes-recipe/populate_sdk_ext.bbclass +++ b/meta/classes-recipe/populate_sdk_ext.bbclass | |||
@@ -150,7 +150,6 @@ def create_filtered_tasklist(d, sdkbasepath, tasklistfile, conf_initpath): | |||
150 | with open(sdkbasepath + '/conf/local.conf', 'a') as f: | 150 | with open(sdkbasepath + '/conf/local.conf', 'a') as f: |
151 | # Force the use of sstate from the build system | 151 | # Force the use of sstate from the build system |
152 | f.write('\nSSTATE_DIR:forcevariable = "%s"\n' % d.getVar('SSTATE_DIR')) | 152 | f.write('\nSSTATE_DIR:forcevariable = "%s"\n' % d.getVar('SSTATE_DIR')) |
153 | f.write('SSTATE_MIRRORS:forcevariable = "file://universal/(.*) file://universal-4.9/\\1 file://universal-4.9/(.*) file://universal-4.8/\\1"\n') | ||
154 | # Ensure TMPDIR is the default so that clean_esdk_builddir() can delete it | 153 | # Ensure TMPDIR is the default so that clean_esdk_builddir() can delete it |
155 | f.write('TMPDIR:forcevariable = "${TOPDIR}/tmp"\n') | 154 | f.write('TMPDIR:forcevariable = "${TOPDIR}/tmp"\n') |
156 | # Drop uninative if the build isn't using it (or else NATIVELSBSTRING will | 155 | # Drop uninative if the build isn't using it (or else NATIVELSBSTRING will |
@@ -380,9 +379,6 @@ def write_local_conf(d, baseoutpath, derivative, core_meta_subdir, uninative_che | |||
380 | f.write('# Provide a flag to indicate we are in the EXT_SDK Context\n') | 379 | f.write('# Provide a flag to indicate we are in the EXT_SDK Context\n') |
381 | f.write('WITHIN_EXT_SDK = "1"\n\n') | 380 | f.write('WITHIN_EXT_SDK = "1"\n\n') |
382 | 381 | ||
383 | # Map gcc-dependent uninative sstate cache for installer usage | ||
384 | f.write('SSTATE_MIRRORS += " file://universal/(.*) file://universal-4.9/\\1 file://universal-4.9/(.*) file://universal-4.8/\\1"\n\n') | ||
385 | |||
386 | if d.getVar("PRSERV_HOST"): | 382 | if d.getVar("PRSERV_HOST"): |
387 | # Override this, we now include PR data, so it should only point ot the local database | 383 | # Override this, we now include PR data, so it should only point ot the local database |
388 | f.write('PRSERV_HOST = "localhost:0"\n\n') | 384 | f.write('PRSERV_HOST = "localhost:0"\n\n') |
@@ -491,8 +487,8 @@ def prepare_locked_cache(d, baseoutpath, derivative, conf_initpath): | |||
491 | sstate_out = baseoutpath + '/sstate-cache' | 487 | sstate_out = baseoutpath + '/sstate-cache' |
492 | bb.utils.remove(sstate_out, True) | 488 | bb.utils.remove(sstate_out, True) |
493 | 489 | ||
494 | # uninative.bbclass sets NATIVELSBSTRING to 'universal%s' % oe.utils.host_gcc_version(d) | 490 | # uninative.bbclass sets NATIVELSBSTRING to 'universal' |
495 | fixedlsbstring = "universal%s" % oe.utils.host_gcc_version(d) if bb.data.inherits_class('uninative', d) else "" | 491 | fixedlsbstring = "universal" if bb.data.inherits_class('uninative', d) else "" |
496 | 492 | ||
497 | sdk_include_toolchain = (d.getVar('SDK_INCLUDE_TOOLCHAIN') == '1') | 493 | sdk_include_toolchain = (d.getVar('SDK_INCLUDE_TOOLCHAIN') == '1') |
498 | sdk_ext_type = d.getVar('SDK_EXT_TYPE') | 494 | sdk_ext_type = d.getVar('SDK_EXT_TYPE') |
diff --git a/meta/classes-recipe/testsdk.bbclass b/meta/classes-recipe/testsdk.bbclass index 59d2834c99..b1c4fa67e6 100644 --- a/meta/classes-recipe/testsdk.bbclass +++ b/meta/classes-recipe/testsdk.bbclass | |||
@@ -19,6 +19,7 @@ TESTSDK_SUITES ?= "" | |||
19 | 19 | ||
20 | TESTSDK_CLASS_NAME ?= "oeqa.sdk.testsdk.TestSDK" | 20 | TESTSDK_CLASS_NAME ?= "oeqa.sdk.testsdk.TestSDK" |
21 | TESTSDKEXT_CLASS_NAME ?= "oeqa.sdkext.testsdk.TestSDKExt" | 21 | TESTSDKEXT_CLASS_NAME ?= "oeqa.sdkext.testsdk.TestSDKExt" |
22 | TESTSDK_CASE_DIRS ?= "sdk" | ||
22 | 23 | ||
23 | def import_and_run(name, d): | 24 | def import_and_run(name, d): |
24 | import importlib | 25 | import importlib |
diff --git a/meta/classes/create-spdx-2.2.bbclass b/meta/classes/create-spdx-2.2.bbclass index 6fc60a1d97..94e0108815 100644 --- a/meta/classes/create-spdx-2.2.bbclass +++ b/meta/classes/create-spdx-2.2.bbclass | |||
@@ -23,6 +23,8 @@ def get_namespace(d, name): | |||
23 | namespace_uuid = uuid.uuid5(uuid.NAMESPACE_DNS, d.getVar("SPDX_UUID_NAMESPACE")) | 23 | namespace_uuid = uuid.uuid5(uuid.NAMESPACE_DNS, d.getVar("SPDX_UUID_NAMESPACE")) |
24 | return "%s/%s-%s" % (d.getVar("SPDX_NAMESPACE_PREFIX"), name, str(uuid.uuid5(namespace_uuid, name))) | 24 | return "%s/%s-%s" % (d.getVar("SPDX_NAMESPACE_PREFIX"), name, str(uuid.uuid5(namespace_uuid, name))) |
25 | 25 | ||
26 | SPDX_PACKAGE_VERSION ??= "${PV}" | ||
27 | SPDX_PACKAGE_VERSION[doc] = "The version of a package, versionInfo in recipe, package and image" | ||
26 | 28 | ||
27 | def create_annotation(d, comment): | 29 | def create_annotation(d, comment): |
28 | from datetime import datetime, timezone | 30 | from datetime import datetime, timezone |
@@ -447,7 +449,7 @@ python do_create_spdx() { | |||
447 | 449 | ||
448 | recipe = oe.spdx.SPDXPackage() | 450 | recipe = oe.spdx.SPDXPackage() |
449 | recipe.name = d.getVar("PN") | 451 | recipe.name = d.getVar("PN") |
450 | recipe.versionInfo = d.getVar("PV") | 452 | recipe.versionInfo = d.getVar("SPDX_PACKAGE_VERSION") |
451 | recipe.SPDXID = oe.sbom.get_recipe_spdxid(d) | 453 | recipe.SPDXID = oe.sbom.get_recipe_spdxid(d) |
452 | recipe.supplier = d.getVar("SPDX_SUPPLIER") | 454 | recipe.supplier = d.getVar("SPDX_SUPPLIER") |
453 | if bb.data.inherits_class("native", d) or bb.data.inherits_class("cross", d): | 455 | if bb.data.inherits_class("native", d) or bb.data.inherits_class("cross", d): |
@@ -556,7 +558,7 @@ python do_create_spdx() { | |||
556 | 558 | ||
557 | spdx_package.SPDXID = oe.sbom.get_package_spdxid(pkg_name) | 559 | spdx_package.SPDXID = oe.sbom.get_package_spdxid(pkg_name) |
558 | spdx_package.name = pkg_name | 560 | spdx_package.name = pkg_name |
559 | spdx_package.versionInfo = d.getVar("PV") | 561 | spdx_package.versionInfo = d.getVar("SPDX_PACKAGE_VERSION") |
560 | spdx_package.licenseDeclared = convert_license_to_spdx(package_license, license_data, package_doc, d, found_licenses) | 562 | spdx_package.licenseDeclared = convert_license_to_spdx(package_license, license_data, package_doc, d, found_licenses) |
561 | spdx_package.supplier = d.getVar("SPDX_SUPPLIER") | 563 | spdx_package.supplier = d.getVar("SPDX_SUPPLIER") |
562 | 564 | ||
@@ -832,7 +834,7 @@ def combine_spdx(d, rootfs_name, rootfs_deploydir, rootfs_spdxid, packages, spdx | |||
832 | 834 | ||
833 | image = oe.spdx.SPDXPackage() | 835 | image = oe.spdx.SPDXPackage() |
834 | image.name = d.getVar("PN") | 836 | image.name = d.getVar("PN") |
835 | image.versionInfo = d.getVar("PV") | 837 | image.versionInfo = d.getVar("SPDX_PACKAGE_VERSION") |
836 | image.SPDXID = rootfs_spdxid | 838 | image.SPDXID = rootfs_spdxid |
837 | image.supplier = d.getVar("SPDX_SUPPLIER") | 839 | image.supplier = d.getVar("SPDX_SUPPLIER") |
838 | 840 | ||
diff --git a/meta/classes/toolchain/clang-native.bbclass b/meta/classes/toolchain/clang-native.bbclass new file mode 100644 index 0000000000..4de491a1cb --- /dev/null +++ b/meta/classes/toolchain/clang-native.bbclass | |||
@@ -0,0 +1,18 @@ | |||
1 | BUILD_CC = "${CCACHE}${BUILD_PREFIX}clang ${BUILD_CC_ARCH}" | ||
2 | BUILD_CXX = "${CCACHE}${BUILD_PREFIX}clang++ ${BUILD_CC_ARCH}" | ||
3 | BUILD_FC = "${BUILD_PREFIX}gfortran ${BUILD_CC_ARCH}" | ||
4 | BUILD_CPP = "${BUILD_PREFIX}clang ${BUILD_CC_ARCH} -E" | ||
5 | BUILD_LD = "${BUILD_PREFIX}ld ${BUILD_LD_ARCH}" | ||
6 | BUILD_CCLD = "${BUILD_PREFIX}clang ${BUILD_CC_ARCH}" | ||
7 | BUILD_AR = "${BUILD_PREFIX}llvm-ar" | ||
8 | BUILD_AS = "${BUILD_PREFIX}as ${BUILD_AS_ARCH}" | ||
9 | BUILD_RANLIB = "${BUILD_PREFIX}llvm-ranlib -D" | ||
10 | BUILD_STRIP = "${BUILD_PREFIX}llvm-strip" | ||
11 | BUILD_OBJCOPY = "${BUILD_PREFIX}llvm-objcopy" | ||
12 | BUILD_OBJDUMP = "${BUILD_PREFIX}llvm-objdump" | ||
13 | BUILD_NM = "${BUILD_PREFIX}llvm-nm" | ||
14 | BUILD_READELF = "${BUILD_PREFIX}llvm-readelf" | ||
15 | |||
16 | DEPENDS += "clang-native libcxx-native compiler-rt-native" | ||
17 | |||
18 | LDFLAGS += " --rtlib=libgcc --unwindlib=libgcc" | ||
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf index a3300fc172..b1f8ac5b11 100644 --- a/meta/conf/bitbake.conf +++ b/meta/conf/bitbake.conf | |||
@@ -944,6 +944,8 @@ TRANSLATED_TARGET_ARCH ??= "${@d.getVar('TARGET_ARCH').replace("_", "-")}" | |||
944 | 944 | ||
945 | # Set a default umask to use for tasks for determinism | 945 | # Set a default umask to use for tasks for determinism |
946 | BB_DEFAULT_UMASK ??= "022" | 946 | BB_DEFAULT_UMASK ??= "022" |
947 | # The umask to use for shared files (e.g. DL_DIR and SSTATE_DIR) | ||
948 | OE_SHARED_UMASK ??= "002" | ||
947 | 949 | ||
948 | # Complete output from bitbake | 950 | # Complete output from bitbake |
949 | BB_CONSOLELOG ?= "${LOG_DIR}/cooker/${MACHINE}/${DATETIME}.log" | 951 | BB_CONSOLELOG ?= "${LOG_DIR}/cooker/${MACHINE}/${DATETIME}.log" |
diff --git a/meta/conf/cve-check-map.conf b/meta/conf/cve-check-map.conf index ac956379d1..fc49fe0a50 100644 --- a/meta/conf/cve-check-map.conf +++ b/meta/conf/cve-check-map.conf | |||
@@ -28,8 +28,12 @@ CVE_CHECK_STATUSMAP[cpe-incorrect] = "Ignored" | |||
28 | CVE_CHECK_STATUSMAP[disputed] = "Ignored" | 28 | CVE_CHECK_STATUSMAP[disputed] = "Ignored" |
29 | # use when vulnerability depends on build or runtime configuration which is not used | 29 | # use when vulnerability depends on build or runtime configuration which is not used |
30 | CVE_CHECK_STATUSMAP[not-applicable-config] = "Ignored" | 30 | CVE_CHECK_STATUSMAP[not-applicable-config] = "Ignored" |
31 | CVE_CHECK_VEX_JUSTIFICATION[not-applicable-config] = "vulnerableCodeNotPresent" | ||
32 | |||
31 | # use when vulnerability affects other platform (e.g. Windows or Debian) | 33 | # use when vulnerability affects other platform (e.g. Windows or Debian) |
32 | CVE_CHECK_STATUSMAP[not-applicable-platform] = "Ignored" | 34 | CVE_CHECK_STATUSMAP[not-applicable-platform] = "Ignored" |
35 | CVE_CHECK_VEX_JUSTIFICATION[not-applicable-platform] = "vulnerableCodeNotPresent" | ||
36 | |||
33 | # use when upstream acknowledged the vulnerability but does not plan to fix it | 37 | # use when upstream acknowledged the vulnerability but does not plan to fix it |
34 | CVE_CHECK_STATUSMAP[upstream-wontfix] = "Ignored" | 38 | CVE_CHECK_STATUSMAP[upstream-wontfix] = "Ignored" |
35 | 39 | ||
diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc index d94fb693e3..60f04da608 100644 --- a/meta/conf/distro/include/maintainers.inc +++ b/meta/conf/distro/include/maintainers.inc | |||
@@ -479,7 +479,7 @@ RECIPE_MAINTAINER:pn-linux-yocto = "Bruce Ashfield <bruce.ashfield@gmail.com>" | |||
479 | RECIPE_MAINTAINER:pn-linux-yocto-dev = "Bruce Ashfield <bruce.ashfield@gmail.com>" | 479 | RECIPE_MAINTAINER:pn-linux-yocto-dev = "Bruce Ashfield <bruce.ashfield@gmail.com>" |
480 | RECIPE_MAINTAINER:pn-linux-yocto-rt = "Bruce Ashfield <bruce.ashfield@gmail.com>" | 480 | RECIPE_MAINTAINER:pn-linux-yocto-rt = "Bruce Ashfield <bruce.ashfield@gmail.com>" |
481 | RECIPE_MAINTAINER:pn-linux-yocto-tiny = "Bruce Ashfield <bruce.ashfield@gmail.com>" | 481 | RECIPE_MAINTAINER:pn-linux-yocto-tiny = "Bruce Ashfield <bruce.ashfield@gmail.com>" |
482 | RECIPE_MAINTAINER:pn-llvm-project-source-20.1.6 = "Khem Raj <raj.khem@gmail.com>" | 482 | RECIPE_MAINTAINER:pn-llvm-project-source-20.1.7 = "Khem Raj <raj.khem@gmail.com>" |
483 | RECIPE_MAINTAINER:pn-logrotate = "Yi Zhao <yi.zhao@windriver.com>" | 483 | RECIPE_MAINTAINER:pn-logrotate = "Yi Zhao <yi.zhao@windriver.com>" |
484 | RECIPE_MAINTAINER:pn-log4cplus = "Unassigned <unassigned@yoctoproject.org>" | 484 | RECIPE_MAINTAINER:pn-log4cplus = "Unassigned <unassigned@yoctoproject.org>" |
485 | RECIPE_MAINTAINER:pn-lrzsz = "Anuj Mittal <anuj.mittal@intel.com>" | 485 | RECIPE_MAINTAINER:pn-lrzsz = "Anuj Mittal <anuj.mittal@intel.com>" |
@@ -718,6 +718,8 @@ RECIPE_MAINTAINER:pn-python3-snowballstemmer = "Tim Orling <tim.orling@konsulko. | |||
718 | RECIPE_MAINTAINER:pn-python3-sortedcontainers = "Tim Orling <tim.orling@konsulko.com>" | 718 | RECIPE_MAINTAINER:pn-python3-sortedcontainers = "Tim Orling <tim.orling@konsulko.com>" |
719 | RECIPE_MAINTAINER:pn-python3-spdx-tools = "Marta Rybczynska <marta.rybczynska@ygreky.com>" | 719 | RECIPE_MAINTAINER:pn-python3-spdx-tools = "Marta Rybczynska <marta.rybczynska@ygreky.com>" |
720 | RECIPE_MAINTAINER:pn-python3-sphinx = "Trevor Gamblin <tgamblin@baylibre.com>" | 720 | RECIPE_MAINTAINER:pn-python3-sphinx = "Trevor Gamblin <tgamblin@baylibre.com>" |
721 | RECIPE_MAINTAINER:pn-python3-sphinx-argparse = "Antonin Godard <antonin.godard@bootlin.com>" | ||
722 | RECIPE_MAINTAINER:pn-python3-sphinx-copybutton = "Antonin Godard <antonin.godard@bootlin.com>" | ||
721 | RECIPE_MAINTAINER:pn-python3-sphinx-rtd-theme = "Tim Orling <tim.orling@konsulko.com>" | 723 | RECIPE_MAINTAINER:pn-python3-sphinx-rtd-theme = "Tim Orling <tim.orling@konsulko.com>" |
722 | RECIPE_MAINTAINER:pn-python3-sphinxcontrib-applehelp = "Tim Orling <tim.orling@konsulko.com>" | 724 | RECIPE_MAINTAINER:pn-python3-sphinxcontrib-applehelp = "Tim Orling <tim.orling@konsulko.com>" |
723 | RECIPE_MAINTAINER:pn-python3-sphinxcontrib-devhelp = "Tim Orling <tim.orling@konsulko.com>" | 725 | RECIPE_MAINTAINER:pn-python3-sphinxcontrib-devhelp = "Tim Orling <tim.orling@konsulko.com>" |
diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc index e06731ece7..4253c7b062 100644 --- a/meta/conf/distro/include/ptest-packagelists.inc +++ b/meta/conf/distro/include/ptest-packagelists.inc | |||
@@ -78,6 +78,7 @@ PTESTS_FAST = "\ | |||
78 | python3-uritools \ | 78 | python3-uritools \ |
79 | python3-wcwidth \ | 79 | python3-wcwidth \ |
80 | python3-webcolors \ | 80 | python3-webcolors \ |
81 | python3-wheel \ | ||
81 | qemu \ | 82 | qemu \ |
82 | quilt \ | 83 | quilt \ |
83 | rpm-sequoia \ | 84 | rpm-sequoia \ |
diff --git a/meta/conf/sanity.conf b/meta/conf/sanity.conf index 3692007e96..474816797a 100644 --- a/meta/conf/sanity.conf +++ b/meta/conf/sanity.conf | |||
@@ -3,7 +3,7 @@ | |||
3 | # See sanity.bbclass | 3 | # See sanity.bbclass |
4 | # | 4 | # |
5 | # Expert users can confirm their sanity with "touch conf/sanity.conf" | 5 | # Expert users can confirm their sanity with "touch conf/sanity.conf" |
6 | BB_MIN_VERSION = "2.15.0" | 6 | BB_MIN_VERSION = "2.15.1" |
7 | 7 | ||
8 | SANITY_ABIFILE = "${TMPDIR}/abi_version" | 8 | SANITY_ABIFILE = "${TMPDIR}/abi_version" |
9 | 9 | ||
diff --git a/meta/files/toolchain-shar-extract.sh b/meta/files/toolchain-shar-extract.sh index 06934e5a9a..e2c617958a 100644 --- a/meta/files/toolchain-shar-extract.sh +++ b/meta/files/toolchain-shar-extract.sh | |||
@@ -31,9 +31,6 @@ tweakpath /sbin | |||
31 | INST_ARCH=$(uname -m | sed -e "s/i[3-6]86/ix86/" -e "s/x86[-_]64/x86_64/") | 31 | INST_ARCH=$(uname -m | sed -e "s/i[3-6]86/ix86/" -e "s/x86[-_]64/x86_64/") |
32 | SDK_ARCH=$(echo @SDK_ARCH@ | sed -e "s/i[3-6]86/ix86/" -e "s/x86[-_]64/x86_64/") | 32 | SDK_ARCH=$(echo @SDK_ARCH@ | sed -e "s/i[3-6]86/ix86/" -e "s/x86[-_]64/x86_64/") |
33 | 33 | ||
34 | INST_GCC_VER=$(gcc --version 2>/dev/null | sed -ne 's/.* \([0-9]\+\.[0-9]\+\)\.[0-9]\+.*/\1/p') | ||
35 | SDK_GCC_VER='@SDK_GCC_VER@' | ||
36 | |||
37 | verlte () { | 34 | verlte () { |
38 | [ "$1" = "`printf "$1\n$2" | sort -V | head -n1`" ] | 35 | [ "$1" = "`printf "$1\n$2" | sort -V | head -n1`" ] |
39 | } | 36 | } |
@@ -145,11 +142,6 @@ fi | |||
145 | # SDK_EXTENSIBLE is exposed from the SDK_PRE_INSTALL_COMMAND above | 142 | # SDK_EXTENSIBLE is exposed from the SDK_PRE_INSTALL_COMMAND above |
146 | if [ "$SDK_EXTENSIBLE" = "1" ]; then | 143 | if [ "$SDK_EXTENSIBLE" = "1" ]; then |
147 | DEFAULT_INSTALL_DIR="@SDKEXTPATH@" | 144 | DEFAULT_INSTALL_DIR="@SDKEXTPATH@" |
148 | if [ "$INST_GCC_VER" = '4.8' -a "$SDK_GCC_VER" = '4.9' ] || [ "$INST_GCC_VER" = '4.8' -a "$SDK_GCC_VER" = '' ] || \ | ||
149 | [ "$INST_GCC_VER" = '4.9' -a "$SDK_GCC_VER" = '' ]; then | ||
150 | echo "Error: Incompatible SDK installer! Your host gcc version is $INST_GCC_VER and this SDK was built by gcc higher version." | ||
151 | exit 1 | ||
152 | fi | ||
153 | fi | 145 | fi |
154 | 146 | ||
155 | if [ "$target_sdk_dir" = "" ]; then | 147 | if [ "$target_sdk_dir" = "" ]; then |
diff --git a/meta/lib/oe/license.py b/meta/lib/oe/license.py index 6f882c3812..6e55fa1e7f 100644 --- a/meta/lib/oe/license.py +++ b/meta/lib/oe/license.py | |||
@@ -462,3 +462,18 @@ def skip_incompatible_package_licenses(d, pkgs): | |||
462 | skipped_pkgs[pkg] = incompatible_lic | 462 | skipped_pkgs[pkg] = incompatible_lic |
463 | 463 | ||
464 | return skipped_pkgs | 464 | return skipped_pkgs |
465 | |||
466 | def tidy_licenses(value): | ||
467 | """ | ||
468 | Flat, split and sort licenses. | ||
469 | """ | ||
470 | from oe.license import flattened_licenses | ||
471 | |||
472 | def _choose(a, b): | ||
473 | str_a, str_b = sorted((" & ".join(a), " & ".join(b)), key=str.casefold) | ||
474 | return ["(%s | %s)" % (str_a, str_b)] | ||
475 | |||
476 | if not isinstance(value, str): | ||
477 | value = " & ".join(value) | ||
478 | |||
479 | return sorted(list(set(flattened_licenses(value, _choose))), key=str.casefold) | ||
diff --git a/meta/lib/oe/spdx30_tasks.py b/meta/lib/oe/spdx30_tasks.py index beeafc2bb7..c352dab152 100644 --- a/meta/lib/oe/spdx30_tasks.py +++ b/meta/lib/oe/spdx30_tasks.py | |||
@@ -552,7 +552,7 @@ def create_spdx(d): | |||
552 | ) | 552 | ) |
553 | build_objset.new_relationship( | 553 | build_objset.new_relationship( |
554 | source_files, | 554 | source_files, |
555 | oe.spdx30.RelationshipType.hasConcludedLicense, | 555 | oe.spdx30.RelationshipType.hasDeclaredLicense, |
556 | [oe.sbom30.get_element_link_id(recipe_spdx_license)], | 556 | [oe.sbom30.get_element_link_id(recipe_spdx_license)], |
557 | ) | 557 | ) |
558 | 558 | ||
@@ -724,24 +724,23 @@ def create_spdx(d): | |||
724 | impact_statement=description, | 724 | impact_statement=description, |
725 | ) | 725 | ) |
726 | 726 | ||
727 | if detail in ( | 727 | vex_just_type = d.getVarFlag( |
728 | "ignored", | 728 | "CVE_CHECK_VEX_JUSTIFICATION", detail |
729 | "cpe-incorrect", | 729 | ) |
730 | "disputed", | 730 | if vex_just_type: |
731 | "upstream-wontfix", | 731 | if ( |
732 | ): | 732 | vex_just_type |
733 | # VEX doesn't have justifications for this | 733 | not in oe.spdx30.security_VexJustificationType.NAMED_INDIVIDUALS |
734 | pass | 734 | ): |
735 | elif detail in ( | 735 | bb.fatal( |
736 | "not-applicable-config", | 736 | f"Unknown vex justification '{vex_just_type}', detail '{detail}', for ignored {cve}" |
737 | "not-applicable-platform", | ||
738 | ): | ||
739 | for v in spdx_vex: | ||
740 | v.security_justificationType = ( | ||
741 | oe.spdx30.security_VexJustificationType.vulnerableCodeNotPresent | ||
742 | ) | 737 | ) |
743 | else: | 738 | |
744 | bb.fatal(f"Unknown detail '{detail}' for ignored {cve}") | 739 | for v in spdx_vex: |
740 | v.security_justificationType = oe.spdx30.security_VexJustificationType.NAMED_INDIVIDUALS[ | ||
741 | vex_just_type | ||
742 | ] | ||
743 | |||
745 | elif status == "Unknown": | 744 | elif status == "Unknown": |
746 | bb.note(f"Skipping {cve} with status 'Unknown'") | 745 | bb.note(f"Skipping {cve} with status 'Unknown'") |
747 | else: | 746 | else: |
diff --git a/meta/lib/oe/utils.py b/meta/lib/oe/utils.py index a11db5f3cd..779c5e593f 100644 --- a/meta/lib/oe/utils.py +++ b/meta/lib/oe/utils.py | |||
@@ -415,60 +415,29 @@ def format_pkg_list(pkg_dict, ret_format=None, pkgdata_dir=None): | |||
415 | return output_str | 415 | return output_str |
416 | 416 | ||
417 | 417 | ||
418 | # Helper function to get the host compiler version | 418 | # Helper function to get the host gcc version |
419 | # Do not assume the compiler is gcc | 419 | def get_host_gcc_version(d, taskcontextonly=False): |
420 | def get_host_compiler_version(d, taskcontextonly=False): | ||
421 | import re, subprocess | 420 | import re, subprocess |
422 | 421 | ||
423 | if taskcontextonly and d.getVar('BB_WORKERCONTEXT') != '1': | 422 | if taskcontextonly and d.getVar('BB_WORKERCONTEXT') != '1': |
424 | return | 423 | return |
425 | 424 | ||
426 | compiler = d.getVar("BUILD_CC") | ||
427 | # Get rid of ccache since it is not present when parsing. | ||
428 | if compiler.startswith('ccache '): | ||
429 | compiler = compiler[7:] | ||
430 | try: | 425 | try: |
431 | env = os.environ.copy() | 426 | env = os.environ.copy() |
432 | # datastore PATH does not contain session PATH as set by environment-setup-... | 427 | # datastore PATH does not contain session PATH as set by environment-setup-... |
433 | # this breaks the install-buildtools use-case | 428 | # this breaks the install-buildtools use-case |
434 | # env["PATH"] = d.getVar("PATH") | 429 | # env["PATH"] = d.getVar("PATH") |
435 | output = subprocess.check_output("%s --version" % compiler, \ | 430 | output = subprocess.check_output("gcc --version", \ |
436 | shell=True, env=env, stderr=subprocess.STDOUT).decode("utf-8") | 431 | shell=True, env=env, stderr=subprocess.STDOUT).decode("utf-8") |
437 | except subprocess.CalledProcessError as e: | 432 | except subprocess.CalledProcessError as e: |
438 | bb.fatal("Error running %s --version: %s" % (compiler, e.output.decode("utf-8"))) | 433 | bb.fatal("Error running gcc --version: %s" % (e.output.decode("utf-8"))) |
439 | 434 | ||
440 | match = re.match(r".* (\d+\.\d+)\.\d+.*", output.split('\n')[0]) | 435 | match = re.match(r".* (\d+\.\d+)\.\d+.*", output.split('\n')[0]) |
441 | if not match: | 436 | if not match: |
442 | bb.fatal("Can't get compiler version from %s --version output" % compiler) | 437 | bb.fatal("Can't get compiler version from gcc --version output") |
443 | 438 | ||
444 | version = match.group(1) | 439 | version = match.group(1) |
445 | return compiler, version | 440 | return version |
446 | |||
447 | |||
448 | def host_gcc_version(d, taskcontextonly=False): | ||
449 | import re, subprocess | ||
450 | |||
451 | if taskcontextonly and d.getVar('BB_WORKERCONTEXT') != '1': | ||
452 | return | ||
453 | |||
454 | compiler = d.getVar("BUILD_CC") | ||
455 | # Get rid of ccache since it is not present when parsing. | ||
456 | if compiler.startswith('ccache '): | ||
457 | compiler = compiler[7:] | ||
458 | try: | ||
459 | env = os.environ.copy() | ||
460 | env["PATH"] = d.getVar("PATH") | ||
461 | output = subprocess.check_output("%s --version" % compiler, \ | ||
462 | shell=True, env=env, stderr=subprocess.STDOUT).decode("utf-8") | ||
463 | except subprocess.CalledProcessError as e: | ||
464 | bb.fatal("Error running %s --version: %s" % (compiler, e.output.decode("utf-8"))) | ||
465 | |||
466 | match = re.match(r".* (\d+\.\d+)\.\d+.*", output.split('\n')[0]) | ||
467 | if not match: | ||
468 | bb.fatal("Can't get compiler version from %s --version output" % compiler) | ||
469 | |||
470 | version = match.group(1) | ||
471 | return "-%s" % version if version in ("4.8", "4.9") else "" | ||
472 | 441 | ||
473 | @bb.parse.vardepsexclude("DEFAULTTUNE_MULTILIB_ORIGINAL", "OVERRIDES") | 442 | @bb.parse.vardepsexclude("DEFAULTTUNE_MULTILIB_ORIGINAL", "OVERRIDES") |
474 | def get_multilib_datastore(variant, d): | 443 | def get_multilib_datastore(variant, d): |
diff --git a/meta/lib/oeqa/sdk/buildtools-docs-cases/README b/meta/lib/oeqa/buildtools-docs/cases/README index f8edbc7dad..f8edbc7dad 100644 --- a/meta/lib/oeqa/sdk/buildtools-docs-cases/README +++ b/meta/lib/oeqa/buildtools-docs/cases/README | |||
diff --git a/meta/lib/oeqa/sdk/buildtools-docs-cases/build.py b/meta/lib/oeqa/buildtools-docs/cases/build.py index 6e3ee94292..6e3ee94292 100644 --- a/meta/lib/oeqa/sdk/buildtools-docs-cases/build.py +++ b/meta/lib/oeqa/buildtools-docs/cases/build.py | |||
diff --git a/meta/lib/oeqa/sdk/buildtools-cases/README b/meta/lib/oeqa/buildtools/cases/README index d4f20faa9f..d4f20faa9f 100644 --- a/meta/lib/oeqa/sdk/buildtools-cases/README +++ b/meta/lib/oeqa/buildtools/cases/README | |||
diff --git a/meta/lib/oeqa/sdk/buildtools-cases/build.py b/meta/lib/oeqa/buildtools/cases/build.py index c85c32496b..c85c32496b 100644 --- a/meta/lib/oeqa/sdk/buildtools-cases/build.py +++ b/meta/lib/oeqa/buildtools/cases/build.py | |||
diff --git a/meta/lib/oeqa/sdk/buildtools-cases/gcc.py b/meta/lib/oeqa/buildtools/cases/gcc.py index a62c4d0bc4..a62c4d0bc4 100644 --- a/meta/lib/oeqa/sdk/buildtools-cases/gcc.py +++ b/meta/lib/oeqa/buildtools/cases/gcc.py | |||
diff --git a/meta/lib/oeqa/sdk/buildtools-cases/https.py b/meta/lib/oeqa/buildtools/cases/https.py index 4525e3d758..4525e3d758 100644 --- a/meta/lib/oeqa/sdk/buildtools-cases/https.py +++ b/meta/lib/oeqa/buildtools/cases/https.py | |||
diff --git a/meta/lib/oeqa/sdk/buildtools-cases/sanity.py b/meta/lib/oeqa/buildtools/cases/sanity.py index a55d456656..a55d456656 100644 --- a/meta/lib/oeqa/sdk/buildtools-cases/sanity.py +++ b/meta/lib/oeqa/buildtools/cases/sanity.py | |||
diff --git a/meta/lib/oeqa/core/target/__init__.py b/meta/lib/oeqa/core/target/__init__.py index 1382aa9b52..177f648fe3 100644 --- a/meta/lib/oeqa/core/target/__init__.py +++ b/meta/lib/oeqa/core/target/__init__.py | |||
@@ -10,6 +10,7 @@ class OETarget(object): | |||
10 | 10 | ||
11 | def __init__(self, logger, *args, **kwargs): | 11 | def __init__(self, logger, *args, **kwargs): |
12 | self.logger = logger | 12 | self.logger = logger |
13 | self.runner = None | ||
13 | 14 | ||
14 | @abstractmethod | 15 | @abstractmethod |
15 | def start(self): | 16 | def start(self): |
diff --git a/meta/lib/oeqa/runtime/case.py b/meta/lib/oeqa/runtime/case.py index 9515ca2f3d..2a47771a3d 100644 --- a/meta/lib/oeqa/runtime/case.py +++ b/meta/lib/oeqa/runtime/case.py | |||
@@ -23,6 +23,8 @@ class OERuntimeTestCase(OETestCase): | |||
23 | uninstall_package(self) | 23 | uninstall_package(self) |
24 | 24 | ||
25 | def run_network_serialdebug(runner): | 25 | def run_network_serialdebug(runner): |
26 | if not runner: | ||
27 | return | ||
26 | status, output = runner.run_serial("ip addr") | 28 | status, output = runner.run_serial("ip addr") |
27 | print("ip addr on target: %s %s" % (output, status)) | 29 | print("ip addr on target: %s %s" % (output, status)) |
28 | status, output = runner.run_serial("ping -c 1 %s" % self.target.server_ip) | 30 | status, output = runner.run_serial("ping -c 1 %s" % self.target.server_ip) |
diff --git a/meta/lib/oeqa/sdk/testsdk.py b/meta/lib/oeqa/sdk/testsdk.py index 52b702b6a2..cffcf9f49a 100644 --- a/meta/lib/oeqa/sdk/testsdk.py +++ b/meta/lib/oeqa/sdk/testsdk.py | |||
@@ -31,6 +31,28 @@ class TestSDK(TestSDKBase): | |||
31 | context_class = OESDKTestContext | 31 | context_class = OESDKTestContext |
32 | test_type = 'sdk' | 32 | test_type = 'sdk' |
33 | 33 | ||
34 | def sdk_dir_names(self, d): | ||
35 | """Return list from TESTSDK_CASE_DIRS.""" | ||
36 | testdirs = d.getVar("TESTSDK_CASE_DIRS") | ||
37 | if testdirs: | ||
38 | return testdirs.split() | ||
39 | |||
40 | bb.fatal("TESTSDK_CASE_DIRS unset, can't find SDK test directories.") | ||
41 | |||
42 | def get_sdk_paths(self, d): | ||
43 | """ | ||
44 | Return a list of paths where SDK test cases reside. | ||
45 | |||
46 | SDK tests are expected in <LAYER_DIR>/lib/oeqa/<dirname>/cases | ||
47 | """ | ||
48 | paths = [] | ||
49 | for layer in d.getVar("BBLAYERS").split(): | ||
50 | for dirname in self.sdk_dir_names(d): | ||
51 | case_path = os.path.join(layer, "lib", "oeqa", dirname, "cases") | ||
52 | if os.path.isdir(case_path): | ||
53 | paths.append(case_path) | ||
54 | return paths | ||
55 | |||
34 | def get_tcname(self, d): | 56 | def get_tcname(self, d): |
35 | """ | 57 | """ |
36 | Get the name of the SDK file | 58 | Get the name of the SDK file |
@@ -115,7 +137,7 @@ class TestSDK(TestSDKBase): | |||
115 | 137 | ||
116 | try: | 138 | try: |
117 | modules = (d.getVar("TESTSDK_SUITES") or "").split() | 139 | modules = (d.getVar("TESTSDK_SUITES") or "").split() |
118 | tc.loadTests(self.context_executor_class.default_cases, modules) | 140 | tc.loadTests(self.get_sdk_paths(d), modules) |
119 | except Exception as e: | 141 | except Exception as e: |
120 | import traceback | 142 | import traceback |
121 | bb.fatal("Loading tests failed:\n%s" % traceback.format_exc()) | 143 | bb.fatal("Loading tests failed:\n%s" % traceback.format_exc()) |
diff --git a/meta/lib/oeqa/selftest/cases/devtool.py b/meta/lib/oeqa/selftest/cases/devtool.py index 74a7727cc0..05f228f03e 100644 --- a/meta/lib/oeqa/selftest/cases/devtool.py +++ b/meta/lib/oeqa/selftest/cases/devtool.py | |||
@@ -154,7 +154,7 @@ class DevtoolTestCase(OESelftestTestCase): | |||
154 | value = invalue | 154 | value = invalue |
155 | invar = None | 155 | invar = None |
156 | elif '=' in line: | 156 | elif '=' in line: |
157 | splitline = line.split('=', 1) | 157 | splitline = re.split(r"[?+:]*=[+]?", line, 1) |
158 | var = splitline[0].rstrip() | 158 | var = splitline[0].rstrip() |
159 | value = splitline[1].strip().strip('"') | 159 | value = splitline[1].strip().strip('"') |
160 | if value.endswith('\\'): | 160 | if value.endswith('\\'): |
diff --git a/meta/lib/oeqa/selftest/cases/recipetool.py b/meta/lib/oeqa/selftest/cases/recipetool.py index 2a91f6c7ae..0bd724c8ee 100644 --- a/meta/lib/oeqa/selftest/cases/recipetool.py +++ b/meta/lib/oeqa/selftest/cases/recipetool.py | |||
@@ -757,13 +757,12 @@ class RecipetoolCreateTests(RecipetoolBase): | |||
757 | 757 | ||
758 | def test_recipetool_create_go(self): | 758 | def test_recipetool_create_go(self): |
759 | # Basic test to check go recipe generation | 759 | # Basic test to check go recipe generation |
760 | self.maxDiff = None | ||
761 | |||
760 | temprecipe = os.path.join(self.tempdir, 'recipe') | 762 | temprecipe = os.path.join(self.tempdir, 'recipe') |
761 | os.makedirs(temprecipe) | 763 | os.makedirs(temprecipe) |
762 | 764 | ||
763 | recipefile = os.path.join(temprecipe, 'recipetool-go-test_git.bb') | 765 | recipefile = os.path.join(temprecipe, 'recipetool-go-test_git.bb') |
764 | deps_require_file = os.path.join(temprecipe, 'recipetool-go-test', 'recipetool-go-test-modules.inc') | ||
765 | lics_require_file = os.path.join(temprecipe, 'recipetool-go-test', 'recipetool-go-test-licenses.inc') | ||
766 | modules_txt_file = os.path.join(temprecipe, 'recipetool-go-test', 'modules.txt') | ||
767 | 766 | ||
768 | srcuri = 'https://git.yoctoproject.org/recipetool-go-test.git' | 767 | srcuri = 'https://git.yoctoproject.org/recipetool-go-test.git' |
769 | srcrev = "c3e213c01b6c1406b430df03ef0d1ae77de5d2f7" | 768 | srcrev = "c3e213c01b6c1406b430df03ef0d1ae77de5d2f7" |
@@ -771,13 +770,11 @@ class RecipetoolCreateTests(RecipetoolBase): | |||
771 | 770 | ||
772 | result = runCmd('recipetool create -o %s %s -S %s -B %s' % (temprecipe, srcuri, srcrev, srcbranch)) | 771 | result = runCmd('recipetool create -o %s %s -S %s -B %s' % (temprecipe, srcuri, srcrev, srcbranch)) |
773 | 772 | ||
774 | self.maxDiff = None | 773 | inherits = ['go-mod', 'go-mod-update-modules'] |
775 | inherits = ['go-vendor'] | ||
776 | 774 | ||
777 | checkvars = {} | 775 | checkvars = {} |
778 | checkvars['GO_IMPORT'] = "git.yoctoproject.org/recipetool-go-test" | 776 | checkvars['GO_IMPORT'] = "git.yoctoproject.org/recipetool-go-test" |
779 | checkvars['SRC_URI'] = {'git://${GO_IMPORT};destsuffix=git/src/${GO_IMPORT};nobranch=1;name=${BPN};protocol=https', | 777 | checkvars['SRC_URI'] = {'git://${GO_IMPORT};protocol=https;nobranch=1;destsuffix=${GO_SRCURI_DESTSUFFIX}'} |
780 | 'file://modules.txt'} | ||
781 | checkvars['LIC_FILES_CHKSUM'] = { | 778 | checkvars['LIC_FILES_CHKSUM'] = { |
782 | 'file://src/${GO_IMPORT}/LICENSE;md5=4e3933dd47afbf115e484d11385fb3bd', | 779 | 'file://src/${GO_IMPORT}/LICENSE;md5=4e3933dd47afbf115e484d11385fb3bd', |
783 | 'file://src/${GO_IMPORT}/is/LICENSE;md5=62beaee5a116dd1e80161667b1df39ab' | 780 | 'file://src/${GO_IMPORT}/is/LICENSE;md5=62beaee5a116dd1e80161667b1df39ab' |
@@ -786,26 +783,16 @@ class RecipetoolCreateTests(RecipetoolBase): | |||
786 | self._test_recipe_contents(recipefile, checkvars, inherits) | 783 | self._test_recipe_contents(recipefile, checkvars, inherits) |
787 | self.assertNotIn('Traceback', result.output) | 784 | self.assertNotIn('Traceback', result.output) |
788 | 785 | ||
786 | lics_require_file = os.path.join(temprecipe, 'recipetool-go-test-licenses.inc') | ||
787 | self.assertFileExists(lics_require_file) | ||
789 | checkvars = {} | 788 | checkvars = {} |
790 | checkvars['VENDORED_LIC_FILES_CHKSUM'] = set( | 789 | checkvars['LIC_FILES_CHKSUM'] = {'file://pkg/mod/github.com/godbus/dbus/v5@v5.1.0/LICENSE;md5=09042bd5c6c96a2b9e45ddf1bc517eed;spdx=BSD-2-Clause'} |
791 | ['file://src/${GO_IMPORT}/vendor/github.com/godbus/dbus/v5/LICENSE;md5=09042bd5c6c96a2b9e45ddf1bc517eed', | ||
792 | 'file://src/${GO_IMPORT}/vendor/github.com/matryer/is/LICENSE;md5=62beaee5a116dd1e80161667b1df39ab']) | ||
793 | self.assertTrue(os.path.isfile(lics_require_file)) | ||
794 | self._test_recipe_contents(lics_require_file, checkvars, []) | 790 | self._test_recipe_contents(lics_require_file, checkvars, []) |
795 | 791 | ||
796 | # make sure that dependencies don't mention local directory ./matryer/is | 792 | deps_require_file = os.path.join(temprecipe, 'recipetool-go-test-go-mods.inc') |
797 | dependencies = \ | 793 | self.assertFileExists(deps_require_file) |
798 | [ ('github.com/godbus/dbus','v5.1.0', 'github.com/godbus/dbus/v5', '/v5', ''), | ||
799 | ] | ||
800 | |||
801 | src_uri = set() | ||
802 | for d in dependencies: | ||
803 | src_uri.add(self._go_urifiy(*d)) | ||
804 | |||
805 | checkvars = {} | 794 | checkvars = {} |
806 | checkvars['GO_DEPENDENCIES_SRC_URI'] = src_uri | 795 | checkvars['SRC_URI'] = {'gomod://github.com/godbus/dbus/v5;version=v5.1.0;sha256sum=03dfa8e71089a6f477310d15c4d3a036d82d028532881b50fee254358e782ad9'} |
807 | |||
808 | self.assertTrue(os.path.isfile(deps_require_file)) | ||
809 | self._test_recipe_contents(deps_require_file, checkvars, []) | 796 | self._test_recipe_contents(deps_require_file, checkvars, []) |
810 | 797 | ||
811 | class RecipetoolTests(RecipetoolBase): | 798 | class RecipetoolTests(RecipetoolBase): |
diff --git a/meta/recipes-bsp/opensbi/opensbi/0001-Makefile-Add-flag-for-reprodubility-compiler-flags.patch b/meta/recipes-bsp/opensbi/opensbi/0001-Makefile-Add-flag-for-reprodubility-compiler-flags.patch deleted file mode 100644 index e650476f50..0000000000 --- a/meta/recipes-bsp/opensbi/opensbi/0001-Makefile-Add-flag-for-reprodubility-compiler-flags.patch +++ /dev/null | |||
@@ -1,49 +0,0 @@ | |||
1 | From f4c440219f42d74bd3d6688132ea876f3f51e601 Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Wed, 14 May 2025 19:50:24 -0700 | ||
4 | Subject: [PATCH] Makefile: Add flag for reprodubility compiler flags | ||
5 | |||
6 | Provides mechanism to remove absolute paths from binaries using | ||
7 | -ffile-prefix-map | ||
8 | |||
9 | It will help distros (e.g. yocto based ones ) which want to ship | ||
10 | the .elf files but need to scrub absolute paths in objects | ||
11 | |||
12 | Upstream-Status: Submitted [https://lists.infradead.org/pipermail/opensbi/2025-May/008458.html] | ||
13 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
14 | --- | ||
15 | Makefile | 7 +++++++ | ||
16 | 1 file changed, 7 insertions(+) | ||
17 | |||
18 | diff --git a/Makefile b/Makefile | ||
19 | index e90836c7..22d4ecff 100644 | ||
20 | --- a/Makefile | ||
21 | +++ b/Makefile | ||
22 | @@ -174,6 +174,11 @@ else | ||
23 | USE_LD_FLAG = -fuse-ld=bfd | ||
24 | endif | ||
25 | |||
26 | +REPRODUCIBLE ?= n | ||
27 | +ifeq ($(REPRODUCIBLE),y) | ||
28 | +REPRODUCIBLE_FLAGS += -ffile-prefix-map=$(src_dir)= | ||
29 | +endif | ||
30 | + | ||
31 | # Check whether the linker supports creating PIEs | ||
32 | OPENSBI_LD_PIE := $(shell $(CC) $(CLANG_TARGET) $(RELAX_FLAG) $(USE_LD_FLAG) -fPIE -nostdlib -Wl,-pie -x c /dev/null -o /dev/null >/dev/null 2>&1 && echo y || echo n) | ||
33 | |||
34 | @@ -362,6 +367,7 @@ GENFLAGS += $(firmware-genflags-y) | ||
35 | |||
36 | CFLAGS = -g -Wall -Werror -ffreestanding -nostdlib -fno-stack-protector -fno-strict-aliasing -ffunction-sections -fdata-sections | ||
37 | CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls | ||
38 | +CFLAGS += $(REPRODUCIBLE_FLAGS) | ||
39 | # Optionally supported flags | ||
40 | ifeq ($(CC_SUPPORT_VECTOR),y) | ||
41 | CFLAGS += -DOPENSBI_CC_SUPPORT_VECTOR | ||
42 | @@ -387,6 +393,7 @@ CPPFLAGS += $(firmware-cppflags-y) | ||
43 | ASFLAGS = -g -Wall -nostdlib | ||
44 | ASFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls | ||
45 | ASFLAGS += -fPIE | ||
46 | +ASFLAGS += $(REPRODUCIBLE_FLAGS) | ||
47 | # Optionally supported flags | ||
48 | ifeq ($(CC_SUPPORT_SAVE_RESTORE),y) | ||
49 | ASFLAGS += -mno-save-restore | ||
diff --git a/meta/recipes-bsp/opensbi/opensbi_1.6.bb b/meta/recipes-bsp/opensbi/opensbi_1.7.bb index 308ac43ac8..a460062e93 100644 --- a/meta/recipes-bsp/opensbi/opensbi_1.6.bb +++ b/meta/recipes-bsp/opensbi/opensbi_1.7.bb | |||
@@ -8,10 +8,8 @@ require opensbi-payloads.inc | |||
8 | 8 | ||
9 | inherit deploy | 9 | inherit deploy |
10 | 10 | ||
11 | SRCREV = "bd613dd92113f683052acfb23d9dc8ba60029e0a" | 11 | SRCREV = "a32a91069119e7a5aa31e6bc51d5e00860be3d80" |
12 | SRC_URI = "git://github.com/riscv/opensbi.git;branch=master;protocol=https \ | 12 | SRC_URI = "git://github.com/riscv/opensbi.git;branch=master;protocol=https" |
13 | file://0001-Makefile-Add-flag-for-reprodubility-compiler-flags.patch \ | ||
14 | " | ||
15 | 13 | ||
16 | TARGET_DBGSRC_DIR = "/share/opensbi/*/generic/firmware/" | 14 | TARGET_DBGSRC_DIR = "/share/opensbi/*/generic/firmware/" |
17 | 15 | ||
diff --git a/meta/recipes-connectivity/bind/bind_9.20.9.bb b/meta/recipes-connectivity/bind/bind_9.20.10.bb index 93ff957fc5..32f0bdf7b5 100644 --- a/meta/recipes-connectivity/bind/bind_9.20.9.bb +++ b/meta/recipes-connectivity/bind/bind_9.20.10.bb | |||
@@ -20,7 +20,7 @@ SRC_URI = "https://ftp.isc.org/isc/bind9/${PV}/${BPN}-${PV}.tar.xz \ | |||
20 | file://0001-avoid-start-failure-with-bind-user.patch \ | 20 | file://0001-avoid-start-failure-with-bind-user.patch \ |
21 | " | 21 | " |
22 | 22 | ||
23 | SRC_URI[sha256sum] = "3d26900ed9c9a859073ffea9b97e292c1248dad18279b17b05fcb23c3091f86d" | 23 | SRC_URI[sha256sum] = "0fb3ba2c337bb488ca68f5df296c435cd255058fb63d0822e91db0235c905716" |
24 | 24 | ||
25 | UPSTREAM_CHECK_URI = "https://ftp.isc.org/isc/bind9/" | 25 | UPSTREAM_CHECK_URI = "https://ftp.isc.org/isc/bind9/" |
26 | # follow the ESV versions divisible by 2 | 26 | # follow the ESV versions divisible by 2 |
diff --git a/meta/recipes-connectivity/mobile-broadband-provider-info/mobile-broadband-provider-info_20240407.bb b/meta/recipes-connectivity/mobile-broadband-provider-info/mobile-broadband-provider-info_20250613.bb index 2e8702a045..72663c7e0a 100644 --- a/meta/recipes-connectivity/mobile-broadband-provider-info/mobile-broadband-provider-info_20240407.bb +++ b/meta/recipes-connectivity/mobile-broadband-provider-info/mobile-broadband-provider-info_20250613.bb | |||
@@ -7,8 +7,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=87964579b2a8ece4bc6744d2dc9a8b04" | |||
7 | 7 | ||
8 | PE = "1" | 8 | PE = "1" |
9 | 9 | ||
10 | SRC_URI = "git://gitlab.gnome.org/GNOME/mobile-broadband-provider-info.git;protocol=https;branch=main" | 10 | SRC_URI = "git://gitlab.gnome.org/GNOME/mobile-broadband-provider-info.git;protocol=https;branch=main;tag=${PV}" |
11 | SRCREV = "55ba955d53305df96123534488fd160ea882b4dd" | 11 | SRCREV = "2a1b409491a531aedcf3eb3ba907929d96bd181a" |
12 | 12 | ||
13 | inherit meson | 13 | inherit meson |
14 | 14 | ||
diff --git a/meta/recipes-core/meta/buildtools-docs-tarball.bb b/meta/recipes-core/meta/buildtools-docs-tarball.bb index b9ef68eb6d..98d47f7b71 100644 --- a/meta/recipes-core/meta/buildtools-docs-tarball.bb +++ b/meta/recipes-core/meta/buildtools-docs-tarball.bb | |||
@@ -7,6 +7,8 @@ LICENSE = "MIT" | |||
7 | # Add nativesdk equivalent of build-essentials | 7 | # Add nativesdk equivalent of build-essentials |
8 | TOOLCHAIN_HOST_TASK += "\ | 8 | TOOLCHAIN_HOST_TASK += "\ |
9 | nativesdk-python3-sphinx \ | 9 | nativesdk-python3-sphinx \ |
10 | nativesdk-python3-sphinx-argparse \ | ||
11 | nativesdk-python3-sphinx-copybutton \ | ||
10 | nativesdk-python3-sphinx-rtd-theme \ | 12 | nativesdk-python3-sphinx-rtd-theme \ |
11 | nativesdk-python3-pyyaml \ | 13 | nativesdk-python3-pyyaml \ |
12 | nativesdk-rsvg \ | 14 | nativesdk-rsvg \ |
@@ -16,4 +18,5 @@ TOOLCHAIN_OUTPUTNAME = "${SDK_ARCH}-buildtools-docs-nativesdk-standalone-${DISTR | |||
16 | 18 | ||
17 | SDK_TITLE = "Docs Build tools tarball" | 19 | SDK_TITLE = "Docs Build tools tarball" |
18 | 20 | ||
19 | TESTSDK_CASES = "buildtools-docs-cases" | 21 | # Directory that contains testcases |
22 | TESTSDK_CASE_DIRS = "buildtools-docs" \ No newline at end of file | ||
diff --git a/meta/recipes-core/meta/buildtools-tarball.bb b/meta/recipes-core/meta/buildtools-tarball.bb index 6fa6d93a3d..02117ab84d 100644 --- a/meta/recipes-core/meta/buildtools-tarball.bb +++ b/meta/recipes-core/meta/buildtools-tarball.bb | |||
@@ -124,22 +124,7 @@ TOOLCHAIN_NEED_CONFIGSITE_CACHE = "" | |||
124 | # The recipe doesn't need any default deps | 124 | # The recipe doesn't need any default deps |
125 | INHIBIT_DEFAULT_DEPS = "1" | 125 | INHIBIT_DEFAULT_DEPS = "1" |
126 | 126 | ||
127 | # Directory in testsdk that contains testcases | 127 | inherit testsdk |
128 | TESTSDK_CASES = "buildtools-cases" | ||
129 | 128 | ||
130 | # We have our own code, avoid deferred inherit | 129 | # Directory that contains testcases |
131 | SDK_CLASSES:remove = "testsdk" | 130 | TESTSDK_CASE_DIRS = "buildtools" \ No newline at end of file |
132 | |||
133 | python do_testsdk() { | ||
134 | import oeqa.sdk.testsdk | ||
135 | testsdk = oeqa.sdk.testsdk.TestSDK() | ||
136 | |||
137 | cases_path = os.path.join(os.path.abspath(os.path.dirname(oeqa.sdk.testsdk.__file__)), d.getVar("TESTSDK_CASES")) | ||
138 | testsdk.context_executor_class.default_cases = [cases_path,] | ||
139 | |||
140 | testsdk.run(d) | ||
141 | } | ||
142 | addtask testsdk | ||
143 | do_testsdk[nostamp] = "1" | ||
144 | do_testsdk[network] = "1" | ||
145 | do_testsdk[depends] += "xz-native:do_populate_sysroot" | ||
diff --git a/meta/recipes-core/musl/libucontext_1.3.2.bb b/meta/recipes-core/musl/libucontext_1.3.2.bb index 2362cba5c8..c5b802207b 100644 --- a/meta/recipes-core/musl/libucontext_1.3.2.bb +++ b/meta/recipes-core/musl/libucontext_1.3.2.bb | |||
@@ -48,3 +48,9 @@ def map_kernel_arch(a, d): | |||
48 | 48 | ||
49 | EXTRA_OEMESON = "-Dcpu=${@map_kernel_arch(d.getVar('TARGET_ARCH'), d)}" | 49 | EXTRA_OEMESON = "-Dcpu=${@map_kernel_arch(d.getVar('TARGET_ARCH'), d)}" |
50 | inherit meson | 50 | inherit meson |
51 | |||
52 | ARM_TARGET_CPPFLAGS = "" | ||
53 | ARM_TARGET_CPPFLAGS:append:arm = "${@bb.utils.contains('TARGET_FPU', 'hard', ' -DFORCE_HARD_FLOAT', '', d)}" | ||
54 | ARM_TARGET_CPPFLAGS:append:arm = "${@bb.utils.contains('TARGET_FPU', 'soft', ' -DFORCE_SOFT_FLOAT', '', d)}" | ||
55 | |||
56 | TARGET_CPPFLAGS .= "${ARM_TARGET_CPPFLAGS}" | ||
diff --git a/meta/recipes-core/systemd/systemd/0015-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch b/meta/recipes-core/systemd/systemd/0015-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch index f0aa3a0bd8..1443c5082b 100644 --- a/meta/recipes-core/systemd/systemd/0015-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch +++ b/meta/recipes-core/systemd/systemd/0015-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch | |||
@@ -15,8 +15,6 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> | |||
15 | src/shared/base-filesystem.c | 1 + | 15 | src/shared/base-filesystem.c | 1 + |
16 | 2 files changed, 7 insertions(+) | 16 | 2 files changed, 7 insertions(+) |
17 | 17 | ||
18 | diff --git a/src/basic/missing_syscall.h b/src/basic/missing_syscall.h | ||
19 | index e2cd8b4e35..f2fe489de7 100644 | ||
20 | --- a/src/basic/missing_syscall.h | 18 | --- a/src/basic/missing_syscall.h |
21 | +++ b/src/basic/missing_syscall.h | 19 | +++ b/src/basic/missing_syscall.h |
22 | @@ -20,6 +20,12 @@ | 20 | @@ -20,6 +20,12 @@ |
@@ -32,8 +30,6 @@ index e2cd8b4e35..f2fe489de7 100644 | |||
32 | #include "macro.h" | 30 | #include "macro.h" |
33 | #include "missing_keyctl.h" | 31 | #include "missing_keyctl.h" |
34 | #include "missing_sched.h" | 32 | #include "missing_sched.h" |
35 | diff --git a/src/shared/base-filesystem.c b/src/shared/base-filesystem.c | ||
36 | index 389c77eee0..e3627c4603 100644 | ||
37 | --- a/src/shared/base-filesystem.c | 33 | --- a/src/shared/base-filesystem.c |
38 | +++ b/src/shared/base-filesystem.c | 34 | +++ b/src/shared/base-filesystem.c |
39 | @@ -20,6 +20,7 @@ | 35 | @@ -20,6 +20,7 @@ |
@@ -42,8 +38,5 @@ index 389c77eee0..e3627c4603 100644 | |||
42 | #include "user-util.h" | 38 | #include "user-util.h" |
43 | +#include "missing_syscall.h" | 39 | +#include "missing_syscall.h" |
44 | 40 | ||
45 | typedef struct BaseFilesystem { | 41 | typedef enum BaseFilesystemFlags { |
46 | const char *dir; /* directory or symlink to create */ | 42 | BASE_FILESYSTEM_IGNORE_ON_FAILURE = 1 << 0, |
47 | -- | ||
48 | 2.34.1 | ||
49 | |||
diff --git a/meta/recipes-core/ttyrun/ttyrun_2.37.0.bb b/meta/recipes-core/ttyrun/ttyrun_2.38.0.bb index 507ad1b09e..90380e51ea 100644 --- a/meta/recipes-core/ttyrun/ttyrun_2.37.0.bb +++ b/meta/recipes-core/ttyrun/ttyrun_2.38.0.bb | |||
@@ -6,8 +6,8 @@ HOMEPAGE = "https://github.com/ibm-s390-linux/s390-tools" | |||
6 | LICENSE = "MIT" | 6 | LICENSE = "MIT" |
7 | LIC_FILES_CHKSUM = "file://LICENSE;md5=f5118f167b055bfd7c3450803f1847af" | 7 | LIC_FILES_CHKSUM = "file://LICENSE;md5=f5118f167b055bfd7c3450803f1847af" |
8 | 8 | ||
9 | SRC_URI = "git://github.com/ibm-s390-linux/s390-tools;protocol=https;branch=master" | 9 | SRC_URI = "git://github.com/ibm-s390-linux/s390-tools;protocol=https;branch=master;tag=v${PV}" |
10 | SRCREV = "793c037ded98cd001075cdb55a9c58e122380256" | 10 | SRCREV = "660bab6e68fded26b2117e1dcec0844549a22fed" |
11 | 11 | ||
12 | CVE_PRODUCT = "s390-tools" | 12 | CVE_PRODUCT = "s390-tools" |
13 | 13 | ||
diff --git a/meta/recipes-devtools/clang/common-clang.inc b/meta/recipes-devtools/clang/common-clang.inc index 15e6610b9b..cbea6b4d75 100644 --- a/meta/recipes-devtools/clang/common-clang.inc +++ b/meta/recipes-devtools/clang/common-clang.inc | |||
@@ -5,7 +5,7 @@ LLVM_HTTP ?= "https://github.com/llvm" | |||
5 | 5 | ||
6 | MAJOR_VER = "20" | 6 | MAJOR_VER = "20" |
7 | MINOR_VER = "1" | 7 | MINOR_VER = "1" |
8 | PATCH_VER = "6" | 8 | PATCH_VER = "7" |
9 | # could be 'rcX' or 'git' or empty ( for release ) | 9 | # could be 'rcX' or 'git' or empty ( for release ) |
10 | VER_SUFFIX = "" | 10 | VER_SUFFIX = "" |
11 | 11 | ||
diff --git a/meta/recipes-devtools/clang/common.inc b/meta/recipes-devtools/clang/common.inc index 0684e648cc..37d37ec197 100644 --- a/meta/recipes-devtools/clang/common.inc +++ b/meta/recipes-devtools/clang/common.inc | |||
@@ -17,7 +17,7 @@ BASEURI ?= "${LLVM_HTTP}/llvm-project/releases/download/llvmorg-${PV}/llvm-proje | |||
17 | UPSTREAM_CHECK_URI = "${LLVM_HTTP}/llvm-project/releases/" | 17 | UPSTREAM_CHECK_URI = "${LLVM_HTTP}/llvm-project/releases/" |
18 | UPSTREAM_CHECK_REGEX = "releases/tag/llvmorg-?(?P<pver>\d+(\.\d+)+)" | 18 | UPSTREAM_CHECK_REGEX = "releases/tag/llvmorg-?(?P<pver>\d+(\.\d+)+)" |
19 | SOURCEDIR ?= "llvm-project-${PV}.src" | 19 | SOURCEDIR ?= "llvm-project-${PV}.src" |
20 | SRC_URI[sha256sum] = "5c70549d524284c184fe9fbff862c3d2d7a61b787570611b5a30e5cc345f145e" | 20 | SRC_URI[sha256sum] = "cd8fd55d97ad3e360b1d5aaf98388d1f70dfffb7df36beee478be3b839ff9008" |
21 | 21 | ||
22 | SRC_URI = "\ | 22 | SRC_URI = "\ |
23 | ${BASEURI} \ | 23 | ${BASEURI} \ |
diff --git a/meta/recipes-devtools/clang/compiler-rt-sanitizers_git.bb b/meta/recipes-devtools/clang/compiler-rt-sanitizers_git.bb index 47438014b2..087a766302 100644 --- a/meta/recipes-devtools/clang/compiler-rt-sanitizers_git.bb +++ b/meta/recipes-devtools/clang/compiler-rt-sanitizers_git.bb | |||
@@ -37,6 +37,7 @@ CFLAGS += "${COMPILER_RT}" | |||
37 | CXXFLAGS += "${COMPILER_RT} ${LIBCPLUSPLUS}" | 37 | CXXFLAGS += "${COMPILER_RT} ${LIBCPLUSPLUS}" |
38 | 38 | ||
39 | TOOLCHAIN = "clang" | 39 | TOOLCHAIN = "clang" |
40 | TOOLCHAIN_NATIVE = "clang" | ||
40 | 41 | ||
41 | DEPENDS += "ninja-native virtual/crypt compiler-rt" | 42 | DEPENDS += "ninja-native virtual/crypt compiler-rt" |
42 | DEPENDS:append:class-native = " clang-native libxcrypt-native libcxx-native" | 43 | DEPENDS:append:class-native = " clang-native libxcrypt-native libcxx-native" |
diff --git a/meta/recipes-devtools/clang/compiler-rt_git.bb b/meta/recipes-devtools/clang/compiler-rt_git.bb index ff6cc29bf3..342a7b0e95 100644 --- a/meta/recipes-devtools/clang/compiler-rt_git.bb +++ b/meta/recipes-devtools/clang/compiler-rt_git.bb | |||
@@ -29,14 +29,15 @@ DEPENDS += "ninja-native libgcc" | |||
29 | DEPENDS:append:class-target = " virtual/cross-c++ clang-cross-${TARGET_ARCH} virtual/${MLPREFIX}libc gcc-runtime" | 29 | DEPENDS:append:class-target = " virtual/cross-c++ clang-cross-${TARGET_ARCH} virtual/${MLPREFIX}libc gcc-runtime" |
30 | DEPENDS:append:class-nativesdk = " virtual/cross-c++ clang-native clang-crosssdk-${SDK_SYS} nativesdk-gcc-runtime" | 30 | DEPENDS:append:class-nativesdk = " virtual/cross-c++ clang-native clang-crosssdk-${SDK_SYS} nativesdk-gcc-runtime" |
31 | DEPENDS:append:class-native = " clang-native" | 31 | DEPENDS:append:class-native = " clang-native" |
32 | DEPENDS:remove:class-native = "libcxx-native compiler-rt-native" | ||
32 | 33 | ||
33 | # Trick clang.bbclass into not creating circular dependencies | 34 | # Trick clang.bbclass into not creating circular dependencies |
34 | UNWINDLIB:class-nativesdk = "--unwindlib=libgcc" | 35 | UNWINDLIB:class-nativesdk = "--unwindlib=libgcc" |
35 | COMPILER_RT:class-nativesdk = "-rtlib=libgcc" | 36 | COMPILER_RT:class-nativesdk = "-rtlib=libgcc" |
36 | LIBCPLUSPLUS:class-nativesdk = "-stdlib=libstdc++" | 37 | LIBCPLUSPLUS:class-nativesdk = "-stdlib=libstdc++" |
37 | UNWINDLIB:class-native = "--unwindlib=libgcc" | 38 | UNWINDLIB:class-native = "" |
38 | COMPILER_RT:class-native = "-rtlib=libgcc" | 39 | COMPILER_RT:class-native = "" |
39 | LIBCPLUSPLUS:class-native = "-stdlib=libstdc++" | 40 | LIBCPLUSPLUS:class-native = "" |
40 | UNWINDLIB:class-target = "--unwindlib=libgcc" | 41 | UNWINDLIB:class-target = "--unwindlib=libgcc" |
41 | COMPILER_RT:class-target = "-rtlib=libgcc" | 42 | COMPILER_RT:class-target = "-rtlib=libgcc" |
42 | LIBCPLUSPLUS:class-target = "-stdlib=libstdc++" | 43 | LIBCPLUSPLUS:class-target = "-stdlib=libstdc++" |
@@ -52,8 +53,6 @@ HF:class-target = "${@ bb.utils.contains('TUNE_CCARGS_MFLOAT', 'hard', 'hf', '', | |||
52 | 53 | ||
53 | CC = "${CCACHE}${HOST_PREFIX}clang ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" | 54 | CC = "${CCACHE}${HOST_PREFIX}clang ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" |
54 | CXX = "${CCACHE}${HOST_PREFIX}clang++ ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" | 55 | CXX = "${CCACHE}${HOST_PREFIX}clang++ ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" |
55 | BUILD_CC = "${CCACHE}clang ${BUILD_CC_ARCH}" | ||
56 | BUILD_CXX = "${CCACHE}clang++ ${BUILD_CC_ARCH}" | ||
57 | LDFLAGS += "${COMPILER_RT} ${UNWINDLIB}" | 56 | LDFLAGS += "${COMPILER_RT} ${UNWINDLIB}" |
58 | CXXFLAGS += "${LIBCPLUSPLUS}" | 57 | CXXFLAGS += "${LIBCPLUSPLUS}" |
59 | 58 | ||
diff --git a/meta/recipes-devtools/clang/libcxx_git.bb b/meta/recipes-devtools/clang/libcxx_git.bb index f5bf17f30a..d355fc3a0f 100644 --- a/meta/recipes-devtools/clang/libcxx_git.bb +++ b/meta/recipes-devtools/clang/libcxx_git.bb | |||
@@ -25,6 +25,7 @@ DEPENDS += "ninja-native" | |||
25 | DEPENDS:append:class-target = " virtual/cross-c++ clang-cross-${TARGET_ARCH} virtual/${MLPREFIX}libc virtual/${MLPREFIX}compilerlibs" | 25 | DEPENDS:append:class-target = " virtual/cross-c++ clang-cross-${TARGET_ARCH} virtual/${MLPREFIX}libc virtual/${MLPREFIX}compilerlibs" |
26 | DEPENDS:append:class-nativesdk = " virtual/cross-c++ clang-crosssdk-${SDK_SYS} nativesdk-compiler-rt" | 26 | DEPENDS:append:class-nativesdk = " virtual/cross-c++ clang-crosssdk-${SDK_SYS} nativesdk-compiler-rt" |
27 | DEPENDS:append:class-native = " clang-native compiler-rt-native" | 27 | DEPENDS:append:class-native = " clang-native compiler-rt-native" |
28 | DEPENDS:remove:class-native = "libcxx-native" | ||
28 | 29 | ||
29 | COMPILER_RT ?= "${@bb.utils.contains("PACKAGECONFIG", "compiler-rt", "-rtlib=compiler-rt", "-rtlib=libgcc", d)}" | 30 | COMPILER_RT ?= "${@bb.utils.contains("PACKAGECONFIG", "compiler-rt", "-rtlib=compiler-rt", "-rtlib=libgcc", d)}" |
30 | UNWINDLIB ?= "${@bb.utils.contains("PACKAGECONFIG", "unwind", "-unwindlib=none", "-unwindlib=libgcc", d)}" | 31 | UNWINDLIB ?= "${@bb.utils.contains("PACKAGECONFIG", "unwind", "-unwindlib=none", "-unwindlib=libgcc", d)}" |
@@ -55,6 +56,7 @@ LDFLAGS += "${COMPILER_RT} ${UNWINDLIB} ${LIBCPLUSPLUS}" | |||
55 | CXXFLAGS += "${LIBCPLUSPLUS}" | 56 | CXXFLAGS += "${LIBCPLUSPLUS}" |
56 | 57 | ||
57 | TOOLCHAIN = "clang" | 58 | TOOLCHAIN = "clang" |
59 | TOOLCHAIN_NATIVE = "clang" | ||
58 | 60 | ||
59 | OECMAKE_SOURCEPATH = "${S}/llvm" | 61 | OECMAKE_SOURCEPATH = "${S}/llvm" |
60 | EXTRA_OECMAKE += "\ | 62 | EXTRA_OECMAKE += "\ |
diff --git a/meta/recipes-devtools/dosfstools/dosfstools/0001-fsck.fat-Adhere-to-the-fsck-exit-codes.patch b/meta/recipes-devtools/dosfstools/dosfstools/0001-fsck.fat-Adhere-to-the-fsck-exit-codes.patch new file mode 100644 index 0000000000..3d2ce48723 --- /dev/null +++ b/meta/recipes-devtools/dosfstools/dosfstools/0001-fsck.fat-Adhere-to-the-fsck-exit-codes.patch | |||
@@ -0,0 +1,214 @@ | |||
1 | From 9d165145b9f9c20a56e111360fbc2003c2b28cba Mon Sep 17 00:00:00 2001 | ||
2 | From: Ricardo Simoes <ricardo.simoes@pt.bosch.com> | ||
3 | Date: Thu, 26 Jun 2025 08:14:29 +0100 | ||
4 | Subject: [PATCH] fsck.fat: Adhere to the fsck exit codes | ||
5 | |||
6 | fsck.fat is used as a filesystem-specific checker for the `fsck`. This | ||
7 | also causes `fsck` to return the same exit-codes given by `fsck.fat`. | ||
8 | |||
9 | In most cases this is already the case. One exception to that comes when | ||
10 | checking a read-only filesystem. In that case `fsck.fat` will return 6, | ||
11 | which for `fsck` means "Fiesystem errors left uncorrected" and "System | ||
12 | should reboot". When a more proper response would be to return 8, | ||
13 | "Operational Error". | ||
14 | |||
15 | This commit solves that problem by introducing a new header file which | ||
16 | standardizes the exit codes used by `fsck.fat`. | ||
17 | |||
18 | Signed-off-by: Ricardo Ungerer <ungerer.ricardo@gmail.com> | ||
19 | |||
20 | Upstream-Status: Inactive-Upstream [lastcommit: 2023, lastrelease: 2021] | ||
21 | Upstream-Status: Submitted [https://github.com/dosfstools/dosfstools/pull/217] | ||
22 | --- | ||
23 | src/Makefile.am | 4 ++-- | ||
24 | src/common.c | 8 ++++---- | ||
25 | src/exit_codes.h | 15 +++++++++++++++ | ||
26 | src/fsck.fat.c | 23 ++++++++++++----------- | ||
27 | src/io.c | 3 ++- | ||
28 | 5 files changed, 35 insertions(+), 18 deletions(-) | ||
29 | create mode 100644 src/exit_codes.h | ||
30 | |||
31 | diff --git a/src/Makefile.am b/src/Makefile.am | ||
32 | index a389046..48f00dd 100644 | ||
33 | --- a/src/Makefile.am | ||
34 | +++ b/src/Makefile.am | ||
35 | @@ -23,7 +23,7 @@ EXTRA_DIST = blkdev/README | ||
36 | |||
37 | charconv_common_sources = charconv.c charconv.h | ||
38 | charconv_common_ldadd = $(LIBICONV) | ||
39 | -fscklabel_common_sources = boot.c boot.h common.c common.h \ | ||
40 | +fscklabel_common_sources = boot.c boot.h common.c common.h exit_codes.h \ | ||
41 | fat.c fat.h io.c io.h msdos_fs.h \ | ||
42 | $(charconv_common_sources) \ | ||
43 | fsck.fat.h endian_compat.h | ||
44 | @@ -38,7 +38,7 @@ devinfo_common_sources = device_info.c device_info.h \ | ||
45 | blkdev/blkdev.c blkdev/blkdev.h \ | ||
46 | blkdev/linux_version.c blkdev/linux_version.h | ||
47 | mkfs_fat_SOURCES = mkfs.fat.c msdos_fs.h common.c common.h endian_compat.h \ | ||
48 | - $(charconv_common_sources) $(devinfo_common_sources) | ||
49 | + exit_codes.h $(charconv_common_sources) $(devinfo_common_sources) | ||
50 | mkfs_fat_CPPFLAGS = -I$(srcdir)/blkdev | ||
51 | mkfs_fat_CFLAGS = $(AM_CFLAGS) | ||
52 | mkfs_fat_LDADD = $(charconv_common_ldadd) | ||
53 | diff --git a/src/common.c b/src/common.c | ||
54 | index 4f1afcb..089d4b3 100644 | ||
55 | --- a/src/common.c | ||
56 | +++ b/src/common.c | ||
57 | @@ -38,7 +38,7 @@ | ||
58 | |||
59 | #include "common.h" | ||
60 | #include "charconv.h" | ||
61 | - | ||
62 | +#include "exit_codes.h" | ||
63 | |||
64 | int interactive; | ||
65 | int write_immed; | ||
66 | @@ -62,7 +62,7 @@ void die(const char *msg, ...) | ||
67 | vfprintf(stderr, msg, args); | ||
68 | va_end(args); | ||
69 | fprintf(stderr, "\n"); | ||
70 | - exit(1); | ||
71 | + exit(OPERATIONAL_ERROR); | ||
72 | } | ||
73 | |||
74 | void pdie(const char *msg, ...) | ||
75 | @@ -205,7 +205,7 @@ int get_choice(int noninteractive_result, const char *noninteractive_msg, | ||
76 | } while (choice == '\n'); /* filter out enter presses */ | ||
77 | |||
78 | if (choice == EOF) | ||
79 | - exit(1); | ||
80 | + exit(USAGE_OR_SYNTAX_ERROR); | ||
81 | |||
82 | printf("%c\n", choice); | ||
83 | |||
84 | @@ -235,7 +235,7 @@ int get_choice(int noninteractive_result, const char *noninteractive_msg, | ||
85 | inhibit_quit_choice = 0; | ||
86 | |||
87 | if (quit_choice == 1) | ||
88 | - exit(0); | ||
89 | + exit(NO_ERRORS); | ||
90 | } | ||
91 | } | ||
92 | |||
93 | diff --git a/src/exit_codes.h b/src/exit_codes.h | ||
94 | new file mode 100644 | ||
95 | index 0000000..f67d22e | ||
96 | --- /dev/null | ||
97 | +++ b/src/exit_codes.h | ||
98 | @@ -0,0 +1,15 @@ | ||
99 | +#ifndef _EXIT_CODES_H | ||
100 | +#define _EXIT_CODES_H | ||
101 | + | ||
102 | +/* Codes as defined by fsck. | ||
103 | + For more information, see fsck manpage. */ | ||
104 | +#define NO_ERRORS 0 | ||
105 | +#define FS_ERRORS_CORRECTED 1 | ||
106 | +#define SYSTEM_SHOULD_BE_REBOOTED 2 | ||
107 | +#define FS_ERRORS_LEFT_UNCORRECTED 4 | ||
108 | +#define OPERATIONAL_ERROR 8 | ||
109 | +#define USAGE_OR_SYNTAX_ERROR 16 | ||
110 | +#define CHECKING_CANCELED_BY_USER 32 | ||
111 | +#define SHARED_LIB_ERROR 128 | ||
112 | + | ||
113 | +#endif | ||
114 | diff --git a/src/fsck.fat.c b/src/fsck.fat.c | ||
115 | index 8b02b57..42e3ab4 100644 | ||
116 | --- a/src/fsck.fat.c | ||
117 | +++ b/src/fsck.fat.c | ||
118 | @@ -46,6 +46,7 @@ | ||
119 | #include "file.h" | ||
120 | #include "check.h" | ||
121 | #include "charconv.h" | ||
122 | +#include "exit_codes.h" | ||
123 | |||
124 | int rw = 0, list = 0, test = 0, verbose = 0; | ||
125 | long fat_table = 0; | ||
126 | @@ -147,10 +148,10 @@ int main(int argc, char **argv) | ||
127 | codepage = strtol(optarg, &tmp, 10); | ||
128 | if (!*optarg || isspace(*optarg) || *tmp || errno || codepage < 0 || codepage > INT_MAX) { | ||
129 | fprintf(stderr, "Invalid codepage : %s\n", optarg); | ||
130 | - usage(argv[0], 2); | ||
131 | + usage(argv[0], USAGE_OR_SYNTAX_ERROR); | ||
132 | } | ||
133 | if (!set_dos_codepage(codepage)) | ||
134 | - usage(argv[0], 2); | ||
135 | + usage(argv[0], USAGE_OR_SYNTAX_ERROR); | ||
136 | break; | ||
137 | case 'd': | ||
138 | file_add(optarg, fdt_drop); | ||
139 | @@ -163,7 +164,7 @@ int main(int argc, char **argv) | ||
140 | fat_table = strtol(optarg, &tmp, 10); | ||
141 | if (!*optarg || isspace(*optarg) || *tmp || errno || fat_table < 0 || fat_table > 255) { | ||
142 | fprintf(stderr, "Invalid FAT table : %s\n", optarg); | ||
143 | - usage(argv[0], 2); | ||
144 | + usage(argv[0], USAGE_OR_SYNTAX_ERROR); | ||
145 | } | ||
146 | break; | ||
147 | case 'l': | ||
148 | @@ -202,31 +203,31 @@ int main(int argc, char **argv) | ||
149 | atari_format = 1; | ||
150 | } else { | ||
151 | fprintf(stderr, "Unknown variant: %s\n", optarg); | ||
152 | - usage(argv[0], 2); | ||
153 | + usage(argv[0], USAGE_OR_SYNTAX_ERROR); | ||
154 | } | ||
155 | break; | ||
156 | case 'w': | ||
157 | write_immed = 1; | ||
158 | break; | ||
159 | case OPT_HELP: | ||
160 | - usage(argv[0], 0); | ||
161 | + usage(argv[0], EXIT_SUCCESS); | ||
162 | break; | ||
163 | case '?': | ||
164 | - usage(argv[0], 2); | ||
165 | + usage(argv[0], USAGE_OR_SYNTAX_ERROR); | ||
166 | break; | ||
167 | default: | ||
168 | fprintf(stderr, | ||
169 | "Internal error: getopt_long() returned unexpected value %d\n", c); | ||
170 | - exit(3); | ||
171 | + exit(OPERATIONAL_ERROR); | ||
172 | } | ||
173 | if (!set_dos_codepage(-1)) /* set default codepage if none was given in command line */ | ||
174 | - exit(2); | ||
175 | + exit(OPERATIONAL_ERROR); | ||
176 | if ((test || write_immed) && !rw) { | ||
177 | fprintf(stderr, "-t and -w can not be used in read only mode\n"); | ||
178 | - exit(2); | ||
179 | + exit(USAGE_OR_SYNTAX_ERROR); | ||
180 | } | ||
181 | if (optind != argc - 1) | ||
182 | - usage(argv[0], 2); | ||
183 | + usage(argv[0], USAGE_OR_SYNTAX_ERROR); | ||
184 | |||
185 | printf("fsck.fat " VERSION " (" VERSION_DATE ")\n"); | ||
186 | fs_open(argv[optind], rw); | ||
187 | @@ -285,5 +286,5 @@ exit: | ||
188 | n_files, (unsigned long)fs.data_clusters - free_clusters, | ||
189 | (unsigned long)fs.data_clusters); | ||
190 | |||
191 | - return fs_close(rw) ? 1 : 0; | ||
192 | + return fs_close(rw) ? FS_ERRORS_CORRECTED : NO_ERRORS; | ||
193 | } | ||
194 | diff --git a/src/io.c b/src/io.c | ||
195 | index 8c0c3b2..8bd1ae5 100644 | ||
196 | --- a/src/io.c | ||
197 | +++ b/src/io.c | ||
198 | @@ -44,6 +44,7 @@ | ||
199 | #include "fsck.fat.h" | ||
200 | #include "common.h" | ||
201 | #include "io.h" | ||
202 | +#include "exit_codes.h" | ||
203 | |||
204 | typedef struct _change { | ||
205 | void *data; | ||
206 | @@ -60,7 +61,7 @@ void fs_open(const char *path, int rw) | ||
207 | { | ||
208 | if ((fd = open(path, rw ? O_RDWR : O_RDONLY)) < 0) { | ||
209 | perror("open"); | ||
210 | - exit(6); | ||
211 | + exit(OPERATIONAL_ERROR); | ||
212 | } | ||
213 | changes = last = NULL; | ||
214 | did_change = 0; | ||
diff --git a/meta/recipes-devtools/dosfstools/dosfstools/0002-manpages-Document-fsck.fat-new-exit-codes.patch b/meta/recipes-devtools/dosfstools/dosfstools/0002-manpages-Document-fsck.fat-new-exit-codes.patch new file mode 100644 index 0000000000..29bba7b093 --- /dev/null +++ b/meta/recipes-devtools/dosfstools/dosfstools/0002-manpages-Document-fsck.fat-new-exit-codes.patch | |||
@@ -0,0 +1,46 @@ | |||
1 | From 8d703216d2ea3247092a08adb0c37b38eb77ccc7 Mon Sep 17 00:00:00 2001 | ||
2 | From: Ricardo Ungerer <ungerer.ricardo@gmail.com> | ||
3 | Date: Wed, 21 May 2025 07:18:15 +0100 | ||
4 | Subject: [PATCH 2/3] manpages: Document fsck.fat new exit codes | ||
5 | |||
6 | Signed-off-by: Ricardo Ungerer <ungerer.ricardo@gmail.com> | ||
7 | |||
8 | Upstream-Status: Inactive-Upstream [lastcommit: 2023, lastrelease: 2021] | ||
9 | Upstream-Status: Submitted [https://github.com/dosfstools/dosfstools/pull/217] | ||
10 | --- | ||
11 | manpages/fsck.fat.8.in | 18 +++++++++++++----- | ||
12 | 1 file changed, 13 insertions(+), 5 deletions(-) | ||
13 | |||
14 | diff --git a/manpages/fsck.fat.8.in b/manpages/fsck.fat.8.in | ||
15 | index 824a83d..557aa4c 100644 | ||
16 | --- a/manpages/fsck.fat.8.in | ||
17 | +++ b/manpages/fsck.fat.8.in | ||
18 | @@ -222,13 +222,21 @@ Display help message describing usage and options then exit. | ||
19 | .\" ---------------------------------------------------------------------------- | ||
20 | .SH "EXIT STATUS" | ||
21 | .IP "0" 4 | ||
22 | -No recoverable errors have been detected. | ||
23 | +No errors | ||
24 | .IP "1" 4 | ||
25 | -Recoverable errors have been detected or \fBfsck.fat\fP has discovered an | ||
26 | -internal inconsistency. | ||
27 | +Filesystem errors corrected | ||
28 | .IP "2" 4 | ||
29 | -Usage error. | ||
30 | -\fBfsck.fat\fP did not access the filesystem. | ||
31 | +System should be rebooted | ||
32 | +.IP "4" 4 | ||
33 | +Filesystem errors left uncorrected | ||
34 | +.IP "8" 4 | ||
35 | +Operational error | ||
36 | +.IP "16" 4 | ||
37 | +Usage or syntax error | ||
38 | +.IP "32" 4 | ||
39 | +Checking canceled by user request | ||
40 | +.IP "128" 4 | ||
41 | +Shared-library error | ||
42 | .\" ---------------------------------------------------------------------------- | ||
43 | .SH FILES | ||
44 | .IP "\fIfsck0000.rec\fP, \fIfsck0001.rec\fP, ..." 4 | ||
45 | -- | ||
46 | 2.25.1 | ||
diff --git a/meta/recipes-devtools/dosfstools/dosfstools_4.2.bb b/meta/recipes-devtools/dosfstools/dosfstools_4.2.bb index 175fa265ef..86fb68f664 100644 --- a/meta/recipes-devtools/dosfstools/dosfstools_4.2.bb +++ b/meta/recipes-devtools/dosfstools/dosfstools_4.2.bb | |||
@@ -10,11 +10,12 @@ LICENSE = "GPL-3.0-only" | |||
10 | LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" | 10 | LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" |
11 | 11 | ||
12 | SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/${BP}.tar.gz \ | 12 | SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/${BP}.tar.gz \ |
13 | " | 13 | file://source-date-epoch.patch \ |
14 | file://0001-fsck.fat-Adhere-to-the-fsck-exit-codes.patch \ | ||
15 | file://0002-manpages-Document-fsck.fat-new-exit-codes.patch \ | ||
16 | " | ||
14 | SRC_URI[sha256sum] = "64926eebf90092dca21b14259a5301b7b98e7b1943e8a201c7d726084809b527" | 17 | SRC_URI[sha256sum] = "64926eebf90092dca21b14259a5301b7b98e7b1943e8a201c7d726084809b527" |
15 | 18 | ||
16 | SRC_URI += "file://source-date-epoch.patch" | ||
17 | |||
18 | inherit autotools gettext pkgconfig update-alternatives github-releases | 19 | inherit autotools gettext pkgconfig update-alternatives github-releases |
19 | 20 | ||
20 | EXTRA_OECONF = "--enable-compat-symlinks --without-iconv" | 21 | EXTRA_OECONF = "--enable-compat-symlinks --without-iconv" |
diff --git a/meta/recipes-devtools/json-c/json-c_0.18.bb b/meta/recipes-devtools/json-c/json-c_0.18.bb index ece320d66c..c112aacf4b 100644 --- a/meta/recipes-devtools/json-c/json-c_0.18.bb +++ b/meta/recipes-devtools/json-c/json-c_0.18.bb | |||
@@ -19,8 +19,7 @@ UPSTREAM_CHECK_REGEX = "json-c-(?P<pver>\d+(\.\d+)+)-\d+" | |||
19 | 19 | ||
20 | RPROVIDES:${PN} = "libjson" | 20 | RPROVIDES:${PN} = "libjson" |
21 | 21 | ||
22 | # - '-Werror' must be disabled for ICECC builds | 22 | # Apps aren't needed/packaged and their CMakeLists.txt is incompatible with CMake 4+. |
23 | # - Apps aren't needed/packaged and their CMakeLists.txt is incompatible with CMake 4+. | ||
24 | EXTRA_OECMAKE = "-DDISABLE_WERROR=ON \ | 23 | EXTRA_OECMAKE = "-DDISABLE_WERROR=ON \ |
25 | -DBUILD_APPS=OFF \ | 24 | -DBUILD_APPS=OFF \ |
26 | " | 25 | " |
diff --git a/meta/recipes-devtools/libmodulemd/libmodulemd_2.15.1.bb b/meta/recipes-devtools/libmodulemd/libmodulemd_2.15.2.bb index 6504414387..32d2a39c41 100644 --- a/meta/recipes-devtools/libmodulemd/libmodulemd_2.15.1.bb +++ b/meta/recipes-devtools/libmodulemd/libmodulemd_2.15.2.bb | |||
@@ -4,9 +4,9 @@ DESCRIPTION = "${SUMMARY}" | |||
4 | LICENSE = "MIT" | 4 | LICENSE = "MIT" |
5 | LIC_FILES_CHKSUM = "file://COPYING;md5=25a3927bff3ee4f5b21bcb0ed3fcd6bb" | 5 | LIC_FILES_CHKSUM = "file://COPYING;md5=25a3927bff3ee4f5b21bcb0ed3fcd6bb" |
6 | 6 | ||
7 | SRC_URI = "git://github.com/fedora-modularity/libmodulemd;protocol=https;branch=main" | 7 | SRC_URI = "git://github.com/fedora-modularity/libmodulemd;protocol=https;branch=main;tag=${PV}" |
8 | 8 | ||
9 | SRCREV = "e7f179eeeb6eee1403f090fc43a3c80bb08b5bfd" | 9 | SRCREV = "b8b11b4dafaa2c4d73883152bfa7e5bd81cd7395" |
10 | 10 | ||
11 | inherit meson gobject-introspection pkgconfig manpages | 11 | inherit meson gobject-introspection pkgconfig manpages |
12 | 12 | ||
diff --git a/meta/recipes-devtools/mtools/mtools_4.0.48.bb b/meta/recipes-devtools/mtools/mtools_4.0.49.bb index 646735f3b3..294b2f37b2 100644 --- a/meta/recipes-devtools/mtools/mtools_4.0.48.bb +++ b/meta/recipes-devtools/mtools/mtools_4.0.49.bb | |||
@@ -24,7 +24,7 @@ RRECOMMENDS:${PN}:libc-glibc = "\ | |||
24 | glibc-gconv-ibm866 \ | 24 | glibc-gconv-ibm866 \ |
25 | glibc-gconv-ibm869 \ | 25 | glibc-gconv-ibm869 \ |
26 | " | 26 | " |
27 | SRC_URI[sha256sum] = "03c29aac8735dd7154a989fbc29eaf2b506121ae1c3a35cd0bf2a02e94d271a9" | 27 | SRC_URI[sha256sum] = "6fe5193583d6e7c59da75e63d7234f76c0b07caf33b103894f46f66a871ffc9f" |
28 | 28 | ||
29 | SRC_URI = "${GNU_MIRROR}/mtools/mtools-${PV}.tar.bz2 \ | 29 | SRC_URI = "${GNU_MIRROR}/mtools/mtools-${PV}.tar.bz2 \ |
30 | file://mtools-makeinfo.patch \ | 30 | file://mtools-makeinfo.patch \ |
diff --git a/meta/recipes-devtools/ninja/ninja_1.12.1.bb b/meta/recipes-devtools/ninja/ninja_1.13.0.bb index 5aff82edec..a5fa8f1c9e 100644 --- a/meta/recipes-devtools/ninja/ninja_1.12.1.bb +++ b/meta/recipes-devtools/ninja/ninja_1.13.0.bb | |||
@@ -1,14 +1,18 @@ | |||
1 | SUMMARY = "Ninja is a small build system with a focus on speed." | 1 | SUMMARY = "Ninja is a small build system with a focus on speed." |
2 | HOMEPAGE = "https://ninja-build.org/" | 2 | HOMEPAGE = "https://ninja-build.org/" |
3 | DESCRIPTION = "Ninja is a small build system with a focus on speed. It differs from other build systems in two major respects: it is designed to have its input files generated by a higher-level build system, and it is designed to run builds as fast as possible." | 3 | DESCRIPTION = "Ninja is a small build system with a focus on speed. \ |
4 | It differs from other build systems in two major respects: \ | ||
5 | it is designed to have its input files generated by a higher-level build system, \ | ||
6 | and it is designed to run builds as fast as possible." | ||
7 | |||
4 | LICENSE = "Apache-2.0" | 8 | LICENSE = "Apache-2.0" |
5 | LIC_FILES_CHKSUM = "file://COPYING;md5=a81586a64ad4e476c791cda7e2f2c52e" | 9 | LIC_FILES_CHKSUM = "file://COPYING;md5=a81586a64ad4e476c791cda7e2f2c52e" |
6 | 10 | ||
7 | DEPENDS = "re2c-native ninja-native" | 11 | DEPENDS = "re2c-native ninja-native" |
8 | 12 | ||
9 | SRCREV = "2daa09ba270b0a43e1929d29b073348aa985dfaa" | 13 | SRCREV = "b4d51f6ed5bed09dd2b70324df0d9cb4ecad2638" |
10 | 14 | ||
11 | SRC_URI = "git://github.com/ninja-build/ninja.git;branch=release;protocol=https" | 15 | SRC_URI = "git://github.com/ninja-build/ninja.git;branch=release;protocol=https;tag=v${PV}" |
12 | UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>.*)" | 16 | UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>.*)" |
13 | 17 | ||
14 | do_configure[noexec] = "1" | 18 | do_configure[noexec] = "1" |
diff --git a/meta/recipes-devtools/python/python3-sphinx-argparse_0.5.2.bb b/meta/recipes-devtools/python/python3-sphinx-argparse_0.5.2.bb new file mode 100644 index 0000000000..554fb3eb51 --- /dev/null +++ b/meta/recipes-devtools/python/python3-sphinx-argparse_0.5.2.bb | |||
@@ -0,0 +1,13 @@ | |||
1 | SUMMARY = "A sphinx extension that automatically documents argparse commands and options" | ||
2 | HOMEPAGE = "https://sphinx-argparse.readthedocs.io/" | ||
3 | LICENSE = "MIT" | ||
4 | LIC_FILES_CHKSUM = "file://LICENCE.rst;md5=5c1cd8f13774629fee215681e66a1056" | ||
5 | |||
6 | SRC_URI[sha256sum] = "e5352f8fa894b6fb6fda0498ba28a9f8d435971ef4bbc1a6c9c6414e7644f032" | ||
7 | |||
8 | PYPI_PACKAGE = "sphinx_argparse" | ||
9 | UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}" | ||
10 | |||
11 | inherit pypi python_flit_core | ||
12 | |||
13 | BBCLASSEXTEND = "native nativesdk" | ||
diff --git a/meta/recipes-devtools/python/python3-sphinx-copybutton_0.5.2.bb b/meta/recipes-devtools/python/python3-sphinx-copybutton_0.5.2.bb new file mode 100644 index 0000000000..0441804661 --- /dev/null +++ b/meta/recipes-devtools/python/python3-sphinx-copybutton_0.5.2.bb | |||
@@ -0,0 +1,10 @@ | |||
1 | SUMMARY = "Add a copy button to code blocks in Sphinx" | ||
2 | HOMEPAGE = "https://sphinx-copybutton.readthedocs.io" | ||
3 | LICENSE = "MIT" | ||
4 | LIC_FILES_CHKSUM = "file://LICENSE;md5=c60e920848b6d2ecec51ea44a1a33bf0" | ||
5 | |||
6 | SRC_URI[sha256sum] = "4cf17c82fb9646d1bc9ca92ac280813a3b605d8c421225fd9913154103ee1fbd" | ||
7 | |||
8 | inherit setuptools3 pypi | ||
9 | |||
10 | BBCLASSEXTEND = "native nativesdk" | ||
diff --git a/meta/recipes-devtools/python/python3-urllib3_2.4.0.bb b/meta/recipes-devtools/python/python3-urllib3_2.5.0.bb index 7a4bffc05e..a4f3995730 100644 --- a/meta/recipes-devtools/python/python3-urllib3_2.4.0.bb +++ b/meta/recipes-devtools/python/python3-urllib3_2.5.0.bb | |||
@@ -3,7 +3,7 @@ HOMEPAGE = "https://github.com/urllib3/urllib3" | |||
3 | LICENSE = "MIT" | 3 | LICENSE = "MIT" |
4 | LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=52d273a3054ced561275d4d15260ecda" | 4 | LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=52d273a3054ced561275d4d15260ecda" |
5 | 5 | ||
6 | SRC_URI[sha256sum] = "414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466" | 6 | SRC_URI[sha256sum] = "3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760" |
7 | 7 | ||
8 | inherit pypi python_hatchling | 8 | inherit pypi python_hatchling |
9 | 9 | ||
diff --git a/meta/recipes-devtools/python/python3-wheel_0.45.1.bb b/meta/recipes-devtools/python/python3-wheel_0.46.1.bb index 8274e83747..058af2f0e7 100644 --- a/meta/recipes-devtools/python/python3-wheel_0.45.1.bb +++ b/meta/recipes-devtools/python/python3-wheel_0.46.1.bb | |||
@@ -4,9 +4,14 @@ SECTION = "devel/python" | |||
4 | LICENSE = "MIT" | 4 | LICENSE = "MIT" |
5 | LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=7ffb0db04527cfe380e4f2726bd05ebf" | 5 | LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=7ffb0db04527cfe380e4f2726bd05ebf" |
6 | 6 | ||
7 | SRC_URI[sha256sum] = "661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729" | 7 | SRC_URI[sha256sum] = "fd477efb5da0f7df1d3c76c73c14394002c844451bd63229d8570f376f5e6a38" |
8 | 8 | ||
9 | inherit python_flit_core pypi | 9 | inherit python_flit_core pypi ptest-python-pytest |
10 | |||
11 | RDEPENDS:${PN} += "python3-packaging" | ||
12 | |||
13 | # One test is skipped but requires the "full" python3-flit, not just python3-flit-core | ||
14 | RDEPENDS:${PN}-ptest += "python3-setuptools" | ||
10 | 15 | ||
11 | BBCLASSEXTEND = "native nativesdk" | 16 | BBCLASSEXTEND = "native nativesdk" |
12 | 17 | ||
diff --git a/meta/recipes-devtools/tcf-agent/tcf-agent_1.8.0.bb b/meta/recipes-devtools/tcf-agent/tcf-agent_1.8.0.bb index 1639ae84e9..f008c0c6de 100644 --- a/meta/recipes-devtools/tcf-agent/tcf-agent_1.8.0.bb +++ b/meta/recipes-devtools/tcf-agent/tcf-agent_1.8.0.bb | |||
@@ -49,6 +49,12 @@ CFLAGS:append:riscv64 = " ${LCL_STOP_SERVICES}" | |||
49 | CFLAGS:append:riscv32 = " ${LCL_STOP_SERVICES}" | 49 | CFLAGS:append:riscv32 = " ${LCL_STOP_SERVICES}" |
50 | CFLAGS:append:loongarch64 = " ${LCL_STOP_SERVICES}" | 50 | CFLAGS:append:loongarch64 = " ${LCL_STOP_SERVICES}" |
51 | 51 | ||
52 | # This works with gcc-ranlib wrapper only because it exists without error if nothing | ||
53 | # is passed as argument but binutils ranlib and llvm ranlib do not and expect an input | ||
54 | # passing $@ ensures that Makefile default target which is the archive name in tcf makefiles | ||
55 | # is passed to RANLIB, ensures that whichever ranlib is used, the behavior is identical | ||
56 | RANLIB:append = " $@" | ||
57 | |||
52 | do_install() { | 58 | do_install() { |
53 | oe_runmake install INSTALLROOT=${D} | 59 | oe_runmake install INSTALLROOT=${D} |
54 | install -d ${D}${sysconfdir}/init.d/ | 60 | install -d ${D}${sysconfdir}/init.d/ |
diff --git a/meta/recipes-devtools/tcltk/tcl_9.0.1.bb b/meta/recipes-devtools/tcltk/tcl_9.0.1.bb index 70aa9b606c..765dc64e4d 100644 --- a/meta/recipes-devtools/tcltk/tcl_9.0.1.bb +++ b/meta/recipes-devtools/tcltk/tcl_9.0.1.bb | |||
@@ -51,7 +51,7 @@ do_install() { | |||
51 | ln -sf ./tclsh${VER} ${D}${bindir}/tclsh | 51 | ln -sf ./tclsh${VER} ${D}${bindir}/tclsh |
52 | ln -sf tclsh9.0 ${D}${bindir}/tclsh${VER} | 52 | ln -sf tclsh9.0 ${D}${bindir}/tclsh${VER} |
53 | sed -i "s;-L${B};-L${STAGING_LIBDIR};g" tclConfig.sh | 53 | sed -i "s;-L${B};-L${STAGING_LIBDIR};g" tclConfig.sh |
54 | sed -i "s;'${WORKDIR};'${STAGING_INCDIR};g" tclConfig.sh | 54 | sed -i "s;'${UNPACKDIR};'${STAGING_INCDIR};g" tclConfig.sh |
55 | install -d ${D}${bindir_crossscripts} | 55 | install -d ${D}${bindir_crossscripts} |
56 | install -m 0755 tclConfig.sh ${D}${bindir_crossscripts} | 56 | install -m 0755 tclConfig.sh ${D}${bindir_crossscripts} |
57 | install -m 0755 tclConfig.sh ${D}${libdir} | 57 | install -m 0755 tclConfig.sh ${D}${libdir} |
@@ -105,6 +105,7 @@ tcl_package_preprocess() { | |||
105 | -e "s;-L${STAGING_LIBDIR};-L${libdir};g" \ | 105 | -e "s;-L${STAGING_LIBDIR};-L${libdir};g" \ |
106 | -e "s;${STAGING_INCDIR};${includedir};g" \ | 106 | -e "s;${STAGING_INCDIR};${includedir};g" \ |
107 | -e "s;--sysroot=${RECIPE_SYSROOT};;g" \ | 107 | -e "s;--sysroot=${RECIPE_SYSROOT};;g" \ |
108 | -e "s;${B};${libdir};g" ${PKGD}${libdir}/tclConfig.sh \ | ||
108 | ${PKGD}${libdir}/tclConfig.sh | 109 | ${PKGD}${libdir}/tclConfig.sh |
109 | 110 | ||
110 | rm -f ${PKGD}${bindir_crossscripts}/tclConfig.sh | 111 | rm -f ${PKGD}${bindir_crossscripts}/tclConfig.sh |
diff --git a/meta/recipes-extended/libarchive/libarchive_3.8.1.bb b/meta/recipes-extended/libarchive/libarchive_3.8.1.bb index 472b5820f0..69520b1bad 100644 --- a/meta/recipes-extended/libarchive/libarchive_3.8.1.bb +++ b/meta/recipes-extended/libarchive/libarchive_3.8.1.bb | |||
@@ -30,6 +30,7 @@ PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd," | |||
30 | EXTRA_OECONF += "--enable-largefile --without-iconv" | 30 | EXTRA_OECONF += "--enable-largefile --without-iconv" |
31 | 31 | ||
32 | SRC_URI = "https://libarchive.org/downloads/libarchive-${PV}.tar.gz" | 32 | SRC_URI = "https://libarchive.org/downloads/libarchive-${PV}.tar.gz" |
33 | UPSTREAM_CHECK_URI = "https://www.libarchive.org/" | ||
33 | 34 | ||
34 | SRC_URI[sha256sum] = "bde832a5e3344dc723cfe9cc37f8e54bde04565bfe6f136bc1bd31ab352e9fab" | 35 | SRC_URI[sha256sum] = "bde832a5e3344dc723cfe9cc37f8e54bde04565bfe6f136bc1bd31ab352e9fab" |
35 | 36 | ||
diff --git a/meta/recipes-extended/mingetty/mingetty_1.08.bb b/meta/recipes-extended/mingetty/mingetty_1.08.bb index be059995e7..892233054b 100644 --- a/meta/recipes-extended/mingetty/mingetty_1.08.bb +++ b/meta/recipes-extended/mingetty/mingetty_1.08.bb | |||
@@ -15,7 +15,7 @@ EXTRA_OEMAKE = "CC='${CC}' \ | |||
15 | CFLAGS='${CFLAGS} -D_GNU_SOURCE'" | 15 | CFLAGS='${CFLAGS} -D_GNU_SOURCE'" |
16 | 16 | ||
17 | do_install(){ | 17 | do_install(){ |
18 | sed -i -e "s;SBINDIR=/sbin;SBINDIR=$base_sbindir;" ${S}/Makefile | 18 | sed -i -e "/^SBINDIR=/c SBINDIR=$base_sbindir" ${S}/Makefile |
19 | install -d ${D}${mandir}/man8 ${D}/${base_sbindir} | 19 | install -d ${D}${mandir}/man8 ${D}/${base_sbindir} |
20 | oe_runmake install DESTDIR=${D} | 20 | oe_runmake install DESTDIR=${D} |
21 | } | 21 | } |
diff --git a/meta/recipes-extended/procps/procps_4.0.5.bb b/meta/recipes-extended/procps/procps_4.0.5.bb index 2b41be3930..d568cc831e 100644 --- a/meta/recipes-extended/procps/procps_4.0.5.bb +++ b/meta/recipes-extended/procps/procps_4.0.5.bb | |||
@@ -12,7 +12,7 @@ DEPENDS = "ncurses" | |||
12 | 12 | ||
13 | inherit autotools gettext pkgconfig update-alternatives | 13 | inherit autotools gettext pkgconfig update-alternatives |
14 | 14 | ||
15 | SRC_URI = "git://gitlab.com/procps-ng/procps.git;protocol=https;branch=master \ | 15 | SRC_URI = "git://gitlab.com/procps-ng/procps.git;protocol=https;branch=master;tag=v${PV} \ |
16 | file://sysctl.conf \ | 16 | file://sysctl.conf \ |
17 | " | 17 | " |
18 | SRCREV = "f46b2f7929cdfe2913ed0a7f585b09d6adbf994e" | 18 | SRCREV = "f46b2f7929cdfe2913ed0a7f585b09d6adbf994e" |
diff --git a/meta/recipes-extended/psmisc/psmisc_23.7.bb b/meta/recipes-extended/psmisc/psmisc_23.7.bb index fff1f218f4..44f8530977 100644 --- a/meta/recipes-extended/psmisc/psmisc_23.7.bb +++ b/meta/recipes-extended/psmisc/psmisc_23.7.bb | |||
@@ -12,7 +12,7 @@ DEPENDS = "ncurses virtual/libintl" | |||
12 | LICENSE = "GPL-2.0-only" | 12 | LICENSE = "GPL-2.0-only" |
13 | LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3" | 13 | LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3" |
14 | 14 | ||
15 | SRC_URI = "git://gitlab.com/psmisc/psmisc.git;protocol=https;branch=master \ | 15 | SRC_URI = "git://gitlab.com/psmisc/psmisc.git;protocol=https;branch=master;tag=v${PV} \ |
16 | " | 16 | " |
17 | SRCREV = "9091d6dbcce3d8fb87adf9249a2eb346d25a562c" | 17 | SRCREV = "9091d6dbcce3d8fb87adf9249a2eb346d25a562c" |
18 | 18 | ||
diff --git a/meta/recipes-extended/sudo/files/0001-sudo.conf.in-fix-conflict-with-multilib.patch b/meta/recipes-extended/sudo/files/0001-sudo.conf.in-fix-conflict-with-multilib.patch index ec0384e257..1989c5abd7 100644 --- a/meta/recipes-extended/sudo/files/0001-sudo.conf.in-fix-conflict-with-multilib.patch +++ b/meta/recipes-extended/sudo/files/0001-sudo.conf.in-fix-conflict-with-multilib.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 61ae82a2ba502492b6a78f248258abb71daeb227 Mon Sep 17 00:00:00 2001 | 1 | From 8c69192754ba73dd6e3273728a21aa73988f4bfb Mon Sep 17 00:00:00 2001 |
2 | From: Kai Kang <kai.kang@windriver.com> | 2 | From: Kai Kang <kai.kang@windriver.com> |
3 | Date: Tue, 17 Nov 2020 11:13:40 +0800 | 3 | Date: Tue, 17 Nov 2020 11:13:40 +0800 |
4 | Subject: [PATCH] sudo.conf.in: fix conflict with multilib | 4 | Subject: [PATCH] sudo.conf.in: fix conflict with multilib |
@@ -20,7 +20,7 @@ Upstream-Status: Inappropriate [OE configuration specific] | |||
20 | 1 file changed, 4 insertions(+), 4 deletions(-) | 20 | 1 file changed, 4 insertions(+), 4 deletions(-) |
21 | 21 | ||
22 | diff --git a/examples/sudo.conf.in b/examples/sudo.conf.in | 22 | diff --git a/examples/sudo.conf.in b/examples/sudo.conf.in |
23 | index 2187457..0908d24 100644 | 23 | index bdd676c..094341c 100644 |
24 | --- a/examples/sudo.conf.in | 24 | --- a/examples/sudo.conf.in |
25 | +++ b/examples/sudo.conf.in | 25 | +++ b/examples/sudo.conf.in |
26 | @@ -4,7 +4,7 @@ | 26 | @@ -4,7 +4,7 @@ |
@@ -52,7 +52,7 @@ index 2187457..0908d24 100644 | |||
52 | # Sudo plugin directory: | 52 | # Sudo plugin directory: |
53 | @@ -74,7 +74,7 @@ | 53 | @@ -74,7 +74,7 @@ |
54 | # The default directory to use when searching for plugins that are | 54 | # The default directory to use when searching for plugins that are |
55 | # specified without a fully qualified path name. | 55 | # specified without a fully-qualified path name. |
56 | # | 56 | # |
57 | -#Path plugin_dir @plugindir@ | 57 | -#Path plugin_dir @plugindir@ |
58 | +#Path plugin_dir $plugindir | 58 | +#Path plugin_dir $plugindir |
diff --git a/meta/recipes-extended/sudo/sudo.inc b/meta/recipes-extended/sudo/sudo.inc index 0afbf669f0..a23de1fcf7 100644 --- a/meta/recipes-extended/sudo/sudo.inc +++ b/meta/recipes-extended/sudo/sudo.inc | |||
@@ -4,7 +4,7 @@ HOMEPAGE = "http://www.sudo.ws" | |||
4 | BUGTRACKER = "http://www.sudo.ws/bugs/" | 4 | BUGTRACKER = "http://www.sudo.ws/bugs/" |
5 | SECTION = "admin" | 5 | SECTION = "admin" |
6 | LICENSE = "ISC & BSD-3-Clause & BSD-2-Clause & Zlib" | 6 | LICENSE = "ISC & BSD-3-Clause & BSD-2-Clause & Zlib" |
7 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=0a6876cbeb2aa51837935ba3fd82ee87 \ | 7 | LIC_FILES_CHKSUM = "file://LICENSE.md;md5=2841c822e587db145364ca95e9be2ffa \ |
8 | file://plugins/sudoers/redblack.c;beginline=1;endline=46;md5=03e35317699ba00b496251e0dfe9f109 \ | 8 | file://plugins/sudoers/redblack.c;beginline=1;endline=46;md5=03e35317699ba00b496251e0dfe9f109 \ |
9 | file://lib/util/reallocarray.c;beginline=3;endline=15;md5=397dd45c7683e90b9f8bf24638cf03bf \ | 9 | file://lib/util/reallocarray.c;beginline=3;endline=15;md5=397dd45c7683e90b9f8bf24638cf03bf \ |
10 | file://lib/util/fnmatch.c;beginline=3;endline=27;md5=004d7d2866ba1f5b41174906849d2e0f \ | 10 | file://lib/util/fnmatch.c;beginline=3;endline=27;md5=004d7d2866ba1f5b41174906849d2e0f \ |
diff --git a/meta/recipes-extended/sudo/sudo_1.9.16p2.bb b/meta/recipes-extended/sudo/sudo_1.9.17.bb index fbe507ad32..71d48f448d 100644 --- a/meta/recipes-extended/sudo/sudo_1.9.16p2.bb +++ b/meta/recipes-extended/sudo/sudo_1.9.17.bb | |||
@@ -7,7 +7,7 @@ SRC_URI = "https://www.sudo.ws/dist/sudo-${PV}.tar.gz \ | |||
7 | 7 | ||
8 | PAM_SRC_URI = "file://sudo.pam" | 8 | PAM_SRC_URI = "file://sudo.pam" |
9 | 9 | ||
10 | SRC_URI[sha256sum] = "976aa56d3e3b2a75593307864288addb748c9c136e25d95a9cc699aafa77239c" | 10 | SRC_URI[sha256sum] = "3f212c69d534d5822b492d099abb02a593f91ca99f5afde5cb9bd3e1dcdad069" |
11 | 11 | ||
12 | DEPENDS += " virtual/crypt ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}" | 12 | DEPENDS += " virtual/crypt ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}" |
13 | RDEPENDS:${PN} += " ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam-plugin-limits pam-plugin-keyinit', '', d)}" | 13 | RDEPENDS:${PN} += " ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam-plugin-limits pam-plugin-keyinit', '', d)}" |
diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc index 6b42a238cc..3d9e9ec91f 100644 --- a/meta/recipes-graphics/mesa/mesa.inc +++ b/meta/recipes-graphics/mesa/mesa.inc | |||
@@ -20,8 +20,8 @@ SRC_URI = "https://archive.mesa3d.org/mesa-${PV}.tar.xz \ | |||
20 | file://0001-dont-build-clover-frontend.patch \ | 20 | file://0001-dont-build-clover-frontend.patch \ |
21 | " | 21 | " |
22 | 22 | ||
23 | SRC_URI[sha256sum] = "ffcb6cadb5fd356d56008e6308641dfe4b2929f30139f6585436ca6e3cddba7f" | 23 | SRC_URI[sha256sum] = "164872a5e792408aa72fecd52b7be6409724c4ad81700798675a7d801d976704" |
24 | PV = "25.1.3" | 24 | PV = "25.1.4" |
25 | 25 | ||
26 | UPSTREAM_CHECK_GITTAGREGEX = "mesa-(?P<pver>\d+(\.\d+)+)" | 26 | UPSTREAM_CHECK_GITTAGREGEX = "mesa-(?P<pver>\d+(\.\d+)+)" |
27 | 27 | ||
diff --git a/meta/recipes-kernel/linux/kernel-devsrc.bb b/meta/recipes-kernel/linux/kernel-devsrc.bb index 7ad848c35e..3d2eb3929e 100644 --- a/meta/recipes-kernel/linux/kernel-devsrc.bb +++ b/meta/recipes-kernel/linux/kernel-devsrc.bb | |||
@@ -7,7 +7,7 @@ SECTION = "kernel" | |||
7 | 7 | ||
8 | LICENSE = "GPL-2.0-only" | 8 | LICENSE = "GPL-2.0-only" |
9 | 9 | ||
10 | inherit linux-kernel-base | 10 | inherit kernelsrc |
11 | 11 | ||
12 | # Whilst not a module, this ensures we don't get multilib extended (which would make no sense) | 12 | # Whilst not a module, this ensures we don't get multilib extended (which would make no sense) |
13 | inherit module-base | 13 | inherit module-base |
@@ -20,14 +20,10 @@ do_install[depends] += "virtual/kernel:do_shared_workdir" | |||
20 | do_install[depends] += "virtual/kernel:do_install" | 20 | do_install[depends] += "virtual/kernel:do_install" |
21 | 21 | ||
22 | # There's nothing to do here, except install the source where we can package it | 22 | # There's nothing to do here, except install the source where we can package it |
23 | do_fetch[noexec] = "1" | ||
24 | do_unpack[noexec] = "1" | ||
25 | do_patch[noexec] = "1" | ||
26 | do_configure[noexec] = "1" | 23 | do_configure[noexec] = "1" |
27 | do_compile[noexec] = "1" | 24 | do_compile[noexec] = "1" |
28 | deltask do_populate_sysroot | 25 | deltask do_populate_sysroot |
29 | 26 | ||
30 | S = "${STAGING_KERNEL_DIR}" | ||
31 | B = "${STAGING_KERNEL_BUILDDIR}" | 27 | B = "${STAGING_KERNEL_BUILDDIR}" |
32 | 28 | ||
33 | PACKAGE_ARCH = "${MACHINE_ARCH}" | 29 | PACKAGE_ARCH = "${MACHINE_ARCH}" |
diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb index 157aca4d79..4f29bd5bbc 100644 --- a/meta/recipes-kernel/perf/perf.bb +++ b/meta/recipes-kernel/perf/perf.bb | |||
@@ -385,10 +385,6 @@ do_configure:prepend () { | |||
385 | done | 385 | done |
386 | } | 386 | } |
387 | 387 | ||
388 | python do_package:prepend() { | ||
389 | d.setVar('PKGV', d.getVar("KERNEL_VERSION").split("-")[0]) | ||
390 | } | ||
391 | |||
392 | PACKAGE_ARCH = "${MACHINE_ARCH}" | 388 | PACKAGE_ARCH = "${MACHINE_ARCH}" |
393 | 389 | ||
394 | PACKAGES =+ "${PN}-archive ${PN}-tests ${PN}-perl ${PN}-python" | 390 | PACKAGES =+ "${PN}-archive ${PN}-tests ${PN}-perl ${PN}-python" |
diff --git a/meta/recipes-multimedia/gstreamer/gst-devtools_1.26.2.bb b/meta/recipes-multimedia/gstreamer/gst-devtools_1.26.3.bb index f898db80e7..f107af110b 100644 --- a/meta/recipes-multimedia/gstreamer/gst-devtools_1.26.2.bb +++ b/meta/recipes-multimedia/gstreamer/gst-devtools_1.26.3.bb | |||
@@ -12,7 +12,7 @@ SRC_URI = "https://gstreamer.freedesktop.org/src/gst-devtools/gst-devtools-${PV} | |||
12 | file://0001-connect-has-a-different-signature-on-musl.patch \ | 12 | file://0001-connect-has-a-different-signature-on-musl.patch \ |
13 | " | 13 | " |
14 | 14 | ||
15 | SRC_URI[sha256sum] = "400ff79fe371367deb8ad1adf8b4643d6e558a433bf83136c2dd496fe8210f37" | 15 | SRC_URI[sha256sum] = "4fde19c3c144834f8cb05c2ca3f14b3a50d395bad203d17f98a6e70c1672f2ba" |
16 | 16 | ||
17 | DEPENDS = "json-glib glib-2.0 glib-2.0-native gstreamer1.0 gstreamer1.0-plugins-base" | 17 | DEPENDS = "json-glib glib-2.0 glib-2.0-native gstreamer1.0 gstreamer1.0-plugins-base" |
18 | RRECOMMENDS:${PN} = "git" | 18 | RRECOMMENDS:${PN} = "git" |
diff --git a/meta/recipes-multimedia/gstreamer/gst-examples_1.26.2.bb b/meta/recipes-multimedia/gstreamer/gst-examples_1.26.3.bb index 33c4119d1a..8835b7d97b 100644 --- a/meta/recipes-multimedia/gstreamer/gst-examples_1.26.2.bb +++ b/meta/recipes-multimedia/gstreamer/gst-examples_1.26.3.bb | |||
@@ -7,12 +7,12 @@ LIC_FILES_CHKSUM = "file://playback/player/gtk/gtk-play.c;beginline=1;endline=20 | |||
7 | 7 | ||
8 | DEPENDS = "glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad gtk+3 json-glib glib-2.0-native" | 8 | DEPENDS = "glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad gtk+3 json-glib glib-2.0-native" |
9 | 9 | ||
10 | SRC_URI = "git://gitlab.freedesktop.org/gstreamer/gstreamer.git;protocol=https;branch=1.26 \ | 10 | SRC_URI = "git://gitlab.freedesktop.org/gstreamer/gstreamer.git;protocol=https;branch=1.26;tag=${PV} \ |
11 | file://0001-Make-player-examples-installable.patch \ | 11 | file://0001-Make-player-examples-installable.patch \ |
12 | file://gst-player.desktop \ | 12 | file://gst-player.desktop \ |
13 | " | 13 | " |
14 | 14 | ||
15 | SRCREV = "100c21e1faf68efe7f3830b6e9f856760697ab48" | 15 | SRCREV = "87bc0c6e949e3dcc440658f78ef52aa8088cb62f" |
16 | 16 | ||
17 | S = "${UNPACKDIR}/${BP}/subprojects/gst-examples" | 17 | S = "${UNPACKDIR}/${BP}/subprojects/gst-examples" |
18 | 18 | ||
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.26.2.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.26.3.bb index e3410f0907..4125fdf31f 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.26.2.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.26.3.bb | |||
@@ -12,7 +12,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=69333daa044cb77e486cc36129f7a770 \ | |||
12 | " | 12 | " |
13 | 13 | ||
14 | SRC_URI = "https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${PV}.tar.xz" | 14 | SRC_URI = "https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${PV}.tar.xz" |
15 | SRC_URI[sha256sum] = "2eceba9cae4c495bb4ea134c27f010356036f1fa1972db5f54833f5f6c9f8db0" | 15 | SRC_URI[sha256sum] = "3ada7e50a3b9b8ba3e405b14c4021e25fbb10379f77d2ce490aa16523ed2724d" |
16 | 16 | ||
17 | S = "${UNPACKDIR}/gst-libav-${PV}" | 17 | S = "${UNPACKDIR}/gst-libav-${PV}" |
18 | 18 | ||
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.26.2.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.26.3.bb index b311286cc2..12992057e7 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.26.2.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.26.3.bb | |||
@@ -10,7 +10,7 @@ SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad | |||
10 | file://0002-avoid-including-sys-poll.h-directly.patch \ | 10 | file://0002-avoid-including-sys-poll.h-directly.patch \ |
11 | file://0004-opencv-resolve-missing-opencv-data-dir-in-yocto-buil.patch \ | 11 | file://0004-opencv-resolve-missing-opencv-data-dir-in-yocto-buil.patch \ |
12 | " | 12 | " |
13 | SRC_URI[sha256sum] = "cb116bfc3722c2de53838899006cafdb3c7c0bc69cd769b33c992a8421a9d844" | 13 | SRC_URI[sha256sum] = "95c48dacaf14276f4e595f4cbca94b3cfebfc22285e765e2aa56d0a7275d7561" |
14 | 14 | ||
15 | S = "${UNPACKDIR}/gst-plugins-bad-${PV}" | 15 | S = "${UNPACKDIR}/gst-plugins-bad-${PV}" |
16 | 16 | ||
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.26.2.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.26.3.bb index c264a14ee6..74eb1360f6 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.26.2.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.26.3.bb | |||
@@ -11,7 +11,7 @@ SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-ba | |||
11 | file://0003-viv-fb-Make-sure-config.h-is-included.patch \ | 11 | file://0003-viv-fb-Make-sure-config.h-is-included.patch \ |
12 | file://0002-ssaparse-enhance-SSA-text-lines-parsing.patch \ | 12 | file://0002-ssaparse-enhance-SSA-text-lines-parsing.patch \ |
13 | " | 13 | " |
14 | SRC_URI[sha256sum] = "f4b9fc0be852fe5f65401d18ae6218e4aea3ff7a3c9f8d265939b9c4704915f7" | 14 | SRC_URI[sha256sum] = "4ef9f9ef09025308ce220e2dd22a89e4c992d8ca71b968e3c70af0634ec27933" |
15 | 15 | ||
16 | S = "${UNPACKDIR}/gst-plugins-base-${PV}" | 16 | S = "${UNPACKDIR}/gst-plugins-base-${PV}" |
17 | 17 | ||
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.26.2.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.26.3.bb index 7a81a29d95..601a7961c7 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.26.2.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.26.3.bb | |||
@@ -6,7 +6,7 @@ BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues | |||
6 | 6 | ||
7 | SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz" | 7 | SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz" |
8 | 8 | ||
9 | SRC_URI[sha256sum] = "d864b9aec28c3a80895468c909dd303e5f22f92d6e2b1137f80e2a1454584339" | 9 | SRC_URI[sha256sum] = "fe4ec9670edfe6bb1e5f27169ae145b5ac2dd218ac98bd8251c8fba41ad33c53" |
10 | 10 | ||
11 | S = "${UNPACKDIR}/gst-plugins-good-${PV}" | 11 | S = "${UNPACKDIR}/gst-plugins-good-${PV}" |
12 | 12 | ||
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.26.2.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.26.3.bb index fcd97e4245..cc3da89556 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.26.2.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.26.3.bb | |||
@@ -15,7 +15,7 @@ SRC_URI = " \ | |||
15 | https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${PV}.tar.xz \ | 15 | https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${PV}.tar.xz \ |
16 | " | 16 | " |
17 | 17 | ||
18 | SRC_URI[sha256sum] = "ec2d7556c6b8c2694f9b918ab9c4c6c998fb908c6b6a6ad57441702dad14ce73" | 18 | SRC_URI[sha256sum] = "417f5ee895f734ac0341b3719c175fff16b4c8eae8806e29e170b3bcb3d9dba5" |
19 | 19 | ||
20 | S = "${UNPACKDIR}/gst-plugins-ugly-${PV}" | 20 | S = "${UNPACKDIR}/gst-plugins-ugly-${PV}" |
21 | 21 | ||
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.26.2.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.26.3.bb index 3c60e09d85..1f80063a0b 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.26.2.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.26.3.bb | |||
@@ -8,7 +8,7 @@ LICENSE = "LGPL-2.1-or-later" | |||
8 | LIC_FILES_CHKSUM = "file://COPYING;md5=c34deae4e395ca07e725ab0076a5f740" | 8 | LIC_FILES_CHKSUM = "file://COPYING;md5=c34deae4e395ca07e725ab0076a5f740" |
9 | 9 | ||
10 | SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz" | 10 | SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz" |
11 | SRC_URI[sha256sum] = "757ae964c16a542d60708bcb8a67c56c5be83785c0d1c534b9b9366bf676746e" | 11 | SRC_URI[sha256sum] = "9343b9a7c45f472498c24ddb6fea9aba5f1a24395ddbc0b79da6e485e42d1b12" |
12 | 12 | ||
13 | DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base python3-pygobject gstreamer1.0-plugins-bad" | 13 | DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base python3-pygobject gstreamer1.0-plugins-bad" |
14 | RDEPENDS:${PN} += "gstreamer1.0 gstreamer1.0-plugins-base python3-pygobject" | 14 | RDEPENDS:${PN} += "gstreamer1.0 gstreamer1.0-plugins-base python3-pygobject" |
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.26.2.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.26.3.bb index 51085bb3fa..7ee7a1f07f 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.26.2.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.26.3.bb | |||
@@ -10,7 +10,7 @@ PNREAL = "gst-rtsp-server" | |||
10 | 10 | ||
11 | SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz" | 11 | SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz" |
12 | 12 | ||
13 | SRC_URI[sha256sum] = "f942b2a499ed6d161222868db0e80de45297b4777ff189c6fb890bde698c2dc3" | 13 | SRC_URI[sha256sum] = "415e8a53a9844789770dd4f116ac2e3a4a33de42673c57acc25c5ba0f4406fc5" |
14 | 14 | ||
15 | S = "${UNPACKDIR}/${PNREAL}-${PV}" | 15 | S = "${UNPACKDIR}/${PNREAL}-${PV}" |
16 | 16 | ||
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.26.2.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.26.3.bb index 9b8aaf09df..98eba8bcdb 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.26.2.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.26.3.bb | |||
@@ -11,7 +11,7 @@ LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c" | |||
11 | 11 | ||
12 | SRC_URI = "https://gstreamer.freedesktop.org/src/${REALPN}/${REALPN}-${PV}.tar.xz" | 12 | SRC_URI = "https://gstreamer.freedesktop.org/src/${REALPN}/${REALPN}-${PV}.tar.xz" |
13 | 13 | ||
14 | SRC_URI[sha256sum] = "0e24194236ed3b7f06f90e90efdf17f3f5ee39132e20081189a6c7690601051a" | 14 | SRC_URI[sha256sum] = "2d643fbd1420297da5a4d6945d11f0a5b4f82feea54ea6aec9368d42995d8b03" |
15 | 15 | ||
16 | S = "${UNPACKDIR}/${REALPN}-${PV}" | 16 | S = "${UNPACKDIR}/${REALPN}-${PV}" |
17 | DEPENDS = "libva gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad" | 17 | DEPENDS = "libva gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad" |
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.26.2.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.26.3.bb index a921e39144..9de76944fb 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.26.2.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.26.3.bb | |||
@@ -22,7 +22,7 @@ SRC_URI = "https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.x | |||
22 | file://0003-tests-use-a-dictionaries-for-environment.patch \ | 22 | file://0003-tests-use-a-dictionaries-for-environment.patch \ |
23 | file://0004-tests-add-helper-script-to-run-the-installed_tests.patch \ | 23 | file://0004-tests-add-helper-script-to-run-the-installed_tests.patch \ |
24 | " | 24 | " |
25 | SRC_URI[sha256sum] = "f75334a3dff497c240844304a60015145792ecc3b6b213ac19841ccbd6fdf0ad" | 25 | SRC_URI[sha256sum] = "dc661603221293dccc740862425eb54fbbed60fb29d08c801d440a6a3ff82680" |
26 | 26 | ||
27 | PACKAGECONFIG ??= "${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)} \ | 27 | PACKAGECONFIG ??= "${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)} \ |
28 | check \ | 28 | check \ |
diff --git a/meta/recipes-support/gnupg/drop-unknown-suffix.inc b/meta/recipes-support/gnupg/drop-unknown-suffix.inc new file mode 100644 index 0000000000..dc8f31869c --- /dev/null +++ b/meta/recipes-support/gnupg/drop-unknown-suffix.inc | |||
@@ -0,0 +1,29 @@ | |||
1 | # | ||
2 | # Copyright OpenEmbedded Contributors | ||
3 | # | ||
4 | # SPDX-License-Identifier: MIT | ||
5 | # | ||
6 | |||
7 | # | ||
8 | # This .inc file is used to remove unknown suffix in runtime version | ||
9 | # for gnupg and its related packages. | ||
10 | # | ||
11 | # In these packages, if autogen.sh is run outside of a git repo, | ||
12 | # the find-version function always assumes that the package is a | ||
13 | # beta version and adds the suffix '-unknown' to the version number. | ||
14 | # | ||
15 | # This .inc file modifies autogen.sh to: | ||
16 | # 1. Replace beta=yes with beta=no | ||
17 | # 2. Replace tmp="-unknown" with tmp="" | ||
18 | # | ||
19 | |||
20 | do_configure:prepend() { | ||
21 | if [ -f ${S}/autogen.sh ]; then | ||
22 | sed -i \ | ||
23 | -e 's/^\([[:space:]]*\)beta=yes$/\1beta=no/' \ | ||
24 | -e 's/^\([[:space:]]*\)tmp="-unknown"$/\1tmp=""/' \ | ||
25 | ${S}/autogen.sh | ||
26 | else | ||
27 | bbwarn "autogen.sh not found in ${S}." | ||
28 | fi | ||
29 | } | ||
diff --git a/meta/recipes-support/gnupg/gnupg/0004-autogen.sh-fix-find-version-for-beta-checking.patch b/meta/recipes-support/gnupg/gnupg/0004-autogen.sh-fix-find-version-for-beta-checking.patch deleted file mode 100644 index fc7d964ec4..0000000000 --- a/meta/recipes-support/gnupg/gnupg/0004-autogen.sh-fix-find-version-for-beta-checking.patch +++ /dev/null | |||
@@ -1,31 +0,0 @@ | |||
1 | From 4d8cc1982273d571b4e80fe981878d0fa5884236 Mon Sep 17 00:00:00 2001 | ||
2 | From: Wenzong Fan <wenzong.fan@windriver.com> | ||
3 | Date: Wed, 16 Aug 2017 11:23:22 +0800 | ||
4 | Subject: [PATCH] autogen.sh: fix find-version for beta checking | ||
5 | |||
6 | find-version always assumes that gnupg is beta if autogen.sh is run | ||
7 | out of git-repo. This doesn't work for users whom just take release | ||
8 | tarball and re-run autoconf in their local build dir. | ||
9 | |||
10 | Upstream-Status: Pending | ||
11 | |||
12 | Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com> | ||
13 | |||
14 | Rebase to 2.1.23 | ||
15 | Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> | ||
16 | --- | ||
17 | autogen.sh | 1 - | ||
18 | 1 file changed, 1 deletion(-) | ||
19 | |||
20 | diff --git a/autogen.sh b/autogen.sh | ||
21 | index 9f91297..116fb7f 100755 | ||
22 | --- a/autogen.sh | ||
23 | +++ b/autogen.sh | ||
24 | @@ -270,7 +270,6 @@ if [ "$myhost" = "find-version" ]; then | ||
25 | rvd=$((0x$(echo ${rev} | dd bs=1 count=4 2>/dev/null))) | ||
26 | else | ||
27 | ingit=no | ||
28 | - beta=yes | ||
29 | tmp="-unknown" | ||
30 | cid="0000000" | ||
31 | rev="0000000" | ||
diff --git a/meta/recipes-support/gnupg/gnupg_2.5.5.bb b/meta/recipes-support/gnupg/gnupg_2.5.5.bb index a30dbac62e..cbf0988953 100644 --- a/meta/recipes-support/gnupg/gnupg_2.5.5.bb +++ b/meta/recipes-support/gnupg/gnupg_2.5.5.bb | |||
@@ -13,10 +13,11 @@ DEPENDS = "npth libassuan libksba zlib bzip2 readline libgcrypt" | |||
13 | 13 | ||
14 | inherit autotools gettext texinfo pkgconfig upstream-version-is-even | 14 | inherit autotools gettext texinfo pkgconfig upstream-version-is-even |
15 | 15 | ||
16 | require drop-unknown-suffix.inc | ||
17 | |||
16 | UPSTREAM_CHECK_URI = "https://gnupg.org/ftp/gcrypt/gnupg/" | 18 | UPSTREAM_CHECK_URI = "https://gnupg.org/ftp/gcrypt/gnupg/" |
17 | SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \ | 19 | SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \ |
18 | file://0002-use-pkgconfig-instead-of-npth-config.patch \ | 20 | file://0002-use-pkgconfig-instead-of-npth-config.patch \ |
19 | file://0004-autogen.sh-fix-find-version-for-beta-checking.patch \ | ||
20 | file://0001-Woverride-init-is-not-needed-with-gcc-9.patch \ | 21 | file://0001-Woverride-init-is-not-needed-with-gcc-9.patch \ |
21 | " | 22 | " |
22 | SRC_URI:append:class-native = " file://0001-configure.ac-use-a-custom-value-for-the-location-of-.patch \ | 23 | SRC_URI:append:class-native = " file://0001-configure.ac-use-a-custom-value-for-the-location-of-.patch \ |
diff --git a/meta/recipes-support/libassuan/libassuan_3.0.2.bb b/meta/recipes-support/libassuan/libassuan_3.0.2.bb index f0b7746284..0d2ccce989 100644 --- a/meta/recipes-support/libassuan/libassuan_3.0.2.bb +++ b/meta/recipes-support/libassuan/libassuan_3.0.2.bb | |||
@@ -26,6 +26,8 @@ BINCONFIG = "${bindir}/libassuan-config" | |||
26 | 26 | ||
27 | inherit autotools texinfo binconfig-disabled pkgconfig multilib_header | 27 | inherit autotools texinfo binconfig-disabled pkgconfig multilib_header |
28 | 28 | ||
29 | require recipes-support/gnupg/drop-unknown-suffix.inc | ||
30 | |||
29 | do_configure:prepend () { | 31 | do_configure:prepend () { |
30 | # Else these could be used in preference to those in aclocal-copy | 32 | # Else these could be used in preference to those in aclocal-copy |
31 | rm -f ${S}/m4/*.m4 | 33 | rm -f ${S}/m4/*.m4 |
diff --git a/meta/recipes-support/libgcrypt/libgcrypt_1.11.1.bb b/meta/recipes-support/libgcrypt/libgcrypt_1.11.1.bb index 5574e8c821..14cbe53647 100644 --- a/meta/recipes-support/libgcrypt/libgcrypt_1.11.1.bb +++ b/meta/recipes-support/libgcrypt/libgcrypt_1.11.1.bb | |||
@@ -32,6 +32,8 @@ BINCONFIG = "${bindir}/libgcrypt-config" | |||
32 | 32 | ||
33 | inherit autotools texinfo binconfig-disabled pkgconfig ptest | 33 | inherit autotools texinfo binconfig-disabled pkgconfig ptest |
34 | 34 | ||
35 | require recipes-support/gnupg/drop-unknown-suffix.inc | ||
36 | |||
35 | EXTRA_OECONF = "--disable-asm" | 37 | EXTRA_OECONF = "--disable-asm" |
36 | EXTRA_OEMAKE:class-target = "LIBTOOLFLAGS='--tag=CC'" | 38 | EXTRA_OEMAKE:class-target = "LIBTOOLFLAGS='--tag=CC'" |
37 | 39 | ||
diff --git a/meta/recipes-support/libgpg-error/libgpg-error_1.55.bb b/meta/recipes-support/libgpg-error/libgpg-error_1.55.bb index 842f54b0ff..7de52314a4 100644 --- a/meta/recipes-support/libgpg-error/libgpg-error_1.55.bb +++ b/meta/recipes-support/libgpg-error/libgpg-error_1.55.bb | |||
@@ -25,6 +25,8 @@ BINCONFIG = "${bindir}/gpg-error-config" | |||
25 | 25 | ||
26 | inherit autotools binconfig-disabled pkgconfig gettext multilib_header multilib_script ptest | 26 | inherit autotools binconfig-disabled pkgconfig gettext multilib_header multilib_script ptest |
27 | 27 | ||
28 | require recipes-support/gnupg/drop-unknown-suffix.inc | ||
29 | |||
28 | RDEPENDS:${PN}-ptest:append = " make bash" | 30 | RDEPENDS:${PN}-ptest:append = " make bash" |
29 | 31 | ||
30 | MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/gpgrt-config" | 32 | MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/gpgrt-config" |
diff --git a/meta/recipes-support/libksba/libksba_1.6.7.bb b/meta/recipes-support/libksba/libksba_1.6.7.bb index b7a9fc4050..d97fa84977 100644 --- a/meta/recipes-support/libksba/libksba_1.6.7.bb +++ b/meta/recipes-support/libksba/libksba_1.6.7.bb | |||
@@ -20,6 +20,8 @@ BINCONFIG = "${bindir}/ksba-config" | |||
20 | 20 | ||
21 | inherit autotools binconfig-disabled pkgconfig texinfo | 21 | inherit autotools binconfig-disabled pkgconfig texinfo |
22 | 22 | ||
23 | require recipes-support/gnupg/drop-unknown-suffix.inc | ||
24 | |||
23 | UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html" | 25 | UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html" |
24 | SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \ | 26 | SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \ |
25 | file://ksba-add-pkgconfig-support.patch" | 27 | file://ksba-add-pkgconfig-support.patch" |
diff --git a/meta/recipes-support/libproxy/libproxy_0.5.9.bb b/meta/recipes-support/libproxy/libproxy_0.5.10.bb index ed8a4df2a8..21930ada00 100644 --- a/meta/recipes-support/libproxy/libproxy_0.5.9.bb +++ b/meta/recipes-support/libproxy/libproxy_0.5.10.bb | |||
@@ -13,8 +13,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \ | |||
13 | 13 | ||
14 | DEPENDS = "glib-2.0" | 14 | DEPENDS = "glib-2.0" |
15 | 15 | ||
16 | SRC_URI = "git://github.com/libproxy/libproxy;protocol=https;branch=main" | 16 | SRC_URI = "git://github.com/libproxy/libproxy;protocol=https;branch=main;tag=${PV}" |
17 | SRCREV = "77e2a2b88a319974cf099c8eaaaa03030bc4c0d4" | 17 | SRCREV = "7e4852f9658084c61a95973b8a1d720b1763437a" |
18 | 18 | ||
19 | inherit meson pkgconfig gobject-introspection vala gi-docgen | 19 | inherit meson pkgconfig gobject-introspection vala gi-docgen |
20 | GIDOCGEN_MESON_OPTION = 'docs' | 20 | GIDOCGEN_MESON_OPTION = 'docs' |
diff --git a/meta/recipes-support/pinentry/pinentry_1.3.1.bb b/meta/recipes-support/pinentry/pinentry_1.3.1.bb index 14b368177c..0fc652cdba 100644 --- a/meta/recipes-support/pinentry/pinentry_1.3.1.bb +++ b/meta/recipes-support/pinentry/pinentry_1.3.1.bb | |||
@@ -20,6 +20,8 @@ SRC_URI[sha256sum] = "bc72ee27c7239007ab1896c3c2fae53b076e2c9bd2483dc2769a16902b | |||
20 | 20 | ||
21 | inherit autotools pkgconfig | 21 | inherit autotools pkgconfig |
22 | 22 | ||
23 | require recipes-support/gnupg/drop-unknown-suffix.inc | ||
24 | |||
23 | PACKAGECONFIG ??= "ncurses" | 25 | PACKAGECONFIG ??= "ncurses" |
24 | 26 | ||
25 | PACKAGECONFIG[ncurses] = "--enable-ncurses --with-ncurses-include-dir=${STAGING_INCDIR}, --disable-ncurses, ncurses" | 27 | PACKAGECONFIG[ncurses] = "--enable-ncurses --with-ncurses-include-dir=${STAGING_INCDIR}, --disable-ncurses, ncurses" |
diff --git a/scripts/lib/recipetool/create.py b/scripts/lib/recipetool/create.py index edb6467103..ef0ba974a9 100644 --- a/scripts/lib/recipetool/create.py +++ b/scripts/lib/recipetool/create.py | |||
@@ -18,6 +18,7 @@ from urllib.parse import urlparse, urldefrag, urlsplit | |||
18 | import hashlib | 18 | import hashlib |
19 | import bb.fetch2 | 19 | import bb.fetch2 |
20 | logger = logging.getLogger('recipetool') | 20 | logger = logging.getLogger('recipetool') |
21 | from oe.license import tidy_licenses | ||
21 | from oe.license_finder import find_licenses | 22 | from oe.license_finder import find_licenses |
22 | 23 | ||
23 | tinfoil = None | 24 | tinfoil = None |
@@ -764,6 +765,7 @@ def create_recipe(args): | |||
764 | extrafiles = extravalues.pop('extrafiles', {}) | 765 | extrafiles = extravalues.pop('extrafiles', {}) |
765 | extra_pn = extravalues.pop('PN', None) | 766 | extra_pn = extravalues.pop('PN', None) |
766 | extra_pv = extravalues.pop('PV', None) | 767 | extra_pv = extravalues.pop('PV', None) |
768 | run_tasks = extravalues.pop('run_tasks', "").split() | ||
767 | 769 | ||
768 | if extra_pv and not realpv: | 770 | if extra_pv and not realpv: |
769 | realpv = extra_pv | 771 | realpv = extra_pv |
@@ -824,7 +826,8 @@ def create_recipe(args): | |||
824 | extraoutdir = os.path.join(os.path.dirname(outfile), pn) | 826 | extraoutdir = os.path.join(os.path.dirname(outfile), pn) |
825 | bb.utils.mkdirhier(extraoutdir) | 827 | bb.utils.mkdirhier(extraoutdir) |
826 | for destfn, extrafile in extrafiles.items(): | 828 | for destfn, extrafile in extrafiles.items(): |
827 | shutil.move(extrafile, os.path.join(extraoutdir, destfn)) | 829 | fn = destfn.format(pn=pn, pv=realpv) |
830 | shutil.move(extrafile, os.path.join(extraoutdir, fn)) | ||
828 | 831 | ||
829 | lines = lines_before | 832 | lines = lines_before |
830 | lines_before = [] | 833 | lines_before = [] |
@@ -917,6 +920,10 @@ def create_recipe(args): | |||
917 | log_info_cond('Recipe %s has been created; further editing may be required to make it fully functional' % outfile, args.devtool) | 920 | log_info_cond('Recipe %s has been created; further editing may be required to make it fully functional' % outfile, args.devtool) |
918 | tinfoil.modified_files() | 921 | tinfoil.modified_files() |
919 | 922 | ||
923 | for task in run_tasks: | ||
924 | logger.info("Running task %s" % task) | ||
925 | tinfoil.build_file_sync(outfile, task) | ||
926 | |||
920 | if tempsrc: | 927 | if tempsrc: |
921 | if args.keep_temp: | 928 | if args.keep_temp: |
922 | logger.info('Preserving temporary directory %s' % tempsrc) | 929 | logger.info('Preserving temporary directory %s' % tempsrc) |
@@ -944,16 +951,6 @@ def fixup_license(value): | |||
944 | return '(' + value + ')' | 951 | return '(' + value + ')' |
945 | return value | 952 | return value |
946 | 953 | ||
947 | def tidy_licenses(value): | ||
948 | """Flat, split and sort licenses""" | ||
949 | from oe.license import flattened_licenses | ||
950 | def _choose(a, b): | ||
951 | str_a, str_b = sorted((" & ".join(a), " & ".join(b)), key=str.casefold) | ||
952 | return ["(%s | %s)" % (str_a, str_b)] | ||
953 | if not isinstance(value, str): | ||
954 | value = " & ".join(value) | ||
955 | return sorted(list(set(flattened_licenses(value, _choose))), key=str.casefold) | ||
956 | |||
957 | def handle_license_vars(srctree, lines_before, handled, extravalues, d): | 954 | def handle_license_vars(srctree, lines_before, handled, extravalues, d): |
958 | lichandled = [x for x in handled if x[0] == 'license'] | 955 | lichandled = [x for x in handled if x[0] == 'license'] |
959 | if lichandled: | 956 | if lichandled: |
diff --git a/scripts/lib/recipetool/create_go.py b/scripts/lib/recipetool/create_go.py index 5cc53931f0..4b1fa39d13 100644 --- a/scripts/lib/recipetool/create_go.py +++ b/scripts/lib/recipetool/create_go.py | |||
@@ -10,13 +10,7 @@ | |||
10 | # | 10 | # |
11 | 11 | ||
12 | 12 | ||
13 | from collections import namedtuple | ||
14 | from enum import Enum | ||
15 | from html.parser import HTMLParser | ||
16 | from recipetool.create import RecipeHandler, handle_license_vars | 13 | from recipetool.create import RecipeHandler, handle_license_vars |
17 | from recipetool.create import find_licenses, tidy_licenses, fixup_license | ||
18 | from recipetool.create import determine_from_url | ||
19 | from urllib.error import URLError, HTTPError | ||
20 | 14 | ||
21 | import bb.utils | 15 | import bb.utils |
22 | import json | 16 | import json |
@@ -25,33 +19,20 @@ import os | |||
25 | import re | 19 | import re |
26 | import subprocess | 20 | import subprocess |
27 | import sys | 21 | import sys |
28 | import shutil | ||
29 | import tempfile | 22 | import tempfile |
30 | import urllib.parse | ||
31 | import urllib.request | ||
32 | 23 | ||
33 | 24 | ||
34 | GoImport = namedtuple('GoImport', 'root vcs url suffix') | ||
35 | logger = logging.getLogger('recipetool') | 25 | logger = logging.getLogger('recipetool') |
36 | CodeRepo = namedtuple( | ||
37 | 'CodeRepo', 'path codeRoot codeDir pathMajor pathPrefix pseudoMajor') | ||
38 | 26 | ||
39 | tinfoil = None | 27 | tinfoil = None |
40 | 28 | ||
41 | # Regular expression to parse pseudo semantic version | ||
42 | # see https://go.dev/ref/mod#pseudo-versions | ||
43 | re_pseudo_semver = re.compile( | ||
44 | r"^v[0-9]+\.(0\.0-|\d+\.\d+-([^+]*\.)?0\.)(?P<utc>\d{14})-(?P<commithash>[A-Za-z0-9]+)(\+[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?$") | ||
45 | # Regular expression to parse semantic version | ||
46 | re_semver = re.compile( | ||
47 | r"^v(?P<major>0|[1-9]\d*)\.(?P<minor>0|[1-9]\d*)\.(?P<patch>0|[1-9]\d*)(?:-(?P<prerelease>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?P<buildmetadata>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$") | ||
48 | |||
49 | 29 | ||
50 | def tinfoil_init(instance): | 30 | def tinfoil_init(instance): |
51 | global tinfoil | 31 | global tinfoil |
52 | tinfoil = instance | 32 | tinfoil = instance |
53 | 33 | ||
54 | 34 | ||
35 | |||
55 | class GoRecipeHandler(RecipeHandler): | 36 | class GoRecipeHandler(RecipeHandler): |
56 | """Class to handle the go recipe creation""" | 37 | """Class to handle the go recipe creation""" |
57 | 38 | ||
@@ -83,578 +64,6 @@ class GoRecipeHandler(RecipeHandler): | |||
83 | 64 | ||
84 | return bindir | 65 | return bindir |
85 | 66 | ||
86 | def __resolve_repository_static(self, modulepath): | ||
87 | """Resolve the repository in a static manner | ||
88 | |||
89 | The method is based on the go implementation of | ||
90 | `repoRootFromVCSPaths` in | ||
91 | https://github.com/golang/go/blob/master/src/cmd/go/internal/vcs/vcs.go | ||
92 | """ | ||
93 | |||
94 | url = urllib.parse.urlparse("https://" + modulepath) | ||
95 | req = urllib.request.Request(url.geturl()) | ||
96 | |||
97 | try: | ||
98 | resp = urllib.request.urlopen(req) | ||
99 | # Some modulepath are just redirects to github (or some other vcs | ||
100 | # hoster). Therefore, we check if this modulepath redirects to | ||
101 | # somewhere else | ||
102 | if resp.geturl() != url.geturl(): | ||
103 | bb.debug(1, "%s is redirectred to %s" % | ||
104 | (url.geturl(), resp.geturl())) | ||
105 | url = urllib.parse.urlparse(resp.geturl()) | ||
106 | modulepath = url.netloc + url.path | ||
107 | |||
108 | except URLError as url_err: | ||
109 | # This is probably because the module path | ||
110 | # contains the subdir and major path. Thus, | ||
111 | # we ignore this error for now | ||
112 | logger.debug( | ||
113 | 1, "Failed to fetch page from [%s]: %s" % (url, str(url_err))) | ||
114 | |||
115 | host, _, _ = modulepath.partition('/') | ||
116 | |||
117 | class vcs(Enum): | ||
118 | pathprefix = "pathprefix" | ||
119 | regexp = "regexp" | ||
120 | type = "type" | ||
121 | repo = "repo" | ||
122 | check = "check" | ||
123 | schemelessRepo = "schemelessRepo" | ||
124 | |||
125 | # GitHub | ||
126 | vcsGitHub = {} | ||
127 | vcsGitHub[vcs.pathprefix] = "github.com" | ||
128 | vcsGitHub[vcs.regexp] = re.compile( | ||
129 | r'^(?P<root>github\.com/[A-Za-z0-9_.\-]+/[A-Za-z0-9_.\-]+)(/(?P<suffix>[A-Za-z0-9_.\-]+))*$') | ||
130 | vcsGitHub[vcs.type] = "git" | ||
131 | vcsGitHub[vcs.repo] = "https://\\g<root>" | ||
132 | |||
133 | # Bitbucket | ||
134 | vcsBitbucket = {} | ||
135 | vcsBitbucket[vcs.pathprefix] = "bitbucket.org" | ||
136 | vcsBitbucket[vcs.regexp] = re.compile( | ||
137 | r'^(?P<root>bitbucket\.org/(?P<bitname>[A-Za-z0-9_.\-]+/[A-Za-z0-9_.\-]+))(/(?P<suffix>[A-Za-z0-9_.\-]+))*$') | ||
138 | vcsBitbucket[vcs.type] = "git" | ||
139 | vcsBitbucket[vcs.repo] = "https://\\g<root>" | ||
140 | |||
141 | # IBM DevOps Services (JazzHub) | ||
142 | vcsIBMDevOps = {} | ||
143 | vcsIBMDevOps[vcs.pathprefix] = "hub.jazz.net/git" | ||
144 | vcsIBMDevOps[vcs.regexp] = re.compile( | ||
145 | r'^(?P<root>hub\.jazz\.net/git/[a-z0-9]+/[A-Za-z0-9_.\-]+)(/(?P<suffix>[A-Za-z0-9_.\-]+))*$') | ||
146 | vcsIBMDevOps[vcs.type] = "git" | ||
147 | vcsIBMDevOps[vcs.repo] = "https://\\g<root>" | ||
148 | |||
149 | # Git at Apache | ||
150 | vcsApacheGit = {} | ||
151 | vcsApacheGit[vcs.pathprefix] = "git.apache.org" | ||
152 | vcsApacheGit[vcs.regexp] = re.compile( | ||
153 | r'^(?P<root>git\.apache\.org/[a-z0-9_.\-]+\.git)(/(?P<suffix>[A-Za-z0-9_.\-]+))*$') | ||
154 | vcsApacheGit[vcs.type] = "git" | ||
155 | vcsApacheGit[vcs.repo] = "https://\\g<root>" | ||
156 | |||
157 | # Git at OpenStack | ||
158 | vcsOpenStackGit = {} | ||
159 | vcsOpenStackGit[vcs.pathprefix] = "git.openstack.org" | ||
160 | vcsOpenStackGit[vcs.regexp] = re.compile( | ||
161 | r'^(?P<root>git\.openstack\.org/[A-Za-z0-9_.\-]+/[A-Za-z0-9_.\-]+)(\.git)?(/(?P<suffix>[A-Za-z0-9_.\-]+))*$') | ||
162 | vcsOpenStackGit[vcs.type] = "git" | ||
163 | vcsOpenStackGit[vcs.repo] = "https://\\g<root>" | ||
164 | |||
165 | # chiselapp.com for fossil | ||
166 | vcsChiselapp = {} | ||
167 | vcsChiselapp[vcs.pathprefix] = "chiselapp.com" | ||
168 | vcsChiselapp[vcs.regexp] = re.compile( | ||
169 | r'^(?P<root>chiselapp\.com/user/[A-Za-z0-9]+/repository/[A-Za-z0-9_.\-]+)$') | ||
170 | vcsChiselapp[vcs.type] = "fossil" | ||
171 | vcsChiselapp[vcs.repo] = "https://\\g<root>" | ||
172 | |||
173 | # General syntax for any server. | ||
174 | # Must be last. | ||
175 | vcsGeneralServer = {} | ||
176 | vcsGeneralServer[vcs.regexp] = re.compile( | ||
177 | "(?P<root>(?P<repo>([a-z0-9.\\-]+\\.)+[a-z0-9.\\-]+(:[0-9]+)?(/~?[A-Za-z0-9_.\\-]+)+?)\\.(?P<vcs>bzr|fossil|git|hg|svn))(/~?(?P<suffix>[A-Za-z0-9_.\\-]+))*$") | ||
178 | vcsGeneralServer[vcs.schemelessRepo] = True | ||
179 | |||
180 | vcsPaths = [vcsGitHub, vcsBitbucket, vcsIBMDevOps, | ||
181 | vcsApacheGit, vcsOpenStackGit, vcsChiselapp, | ||
182 | vcsGeneralServer] | ||
183 | |||
184 | if modulepath.startswith("example.net") or modulepath == "rsc.io": | ||
185 | logger.warning("Suspicious module path %s" % modulepath) | ||
186 | return None | ||
187 | if modulepath.startswith("http:") or modulepath.startswith("https:"): | ||
188 | logger.warning("Import path should not start with %s %s" % | ||
189 | ("http", "https")) | ||
190 | return None | ||
191 | |||
192 | rootpath = None | ||
193 | vcstype = None | ||
194 | repourl = None | ||
195 | suffix = None | ||
196 | |||
197 | for srv in vcsPaths: | ||
198 | m = srv[vcs.regexp].match(modulepath) | ||
199 | if vcs.pathprefix in srv: | ||
200 | if host == srv[vcs.pathprefix]: | ||
201 | rootpath = m.group('root') | ||
202 | vcstype = srv[vcs.type] | ||
203 | repourl = m.expand(srv[vcs.repo]) | ||
204 | suffix = m.group('suffix') | ||
205 | break | ||
206 | elif m and srv[vcs.schemelessRepo]: | ||
207 | rootpath = m.group('root') | ||
208 | vcstype = m[vcs.type] | ||
209 | repourl = m[vcs.repo] | ||
210 | suffix = m.group('suffix') | ||
211 | break | ||
212 | |||
213 | return GoImport(rootpath, vcstype, repourl, suffix) | ||
214 | |||
215 | def __resolve_repository_dynamic(self, modulepath): | ||
216 | """Resolve the repository root in a dynamic manner. | ||
217 | |||
218 | The method is based on the go implementation of | ||
219 | `repoRootForImportDynamic` in | ||
220 | https://github.com/golang/go/blob/master/src/cmd/go/internal/vcs/vcs.go | ||
221 | """ | ||
222 | url = urllib.parse.urlparse("https://" + modulepath) | ||
223 | |||
224 | class GoImportHTMLParser(HTMLParser): | ||
225 | |||
226 | def __init__(self): | ||
227 | super().__init__() | ||
228 | self.__srv = {} | ||
229 | |||
230 | def handle_starttag(self, tag, attrs): | ||
231 | if tag == 'meta' and list( | ||
232 | filter(lambda a: (a[0] == 'name' and a[1] == 'go-import'), attrs)): | ||
233 | content = list( | ||
234 | filter(lambda a: (a[0] == 'content'), attrs)) | ||
235 | if content: | ||
236 | srv = content[0][1].split() | ||
237 | self.__srv[srv[0]] = srv | ||
238 | |||
239 | def go_import(self, modulepath): | ||
240 | if modulepath in self.__srv: | ||
241 | srv = self.__srv[modulepath] | ||
242 | return GoImport(srv[0], srv[1], srv[2], None) | ||
243 | return None | ||
244 | |||
245 | url = url.geturl() + "?go-get=1" | ||
246 | req = urllib.request.Request(url) | ||
247 | |||
248 | try: | ||
249 | body = urllib.request.urlopen(req).read() | ||
250 | except HTTPError as http_err: | ||
251 | logger.warning( | ||
252 | "Unclean status when fetching page from [%s]: %s", url, str(http_err)) | ||
253 | body = http_err.fp.read() | ||
254 | except URLError as url_err: | ||
255 | logger.warning( | ||
256 | "Failed to fetch page from [%s]: %s", url, str(url_err)) | ||
257 | return None | ||
258 | |||
259 | parser = GoImportHTMLParser() | ||
260 | parser.feed(body.decode('utf-8')) | ||
261 | parser.close() | ||
262 | |||
263 | return parser.go_import(modulepath) | ||
264 | |||
265 | def __resolve_from_golang_proxy(self, modulepath, version): | ||
266 | """ | ||
267 | Resolves repository data from golang proxy | ||
268 | """ | ||
269 | url = urllib.parse.urlparse("https://proxy.golang.org/" | ||
270 | + modulepath | ||
271 | + "/@v/" | ||
272 | + version | ||
273 | + ".info") | ||
274 | |||
275 | # Transform url to lower case, golang proxy doesn't like mixed case | ||
276 | req = urllib.request.Request(url.geturl().lower()) | ||
277 | |||
278 | try: | ||
279 | resp = urllib.request.urlopen(req) | ||
280 | except URLError as url_err: | ||
281 | logger.warning( | ||
282 | "Failed to fetch page from [%s]: %s", url, str(url_err)) | ||
283 | return None | ||
284 | |||
285 | golang_proxy_res = resp.read().decode('utf-8') | ||
286 | modinfo = json.loads(golang_proxy_res) | ||
287 | |||
288 | if modinfo and 'Origin' in modinfo: | ||
289 | origin = modinfo['Origin'] | ||
290 | _root_url = urllib.parse.urlparse(origin['URL']) | ||
291 | |||
292 | # We normalize the repo URL since we don't want the scheme in it | ||
293 | _subdir = origin['Subdir'] if 'Subdir' in origin else None | ||
294 | _root, _, _ = self.__split_path_version(modulepath) | ||
295 | if _subdir: | ||
296 | _root = _root[:-len(_subdir)].strip('/') | ||
297 | |||
298 | _commit = origin['Hash'] | ||
299 | _vcs = origin['VCS'] | ||
300 | return (GoImport(_root, _vcs, _root_url.geturl(), None), _commit) | ||
301 | |||
302 | return None | ||
303 | |||
304 | def __resolve_repository(self, modulepath): | ||
305 | """ | ||
306 | Resolves src uri from go module-path | ||
307 | """ | ||
308 | repodata = self.__resolve_repository_static(modulepath) | ||
309 | if not repodata or not repodata.url: | ||
310 | repodata = self.__resolve_repository_dynamic(modulepath) | ||
311 | if not repodata or not repodata.url: | ||
312 | logger.error( | ||
313 | "Could not resolve repository for module path '%s'" % modulepath) | ||
314 | # There is no way to recover from this | ||
315 | sys.exit(14) | ||
316 | if repodata: | ||
317 | logger.debug(1, "Resolved download path for import '%s' => %s" % ( | ||
318 | modulepath, repodata.url)) | ||
319 | return repodata | ||
320 | |||
321 | def __split_path_version(self, path): | ||
322 | i = len(path) | ||
323 | dot = False | ||
324 | for j in range(i, 0, -1): | ||
325 | if path[j - 1] < '0' or path[j - 1] > '9': | ||
326 | break | ||
327 | if path[j - 1] == '.': | ||
328 | dot = True | ||
329 | break | ||
330 | i = j - 1 | ||
331 | |||
332 | if i <= 1 or i == len( | ||
333 | path) or path[i - 1] != 'v' or path[i - 2] != '/': | ||
334 | return path, "", True | ||
335 | |||
336 | prefix, pathMajor = path[:i - 2], path[i - 2:] | ||
337 | if dot or len( | ||
338 | pathMajor) <= 2 or pathMajor[2] == '0' or pathMajor == "/v1": | ||
339 | return path, "", False | ||
340 | |||
341 | return prefix, pathMajor, True | ||
342 | |||
343 | def __get_path_major(self, pathMajor): | ||
344 | if not pathMajor: | ||
345 | return "" | ||
346 | |||
347 | if pathMajor[0] != '/' and pathMajor[0] != '.': | ||
348 | logger.error( | ||
349 | "pathMajor suffix %s passed to PathMajorPrefix lacks separator", pathMajor) | ||
350 | |||
351 | if pathMajor.startswith(".v") and pathMajor.endswith("-unstable"): | ||
352 | pathMajor = pathMajor[:len("-unstable") - 2] | ||
353 | |||
354 | return pathMajor[1:] | ||
355 | |||
356 | def __build_coderepo(self, repo, path): | ||
357 | codedir = "" | ||
358 | pathprefix, pathMajor, _ = self.__split_path_version(path) | ||
359 | if repo.root == path: | ||
360 | pathprefix = path | ||
361 | elif path.startswith(repo.root): | ||
362 | codedir = pathprefix[len(repo.root):].strip('/') | ||
363 | |||
364 | pseudoMajor = self.__get_path_major(pathMajor) | ||
365 | |||
366 | logger.debug("root='%s', codedir='%s', prefix='%s', pathMajor='%s', pseudoMajor='%s'", | ||
367 | repo.root, codedir, pathprefix, pathMajor, pseudoMajor) | ||
368 | |||
369 | return CodeRepo(path, repo.root, codedir, | ||
370 | pathMajor, pathprefix, pseudoMajor) | ||
371 | |||
372 | def __resolve_version(self, repo, path, version): | ||
373 | hash = None | ||
374 | coderoot = self.__build_coderepo(repo, path) | ||
375 | |||
376 | def vcs_fetch_all(): | ||
377 | tmpdir = tempfile.mkdtemp() | ||
378 | clone_cmd = "%s clone --bare %s %s" % ('git', repo.url, tmpdir) | ||
379 | bb.process.run(clone_cmd) | ||
380 | log_cmd = "git log --all --pretty='%H %d' --decorate=short" | ||
381 | output, _ = bb.process.run( | ||
382 | log_cmd, shell=True, stderr=subprocess.PIPE, cwd=tmpdir) | ||
383 | bb.utils.prunedir(tmpdir) | ||
384 | return output.strip().split('\n') | ||
385 | |||
386 | def vcs_fetch_remote(tag): | ||
387 | # add * to grab ^{} | ||
388 | refs = {} | ||
389 | ls_remote_cmd = "git ls-remote -q --tags {} {}*".format( | ||
390 | repo.url, tag) | ||
391 | output, _ = bb.process.run(ls_remote_cmd) | ||
392 | output = output.strip().split('\n') | ||
393 | for line in output: | ||
394 | f = line.split(maxsplit=1) | ||
395 | if len(f) != 2: | ||
396 | continue | ||
397 | |||
398 | for prefix in ["HEAD", "refs/heads/", "refs/tags/"]: | ||
399 | if f[1].startswith(prefix): | ||
400 | refs[f[1][len(prefix):]] = f[0] | ||
401 | |||
402 | for key, hash in refs.items(): | ||
403 | if key.endswith(r"^{}"): | ||
404 | refs[key.strip(r"^{}")] = hash | ||
405 | |||
406 | return refs[tag] | ||
407 | |||
408 | m_pseudo_semver = re_pseudo_semver.match(version) | ||
409 | |||
410 | if m_pseudo_semver: | ||
411 | remote_refs = vcs_fetch_all() | ||
412 | short_commit = m_pseudo_semver.group('commithash') | ||
413 | for l in remote_refs: | ||
414 | r = l.split(maxsplit=1) | ||
415 | sha1 = r[0] if len(r) else None | ||
416 | if not sha1: | ||
417 | logger.error( | ||
418 | "Ups: could not resolve abbref commit for %s" % short_commit) | ||
419 | |||
420 | elif sha1.startswith(short_commit): | ||
421 | hash = sha1 | ||
422 | break | ||
423 | else: | ||
424 | m_semver = re_semver.match(version) | ||
425 | if m_semver: | ||
426 | |||
427 | def get_sha1_remote(re): | ||
428 | rsha1 = None | ||
429 | for line in remote_refs: | ||
430 | # Split lines of the following format: | ||
431 | # 22e90d9b964610628c10f673ca5f85b8c2a2ca9a (tag: sometag) | ||
432 | lineparts = line.split(maxsplit=1) | ||
433 | sha1 = lineparts[0] if len(lineparts) else None | ||
434 | refstring = lineparts[1] if len( | ||
435 | lineparts) == 2 else None | ||
436 | if refstring: | ||
437 | # Normalize tag string and split in case of multiple | ||
438 | # regs e.g. (tag: speech/v1.10.0, tag: orchestration/v1.5.0 ...) | ||
439 | refs = refstring.strip('(), ').split(',') | ||
440 | for ref in refs: | ||
441 | if re.match(ref.strip()): | ||
442 | rsha1 = sha1 | ||
443 | return rsha1 | ||
444 | |||
445 | semver = "v" + m_semver.group('major') + "."\ | ||
446 | + m_semver.group('minor') + "."\ | ||
447 | + m_semver.group('patch') \ | ||
448 | + (("-" + m_semver.group('prerelease')) | ||
449 | if m_semver.group('prerelease') else "") | ||
450 | |||
451 | tag = os.path.join( | ||
452 | coderoot.codeDir, semver) if coderoot.codeDir else semver | ||
453 | |||
454 | # probe tag using 'ls-remote', which is faster than fetching | ||
455 | # complete history | ||
456 | hash = vcs_fetch_remote(tag) | ||
457 | if not hash: | ||
458 | # backup: fetch complete history | ||
459 | remote_refs = vcs_fetch_all() | ||
460 | hash = get_sha1_remote( | ||
461 | re.compile(fr"(tag:|HEAD ->) ({tag})")) | ||
462 | |||
463 | logger.debug( | ||
464 | "Resolving commit for tag '%s' -> '%s'", tag, hash) | ||
465 | return hash | ||
466 | |||
467 | def __generate_srcuri_inline_fcn(self, path, version, replaces=None): | ||
468 | """Generate SRC_URI functions for go imports""" | ||
469 | |||
470 | logger.info("Resolving repository for module %s", path) | ||
471 | # First try to resolve repo and commit from golang proxy | ||
472 | # Most info is already there and we don't have to go through the | ||
473 | # repository or even perform the version resolve magic | ||
474 | golang_proxy_info = self.__resolve_from_golang_proxy(path, version) | ||
475 | if golang_proxy_info: | ||
476 | repo = golang_proxy_info[0] | ||
477 | commit = golang_proxy_info[1] | ||
478 | else: | ||
479 | # Fallback | ||
480 | # Resolve repository by 'hand' | ||
481 | repo = self.__resolve_repository(path) | ||
482 | commit = self.__resolve_version(repo, path, version) | ||
483 | |||
484 | url = urllib.parse.urlparse(repo.url) | ||
485 | repo_url = url.netloc + url.path | ||
486 | |||
487 | coderoot = self.__build_coderepo(repo, path) | ||
488 | |||
489 | inline_fcn = "${@go_src_uri(" | ||
490 | inline_fcn += f"'{repo_url}','{version}'" | ||
491 | if repo_url != path: | ||
492 | inline_fcn += f",path='{path}'" | ||
493 | if coderoot.codeDir: | ||
494 | inline_fcn += f",subdir='{coderoot.codeDir}'" | ||
495 | if repo.vcs != 'git': | ||
496 | inline_fcn += f",vcs='{repo.vcs}'" | ||
497 | if replaces: | ||
498 | inline_fcn += f",replaces='{replaces}'" | ||
499 | if coderoot.pathMajor: | ||
500 | inline_fcn += f",pathmajor='{coderoot.pathMajor}'" | ||
501 | inline_fcn += ")}" | ||
502 | |||
503 | return inline_fcn, commit | ||
504 | |||
505 | def __go_handle_dependencies(self, go_mod, srctree, localfilesdir, extravalues, d): | ||
506 | |||
507 | import re | ||
508 | src_uris = [] | ||
509 | src_revs = [] | ||
510 | |||
511 | def generate_src_rev(path, version, commithash): | ||
512 | src_rev = f"# {path}@{version} => {commithash}\n" | ||
513 | # Ups...maybe someone manipulated the source repository and the | ||
514 | # version or commit could not be resolved. This is a sign of | ||
515 | # a) the supply chain was manipulated (bad) | ||
516 | # b) the implementation for the version resolving didn't work | ||
517 | # anymore (less bad) | ||
518 | if not commithash: | ||
519 | src_rev += f"#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n" | ||
520 | src_rev += f"#!!! Could not resolve version !!!\n" | ||
521 | src_rev += f"#!!! Possible supply chain attack !!!\n" | ||
522 | src_rev += f"#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n" | ||
523 | src_rev += f"SRCREV_{path.replace('/', '.')} = \"{commithash}\"" | ||
524 | |||
525 | return src_rev | ||
526 | |||
527 | # we first go over replacement list, because we are essentialy | ||
528 | # interested only in the replaced path | ||
529 | if go_mod['Replace']: | ||
530 | for replacement in go_mod['Replace']: | ||
531 | oldpath = replacement['Old']['Path'] | ||
532 | path = replacement['New']['Path'] | ||
533 | version = '' | ||
534 | if 'Version' in replacement['New']: | ||
535 | version = replacement['New']['Version'] | ||
536 | |||
537 | if os.path.exists(os.path.join(srctree, path)): | ||
538 | # the module refers to the local path, remove it from requirement list | ||
539 | # because it's a local module | ||
540 | go_mod['Require'][:] = [v for v in go_mod['Require'] if v.get('Path') != oldpath] | ||
541 | else: | ||
542 | # Replace the path and the version, so we don't iterate replacement list anymore | ||
543 | for require in go_mod['Require']: | ||
544 | if require['Path'] == oldpath: | ||
545 | require.update({'Path': path, 'Version': version}) | ||
546 | break | ||
547 | |||
548 | for require in go_mod['Require']: | ||
549 | path = require['Path'] | ||
550 | version = require['Version'] | ||
551 | |||
552 | inline_fcn, commithash = self.__generate_srcuri_inline_fcn( | ||
553 | path, version) | ||
554 | src_uris.append(inline_fcn) | ||
555 | src_revs.append(generate_src_rev(path, version, commithash)) | ||
556 | |||
557 | # strip version part from module URL /vXX | ||
558 | baseurl = re.sub(r'/v(\d+)$', '', go_mod['Module']['Path']) | ||
559 | pn, _ = determine_from_url(baseurl) | ||
560 | go_mods_basename = "%s-modules.inc" % pn | ||
561 | |||
562 | go_mods_filename = os.path.join(localfilesdir, go_mods_basename) | ||
563 | with open(go_mods_filename, "w") as f: | ||
564 | # We introduce this indirection to make the tests a little easier | ||
565 | f.write("SRC_URI += \"${GO_DEPENDENCIES_SRC_URI}\"\n") | ||
566 | f.write("GO_DEPENDENCIES_SRC_URI = \"\\\n") | ||
567 | for uri in src_uris: | ||
568 | f.write(" " + uri + " \\\n") | ||
569 | f.write("\"\n\n") | ||
570 | for rev in src_revs: | ||
571 | f.write(rev + "\n") | ||
572 | |||
573 | extravalues['extrafiles'][go_mods_basename] = go_mods_filename | ||
574 | |||
575 | def __go_run_cmd(self, cmd, cwd, d): | ||
576 | return bb.process.run(cmd, env=dict(os.environ, PATH=d.getVar('PATH')), | ||
577 | shell=True, cwd=cwd) | ||
578 | |||
579 | def __go_native_version(self, d): | ||
580 | stdout, _ = self.__go_run_cmd("go version", None, d) | ||
581 | m = re.match(r".*\sgo((\d+).(\d+).(\d+))\s([\w\/]*)", stdout) | ||
582 | major = int(m.group(2)) | ||
583 | minor = int(m.group(3)) | ||
584 | patch = int(m.group(4)) | ||
585 | |||
586 | return major, minor, patch | ||
587 | |||
588 | def __go_mod_patch(self, srctree, localfilesdir, extravalues, d): | ||
589 | |||
590 | patchfilename = "go.mod.patch" | ||
591 | go_native_version_major, go_native_version_minor, _ = self.__go_native_version( | ||
592 | d) | ||
593 | self.__go_run_cmd("go mod tidy -go=%d.%d" % | ||
594 | (go_native_version_major, go_native_version_minor), srctree, d) | ||
595 | stdout, _ = self.__go_run_cmd("go mod edit -json", srctree, d) | ||
596 | |||
597 | # Create patch in order to upgrade go version | ||
598 | self.__go_run_cmd("git diff go.mod > %s" % (patchfilename), srctree, d) | ||
599 | # Restore original state | ||
600 | self.__go_run_cmd("git checkout HEAD go.mod go.sum", srctree, d) | ||
601 | |||
602 | go_mod = json.loads(stdout) | ||
603 | tmpfile = os.path.join(localfilesdir, patchfilename) | ||
604 | shutil.move(os.path.join(srctree, patchfilename), tmpfile) | ||
605 | |||
606 | extravalues['extrafiles'][patchfilename] = tmpfile | ||
607 | |||
608 | return go_mod, patchfilename | ||
609 | |||
610 | def __go_mod_vendor(self, go_mod, srctree, localfilesdir, extravalues, d): | ||
611 | # Perform vendoring to retrieve the correct modules.txt | ||
612 | tmp_vendor_dir = tempfile.mkdtemp() | ||
613 | |||
614 | # -v causes to go to print modules.txt to stderr | ||
615 | _, stderr = self.__go_run_cmd( | ||
616 | "go mod vendor -v -o %s" % (tmp_vendor_dir), srctree, d) | ||
617 | |||
618 | modules_txt_basename = "modules.txt" | ||
619 | modules_txt_filename = os.path.join(localfilesdir, modules_txt_basename) | ||
620 | with open(modules_txt_filename, "w") as f: | ||
621 | f.write(stderr) | ||
622 | |||
623 | extravalues['extrafiles'][modules_txt_basename] = modules_txt_filename | ||
624 | |||
625 | licenses = [] | ||
626 | lic_files_chksum = [] | ||
627 | licvalues = find_licenses(tmp_vendor_dir, d) | ||
628 | shutil.rmtree(tmp_vendor_dir) | ||
629 | |||
630 | if licvalues: | ||
631 | for licvalue in licvalues: | ||
632 | license = licvalue[0] | ||
633 | lics = tidy_licenses(fixup_license(license)) | ||
634 | lics = [lic for lic in lics if lic not in licenses] | ||
635 | if len(lics): | ||
636 | licenses.extend(lics) | ||
637 | lic_files_chksum.append( | ||
638 | 'file://src/${GO_IMPORT}/vendor/%s;md5=%s' % (licvalue[1], licvalue[2])) | ||
639 | |||
640 | # strip version part from module URL /vXX | ||
641 | baseurl = re.sub(r'/v(\d+)$', '', go_mod['Module']['Path']) | ||
642 | pn, _ = determine_from_url(baseurl) | ||
643 | licenses_basename = "%s-licenses.inc" % pn | ||
644 | |||
645 | licenses_filename = os.path.join(localfilesdir, licenses_basename) | ||
646 | with open(licenses_filename, "w") as f: | ||
647 | f.write("GO_MOD_LICENSES = \"%s\"\n\n" % | ||
648 | ' & '.join(sorted(licenses, key=str.casefold))) | ||
649 | # We introduce this indirection to make the tests a little easier | ||
650 | f.write("LIC_FILES_CHKSUM += \"${VENDORED_LIC_FILES_CHKSUM}\"\n") | ||
651 | f.write("VENDORED_LIC_FILES_CHKSUM = \"\\\n") | ||
652 | for lic in lic_files_chksum: | ||
653 | f.write(" " + lic + " \\\n") | ||
654 | f.write("\"\n") | ||
655 | |||
656 | extravalues['extrafiles'][licenses_basename] = licenses_filename | ||
657 | |||
658 | def process(self, srctree, classes, lines_before, | 67 | def process(self, srctree, classes, lines_before, |
659 | lines_after, handled, extravalues): | 68 | lines_after, handled, extravalues): |
660 | 69 | ||
@@ -665,63 +74,52 @@ class GoRecipeHandler(RecipeHandler): | |||
665 | if not files: | 74 | if not files: |
666 | return False | 75 | return False |
667 | 76 | ||
668 | d = bb.data.createCopy(tinfoil.config_data) | ||
669 | go_bindir = self.__ensure_go() | 77 | go_bindir = self.__ensure_go() |
670 | if not go_bindir: | 78 | if not go_bindir: |
671 | sys.exit(14) | 79 | sys.exit(14) |
672 | 80 | ||
673 | d.prependVar('PATH', '%s:' % go_bindir) | ||
674 | handled.append('buildsystem') | 81 | handled.append('buildsystem') |
675 | classes.append("go-vendor") | 82 | classes.append("go-mod") |
676 | 83 | ||
677 | stdout, _ = self.__go_run_cmd("go mod edit -json", srctree, d) | 84 | # Use go-mod-update-modules to set the full SRC_URI and LICENSE |
85 | classes.append("go-mod-update-modules") | ||
86 | extravalues["run_tasks"] = "update_modules" | ||
678 | 87 | ||
679 | go_mod = json.loads(stdout) | 88 | with tempfile.TemporaryDirectory(prefix="go-mod-") as tmp_mod_dir: |
680 | go_import = go_mod['Module']['Path'] | 89 | env = dict(os.environ) |
681 | go_version_match = re.match("([0-9]+).([0-9]+)", go_mod['Go']) | 90 | env["PATH"] += f":{go_bindir}" |
682 | go_version_major = int(go_version_match.group(1)) | 91 | env['GOMODCACHE'] = tmp_mod_dir |
683 | go_version_minor = int(go_version_match.group(2)) | ||
684 | src_uris = [] | ||
685 | 92 | ||
686 | localfilesdir = tempfile.mkdtemp(prefix='recipetool-go-') | 93 | stdout = subprocess.check_output(["go", "mod", "edit", "-json"], cwd=srctree, env=env, text=True) |
687 | extravalues.setdefault('extrafiles', {}) | 94 | go_mod = json.loads(stdout) |
95 | go_import = re.sub(r'/v([0-9]+)$', '', go_mod['Module']['Path']) | ||
688 | 96 | ||
689 | # Use an explicit name determined from the module name because it | 97 | localfilesdir = tempfile.mkdtemp(prefix='recipetool-go-') |
690 | # might differ from the actual URL for replaced modules | 98 | extravalues.setdefault('extrafiles', {}) |
691 | # strip version part from module URL /vXX | ||
692 | baseurl = re.sub(r'/v(\d+)$', '', go_mod['Module']['Path']) | ||
693 | pn, _ = determine_from_url(baseurl) | ||
694 | 99 | ||
695 | # go.mod files with version < 1.17 may not include all indirect | 100 | # Write the stub ${BPN}-licenses.inc and ${BPN}-go-mods.inc files |
696 | # dependencies. Thus, we have to upgrade the go version. | 101 | basename = "{pn}-licenses.inc" |
697 | if go_version_major == 1 and go_version_minor < 17: | 102 | filename = os.path.join(localfilesdir, basename) |
698 | logger.warning( | 103 | with open(filename, "w") as f: |
699 | "go.mod files generated by Go < 1.17 might have incomplete indirect dependencies.") | 104 | f.write("# FROM RECIPETOOL\n") |
700 | go_mod, patchfilename = self.__go_mod_patch(srctree, localfilesdir, | 105 | extravalues['extrafiles'][f"../{basename}"] = filename |
701 | extravalues, d) | ||
702 | src_uris.append( | ||
703 | "file://%s;patchdir=src/${GO_IMPORT}" % (patchfilename)) | ||
704 | 106 | ||
705 | # Check whether the module is vendored. If so, we have nothing to do. | 107 | basename = "{pn}-go-mods.inc" |
706 | # Otherwise we gather all dependencies and add them to the recipe | 108 | filename = os.path.join(localfilesdir, basename) |
707 | if not os.path.exists(os.path.join(srctree, "vendor")): | 109 | with open(filename, "w") as f: |
110 | f.write("# FROM RECIPETOOL\n") | ||
111 | extravalues['extrafiles'][f"../{basename}"] = filename | ||
708 | 112 | ||
709 | # Write additional $BPN-modules.inc file | 113 | # Do generic license handling |
710 | self.__go_mod_vendor(go_mod, srctree, localfilesdir, extravalues, d) | 114 | d = bb.data.createCopy(tinfoil.config_data) |
711 | lines_before.append("LICENSE += \" & ${GO_MOD_LICENSES}\"") | 115 | handle_license_vars(srctree, lines_before, handled, extravalues, d) |
712 | lines_before.append("require %s-licenses.inc" % (pn)) | 116 | self.__rewrite_lic_vars(lines_before) |
713 | 117 | ||
714 | self.__rewrite_src_uri(lines_before, ["file://modules.txt"]) | 118 | self.__rewrite_src_uri(lines_before) |
715 | 119 | ||
716 | self.__go_handle_dependencies(go_mod, srctree, localfilesdir, extravalues, d) | 120 | lines_before.append('require ${BPN}-licenses.inc') |
717 | lines_before.append("require %s-modules.inc" % (pn)) | 121 | lines_before.append('require ${BPN}-go-mods.inc') |
718 | 122 | lines_before.append(f'GO_IMPORT = "{go_import}"') | |
719 | # Do generic license handling | ||
720 | handle_license_vars(srctree, lines_before, handled, extravalues, d) | ||
721 | self.__rewrite_lic_uri(lines_before) | ||
722 | |||
723 | lines_before.append("GO_IMPORT = \"{}\"".format(baseurl)) | ||
724 | lines_before.append("SRCREV_FORMAT = \"${BPN}\"") | ||
725 | 123 | ||
726 | def __update_lines_before(self, updated, newlines, lines_before): | 124 | def __update_lines_before(self, updated, newlines, lines_before): |
727 | if updated: | 125 | if updated: |
@@ -733,9 +131,9 @@ class GoRecipeHandler(RecipeHandler): | |||
733 | lines_before.append(line) | 131 | lines_before.append(line) |
734 | return updated | 132 | return updated |
735 | 133 | ||
736 | def __rewrite_lic_uri(self, lines_before): | 134 | def __rewrite_lic_vars(self, lines_before): |
737 | |||
738 | def varfunc(varname, origvalue, op, newlines): | 135 | def varfunc(varname, origvalue, op, newlines): |
136 | import urllib.parse | ||
739 | if varname == 'LIC_FILES_CHKSUM': | 137 | if varname == 'LIC_FILES_CHKSUM': |
740 | new_licenses = [] | 138 | new_licenses = [] |
741 | licenses = origvalue.split('\\') | 139 | licenses = origvalue.split('\\') |
@@ -760,12 +158,11 @@ class GoRecipeHandler(RecipeHandler): | |||
760 | lines_before, ['LIC_FILES_CHKSUM'], varfunc) | 158 | lines_before, ['LIC_FILES_CHKSUM'], varfunc) |
761 | return self.__update_lines_before(updated, newlines, lines_before) | 159 | return self.__update_lines_before(updated, newlines, lines_before) |
762 | 160 | ||
763 | def __rewrite_src_uri(self, lines_before, additional_uris = []): | 161 | def __rewrite_src_uri(self, lines_before): |
764 | 162 | ||
765 | def varfunc(varname, origvalue, op, newlines): | 163 | def varfunc(varname, origvalue, op, newlines): |
766 | if varname == 'SRC_URI': | 164 | if varname == 'SRC_URI': |
767 | src_uri = ["git://${GO_IMPORT};destsuffix=git/src/${GO_IMPORT};nobranch=1;name=${BPN};protocol=https"] | 165 | src_uri = ['git://${GO_IMPORT};protocol=https;nobranch=1;destsuffix=${GO_SRCURI_DESTSUFFIX}'] |
768 | src_uri.extend(additional_uris) | ||
769 | return src_uri, None, -1, True | 166 | return src_uri, None, -1, True |
770 | return origvalue, None, 0, True | 167 | return origvalue, None, 0, True |
771 | 168 | ||