PMS seems a bit laconic regarding EXPORT_FUNCTIONS. While one _may_ get an idea what it is supposed to be used for, there's no explanation what happens when EXPORT_FUNCTIONS is used within multiple inherited eclasses. Especially it lacks information that: a) indirectly inherited eclasses have precedence over explicitly inherited ones: a.eclass, b.eclass export pkg_setup() c.eclass inherits a if ebuild does 'inherit a b c', a_pkg_setup() will be called b) calls to EXPORT_FUNCTIONS determine the order, not inherits: in case listed above, vapier introduces double-inherit prevention in a.eclass now if ebuild does 'inherit a b c', b_pkg_setup() will be called c) whether eclass API/exports is allowed to change between successive inherits: - due to 'configuration' variables changing, - due to 'double include prevention'. (where basically one defeats the other) The above behavior I was able to reproduce using portage, pkgcore & paludis. Not sure if that's what we want in the spec though.
Bump; any life on PMS bugs or have the cows fled the barn?
It would certainly help if a patch was attached.
The bug has been referenced in the following commit(s): https://gitweb.gentoo.org/proj/pms.git/commit/?id=f5f8e42eeb8ea1e8c2ac182f30214ef0c559dd88 commit f5f8e42eeb8ea1e8c2ac182f30214ef0c559dd88 Author: Ulrich Müller <ulm@gentoo.org> AuthorDate: 2021-08-29 08:10:29 +0000 Commit: Ulrich Müller <ulm@gentoo.org> CommitDate: 2021-08-31 16:02:50 +0000 eclasses.tex: Clarify precedence of EXPORT_FUNCTIONS calls Clarify that the last call to EXPORT_FUNCTIONS takes precedence over earlier calls. Unfortunately, we need an exception when inherit is called after EXPORT_FUNCTIONS because Portage changed its behaviour in 2009: https://gitweb.gentoo.org/proj/portage.git/commit/?id=06d4433e8b8be60d606733b9e23f57f8a5869d8f Pkgcore and Paludis apply precedence consistently based on call order of EXPORT_FUNCTIONS. Bug: https://bugs.gentoo.org/399039 Bug: https://bugs.gentoo.org/422513 Signed-off-by: Ulrich Müller <ulm@gentoo.org> eclasses.tex | 4 ++++ 1 file changed, 4 insertions(+)