Ryan Hill wrote:
> On Fri, 20 Feb 2009 00:11:32 +0300
> Peter Volkov <pva@g.o> wrote:
>
>> That said, technically there are other solutions for this problem,
>> e.g. 1) it is possible to read one line of defined format from any
>> file 2) it is possible to make eapi inside ebuild name
>> (foo-1.0-eapi2.ebuild), but not as extension. Any solution, even
>> breaking compatibility solution, we could already start using if we
>> had forgotten about GLEP 55 long time ago...
>
> I really don't understand why foo-0.1.eapi3.ebuild is considered an
> acceptable solution and foo-0.1.ebuild.eapi3 is not.
I guess that principle of the least surprise counts there.
> They have the same advantages, arguments about aesthetics aside, and
> seem to be a much cleaner solution than any other that has been
> proposed.
Using either manifests and or switch sync path is even less invasive if
you consider that point raised against the proposal to switch extensions
every time something changes in the ebuild format is that is misleading.
> But the former has one distinct disadvantage that the latter
> does not: any currently released version of portage does not work
> correctly with ebuilds having version suffixes it does not recognize.
> For example, you cannot currently create a Manifest in a package
> directory containing a file named package-1.0.eapi3.ebuild.
Portage should warn/die if stray files are present. So the whole thing
looks to me as a way to harness a bug.
> We can modify portage, of course, to recognize this suffix, and then
> wait long enough for that release to trickle down. But later, if we
> want to add another suffix, -scm perhaps, or something we
> haven't considered yet, we again have to go through the same process. I
> thought the reason we introduced EAPI was to free us from this.
As stated before this eapi had been considered a ugly solution looking
for problems to solve.
> With a format such as .ebuild.eapiX we would avoid these issues.
Using manifest to have portage validate/invalidate ebuilds works as well
and is completely transparent.
> Portage (without any modifications) will not recognize these files as
> ebuilds (which is exactly the behaviour we want if it doesn't
> understand the EAPI), so the format of the version string is moot. We
> could introduce -scm (or whatever) in EAPI X, and be able to use it
> immediately.
> I'm sorry, but until you come up with a better reason than "it's
> tradition", I'm afraid this will continue to be submitted indefinitely.
> You will have to provide technical objections why this approach is
> unacceptable before anyone can come up with something that is.
Usually in order to get something changed is the burden of the
proponents make it worthy for everybody else. Moreover if the change
causes any annoyance, its usefulness has to be considered superior to
the damage. We got people that annoyed about this proposal that they
stated they'll quit if it is passed.
> Here is an example, to get you started:
> If a Manifest is generated using a portage version that supports an
> EAPI and recognizes a package atom containing a version suffix that
> was added in that EAPI as an ebuild and thus categorizes it as EBUILD in
> the Manifest, do portage versions that do not support the EAPI have
> trouble when they see the entry marked EBUILD for a package atom they
> think is invalid?
Manifest2 is backward compatible to manifest1 by ignoring lines it
couldn't parse, so if we have portage embed the eapi information there
we'd archive the same result being completely transparent.
This proposal is in the migration-paths document, why we shouldn't use a
less invasive approach, that is using pretty much the same principle but
doesn't have the shortcoming the extension rename ?
lu
--
Luca Barbato
Gentoo Council Member
Gentoo/linux Gentoo/PPC
http://dev.gentoo.org/~lu_zero
|