aboutsummaryrefslogtreecommitdiffstats
path: root/documentation/ref-manual/eclipse/html/poky-ref-manual/shared-state.html
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/ref-manual/eclipse/html/poky-ref-manual/shared-state.html')
-rw-r--r--documentation/ref-manual/eclipse/html/poky-ref-manual/shared-state.html134
1 files changed, 0 insertions, 134 deletions
diff --git a/documentation/ref-manual/eclipse/html/poky-ref-manual/shared-state.html b/documentation/ref-manual/eclipse/html/poky-ref-manual/shared-state.html
deleted file mode 100644
index e14e306eb5..0000000000
--- a/documentation/ref-manual/eclipse/html/poky-ref-manual/shared-state.html
+++ /dev/null
@@ -1,134 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>3.2.3. Shared State</title>
-<link rel="stylesheet" type="text/css" href="../book.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
-<link rel="home" href="index.html" title="The Yocto Project Reference Manual">
-<link rel="up" href="shared-state-cache.html" title="3.2. Shared State Cache">
-<link rel="prev" href="checksums.html" title="3.2.2. Checksums (Signatures)">
-<link rel="next" href="tips-and-tricks.html" title="3.2.4. Tips and Tricks">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="section" title="3.2.3. Shared State">
-<div class="titlepage"><div><div><h3 class="title">
-<a name="shared-state"></a>3.2.3. Shared State</h3></div></div></div>
-<p>
- Checksums and dependencies, as discussed in the previous section, solve half the
- problem.
- The other part of the problem is being able to use checksum information during the build
- and being able to reuse or rebuild specific components.
- </p>
-<p>
- The shared state class (<code class="filename">sstate.bbclass</code>)
- is a relatively generic implementation of how to "capture" a snapshot of a given task.
- The idea is that the build process does not care about the source of a task's output.
- Output could be freshly built or it could be downloaded and unpacked from
- somewhere - the build process doesn't need to worry about its source.
- </p>
-<p>
- There are two types of output, one is just about creating a directory
- in <code class="filename">WORKDIR</code>.
- A good example is the output of either <code class="filename">do_install</code> or
- <code class="filename">do_package</code>.
- The other type of output occurs when a set of data is merged into a shared directory
- tree such as the sysroot.
- </p>
-<p>
- The Yocto Project team has tried to keep the details of the implementation hidden in
- <code class="filename">sstate.bbclass</code>.
- From a user's perspective, adding shared state wrapping to a task
- is as simple as this <code class="filename">do_deploy</code> example taken from
- <code class="filename">do_deploy.bbclass</code>:
- </p>
-<pre class="literallayout">
- DEPLOYDIR = "${WORKDIR}/deploy-${PN}"
- SSTATETASKS += "do_deploy"
- do_deploy[sstate-name] = "deploy"
- do_deploy[sstate-inputdirs] = "${DEPLOYDIR}"
- do_deploy[sstate-outputdirs] = "${DEPLOY_DIR_IMAGE}"
-
- python do_deploy_setscene () {
- sstate_setscene(d)
- }
- addtask do_deploy_setscene
- </pre>
-<p>
- In the example, we add some extra flags to the task, a name field ("deploy"), an
- input directory where the task sends data, and the output
- directory where the data from the task should eventually be copied.
- We also add a <code class="filename">_setscene</code> variant of the task and add the task
- name to the <code class="filename">SSTATETASKS</code> list.
- </p>
-<p>
- If you have a directory whose contents you need to preserve, you can do this with
- a line like the following:
- </p>
-<pre class="literallayout">
- do_package[sstate-plaindirs] = "${PKGD} ${PKGDEST}"
- </pre>
-<p>
- This method, as well as the following example, also works for multiple directories.
- </p>
-<pre class="literallayout">
- do_package[sstate-inputdirs] = "${PKGDESTWORK} ${SHLIBSWORKDIR}"
- do_package[sstate-outputdirs] = "${PKGDATA_DIR} ${SHLIBSDIR}"
- do_package[sstate-lockfile] = "${PACKAGELOCK}"
- </pre>
-<p>
- These methods also include the ability to take a lockfile when manipulating
- shared state directory structures since some cases are sensitive to file
- additions or removals.
- </p>
-<p>
- Behind the scenes, the shared state code works by looking in
- <a class="link" href="ref-variables-glos.html#var-SSTATE_DIR" title="SSTATE_DIR"><code class="filename">SSTATE_DIR</code></a> and
- <a class="link" href="ref-variables-glos.html#var-SSTATE_MIRRORS" title="SSTATE_MIRRORS"><code class="filename">SSTATE_MIRRORS</code></a>
- for shared state files.
- Here is an example:
- </p>
-<pre class="literallayout">
- SSTATE_MIRRORS ?= "\
- file://.* http://someserver.tld/share/sstate/PATH \n \
- file://.* file:///some/local/dir/sstate/PATH"
- </pre>
-<p>
- </p>
-<div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;">
-<h3 class="title">Note</h3>
- The shared state directory (<code class="filename">SSTATE_DIR</code>) is
- organized into two-character subdirectories, where the subdirectory
- names are based on the first two characters of the hash.
- If the shared state directory structure for a mirror has the
- same structure as <code class="filename">SSTATE_DIR</code>, you must
- specify "PATH" as part of the URI to enable the build system
- to map to the appropriate subdirectory.
- </div>
-<p>
- </p>
-<p>
- The shared state package validity can be detected just by looking at the
- filename since the filename contains the task checksum (or signature) as
- described earlier in this section.
- If a valid shared state package is found, the build process downloads it
- and uses it to accelerate the task.
- </p>
-<p>
- The build processes uses the <code class="filename">*_setscene</code> tasks
- for the task acceleration phase.
- BitBake goes through this phase before the main execution code and tries
- to accelerate any tasks for which it can find shared state packages.
- If a shared state package for a task is available, the shared state
- package is used.
- This means the task and any tasks on which it is dependent are not
- executed.
- </p>
-<p>
- As a real world example, the aim is when building an IPK-based image,
- only the <code class="filename">do_package_write_ipk</code> tasks would have their
- shared state packages fetched and extracted.
- Since the sysroot is not used, it would never get extracted.
- This is another reason why a task-based approach is preferred over a
- recipe-based approach, which would have to install the output from every task.
- </p>
-</div></body>
-</html>