On 2007/12/23, Ciaran McCreesh <[EMAIL PROTECTED]> wrote: > a) It's a massive restriction on what future ebuilds can do.
- it handles a reasonnable range of likely future EAPIs, - it includes the "extension changes when the way to extract EAPI has to change" to avoid bounding future EAPIs to this range. > b) It's a massive restriction on what current ebuilds can do. Current ebuilds are the one with the ".ebuild" extension. I'm not proposing any change to the way they are handled. Now, if you mean that there are some stuffs allowed in ".ebuild" files which would no more be allowed in the ".something" files, then yes: it introduces some restrictions on how the EAPI is declared. That's how it works. It has yet to be shown that this restrictions fordbids anything else than some pointless code (like setting EAPI depending on $PV), and furthermore that this code would, at the contrary, play well with the GLEP 55 approach (obviously not the case with the previous pointless example). > c) It's an extremely bizarre restriction, the likes of which do not > currently exist, that will confuse the hell out of all the people that > don't realise that such a restriction exists. Devs are already used to follow numerous conventions in the way they format their ebuilds. While this restriction is more than a convention, I assume that's how it will be followed by many people: just doing things the way they are in "skel.something". And for those who happen to break the rule because they edited a ".something" file without knowing what it was, they would learn as soon as they test/use their file (no need to wait for the repoman step, it would be checked whenever the ebuild is sourced). > d) It introduces a new prepass parse layer to an already complex > process. Both solutions add some new steps to this process, and it doesn't look to me like there's a significant difference beetween their respective added complexity. That said, you're the PM dev here, not me, so if you confirm that implementation of an in-contents solution is significantly harder, then i will accept the argument. > e) The Portage guys said no to it. When/where? I've only seen Marius commenting here, but not on that aspect. Also, i've read this 2005 "EBUILD_FORMAT" discussion that Steve Long has pointed [1], where Brian was against non-Bash parsing, but: - he was against changing files extension too, - the flaws in the EAPI system designed at this time is what led to rethinking it now. If i've missed something since then (and that's likely), could you give me a pointer to the archives? Thanks. [1] http://thread.gmane.org/gmane.linux.gentoo.devel/29512 > You keep saying that like *.ebuild-3 and *.ebuild-4 are massively > different. They're not. They're the same extension, decorated slightly > differently. To me they look different enough that it's worth avoiding them if possible (especialy considering the decoration is not just an integer). I absolutly agree that it's a futile and subjective objection to GLEP 55, but so far, and until you answer to what i've left open above, it's the only aspect on which i can think one solution is better than the other. > > (until some unlikely conditions are met, like a switch away from > > Bash format). > > Or until we do something about eclasses and EAPIs, If you're not more specific about this "something", it's hard to say what solution will handle it best. For example, it could be nice that some ebuilds which are just instanciation of an eclass (like the vim-spell-* ones) let their eclass decide what EAPI it needs. That's something which could be handled nicely by a backward-compatible extension of the EAPI-in-contents approach: # Copyright... eapi inherited:vim-spell-2 VIM_SPELL_LANGUAGE="French" inherit vim-spell-2 (the "-2" here is not a specific EAPI, it's just that the "vim-spell" eclass already exists and that it would not be a good idea to apply the needed changes to it) PMs which know how to handle such redirection would then go look for an EAPI declared in the eclass before sourcing the whole thing. PMs which don't yet would see it as an unsupported EAPI and stop there. My point here is that the in-contents alternative is just a syntaxic rule which defines a first-pass extraction of a value from an ebuild file (as opposed to an ebuild file name extension). How it is then used (what the "eapi" function does, if anything, or whether this value is the definitive EAPI, or how EAPI vs. eclasses is handled, etc.) can be subject to future changes depending on this value. That's part of why this solution is not more restrictive than the file name extension approach. > or until we do something about storing metadata outside of the ebuilds > themselves... # Copyright... eapi from-external-metadatas ... I agree there's an unecessary performance impact on doing that though, so you're right that it's a case where changing the file extension would be better. The EAPI declaration would be moved together with the other metadatas, and its a whole new family of EAPIs which would fall under this single new file name extension. -- TGL. -- [EMAIL PROTECTED] mailing list