diff options
-rw-r--r-- | meta/classes/sstate.bbclass | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass index d00779adeb..e87f3c05ab 100644 --- a/meta/classes/sstate.bbclass +++ b/meta/classes/sstate.bbclass | |||
@@ -11,14 +11,17 @@ def generate_sstatefn(spec, hash, d): | |||
11 | 11 | ||
12 | SSTATE_PKGARCH = "${PACKAGE_ARCH}" | 12 | SSTATE_PKGARCH = "${PACKAGE_ARCH}" |
13 | 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}-" |
14 | SSTATE_PKGNAME = "${@generate_sstatefn(d.getVar('SSTATE_PKGSPEC', True), d.getVar('BB_TASKHASH', True), d)}" | 14 | SSTATE_PKGNAME = "${SSTATE_EXTRAPATH}${@generate_sstatefn(d.getVar('SSTATE_PKGSPEC', True), d.getVar('BB_TASKHASH', True), d)}" |
15 | SSTATE_PKG = "${SSTATE_DIR}/${SSTATE_PKGNAME}" | 15 | SSTATE_PKG = "${SSTATE_DIR}/${SSTATE_PKGNAME}" |
16 | SSTATE_PATHSPEC = "${SSTATE_DIR}/*/${SSTATE_PKGSPEC}" | 16 | SSTATE_EXTRAPATH = "" |
17 | SSTATE_EXTRAPATHWILDCARD = "" | ||
18 | SSTATE_PATHSPEC = "${SSTATE_DIR}/${SSTATE_EXTRAPATHWILDCARD}*/${SSTATE_PKGSPEC}" | ||
19 | |||
17 | 20 | ||
18 | SSTATE_SCAN_FILES ?= "*.la *-config *_config" | 21 | SSTATE_SCAN_FILES ?= "*.la *-config *_config" |
19 | SSTATE_SCAN_CMD ?= 'find ${SSTATE_BUILDDIR} \( -name "${@"\" -o -name \"".join(d.getVar("SSTATE_SCAN_FILES", True).split())}" \) -type f' | 22 | SSTATE_SCAN_CMD ?= 'find ${SSTATE_BUILDDIR} \( -name "${@"\" -o -name \"".join(d.getVar("SSTATE_SCAN_FILES", True).split())}" \) -type f' |
20 | 23 | ||
21 | BB_HASHFILENAME = "${SSTATE_PKGSPEC}" | 24 | BB_HASHFILENAME = "${SSTATE_EXTRAPATH} ${SSTATE_PKGSPEC}" |
22 | 25 | ||
23 | SSTATE_MANMACH ?= "${SSTATE_PKGARCH}" | 26 | SSTATE_MANMACH ?= "${SSTATE_PKGARCH}" |
24 | 27 | ||
@@ -43,6 +46,10 @@ python () { | |||
43 | else: | 46 | else: |
44 | d.setVar('SSTATE_MANMACH', d.expand("${MACHINE}")) | 47 | d.setVar('SSTATE_MANMACH', d.expand("${MACHINE}")) |
45 | 48 | ||
49 | if bb.data.inherits_class('native', d) or bb.data.inherits_class('crosssdk', d) or bb.data.inherits_class('cross', d): | ||
50 | d.setVar('SSTATE_EXTRAPATH', "${NATIVELSBSTRING}/") | ||
51 | d.setVar('SSTATE_EXTRAPATHWILDCARD', "*/") | ||
52 | |||
46 | # These classes encode staging paths into their scripts data so can only be | 53 | # These classes encode staging paths into their scripts data so can only be |
47 | # reused if we manipulate the paths | 54 | # reused if we manipulate the paths |
48 | if bb.data.inherits_class('native', d) or bb.data.inherits_class('cross', d) or bb.data.inherits_class('sdk', d) or bb.data.inherits_class('crosssdk', d): | 55 | if bb.data.inherits_class('native', d) or bb.data.inherits_class('cross', d) or bb.data.inherits_class('sdk', d) or bb.data.inherits_class('crosssdk', d): |
@@ -524,7 +531,10 @@ def sstate_checkhashes(sq_fn, sq_task, sq_hash, sq_hashfn, d): | |||
524 | } | 531 | } |
525 | 532 | ||
526 | for task in range(len(sq_fn)): | 533 | for task in range(len(sq_fn)): |
527 | sstatefile = d.expand("${SSTATE_DIR}/" + generate_sstatefn(sq_hashfn[task], sq_hash[task], d) + "_" + mapping[sq_task[task]] + ".tgz") | 534 | spec = sq_hashfn[task].split(" ")[1] |
535 | extrapath = sq_hashfn[task].split(" ")[0] | ||
536 | |||
537 | sstatefile = d.expand("${SSTATE_DIR}/" + extrapath + generate_sstatefn(spec, sq_hash[task], d) + "_" + mapping[sq_task[task]] + ".tgz") | ||
528 | if os.path.exists(sstatefile): | 538 | if os.path.exists(sstatefile): |
529 | bb.debug(2, "SState: Found valid sstate file %s" % sstatefile) | 539 | bb.debug(2, "SState: Found valid sstate file %s" % sstatefile) |
530 | ret.append(task) | 540 | ret.append(task) |
@@ -548,7 +558,9 @@ def sstate_checkhashes(sq_fn, sq_task, sq_hash, sq_hashfn, d): | |||
548 | if task in ret: | 558 | if task in ret: |
549 | continue | 559 | continue |
550 | 560 | ||
551 | sstatefile = d.expand(generate_sstatefn(sq_hashfn[task], sq_hash[task], d) + "_" + mapping[sq_task[task]] + ".tgz") | 561 | spec = sq_hashfn[task].split(" ")[1] |
562 | extrapath = sq_hashfn[task].split(" ")[0] | ||
563 | sstatefile = d.expand(extrapath + generate_sstatefn(spec, sq_hash[task], d) + "_" + mapping[sq_task[task]] + ".tgz") | ||
552 | 564 | ||
553 | srcuri = "file://" + sstatefile | 565 | srcuri = "file://" + sstatefile |
554 | localdata.setVar('SRC_URI', srcuri) | 566 | localdata.setVar('SRC_URI', srcuri) |