diff options
Diffstat (limited to 'meta')
| -rw-r--r-- | meta/classes/sstate.bbclass | 27 | 
1 files changed, 15 insertions, 12 deletions
| diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass index 570b371daa..d00779adeb 100644 --- a/meta/classes/sstate.bbclass +++ b/meta/classes/sstate.bbclass @@ -4,16 +4,21 @@ SSTATE_MANIFESTS ?= "${TMPDIR}/sstate-control"  SSTATE_MANFILEBASE = "${SSTATE_MANIFESTS}/manifest-${SSTATE_MANMACH}-"  SSTATE_MANFILEPREFIX = "${SSTATE_MANFILEBASE}${PN}" +def generate_sstatefn(spec, hash, d): +    if not hash: +        hash = "INVALID" +    return hash[:2] + "/" + spec + hash  SSTATE_PKGARCH    = "${PACKAGE_ARCH}"  SSTATE_PKGSPEC    = "sstate-${PN}-${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}-${PV}-${PR}-${SSTATE_PKGARCH}-${SSTATE_VERSION}-" -SSTATE_PKGNAME    = "${SSTATE_PKGSPEC}${BB_TASKHASH}" +SSTATE_PKGNAME    = "${@generate_sstatefn(d.getVar('SSTATE_PKGSPEC', True), d.getVar('BB_TASKHASH', True), d)}"  SSTATE_PKG        = "${SSTATE_DIR}/${SSTATE_PKGNAME}" +SSTATE_PATHSPEC   = "${SSTATE_DIR}/*/${SSTATE_PKGSPEC}"  SSTATE_SCAN_FILES ?= "*.la *-config *_config"  SSTATE_SCAN_CMD ?= 'find ${SSTATE_BUILDDIR} \( -name "${@"\" -o -name \"".join(d.getVar("SSTATE_SCAN_FILES", True).split())}" \) -type f' -BB_HASHFILENAME = "${SSTATE_PKGNAME}" +BB_HASHFILENAME = "${SSTATE_PKGSPEC}"  SSTATE_MANMACH ?= "${SSTATE_PKGARCH}" @@ -158,10 +163,11 @@ def sstate_installpkg(ss, d):          oe.path.remove(dir)      sstateinst = d.expand("${WORKDIR}/sstate-install-%s/" % ss['name']) +    sstatefetch = d.getVar('SSTATE_PKGNAME', True) + '_' + ss['name'] + ".tgz"      sstatepkg = d.getVar('SSTATE_PKG', True) + '_' + ss['name'] + ".tgz"      if not os.path.exists(sstatepkg): -       pstaging_fetch(sstatepkg, d) +       pstaging_fetch(sstatefetch, sstatepkg, d)      if not os.path.isfile(sstatepkg):          bb.note("Staging package %s does not exist" % sstatepkg) @@ -223,8 +229,7 @@ def sstate_installpkg(ss, d):  def sstate_clean_cachefile(ss, d):      import oe.path -    sstatepkgdir = d.getVar('SSTATE_DIR', True) -    sstatepkgfile = sstatepkgdir + '/' + d.getVar('SSTATE_PKGSPEC', True) + "*_" + ss['name'] + ".tgz*" +    sstatepkgfile = d.getVar('SSTATE_PATHSPEC', True) + "*_" + ss['name'] + ".tgz*"      bb.note("Removing %s" % sstatepkgfile)      oe.path.remove(sstatepkgfile) @@ -417,7 +422,7 @@ def sstate_package(ss, d):      return -def pstaging_fetch(sstatepkg, d): +def pstaging_fetch(sstatefetch, sstatepkg, d):      import bb.fetch2      # Only try and fetch if the user has configured a mirror @@ -430,7 +435,7 @@ def pstaging_fetch(sstatepkg, d):      bb.data.update_data(localdata)      dldir = localdata.expand("${SSTATE_DIR}") -    srcuri = "file://" + os.path.basename(sstatepkg) +    srcuri = "file://" + sstatefetch      bb.mkdirhier(dldir) @@ -519,8 +524,7 @@ def sstate_checkhashes(sq_fn, sq_task, sq_hash, sq_hashfn, d):      }      for task in range(len(sq_fn)): -        sstatefile = d.expand("${SSTATE_DIR}/" + sq_hashfn[task] + "_" + mapping[sq_task[task]] + ".tgz") -        sstatefile = sstatefile.replace("${BB_TASKHASH}", sq_hash[task]) +        sstatefile = d.expand("${SSTATE_DIR}/" + generate_sstatefn(sq_hashfn[task], sq_hash[task], d) + "_" + mapping[sq_task[task]] + ".tgz")          if os.path.exists(sstatefile):              bb.debug(2, "SState: Found valid sstate file %s" % sstatefile)              ret.append(task) @@ -544,10 +548,9 @@ def sstate_checkhashes(sq_fn, sq_task, sq_hash, sq_hashfn, d):              if task in ret:                  continue -            sstatefile = d.expand("${SSTATE_DIR}/" + sq_hashfn[task] + "_" + mapping[sq_task[task]] + ".tgz") -            sstatefile = sstatefile.replace("${BB_TASKHASH}", sq_hash[task]) +            sstatefile = d.expand(generate_sstatefn(sq_hashfn[task], sq_hash[task], d) + "_" + mapping[sq_task[task]] + ".tgz") -            srcuri = "file://" + os.path.basename(sstatefile) +            srcuri = "file://" + sstatefile              localdata.setVar('SRC_URI', srcuri)              bb.debug(2, "SState: Attempting to fetch %s" % srcuri) | 
