| Message ID | 20260708095602.12427-1-emailaddress.ashish@gmail.com |
|---|---|
| State | New |
| Headers | show |
| Series | package.bbclass: add PACKAGE_POSTPROCESS_FUNCS hook | expand |
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 --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"
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(-)