summaryrefslogtreecommitdiffstats
path: root/meta/classes-global/sstate.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes-global/sstate.bbclass')
-rw-r--r--meta/classes-global/sstate.bbclass54
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
421python sstate_hardcode_path_unpack () { 420python sstate_hardcode_path_unpack () {
@@ -790,9 +789,6 @@ sstate_task_prefunc[dirs] = "${WORKDIR}"
790python sstate_task_postfunc () { 789python 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
1118setscene_depvalid[vardepsexclude] = "SSTATE_EXCLUDEDEPS_SYSROOT" 1114setscene_depvalid[vardepsexclude] = "SSTATE_EXCLUDEDEPS_SYSROOT _SSTATE_EXCLUDEDEPS_SYSROOT"
1119 1115
1120BB_SETSCENE_DEPVALID = "setscene_depvalid" 1116BB_SETSCENE_DEPVALID = "setscene_depvalid"
1121 1117