postgres-multi_src_prepare() { [sanity checks] eapply_user multibuild_copy_sources } Its job is, largely, to copy sources. Individual ebuilds *may* override src_prepare, in which case they finish it off by calling postgres-multi_src_prepare to get the sources copied. An individual ebuild src_prepare can do *anything*, including things that have to happen after a user patch is applied. Also, eapply_user was likely wrong all along, because it should have used "default" to also apply PATCHES=(). Due to the ordering requirements, namely that individual ebuilds have to be able to apply logic in between PATCHES/eapply_user and the final source copying, this problem is, I believe, unfixable given the current design. It should be replaced with a new ability for ebuilds to define a postgres_prepare_all function which will be called by ${ECLASS}_src_prepare. This would then be used as a hook by ebuilds that want to interject additional logic after patches have been handled.