diff --git a/meta/classes-global/sstate.bbclass b/meta/classes-global/sstate.bbclass index f4ebeb5859..beb22f424e 100644 --- a/meta/classes-global/sstate.bbclass +++ b/meta/classes-global/sstate.bbclass @@ -223,12 +223,23 @@ def sstate_install(ss, d): import oe.sstatesig import subprocess + def prepdir(dir): + # remove dir if it exists, ensure any parent directories do exist + if os.path.exists(dir): + oe.path.remove(dir) + bb.utils.mkdirhier(dir) + oe.path.remove(dir) + + sstateinst = d.getVar("SSTATE_INSTDIR") + + for state in ss['dirs']: + prepdir(state[1]) + bb.utils.rename(sstateinst + state[0], state[1]) + sharedfiles = [] shareddirs = [] bb.utils.mkdirhier(d.expand("${SSTATE_MANIFESTS}")) - sstateinst = d.expand("${WORKDIR}/sstate-install-%s/" % ss['task']) - manifest, d2 = oe.sstatesig.sstate_get_manifest_filename(ss['task'], d) if os.access(manifest, os.R_OK): @@ -327,6 +338,17 @@ def sstate_install(ss, d): if os.path.exists(state[1]): oe.path.copyhardlinktree(state[1], state[2]) + for plain in ss['plaindirs']: + workdir = d.getVar('WORKDIR') + sharedworkdir = os.path.join(d.getVar('TMPDIR'), "work-shared") + src = sstateinst + "/" + plain.replace(workdir, '') + if sharedworkdir in plain: + src = sstateinst + "/" + plain.replace(sharedworkdir, '') + dest = plain + bb.utils.mkdirhier(src) + prepdir(dest) + bb.utils.rename(src, dest) + for postinst in (d.getVar('SSTATEPOSTINSTFUNCS') or '').split(): # All hooks should run in the SSTATE_INSTDIR bb.build.exec_func(postinst, d, (sstateinst,)) @@ -391,29 +413,8 @@ def sstate_installpkgdir(ss, d): # All hooks should run in the SSTATE_INSTDIR bb.build.exec_func(f, d, (sstateinst,)) - def prepdir(dir): - # remove dir if it exists, ensure any parent directories do exist - if os.path.exists(dir): - oe.path.remove(dir) - bb.utils.mkdirhier(dir) - oe.path.remove(dir) - - for state in ss['dirs']: - prepdir(state[1]) - bb.utils.rename(sstateinst + state[0], state[1]) sstate_install(ss, d) - for plain in ss['plaindirs']: - workdir = d.getVar('WORKDIR') - sharedworkdir = os.path.join(d.getVar('TMPDIR'), "work-shared") - src = sstateinst + "/" + plain.replace(workdir, '') - if sharedworkdir in plain: - src = sstateinst + "/" + plain.replace(sharedworkdir, '') - dest = plain - bb.utils.mkdirhier(src) - prepdir(dest) - bb.utils.rename(src, dest) - return True python sstate_hardcode_path_unpack () {