summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
Diffstat (limited to 'meta')
-rw-r--r--meta/classes/sstate.bbclass7
-rw-r--r--meta/lib/oe/sstatesig.py39
-rw-r--r--meta/recipes-devtools/perl/perl_5.34.0.bb7
-rw-r--r--meta/recipes-devtools/python/python3_3.9.6.bb8
-rw-r--r--meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb1
-rw-r--r--meta/recipes-devtools/rpm/rpm_4.16.1.3.bb5
6 files changed, 64 insertions, 3 deletions
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index 92a73114bb..89e9f56178 100644
--- a/meta/classes/sstate.bbclass
+++ b/meta/classes/sstate.bbclass
@@ -67,6 +67,13 @@ SSTATE_DUPWHITELIST += "${DEPLOY_DIR_IMAGE}/microcode"
67SSTATE_SCAN_FILES ?= "*.la *-config *_config postinst-*" 67SSTATE_SCAN_FILES ?= "*.la *-config *_config postinst-*"
68SSTATE_SCAN_CMD ??= 'find ${SSTATE_BUILDDIR} \( -name "${@"\" -o -name \"".join(d.getVar("SSTATE_SCAN_FILES").split())}" \) -type f' 68SSTATE_SCAN_CMD ??= 'find ${SSTATE_BUILDDIR} \( -name "${@"\" -o -name \"".join(d.getVar("SSTATE_SCAN_FILES").split())}" \) -type f'
69SSTATE_SCAN_CMD_NATIVE ??= 'grep -Irl -e ${RECIPE_SYSROOT} -e ${RECIPE_SYSROOT_NATIVE} -e ${HOSTTOOLS_DIR} ${SSTATE_BUILDDIR}' 69SSTATE_SCAN_CMD_NATIVE ??= 'grep -Irl -e ${RECIPE_SYSROOT} -e ${RECIPE_SYSROOT_NATIVE} -e ${HOSTTOOLS_DIR} ${SSTATE_BUILDDIR}'
70SSTATE_HASHEQUIV_FILEMAP ?= " \
71 populate_sysroot:*/postinst-useradd-*:${TMPDIR} \
72 populate_sysroot:*/postinst-useradd-*:${COREBASE} \
73 populate_sysroot:*/postinst-useradd-*:regex-\s(PATH|PSEUDO_IGNORE_PATHS|HOME|LOGNAME|OMP_NUM_THREADS|USER)=.*\s \
74 populate_sysroot:*/crossscripts/*:${TMPDIR} \
75 populate_sysroot:*/crossscripts/*:${COREBASE} \
76 "
70 77
71BB_HASHFILENAME = "False ${SSTATE_PKGSPEC} ${SSTATE_SWSPEC}" 78BB_HASHFILENAME = "False ${SSTATE_PKGSPEC} ${SSTATE_SWSPEC}"
72 79
diff --git a/meta/lib/oe/sstatesig.py b/meta/lib/oe/sstatesig.py
index 24577249ff..0c3b4589c5 100644
--- a/meta/lib/oe/sstatesig.py
+++ b/meta/lib/oe/sstatesig.py
@@ -470,6 +470,8 @@ def OEOuthashBasic(path, sigfile, task, d):
470 import stat 470 import stat
471 import pwd 471 import pwd
472 import grp 472 import grp
473 import re
474 import fnmatch
473 475
474 def update_hash(s): 476 def update_hash(s):
475 s = s.encode('utf-8') 477 s = s.encode('utf-8')
@@ -479,6 +481,8 @@ def OEOuthashBasic(path, sigfile, task, d):
479 481
480 h = hashlib.sha256() 482 h = hashlib.sha256()
481 prev_dir = os.getcwd() 483 prev_dir = os.getcwd()
484 corebase = d.getVar("COREBASE")
485 tmpdir = d.getVar("TMPDIR")
482 include_owners = os.environ.get('PSEUDO_DISABLED') == '0' 486 include_owners = os.environ.get('PSEUDO_DISABLED') == '0'
483 if "package_write_" in task or task == "package_qa": 487 if "package_write_" in task or task == "package_qa":
484 include_owners = False 488 include_owners = False
@@ -489,8 +493,17 @@ def OEOuthashBasic(path, sigfile, task, d):
489 include_root = False 493 include_root = False
490 extra_content = d.getVar('HASHEQUIV_HASH_VERSION') 494 extra_content = d.getVar('HASHEQUIV_HASH_VERSION')
491 495
496 filemaps = {}
497 for m in (d.getVar('SSTATE_HASHEQUIV_FILEMAP') or '').split():
498 entry = m.split(":")
499 if len(entry) != 3 or entry[0] != task:
500 continue
501 filemaps.setdefault(entry[1], [])
502 filemaps[entry[1]].append(entry[2])
503
492 try: 504 try:
493 os.chdir(path) 505 os.chdir(path)
506 basepath = os.path.normpath(path)
494 507
495 update_hash("OEOuthashBasic\n") 508 update_hash("OEOuthashBasic\n")
496 if extra_content: 509 if extra_content:
@@ -572,8 +585,13 @@ def OEOuthashBasic(path, sigfile, task, d):
572 else: 585 else:
573 update_hash(" " * 9) 586 update_hash(" " * 9)
574 587
588 filterfile = False
589 for entry in filemaps:
590 if fnmatch.fnmatch(path, entry):
591 filterfile = True
592
575 update_hash(" ") 593 update_hash(" ")
576 if stat.S_ISREG(s.st_mode): 594 if stat.S_ISREG(s.st_mode) and not filterfile:
577 update_hash("%10d" % s.st_size) 595 update_hash("%10d" % s.st_size)
578 else: 596 else:
579 update_hash(" " * 10) 597 update_hash(" " * 10)
@@ -582,9 +600,24 @@ def OEOuthashBasic(path, sigfile, task, d):
582 fh = hashlib.sha256() 600 fh = hashlib.sha256()
583 if stat.S_ISREG(s.st_mode): 601 if stat.S_ISREG(s.st_mode):
584 # Hash file contents 602 # Hash file contents
585 with open(path, 'rb') as d: 603 if filterfile:
586 for chunk in iter(lambda: d.read(4096), b""): 604 # Need to ignore paths in crossscripts and postinst-useradd files.
605 with open(path, 'rb') as d:
606 chunk = d.read()
607 chunk = chunk.replace(bytes(basepath, encoding='utf8'), b'')
608 for entry in filemaps:
609 if not fnmatch.fnmatch(path, entry):
610 continue
611 for r in filemaps[entry]:
612 if r.startswith("regex-"):
613 chunk = re.sub(bytes(r[6:], encoding='utf8'), b'', chunk)
614 else:
615 chunk = chunk.replace(bytes(r, encoding='utf8'), b'')
587 fh.update(chunk) 616 fh.update(chunk)
617 else:
618 with open(path, 'rb') as d:
619 for chunk in iter(lambda: d.read(4096), b""):
620 fh.update(chunk)
588 update_hash(fh.hexdigest()) 621 update_hash(fh.hexdigest())
589 else: 622 else:
590 update_hash(" " * len(fh.hexdigest())) 623 update_hash(" " * len(fh.hexdigest()))
diff --git a/meta/recipes-devtools/perl/perl_5.34.0.bb b/meta/recipes-devtools/perl/perl_5.34.0.bb
index 0e0fe7f985..175db4ee31 100644
--- a/meta/recipes-devtools/perl/perl_5.34.0.bb
+++ b/meta/recipes-devtools/perl/perl_5.34.0.bb
@@ -385,3 +385,10 @@ EOF
385 chmod 0755 ${SYSROOT_DESTDIR}${bindir}/nativeperl 385 chmod 0755 ${SYSROOT_DESTDIR}${bindir}/nativeperl
386 cat ${SYSROOT_DESTDIR}${bindir}/nativeperl 386 cat ${SYSROOT_DESTDIR}${bindir}/nativeperl
387} 387}
388
389SSTATE_HASHEQUIV_FILEMAP = " \
390 populate_sysroot:*/lib*/perl5/*/*/Config_heavy.pl:${TMPDIR} \
391 populate_sysroot:*/lib*/perl5/*/*/Config_heavy.pl:${COREBASE} \
392 populate_sysroot:*/lib*/perl5/config.sh:${TMPDIR} \
393 populate_sysroot:*/lib*/perl5/config.sh:${COREBASE} \
394 "
diff --git a/meta/recipes-devtools/python/python3_3.9.6.bb b/meta/recipes-devtools/python/python3_3.9.6.bb
index aae7837180..d09943f891 100644
--- a/meta/recipes-devtools/python/python3_3.9.6.bb
+++ b/meta/recipes-devtools/python/python3_3.9.6.bb
@@ -195,6 +195,14 @@ do_install:append:class-nativesdk () {
195} 195}
196 196
197SSTATE_SCAN_FILES += "Makefile _sysconfigdata.py" 197SSTATE_SCAN_FILES += "Makefile _sysconfigdata.py"
198SSTATE_HASHEQUIV_FILEMAP = " \
199 populate_sysroot:*/lib*/python3*/_sysconfigdata*.py:${TMPDIR} \
200 populate_sysroot:*/lib*/python3*/_sysconfigdata*.py:${COREBASE} \
201 populate_sysroot:*/lib*/python3*/config-*/Makefile:${TMPDIR} \
202 populate_sysroot:*/lib*/python3*/config-*/Makefile:${COREBASE} \
203 populate_sysroot:*/lib*/python-sysconfigdata/_sysconfigdata.py:${TMPDIR} \
204 populate_sysroot:*/lib*/python-sysconfigdata/_sysconfigdata.py:${COREBASE} \
205 "
198PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess" 206PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess"
199 207
200py_package_preprocess () { 208py_package_preprocess () {
diff --git a/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb b/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb
index a0448a1803..97b44ad2e5 100644
--- a/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb
+++ b/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb
@@ -18,6 +18,7 @@ do_install () {
18 18
19 cat >> ${D}${bindir_crossscripts}/${MLPREFIX}qemuwrapper << EOF 19 cat >> ${D}${bindir_crossscripts}/${MLPREFIX}qemuwrapper << EOF
20#!/bin/sh 20#!/bin/sh
21# Wrapper script to run binaries under qemu user-mode emulation
21set -x 22set -x
22 23
23if [ ${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'True', 'False', d)} = False -a "${PN}" != "nativesdk-qemuwrapper-cross" ]; then 24if [ ${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'True', 'False', d)} = False -a "${PN}" != "nativesdk-qemuwrapper-cross" ]; then
diff --git a/meta/recipes-devtools/rpm/rpm_4.16.1.3.bb b/meta/recipes-devtools/rpm/rpm_4.16.1.3.bb
index 60181f26c7..2ff9c2b112 100644
--- a/meta/recipes-devtools/rpm/rpm_4.16.1.3.bb
+++ b/meta/recipes-devtools/rpm/rpm_4.16.1.3.bb
@@ -195,3 +195,8 @@ rpm_package_preprocess () {
195 sed -i -e 's:--sysroot[^ ]*::g' \ 195 sed -i -e 's:--sysroot[^ ]*::g' \
196 ${PKGD}/${libdir}/rpm/macros 196 ${PKGD}/${libdir}/rpm/macros
197} 197}
198
199SSTATE_HASHEQUIV_FILEMAP = " \
200 populate_sysroot:*/rpm/macros:${TMPDIR} \
201 populate_sysroot:*/rpm/macros:${COREBASE} \
202 "