diff options
-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" | |||
4 | SSTATE_MANFILEBASE = "${SSTATE_MANIFESTS}/manifest-${SSTATE_MANMACH}-" | 4 | SSTATE_MANFILEBASE = "${SSTATE_MANIFESTS}/manifest-${SSTATE_MANMACH}-" |
5 | SSTATE_MANFILEPREFIX = "${SSTATE_MANFILEBASE}${PN}" | 5 | SSTATE_MANFILEPREFIX = "${SSTATE_MANFILEBASE}${PN}" |
6 | 6 | ||
7 | def generate_sstatefn(spec, hash, d): | ||
8 | if not hash: | ||
9 | hash = "INVALID" | ||
10 | return hash[:2] + "/" + spec + hash | ||
7 | 11 | ||
8 | SSTATE_PKGARCH = "${PACKAGE_ARCH}" | 12 | SSTATE_PKGARCH = "${PACKAGE_ARCH}" |
9 | SSTATE_PKGSPEC = "sstate-${PN}-${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}-${PV}-${PR}-${SSTATE_PKGARCH}-${SSTATE_VERSION}-" | 13 | SSTATE_PKGSPEC = "sstate-${PN}-${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}-${PV}-${PR}-${SSTATE_PKGARCH}-${SSTATE_VERSION}-" |
10 | SSTATE_PKGNAME = "${SSTATE_PKGSPEC}${BB_TASKHASH}" | 14 | SSTATE_PKGNAME = "${@generate_sstatefn(d.getVar('SSTATE_PKGSPEC', True), d.getVar('BB_TASKHASH', True), d)}" |
11 | SSTATE_PKG = "${SSTATE_DIR}/${SSTATE_PKGNAME}" | 15 | SSTATE_PKG = "${SSTATE_DIR}/${SSTATE_PKGNAME}" |
16 | SSTATE_PATHSPEC = "${SSTATE_DIR}/*/${SSTATE_PKGSPEC}" | ||
12 | 17 | ||
13 | SSTATE_SCAN_FILES ?= "*.la *-config *_config" | 18 | SSTATE_SCAN_FILES ?= "*.la *-config *_config" |
14 | SSTATE_SCAN_CMD ?= 'find ${SSTATE_BUILDDIR} \( -name "${@"\" -o -name \"".join(d.getVar("SSTATE_SCAN_FILES", True).split())}" \) -type f' | 19 | SSTATE_SCAN_CMD ?= 'find ${SSTATE_BUILDDIR} \( -name "${@"\" -o -name \"".join(d.getVar("SSTATE_SCAN_FILES", True).split())}" \) -type f' |
15 | 20 | ||
16 | BB_HASHFILENAME = "${SSTATE_PKGNAME}" | 21 | BB_HASHFILENAME = "${SSTATE_PKGSPEC}" |
17 | 22 | ||
18 | SSTATE_MANMACH ?= "${SSTATE_PKGARCH}" | 23 | SSTATE_MANMACH ?= "${SSTATE_PKGARCH}" |
19 | 24 | ||
@@ -158,10 +163,11 @@ def sstate_installpkg(ss, d): | |||
158 | oe.path.remove(dir) | 163 | oe.path.remove(dir) |
159 | 164 | ||
160 | sstateinst = d.expand("${WORKDIR}/sstate-install-%s/" % ss['name']) | 165 | sstateinst = d.expand("${WORKDIR}/sstate-install-%s/" % ss['name']) |
166 | sstatefetch = d.getVar('SSTATE_PKGNAME', True) + '_' + ss['name'] + ".tgz" | ||
161 | sstatepkg = d.getVar('SSTATE_PKG', True) + '_' + ss['name'] + ".tgz" | 167 | sstatepkg = d.getVar('SSTATE_PKG', True) + '_' + ss['name'] + ".tgz" |
162 | 168 | ||
163 | if not os.path.exists(sstatepkg): | 169 | if not os.path.exists(sstatepkg): |
164 | pstaging_fetch(sstatepkg, d) | 170 | pstaging_fetch(sstatefetch, sstatepkg, d) |
165 | 171 | ||
166 | if not os.path.isfile(sstatepkg): | 172 | if not os.path.isfile(sstatepkg): |
167 | bb.note("Staging package %s does not exist" % sstatepkg) | 173 | bb.note("Staging package %s does not exist" % sstatepkg) |
@@ -223,8 +229,7 @@ def sstate_installpkg(ss, d): | |||
223 | def sstate_clean_cachefile(ss, d): | 229 | def sstate_clean_cachefile(ss, d): |
224 | import oe.path | 230 | import oe.path |
225 | 231 | ||
226 | sstatepkgdir = d.getVar('SSTATE_DIR', True) | 232 | sstatepkgfile = d.getVar('SSTATE_PATHSPEC', True) + "*_" + ss['name'] + ".tgz*" |
227 | sstatepkgfile = sstatepkgdir + '/' + d.getVar('SSTATE_PKGSPEC', True) + "*_" + ss['name'] + ".tgz*" | ||
228 | bb.note("Removing %s" % sstatepkgfile) | 233 | bb.note("Removing %s" % sstatepkgfile) |
229 | oe.path.remove(sstatepkgfile) | 234 | oe.path.remove(sstatepkgfile) |
230 | 235 | ||
@@ -417,7 +422,7 @@ def sstate_package(ss, d): | |||
417 | 422 | ||
418 | return | 423 | return |
419 | 424 | ||
420 | def pstaging_fetch(sstatepkg, d): | 425 | def pstaging_fetch(sstatefetch, sstatepkg, d): |
421 | import bb.fetch2 | 426 | import bb.fetch2 |
422 | 427 | ||
423 | # Only try and fetch if the user has configured a mirror | 428 | # Only try and fetch if the user has configured a mirror |
@@ -430,7 +435,7 @@ def pstaging_fetch(sstatepkg, d): | |||
430 | bb.data.update_data(localdata) | 435 | bb.data.update_data(localdata) |
431 | 436 | ||
432 | dldir = localdata.expand("${SSTATE_DIR}") | 437 | dldir = localdata.expand("${SSTATE_DIR}") |
433 | srcuri = "file://" + os.path.basename(sstatepkg) | 438 | srcuri = "file://" + sstatefetch |
434 | 439 | ||
435 | bb.mkdirhier(dldir) | 440 | bb.mkdirhier(dldir) |
436 | 441 | ||
@@ -519,8 +524,7 @@ def sstate_checkhashes(sq_fn, sq_task, sq_hash, sq_hashfn, d): | |||
519 | } | 524 | } |
520 | 525 | ||
521 | for task in range(len(sq_fn)): | 526 | for task in range(len(sq_fn)): |
522 | sstatefile = d.expand("${SSTATE_DIR}/" + sq_hashfn[task] + "_" + mapping[sq_task[task]] + ".tgz") | 527 | sstatefile = d.expand("${SSTATE_DIR}/" + generate_sstatefn(sq_hashfn[task], sq_hash[task], d) + "_" + mapping[sq_task[task]] + ".tgz") |
523 | sstatefile = sstatefile.replace("${BB_TASKHASH}", sq_hash[task]) | ||
524 | if os.path.exists(sstatefile): | 528 | if os.path.exists(sstatefile): |
525 | bb.debug(2, "SState: Found valid sstate file %s" % sstatefile) | 529 | bb.debug(2, "SState: Found valid sstate file %s" % sstatefile) |
526 | ret.append(task) | 530 | ret.append(task) |
@@ -544,10 +548,9 @@ def sstate_checkhashes(sq_fn, sq_task, sq_hash, sq_hashfn, d): | |||
544 | if task in ret: | 548 | if task in ret: |
545 | continue | 549 | continue |
546 | 550 | ||
547 | sstatefile = d.expand("${SSTATE_DIR}/" + sq_hashfn[task] + "_" + mapping[sq_task[task]] + ".tgz") | 551 | sstatefile = d.expand(generate_sstatefn(sq_hashfn[task], sq_hash[task], d) + "_" + mapping[sq_task[task]] + ".tgz") |
548 | sstatefile = sstatefile.replace("${BB_TASKHASH}", sq_hash[task]) | ||
549 | 552 | ||
550 | srcuri = "file://" + os.path.basename(sstatefile) | 553 | srcuri = "file://" + sstatefile |
551 | localdata.setVar('SRC_URI', srcuri) | 554 | localdata.setVar('SRC_URI', srcuri) |
552 | bb.debug(2, "SState: Attempting to fetch %s" % srcuri) | 555 | bb.debug(2, "SState: Attempting to fetch %s" % srcuri) |
553 | 556 | ||