Hi, I've been informed of a slight inconsistency in package manager behavior that affects combining EXPORT_FUNCTIONS with inherit (by ionic, thanks for the report!). Please consider the three following snippets:
xdg.eclass: EXPORT_FUNCTIONS src_prepare ecm-1.eclass: inherit xdg EXPORT_FUNCTIONS src_prepare ecm-2.eclass: EXPORT_FUNCTIONS src_prepare inherit xdg Now, ecm-1.eclass produces consistent behavior across all PMs -- ecm-1_src_prepare takes precedence. However, ecm-2.eclass is not consistent: - Portage will take ecm-2_src_prepare, i.e. applies precedence based on inherit order and not actual call order - PkgCore and Paludis will take xdg_src_prepare since its EXPORT_FUNCTIONS are called later (since the inherit is done later). Apparently, the Portage behavior was changed in 2009 [1]. PMS is not very clear on what should happen. Therefore: 1. I'd like to propose that we explicitly require all inherits to happen before EXPORT_FUNCTIONS. This will ensure consistent behavior across all package managers. 2. I'd like to ask your opinion whether we should: a. revert the Portage behavior to be consistent with PkgCore/Paludis b. update PMS to identify the behavior as 'undefined', i.e. either solution is correct. WDYT? [1] https://github.com/gentoo/portage/commit/06d4433e8b8be60d606733b9e23f57f8a5869d8f -- Best regards, Michał Górny
