diff mbox series

package.bbclass: add PACKAGE_POSTPROCESS_FUNCS hook

Message ID 20260708095602.12427-1-emailaddress.ashish@gmail.com
State New
Headers show
Series package.bbclass: add PACKAGE_POSTPROCESS_FUNCS hook | expand

Commit Message

AshishKumar Mishra July 8, 2026, 9:56 a.m. UTC
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(-)

Comments

Richard Purdie July 8, 2026, 10:02 a.m. UTC | #1
On Wed, 2026-07-08 at 15:26 +0530, Ashish Mishra via
lists.openembedded.org wrote:
> 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)

Just put emit_pkgdata here and then you don't need
PACKAGE_POSTPROCESS_FUNCS at all, you can just append to PACAGEFUNCS?

Cheers,

Richard
diff mbox series

Patch

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"