diff options
author | Scott Rifenbark <srifenbark@gmail.com> | 2016-09-01 10:10:47 -0700 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-09-23 15:27:32 +0100 |
commit | f1879193b90b27f3c9b1e1dccc9097d5913d95b6 (patch) | |
tree | b35e26760ea1e84bce0d6412228cdf77a607c683 /documentation/ref-manual/closer-look.xml | |
parent | ba8bc1ba3933b624a4cf61e75d46da8823291292 (diff) | |
download | poky-f1879193b90b27f3c9b1e1dccc9097d5913d95b6.tar.gz |
ref-manual: New section clarifying stamps, input checksums and sstate cache
Fixes [YOCTO #10172]
I added a new section on how BitBake reruns tasks based on the
stamps files. Also put in some cross-referencing links to that
new section in the stamps entry for the structure chapter and in
the STAMP variable in the glossary.
(From yocto-docs rev: da8779d9eb85473cd6b0f74e9e1371e1d277890f)
Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'documentation/ref-manual/closer-look.xml')
-rw-r--r-- | documentation/ref-manual/closer-look.xml | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/documentation/ref-manual/closer-look.xml b/documentation/ref-manual/closer-look.xml index e7b423f66f..7aae2e27a9 100644 --- a/documentation/ref-manual/closer-look.xml +++ b/documentation/ref-manual/closer-look.xml | |||
@@ -1210,6 +1210,67 @@ | |||
1210 | </para> | 1210 | </para> |
1211 | </section> | 1211 | </section> |
1212 | 1212 | ||
1213 | <section id='stamp-files-and-the-rerunning-of-tasks'> | ||
1214 | <title>Stamp Files and the Rerunning of Tasks</title> | ||
1215 | |||
1216 | <para> | ||
1217 | For each task that completes successfully, BitBake writes a | ||
1218 | stamp file into the | ||
1219 | <link linkend='var-STAMPS_DIR'><filename>STAMPS_DIR</filename></link> | ||
1220 | directory. | ||
1221 | The beginning of the stamp file's filename is determined by the | ||
1222 | <link linkend='var-STAMP'><filename>STAMP</filename></link> | ||
1223 | variable, and the end of the name consists of the task's name | ||
1224 | and current | ||
1225 | <ulink url='&YOCTO_DOCS_BB_URL;#checksums'>input checksum</ulink>. | ||
1226 | <note> | ||
1227 | This naming scheme assumes that | ||
1228 | <ulink url='&YOCTO_DOCS_BB_URL;#var-BB_SIGNATURE_HANDLER'><filename>BB_SIGNATURE_HANDLER</filename></ulink> | ||
1229 | is "OEBasicHash", which is almost always the case in | ||
1230 | current OpenEmbedded. | ||
1231 | </note> | ||
1232 | To determine if a task needs to be rerun, BitBake checks if a | ||
1233 | stamp file with a matching input checksum exists for the task. | ||
1234 | If such a stamp file exists, the task's output is assumed to | ||
1235 | exist and still be valid. | ||
1236 | If the file does not exist, the task is rerun. | ||
1237 | <note> | ||
1238 | <para>The stamp mechanism is more general than the shared | ||
1239 | state (sstate) cache mechanism described in the | ||
1240 | "<link linkend='setscene-tasks-and-shared-state'>Setscene Tasks and Shared State</link>" | ||
1241 | section. | ||
1242 | BitBake avoids rerunning any task that has a valid | ||
1243 | stamp file, not just tasks that can be accelerated through | ||
1244 | the sstate cache.</para> | ||
1245 | <para>However, you should realize that stamp files only | ||
1246 | serve as a marker that some work has been done and these | ||
1247 | files do not record task output. | ||
1248 | The actual task output would usually be somewhere in | ||
1249 | <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link> | ||
1250 | (e.g. in some recipe's | ||
1251 | <link linkend='var-WORKDIR'><filename>WORKDIR</filename></link>.) | ||
1252 | What the sstate cache mechanism adds is a way to cache task | ||
1253 | output that can then be shared between build machines. | ||
1254 | </para> | ||
1255 | </note> | ||
1256 | Since <filename>STAMPS_DIR</filename> is usually a subdirectory | ||
1257 | of <filename>TMPDIR</filename>, removing | ||
1258 | <filename>TMPDIR</filename> will also remove | ||
1259 | <filename>STAMPS_DIR</filename>, which means tasks will | ||
1260 | properly be rerun to repopulate <filename>TMPDIR</filename>. | ||
1261 | </para> | ||
1262 | |||
1263 | <para> | ||
1264 | If you want some task to always be considered "out of date", | ||
1265 | you can mark it with the | ||
1266 | <ulink url='&YOCTO_DOCS_BB_URL;#variable-flags'><filename>nostamp</filename></ulink> | ||
1267 | varflag. | ||
1268 | If some other task depends on such a task, then that task will | ||
1269 | also always be considered out of date, which might not be what | ||
1270 | you want. | ||
1271 | </para> | ||
1272 | </section> | ||
1273 | |||
1213 | <section id='setscene-tasks-and-shared-state'> | 1274 | <section id='setscene-tasks-and-shared-state'> |
1214 | <title>Setscene Tasks and Shared State</title> | 1275 | <title>Setscene Tasks and Shared State</title> |
1215 | 1276 | ||