From: AshishKumar Mishra <emailaddress.ashish@gmail.com>
To: openembedded-core@lists.openembedded.org
Cc: AshishKumar Mishra <emailaddress.ashish@gmail.com>
Subject: [PATCH] package.bbclass: add PACKAGE_POSTPROCESS_FUNCS hook
Date: Wed, 8 Jul 2026 15:26:02 +0530 [thread overview]
Message-ID: <20260708095602.12427-1-emailaddress.ashish@gmail.com> (raw)
This patch hardcode the emit_pkgdata to run last and adds a new hook
PACKAGE_POSTPROCESS_FUNCS to package.bbclass which
PACKAGE_PREPROCESS_FUNCS comes in picture before the per-package file split,
so at that point the final file lists are not yet available.
There is no existing hook that fires after the split with the ability to still
modify package scripts postinst
One of use case driving this patch is SELinux context labeling
There can be other user defined usage if the hook is available
Signed-off-by: AshishKumar Mishra <emailaddress.ashish@gmail.com>
---
meta/classes-global/package.bbclass | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/meta/classes-global/package.bbclass b/meta/classes-global/package.bbclass
index 30accaeaa9..c53b5c2d3d 100644
--- a/meta/classes-global/package.bbclass
+++ b/meta/classes-global/package.bbclass
@@ -460,6 +460,7 @@ def gen_packagevar(d, pkgvars="PACKAGEVARS"):
# Functions for setting up PKGD
PACKAGE_PREPROCESS_FUNCS ?= ""
+PACKAGE_POSTPROCESS_FUNCS ?= ""
# Functions which split PKGD up into separate packages
PACKAGESPLITFUNCS ?= " \
package_do_split_locales \
@@ -472,8 +473,7 @@ PACKAGEFUNCS += " \
package_do_shlibs \
package_do_pkgconfig \
read_shlibdeps \
- package_depchains \
- emit_pkgdata"
+ package_depchains"
python do_package () {
# Change the following version to cause sstate to invalidate the package
@@ -564,14 +564,24 @@ python do_package () {
for file in files:
pkgfiles[pkg].append(walkroot + os.sep + file)
+ #
+ # We want emit_pkgdata to run last, after everything
+ # This is becuase any layer which adds its custom function
+ # to PACKAGEFUNCS using += would get executed after emit_pkgdata
+ #
for f in (d.getVar('PACKAGEFUNCS') or '').split():
bb.build.exec_func(f, d)
+ for f in (d.getVar('PACKAGE_POSTPROCESS_FUNCS') or '').split():
+ bb.build.exec_func(f, d)
+
+ bb.build.exec_func("emit_pkgdata", d)
+
oe.qa.exit_if_errors(d)
}
do_package[dirs] = "${SHLIBSWORKDIR} ${D}"
-do_package[vardeps] += "${PACKAGE_PREPROCESS_FUNCS} ${PACKAGESPLITFUNCS} ${PACKAGEFUNCS} ${@gen_packagevar(d)}"
+do_package[vardeps] += "${PACKAGE_PREPROCESS_FUNCS} ${PACKAGESPLITFUNCS} ${PACKAGEFUNCS} ${PACKAGE_POSTPROCESS_FUNCS} ${@gen_packagevar(d)}"
addtask package after do_install
SSTATETASKS += "do_package"
--
2.43.0
next reply other threads:[~2026-07-08 9:56 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-08 9:56 AshishKumar Mishra [this message]
2026-07-08 10:02 ` [OE-core] [PATCH] package.bbclass: add PACKAGE_POSTPROCESS_FUNCS hook Richard Purdie
2026-07-14 5:03 ` AshishKumar Mishra
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260708095602.12427-1-emailaddress.ashish@gmail.com \
--to=emailaddress.ashish@gmail.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox