diff options
| -rw-r--r-- | meta/classes/sstate.bbclass | 7 | ||||
| -rw-r--r-- | meta/lib/oe/sstatesig.py | 39 | ||||
| -rw-r--r-- | meta/recipes-devtools/perl/perl_5.34.0.bb | 7 | ||||
| -rw-r--r-- | meta/recipes-devtools/python/python3_3.9.6.bb | 8 | ||||
| -rw-r--r-- | meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb | 1 | ||||
| -rw-r--r-- | meta/recipes-devtools/rpm/rpm_4.16.1.3.bb | 5 |
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" | |||
| 67 | SSTATE_SCAN_FILES ?= "*.la *-config *_config postinst-*" | 67 | SSTATE_SCAN_FILES ?= "*.la *-config *_config postinst-*" |
| 68 | SSTATE_SCAN_CMD ??= 'find ${SSTATE_BUILDDIR} \( -name "${@"\" -o -name \"".join(d.getVar("SSTATE_SCAN_FILES").split())}" \) -type f' | 68 | SSTATE_SCAN_CMD ??= 'find ${SSTATE_BUILDDIR} \( -name "${@"\" -o -name \"".join(d.getVar("SSTATE_SCAN_FILES").split())}" \) -type f' |
| 69 | SSTATE_SCAN_CMD_NATIVE ??= 'grep -Irl -e ${RECIPE_SYSROOT} -e ${RECIPE_SYSROOT_NATIVE} -e ${HOSTTOOLS_DIR} ${SSTATE_BUILDDIR}' | 69 | SSTATE_SCAN_CMD_NATIVE ??= 'grep -Irl -e ${RECIPE_SYSROOT} -e ${RECIPE_SYSROOT_NATIVE} -e ${HOSTTOOLS_DIR} ${SSTATE_BUILDDIR}' |
| 70 | SSTATE_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 | ||
| 71 | BB_HASHFILENAME = "False ${SSTATE_PKGSPEC} ${SSTATE_SWSPEC}" | 78 | BB_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 | |||
| 389 | SSTATE_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 | ||
| 197 | SSTATE_SCAN_FILES += "Makefile _sysconfigdata.py" | 197 | SSTATE_SCAN_FILES += "Makefile _sysconfigdata.py" |
| 198 | SSTATE_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 | " | ||
| 198 | PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess" | 206 | PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess" |
| 199 | 207 | ||
| 200 | py_package_preprocess () { | 208 | py_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 | ||
| 21 | set -x | 22 | set -x |
| 22 | 23 | ||
| 23 | if [ ${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'True', 'False', d)} = False -a "${PN}" != "nativesdk-qemuwrapper-cross" ]; then | 24 | if [ ${@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 | |||
| 199 | SSTATE_HASHEQUIV_FILEMAP = " \ | ||
| 200 | populate_sysroot:*/rpm/macros:${TMPDIR} \ | ||
| 201 | populate_sysroot:*/rpm/macros:${COREBASE} \ | ||
| 202 | " | ||
