diff options
| -rw-r--r-- | meta/classes/sstate.bbclass | 40 | ||||
| -rw-r--r-- | meta/recipes-devtools/gcc/gcc-common.inc | 1 |
2 files changed, 33 insertions, 8 deletions
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass index 678d5e3f44..9df9ac2429 100644 --- a/meta/classes/sstate.bbclass +++ b/meta/classes/sstate.bbclass | |||
| @@ -10,6 +10,7 @@ def generate_sstatefn(spec, hash, d): | |||
| 10 | 10 | ||
| 11 | SSTATE_PKGARCH = "${PACKAGE_ARCH}" | 11 | SSTATE_PKGARCH = "${PACKAGE_ARCH}" |
| 12 | SSTATE_PKGSPEC = "sstate-${PN}-${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}-${PV}-${PR}-${SSTATE_PKGARCH}-${SSTATE_VERSION}-" | 12 | SSTATE_PKGSPEC = "sstate-${PN}-${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}-${PV}-${PR}-${SSTATE_PKGARCH}-${SSTATE_VERSION}-" |
| 13 | SSTATE_SWSPEC = "" | ||
| 13 | SSTATE_PKGNAME = "${SSTATE_EXTRAPATH}${@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)}" |
| 14 | SSTATE_PKG = "${SSTATE_DIR}/${SSTATE_PKGNAME}" | 15 | SSTATE_PKG = "${SSTATE_DIR}/${SSTATE_PKGNAME}" |
| 15 | SSTATE_EXTRAPATH = "" | 16 | SSTATE_EXTRAPATH = "" |
| @@ -26,7 +27,7 @@ SSTATE_DUPWHITELIST += "${STAGING_ETCDIR_NATIVE}/sgml ${STAGING_DATADIR_NATIVE}/ | |||
| 26 | SSTATE_SCAN_FILES ?= "*.la *-config *_config" | 27 | SSTATE_SCAN_FILES ?= "*.la *-config *_config" |
| 27 | SSTATE_SCAN_CMD ?= 'find ${SSTATE_BUILDDIR} \( -name "${@"\" -o -name \"".join(d.getVar("SSTATE_SCAN_FILES", True).split())}" \) -type f' | 28 | SSTATE_SCAN_CMD ?= 'find ${SSTATE_BUILDDIR} \( -name "${@"\" -o -name \"".join(d.getVar("SSTATE_SCAN_FILES", True).split())}" \) -type f' |
| 28 | 29 | ||
| 29 | BB_HASHFILENAME = "${SSTATE_EXTRAPATH} ${SSTATE_PKGSPEC}" | 30 | BB_HASHFILENAME = "${SSTATE_EXTRAPATH} ${SSTATE_PKGSPEC} ${SSTATE_SWSPEC}" |
| 30 | 31 | ||
| 31 | SSTATE_MANMACH ?= "${SSTATE_PKGARCH}" | 32 | SSTATE_MANMACH ?= "${SSTATE_PKGARCH}" |
| 32 | 33 | ||
| @@ -606,11 +607,28 @@ def sstate_checkhashes(sq_fn, sq_task, sq_hash, sq_hashfn, d): | |||
| 606 | e = extra.split(":") | 607 | e = extra.split(":") |
| 607 | mapping[e[0]] = e[1] | 608 | mapping[e[0]] = e[1] |
| 608 | 609 | ||
| 610 | def getpathcomponents(task, d): | ||
| 611 | # Magic data from BB_HASHFILENAME | ||
| 612 | splithashfn = sq_hashfn[task].split(" ") | ||
| 613 | spec = splithashfn[1] | ||
| 614 | extrapath = splithashfn[0] | ||
| 615 | |||
| 616 | tname = sq_task[task][3:] | ||
| 617 | if sq_task[task] in mapping: | ||
| 618 | tname = mapping[sq_task[task]] | ||
| 619 | |||
| 620 | if tname in ["fetch", "unpack", "patch"] and splithashfn[2]: | ||
| 621 | spec = splithashfn[2] | ||
| 622 | extrapath = "" | ||
| 623 | |||
| 624 | return spec, extrapath, tname | ||
| 625 | |||
| 626 | |||
| 609 | for task in range(len(sq_fn)): | 627 | for task in range(len(sq_fn)): |
| 610 | spec = sq_hashfn[task].split(" ")[1] | ||
| 611 | extrapath = sq_hashfn[task].split(" ")[0] | ||
| 612 | 628 | ||
| 613 | sstatefile = d.expand("${SSTATE_DIR}/" + extrapath + generate_sstatefn(spec, sq_hash[task], d) + "_" + mapping[sq_task[task]] + ".tgz") | 629 | spec, extrapath, tname = getpathcomponents(task, d) |
| 630 | |||
| 631 | sstatefile = d.expand("${SSTATE_DIR}/" + extrapath + generate_sstatefn(spec, sq_hash[task], d) + "_" + tname + ".tgz.siginfo") | ||
| 614 | if os.path.exists(sstatefile): | 632 | if os.path.exists(sstatefile): |
| 615 | bb.debug(2, "SState: Found valid sstate file %s" % sstatefile) | 633 | bb.debug(2, "SState: Found valid sstate file %s" % sstatefile) |
| 616 | ret.append(task) | 634 | ret.append(task) |
| @@ -639,9 +657,9 @@ def sstate_checkhashes(sq_fn, sq_task, sq_hash, sq_hashfn, d): | |||
| 639 | if task in ret: | 657 | if task in ret: |
| 640 | continue | 658 | continue |
| 641 | 659 | ||
| 642 | spec = sq_hashfn[task].split(" ")[1] | 660 | spec, extrapath, tname = getpathcomponents(task, d) |
| 643 | extrapath = sq_hashfn[task].split(" ")[0] | 661 | |
| 644 | sstatefile = d.expand(extrapath + generate_sstatefn(spec, sq_hash[task], d) + "_" + mapping[sq_task[task]] + ".tgz") | 662 | sstatefile = d.expand(extrapath + generate_sstatefn(spec, sq_hash[task], d) + "_" + tname + ".tgz.siginfo") |
| 645 | 663 | ||
| 646 | srcuri = "file://" + sstatefile | 664 | srcuri = "file://" + sstatefile |
| 647 | localdata.setVar('SRC_URI', srcuri) | 665 | localdata.setVar('SRC_URI', srcuri) |
| @@ -743,6 +761,12 @@ python sstate_eventhandler() { | |||
| 743 | spkg = d.getVar('SSTATE_PKG', True) | 761 | spkg = d.getVar('SSTATE_PKG', True) |
| 744 | if not spkg.endswith(".tgz"): | 762 | if not spkg.endswith(".tgz"): |
| 745 | taskname = d.getVar("BB_RUNTASK", True)[3:] | 763 | taskname = d.getVar("BB_RUNTASK", True)[3:] |
| 746 | bb.siggen.dump_this_task(d.getVar('SSTATE_PKG', True) + '_' + taskname + ".tgz" ".siginfo", d) | 764 | spec = d.getVar('SSTATE_PKGSPEC', True) |
| 765 | swspec = d.getVar('SSTATE_SWSPEC', True) | ||
| 766 | if taskname in ["fetch", "unpack", "patch"] and swspec: | ||
| 767 | d.setVar("SSTATE_PKGSPEC", "${SSTATE_SWSPEC}") | ||
| 768 | d.setVar("SSTATE_EXTRAPATH", "") | ||
| 769 | sstatepkg = d.getVar('SSTATE_PKG', True) | ||
| 770 | bb.siggen.dump_this_task(sstatepkg + '_' + taskname + ".tgz" ".siginfo", d) | ||
| 747 | } | 771 | } |
| 748 | 772 | ||
diff --git a/meta/recipes-devtools/gcc/gcc-common.inc b/meta/recipes-devtools/gcc/gcc-common.inc index 55c61850b6..e49d72477a 100644 --- a/meta/recipes-devtools/gcc/gcc-common.inc +++ b/meta/recipes-devtools/gcc/gcc-common.inc | |||
| @@ -95,6 +95,7 @@ do_patch[stamp-base-clean] = "${SSCLEAN}" | |||
| 95 | 95 | ||
| 96 | # SW means Shared Work directory | 96 | # SW means Shared Work directory |
| 97 | SW = "${TMPDIR}/work-shared/gcc-${PV}-${PR}" | 97 | SW = "${TMPDIR}/work-shared/gcc-${PV}-${PR}" |
| 98 | SSTATE_SWSPEC = "sstate-gcc-${PV}-${PR}-${SSTATE_VERSION}-" | ||
| 98 | WORKDIR_task-unpack = "${SW}" | 99 | WORKDIR_task-unpack = "${SW}" |
| 99 | WORKDIR_task-patch = "${SW}" | 100 | WORKDIR_task-patch = "${SW}" |
| 100 | 101 | ||
