summaryrefslogtreecommitdiffstats
path: root/meta/classes/sstate.bbclass
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2019-12-11 12:06:54 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-01-06 23:54:39 +0000
commitf3010f76943fc2bcfe73d97e67f211187cf3551a (patch)
treeb095aba516b3c5cc43dc673b64818389bcb3112d /meta/classes/sstate.bbclass
parent4cb1b4b409c4067c669fedef4a02be27689e3d26 (diff)
downloadpoky-f3010f76943fc2bcfe73d97e67f211187cf3551a.tar.gz
sstate: Improve SSTATE_PKG handling
Move the task handling code into the SSTATE_PKGNAME variable using a temporary variable. This makes the code more understandable as as well as allowing the length of the final sstate filename to be more easily accesses for following patches. (From OE-Core rev: be603dad6817948cfa09621d2311046631ec4ab2) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/sstate.bbclass')
-rw-r--r--meta/classes/sstate.bbclass21
1 files changed, 11 insertions, 10 deletions
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index 7d2cb9eb84..5bd4031e53 100644
--- a/meta/classes/sstate.bbclass
+++ b/meta/classes/sstate.bbclass
@@ -11,11 +11,11 @@ def generate_sstatefn(spec, hash, d):
11SSTATE_PKGARCH = "${PACKAGE_ARCH}" 11SSTATE_PKGARCH = "${PACKAGE_ARCH}"
12SSTATE_PKGSPEC = "sstate:${PN}:${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}:${PV}:${PR}:${SSTATE_PKGARCH}:${SSTATE_VERSION}:" 12SSTATE_PKGSPEC = "sstate:${PN}:${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}:${PV}:${PR}:${SSTATE_PKGARCH}:${SSTATE_VERSION}:"
13SSTATE_SWSPEC = "sstate:${PN}::${PV}:${PR}::${SSTATE_VERSION}:" 13SSTATE_SWSPEC = "sstate:${PN}::${PV}:${PR}::${SSTATE_VERSION}:"
14SSTATE_PKGNAME = "${SSTATE_EXTRAPATH}${@generate_sstatefn(d.getVar('SSTATE_PKGSPEC'), d.getVar('BB_UNIHASH'), d)}" 14SSTATE_PKGNAME = "${SSTATE_EXTRAPATH}${@generate_sstatefn(d.getVar('SSTATE_PKGSPEC'), d.getVar('BB_UNIHASH'), d)}_${SSTATE_CURRTASK}.tgz"
15SSTATE_PKG = "${SSTATE_DIR}/${SSTATE_PKGNAME}" 15SSTATE_PKG = "${SSTATE_DIR}/${SSTATE_PKGNAME}"
16SSTATE_EXTRAPATH = "" 16SSTATE_EXTRAPATH = ""
17SSTATE_EXTRAPATHWILDCARD = "" 17SSTATE_EXTRAPATHWILDCARD = ""
18SSTATE_PATHSPEC = "${SSTATE_DIR}/${SSTATE_EXTRAPATHWILDCARD}*/*/${SSTATE_PKGSPEC}" 18SSTATE_PATHSPEC = "${SSTATE_DIR}/${SSTATE_EXTRAPATHWILDCARD}*/*/${SSTATE_PKGSPEC}*_${SSTATE_PATH_CURRTASK}.tgz*"
19 19
20# explicitly make PV to depend on evaluated value of PV variable 20# explicitly make PV to depend on evaluated value of PV variable
21PV[vardepvalue] = "${PV}" 21PV[vardepvalue] = "${PV}"
@@ -317,8 +317,8 @@ def sstate_installpkg(ss, d):
317 from oe.gpg_sign import get_signer 317 from oe.gpg_sign import get_signer
318 318
319 sstateinst = d.expand("${WORKDIR}/sstate-install-%s/" % ss['task']) 319 sstateinst = d.expand("${WORKDIR}/sstate-install-%s/" % ss['task'])
320 sstatefetch = d.getVar('SSTATE_PKGNAME') + '_' + ss['task'] + ".tgz" 320 d.setVar("SSTATE_CURRTASK", ss['task'])
321 d.appendVar('SSTATE_PKG', '_'+ ss['task'] + ".tgz") 321 sstatefetch = d.getVar('SSTATE_PKGNAME')
322 sstatepkg = d.getVar('SSTATE_PKG') 322 sstatepkg = d.getVar('SSTATE_PKG')
323 323
324 if not os.path.exists(sstatepkg): 324 if not os.path.exists(sstatepkg):
@@ -440,8 +440,9 @@ python sstate_hardcode_path_unpack () {
440def sstate_clean_cachefile(ss, d): 440def sstate_clean_cachefile(ss, d):
441 import oe.path 441 import oe.path
442 442
443 sstatepkgfile = d.getVar('SSTATE_PATHSPEC') + "*_" + ss['task'] + ".tgz*"
444 if d.getVarFlag('do_%s' % ss['task'], 'task'): 443 if d.getVarFlag('do_%s' % ss['task'], 'task'):
444 d.setVar("SSTATE_PATH_CURRTASK", ss['task'])
445 sstatepkgfile = d.getVar('SSTATE_PATHSPEC')
445 bb.note("Removing %s" % sstatepkgfile) 446 bb.note("Removing %s" % sstatepkgfile)
446 oe.path.remove(sstatepkgfile) 447 oe.path.remove(sstatepkgfile)
447 448
@@ -612,7 +613,7 @@ def sstate_package(ss, d):
612 tmpdir = d.getVar('TMPDIR') 613 tmpdir = d.getVar('TMPDIR')
613 614
614 sstatebuild = d.expand("${WORKDIR}/sstate-build-%s/" % ss['task']) 615 sstatebuild = d.expand("${WORKDIR}/sstate-build-%s/" % ss['task'])
615 d.appendVar('SSTATE_PKG', '_'+ ss['task'] + ".tgz") 616 d.setVar("SSTATE_CURRTASK", ss['task'])
616 bb.utils.remove(sstatebuild, recurse=True) 617 bb.utils.remove(sstatebuild, recurse=True)
617 bb.utils.mkdirhier(sstatebuild) 618 bb.utils.mkdirhier(sstatebuild)
618 for state in ss['dirs']: 619 for state in ss['dirs']:
@@ -1081,17 +1082,17 @@ addhandler sstate_eventhandler
1081sstate_eventhandler[eventmask] = "bb.build.TaskSucceeded" 1082sstate_eventhandler[eventmask] = "bb.build.TaskSucceeded"
1082python sstate_eventhandler() { 1083python sstate_eventhandler() {
1083 d = e.data 1084 d = e.data
1084 # When we write an sstate package we rewrite the SSTATE_PKG 1085 writtensstate = d.getVar('SSTATE_CURRTASK')
1085 spkg = d.getVar('SSTATE_PKG') 1086 if not writtensstate:
1086 if not spkg.endswith(".tgz"):
1087 taskname = d.getVar("BB_RUNTASK")[3:] 1087 taskname = d.getVar("BB_RUNTASK")[3:]
1088 spec = d.getVar('SSTATE_PKGSPEC') 1088 spec = d.getVar('SSTATE_PKGSPEC')
1089 swspec = d.getVar('SSTATE_SWSPEC') 1089 swspec = d.getVar('SSTATE_SWSPEC')
1090 if taskname in ["fetch", "unpack", "patch", "populate_lic", "preconfigure"] and swspec: 1090 if taskname in ["fetch", "unpack", "patch", "populate_lic", "preconfigure"] and swspec:
1091 d.setVar("SSTATE_PKGSPEC", "${SSTATE_SWSPEC}") 1091 d.setVar("SSTATE_PKGSPEC", "${SSTATE_SWSPEC}")
1092 d.setVar("SSTATE_EXTRAPATH", "") 1092 d.setVar("SSTATE_EXTRAPATH", "")
1093 d.setVar("SSTATE_CURRTASK", taskname)
1093 sstatepkg = d.getVar('SSTATE_PKG') 1094 sstatepkg = d.getVar('SSTATE_PKG')
1094 bb.siggen.dump_this_task(sstatepkg + '_' + taskname + ".tgz" ".siginfo", d) 1095 bb.siggen.dump_this_task(sstatepkg + ".siginfo", d)
1095} 1096}
1096 1097
1097SSTATE_PRUNE_OBSOLETEWORKDIR ?= "1" 1098SSTATE_PRUNE_OBSOLETEWORKDIR ?= "1"