diff options
Diffstat (limited to 'meta/classes-global/sstate.bbclass')
-rw-r--r-- | meta/classes-global/sstate.bbclass | 54 |
1 files changed, 25 insertions, 29 deletions
diff --git a/meta/classes-global/sstate.bbclass b/meta/classes-global/sstate.bbclass index 04539bbb99..beb22f424e 100644 --- a/meta/classes-global/sstate.bbclass +++ b/meta/classes-global/sstate.bbclass | |||
@@ -189,7 +189,6 @@ def sstate_state_fromvars(d, task = None): | |||
189 | plaindirs = (d.getVarFlag("do_" + task, 'sstate-plaindirs') or "").split() | 189 | plaindirs = (d.getVarFlag("do_" + task, 'sstate-plaindirs') or "").split() |
190 | lockfiles = (d.getVarFlag("do_" + task, 'sstate-lockfile') or "").split() | 190 | lockfiles = (d.getVarFlag("do_" + task, 'sstate-lockfile') or "").split() |
191 | lockfilesshared = (d.getVarFlag("do_" + task, 'sstate-lockfile-shared') or "").split() | 191 | lockfilesshared = (d.getVarFlag("do_" + task, 'sstate-lockfile-shared') or "").split() |
192 | interceptfuncs = (d.getVarFlag("do_" + task, 'sstate-interceptfuncs') or "").split() | ||
193 | fixmedir = d.getVarFlag("do_" + task, 'sstate-fixmedir') or "" | 192 | fixmedir = d.getVarFlag("do_" + task, 'sstate-fixmedir') or "" |
194 | if not task or len(inputs) != len(outputs): | 193 | if not task or len(inputs) != len(outputs): |
195 | bb.fatal("sstate variables not setup correctly?!") | 194 | bb.fatal("sstate variables not setup correctly?!") |
@@ -205,7 +204,6 @@ def sstate_state_fromvars(d, task = None): | |||
205 | ss['lockfiles'] = lockfiles | 204 | ss['lockfiles'] = lockfiles |
206 | ss['lockfiles-shared'] = lockfilesshared | 205 | ss['lockfiles-shared'] = lockfilesshared |
207 | ss['plaindirs'] = plaindirs | 206 | ss['plaindirs'] = plaindirs |
208 | ss['interceptfuncs'] = interceptfuncs | ||
209 | ss['fixmedir'] = fixmedir | 207 | ss['fixmedir'] = fixmedir |
210 | return ss | 208 | return ss |
211 | 209 | ||
@@ -225,12 +223,23 @@ def sstate_install(ss, d): | |||
225 | import oe.sstatesig | 223 | import oe.sstatesig |
226 | import subprocess | 224 | import subprocess |
227 | 225 | ||
226 | def prepdir(dir): | ||
227 | # remove dir if it exists, ensure any parent directories do exist | ||
228 | if os.path.exists(dir): | ||
229 | oe.path.remove(dir) | ||
230 | bb.utils.mkdirhier(dir) | ||
231 | oe.path.remove(dir) | ||
232 | |||
233 | sstateinst = d.getVar("SSTATE_INSTDIR") | ||
234 | |||
235 | for state in ss['dirs']: | ||
236 | prepdir(state[1]) | ||
237 | bb.utils.rename(sstateinst + state[0], state[1]) | ||
238 | |||
228 | sharedfiles = [] | 239 | sharedfiles = [] |
229 | shareddirs = [] | 240 | shareddirs = [] |
230 | bb.utils.mkdirhier(d.expand("${SSTATE_MANIFESTS}")) | 241 | bb.utils.mkdirhier(d.expand("${SSTATE_MANIFESTS}")) |
231 | 242 | ||
232 | sstateinst = d.expand("${WORKDIR}/sstate-install-%s/" % ss['task']) | ||
233 | |||
234 | manifest, d2 = oe.sstatesig.sstate_get_manifest_filename(ss['task'], d) | 243 | manifest, d2 = oe.sstatesig.sstate_get_manifest_filename(ss['task'], d) |
235 | 244 | ||
236 | if os.access(manifest, os.R_OK): | 245 | if os.access(manifest, os.R_OK): |
@@ -329,6 +338,17 @@ def sstate_install(ss, d): | |||
329 | if os.path.exists(state[1]): | 338 | if os.path.exists(state[1]): |
330 | oe.path.copyhardlinktree(state[1], state[2]) | 339 | oe.path.copyhardlinktree(state[1], state[2]) |
331 | 340 | ||
341 | for plain in ss['plaindirs']: | ||
342 | workdir = d.getVar('WORKDIR') | ||
343 | sharedworkdir = os.path.join(d.getVar('TMPDIR'), "work-shared") | ||
344 | src = sstateinst + "/" + plain.replace(workdir, '') | ||
345 | if sharedworkdir in plain: | ||
346 | src = sstateinst + "/" + plain.replace(sharedworkdir, '') | ||
347 | dest = plain | ||
348 | bb.utils.mkdirhier(src) | ||
349 | prepdir(dest) | ||
350 | bb.utils.rename(src, dest) | ||
351 | |||
332 | for postinst in (d.getVar('SSTATEPOSTINSTFUNCS') or '').split(): | 352 | for postinst in (d.getVar('SSTATEPOSTINSTFUNCS') or '').split(): |
333 | # All hooks should run in the SSTATE_INSTDIR | 353 | # All hooks should run in the SSTATE_INSTDIR |
334 | bb.build.exec_func(postinst, d, (sstateinst,)) | 354 | bb.build.exec_func(postinst, d, (sstateinst,)) |
@@ -393,29 +413,8 @@ def sstate_installpkgdir(ss, d): | |||
393 | # All hooks should run in the SSTATE_INSTDIR | 413 | # All hooks should run in the SSTATE_INSTDIR |
394 | bb.build.exec_func(f, d, (sstateinst,)) | 414 | bb.build.exec_func(f, d, (sstateinst,)) |
395 | 415 | ||
396 | def prepdir(dir): | ||
397 | # remove dir if it exists, ensure any parent directories do exist | ||
398 | if os.path.exists(dir): | ||
399 | oe.path.remove(dir) | ||
400 | bb.utils.mkdirhier(dir) | ||
401 | oe.path.remove(dir) | ||
402 | |||
403 | for state in ss['dirs']: | ||
404 | prepdir(state[1]) | ||
405 | bb.utils.rename(sstateinst + state[0], state[1]) | ||
406 | sstate_install(ss, d) | 416 | sstate_install(ss, d) |
407 | 417 | ||
408 | for plain in ss['plaindirs']: | ||
409 | workdir = d.getVar('WORKDIR') | ||
410 | sharedworkdir = os.path.join(d.getVar('TMPDIR'), "work-shared") | ||
411 | src = sstateinst + "/" + plain.replace(workdir, '') | ||
412 | if sharedworkdir in plain: | ||
413 | src = sstateinst + "/" + plain.replace(sharedworkdir, '') | ||
414 | dest = plain | ||
415 | bb.utils.mkdirhier(src) | ||
416 | prepdir(dest) | ||
417 | bb.utils.rename(src, dest) | ||
418 | |||
419 | return True | 418 | return True |
420 | 419 | ||
421 | python sstate_hardcode_path_unpack () { | 420 | python sstate_hardcode_path_unpack () { |
@@ -790,9 +789,6 @@ sstate_task_prefunc[dirs] = "${WORKDIR}" | |||
790 | python sstate_task_postfunc () { | 789 | python sstate_task_postfunc () { |
791 | shared_state = sstate_state_fromvars(d) | 790 | shared_state = sstate_state_fromvars(d) |
792 | 791 | ||
793 | for intercept in shared_state['interceptfuncs']: | ||
794 | bb.build.exec_func(intercept, d, (d.getVar("WORKDIR"),)) | ||
795 | |||
796 | omask = os.umask(0o002) | 792 | omask = os.umask(0o002) |
797 | if omask != 0o002: | 793 | if omask != 0o002: |
798 | bb.note("Using umask 0o002 (not %0o) for sstate packaging" % omask) | 794 | bb.note("Using umask 0o002 (not %0o) for sstate packaging" % omask) |
@@ -1115,7 +1111,7 @@ def sstate_checkhashes(sq_data, d, siginfo=False, currentcount=0, summary=True, | |||
1115 | bb.parse.siggen.checkhashes(sq_data, missed, found, d) | 1111 | bb.parse.siggen.checkhashes(sq_data, missed, found, d) |
1116 | 1112 | ||
1117 | return found | 1113 | return found |
1118 | setscene_depvalid[vardepsexclude] = "SSTATE_EXCLUDEDEPS_SYSROOT" | 1114 | setscene_depvalid[vardepsexclude] = "SSTATE_EXCLUDEDEPS_SYSROOT _SSTATE_EXCLUDEDEPS_SYSROOT" |
1119 | 1115 | ||
1120 | BB_SETSCENE_DEPVALID = "setscene_depvalid" | 1116 | BB_SETSCENE_DEPVALID = "setscene_depvalid" |
1121 | 1117 | ||