Dnia 15 czerwca 2016 06:18:31 CEST, Jason Zaman <perfin...@gentoo.org> napisał(a): >On Fri, Jun 10, 2016 at 12:52:34PM -0400, NP-Hardass wrote: >> On 06/09/2016 11:54 PM, Jason Zaman wrote: >> > On Thu, Jun 09, 2016 at 08:19:43AM -0400, NP-Hardass wrote: >> >> # @FUNCTION: python_cond_func_wrap >> >> # @DESCRIPTION: Wraps a function for conditional python use, to >run for each >> >> # python implementation in the build directory. >> >> python_cond_func_wrap() { >> >> if use python; then >> >> python_foreach_impl run_in_build_dir "$@" >> >> else >> >> $@ >> >> fi >> >> } >> > >> > I dont see where you inherited the python eclasses? You also >probably >> > need to use use_if_iuse (from eutils.eclass) instead since it seems >like >> > python might not be in all the ebuilds. Afaik, you're not allowed >to >> > call use foo if foo is not in IUSE already >> I forgot to include a comment in the ebuild, but the intention was >that >> the eclass would not inherit python, by design, those wanting to use >> that should inherit python themselves. Although, if I should check >that >> explicitly, I am unaware of how to do so, and would appreciate advice >> from someone, if it is possible. I am aware of INHERITED, but the PMS >> says it shouldn't be exported to ebuilds, so I'm unsure if/how it >could >> be used. >> >> My hope was that since this is used several times (though, not too >> many), that I could move this logic into the eclass, but if it would >be >> more appropriate to just keep that in each of those ebuilds, I can do >> that too. > >Yeah sounds like keeping this in the eclass is right. Moving duplicated >code into the ebuilds would be a waste. You are defining the API so >requiring the ebuild to inherit itself is completely okay. I would add >a >little more to the doc above to make it super obvious tho. > >I don't know how to check if the python eclasses specifically are >inherited. I think "python" being in IUSE would be sufficient to check >tho. so all you'd need to do is inherit eutils and replace the "if use >python" with "if use_if_iuse python". > >If you *really* wanted to check you could perhaps do >if [[ $(type python_foreach_impl) == function ]]. Seems overkill and I >wouldn't bother. Having python in iuse is probably enough of a sanity >check.
You can check for the include guards. This is how python-r1 eclasses detect one another (in order to prevent inheriting multiple of them). However, note that all fancy checks are allowed in phase scope only, and not in global scope. > >-- Jason -- Best regards, Michał Górny (by phone)