Linux Archive

Linux Archive (http://www.linux-archive.org/)
-   Gentoo Development (http://www.linux-archive.org/gentoo-development/)
-   -   Drop EAPI=0 requirement for system packages. (http://www.linux-archive.org/gentoo-development/711737-drop-eapi-0-requirement-system-packages.html)

Ralph Sennhauser 10-12-2012 10:53 AM

Drop EAPI=0 requirement for system packages.
 
From time to time the topic of deprecating EAPIs comes up and usually
one suggestion is to keep 0 and start with converting EAPI 1 ebuilds.
Then someone comes along and asks what is the point? Indeed, a fair
question.

The following tries to take a different approach to the topic. It's not
all thought through in detail, but that wont happen anytime soon,
after all it's on my TODO for long enough. So I present it in the hope
others will try to poke holes into it or even pick it up.


EAPI=0 requirement pointless?
-----------------------------

The EAPI=0 requirement comes from having to provide an update path for
systems with a package manager without EAPI support. By now we are
talking about really ancient systems and it's questionable if there is
any merit in supporting such.

Further the situation is that some of the maintainers of must be EAPI 0
ebuilds already moved on as the majority of users will profit from a
bump. As a result the clean upgrade path is already borked and the
value of keeping others at EAPI=0 deteriorates further and further.

Forcing EAPI 0 on some maintainers for all eternity doesn't strike me
as brilliant, quite the opposite frankly. After all new EAPIs are
supposed to contain bug fixes and new features required to write better
ebuilds.


If all installed PMs supported EAPI?
------------------------------------

The issue of an update path is reduced to keeping intermediate
versions in tree.

Those PMs also support EAPI=1, rendering EAPI=0 obsolete.


Base EAPI
---------

Systems without having a package manager installed that supports at
least the 'Base EAPI' aren't considered supported any longer.

Maintainers of system packages can use the Base EAPI without worrying.

Maintainers of system packages can use more recent EAPIs but need to
take special care.


Value of Base EAPI
------------------

Maintainers of system packages need to be able to use newer EAPIs
after some time. They can wait but not forever. built_with_use removal
is one example, strong vs weak blockers an other.

The value can be based on time ( i.e. after 3 years ) or set by council
decision. A combination is fine as well.

The value should be kept low enough so the rule "maintainers don't have
to care about using it" holds.

The need of derived distributions / package managers should be
considered, ie. let them catch up if necessary.

Security updates should be possible for some time without full updates.
This extends to other packages as well. So maintainers of critical non
system packages can use this EAPI as well if they want.

Guess EAPI=2 would be a reasonable compromiss.


Deprecation?
------------

EAPIs below the base EAPI can be considered deprecated if one desires.

References in devmanual can be removed and so the document be
simplified.

Once there are only few ebuild of a deprecated EAPI left, it might make
sense to convert them and add a repoman check so the number of used
EAPIs is kept reasonable.

"Walter Dnes" 10-12-2012 08:38 PM

Drop EAPI=0 requirement for system packages.
 
On Fri, Oct 12, 2012 at 12:53:15PM +0200, Ralph Sennhauser wrote
> From time to time the topic of deprecating EAPIs comes up and usually
> one suggestion is to keep 0 and start with converting EAPI 1 ebuilds.
> Then someone comes along and asks what is the point? Indeed, a fair
> question.

It's my understanding that higher EAPI levels include more features.
How backwards compatable are the EAPI levels? I.e. assume that we take
an ebuild with EAPI 0, and slap in EAPI=1 (or 2 or 3, etc) at the top,
without any other changes. Are there any circumstances where the ebuild
would behave differently and/or break?

The current default, if EAPI is not specified, is EAPI 0. What I'm
getting at is... can we safely tell portage to assume that all ebuilds
with no EAPI declaration are EAPI 1 (or 2 or 3, etc)? Or will that
break some ebuilds? Actually, if only a small percentage of ebuilds
break, then it might not be too much of an effort to fix that small
subset.

--
Walter Dnes <waltdnes@waltdnes.org>
I don't run "desktop environments"; I run useful applications

Ciaran McCreesh 10-12-2012 08:41 PM

Drop EAPI=0 requirement for system packages.
 
On Fri, 12 Oct 2012 16:38:06 -0400
"Walter Dnes" <waltdnes@waltdnes.org> wrote:
> On Fri, Oct 12, 2012 at 12:53:15PM +0200, Ralph Sennhauser wrote
> > From time to time the topic of deprecating EAPIs comes up and
> > usually one suggestion is to keep 0 and start with converting EAPI
> > 1 ebuilds. Then someone comes along and asks what is the point?
> > Indeed, a fair question.
>
> It's my understanding that higher EAPI levels include more features.
> How backwards compatable are the EAPI levels? I.e. assume that we
> take an ebuild with EAPI 0, and slap in EAPI=1 (or 2 or 3, etc) at
> the top, without any other changes. Are there any circumstances
> where the ebuild would behave differently and/or break?

In EAPIs after 1, as well as adding shiny new toys, we've removed
various deprecated things, split up phase functions, and made some
helpers error on invalid input.

--
Ciaran McCreesh

Ian Stakenvicius 10-12-2012 08:45 PM

Drop EAPI=0 requirement for system packages.
 
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

On 12/10/12 04:38 PM, Walter Dnes wrote:
> On Fri, Oct 12, 2012 at 12:53:15PM +0200, Ralph Sennhauser wrote
>> From time to time the topic of deprecating EAPIs comes up and
>> usually one suggestion is to keep 0 and start with converting
>> EAPI 1 ebuilds. Then someone comes along and asks what is the
>> point? Indeed, a fair question.
>
> It's my understanding that higher EAPI levels include more
> features. How backwards compatable are the EAPI levels? I.e.
> assume that we take an ebuild with EAPI 0, and slap in EAPI=1 (or 2
> or 3, etc) at the top, without any other changes. Are there any
> circumstances where the ebuild would behave differently and/or
> break?

Yes. There is more than just new features that have been added. Some
default operations have changed. Eclass behaviour can also be different.

I'll let others go into the details, but one of the big changes
between EAPIs is the way an unspecified DEPEND or RDEPEND is handled.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (GNU/Linux)

iF4EAREIAAYFAlB4gVYACgkQ2ugaI38ACPB45QD+PC6PvspnXd mOhMAEOIDPxh2m
4RDWrTw8t86O+iyKodsA/RdRo1r1Xxc734hXbAwtZlxjC3KcU/mnGQVysvflOdjW
=uk9m
-----END PGP SIGNATURE-----

Alexandre Rostovtsev 10-12-2012 09:02 PM

Drop EAPI=0 requirement for system packages.
 
On Fri, 2012-10-12 at 16:38 -0400, Walter Dnes wrote:
> It's my understanding that higher EAPI levels include more features.
> How backwards compatable are the EAPI levels? I.e. assume that we take
> an ebuild with EAPI 0, and slap in EAPI=1 (or 2 or 3, etc) at the top,
> without any other changes. Are there any circumstances where the ebuild
> would behave differently and/or break?

See http://devmanual.gentoo.org/ebuild-writing/eapi/index.html

Updating an ebuild from EAPI0 to EAPI1 without changes should be safe.

Updating from EAPI0 to EAPI2 or higher without changes is not safe; at
the minimum, econf calls would need to be moved from src_compile to
src_configure.

Ryan Hill 10-13-2012 03:10 AM

Drop EAPI=0 requirement for system packages.
 
On Fri, 12 Oct 2012 12:53:15 +0200
Ralph Sennhauser <sera@gentoo.org> wrote:

> The EAPI=0 requirement comes from having to provide an update path for
> systems with a package manager without EAPI support. By now we are
> talking about really ancient systems and it's questionable if there is
> any merit in supporting such.
>
> Further the situation is that some of the maintainers of must be EAPI 0
> ebuilds already moved on as the majority of users will profit from a
> bump. As a result the clean upgrade path is already borked and the
> value of keeping others at EAPI=0 deteriorates further and further.

Yeah as soon as python went it was pretty much pointless. I don't see any
value in forcing system packages to EAPI 0 anymore. Everything you're saying
makes sense to me at least.

I'd argue against deprecating EAPI 0 any time soon though. Killing EAPI 1
would be a better idea.


--
gcc-porting
toolchain, wxwidgets we were never more here, expanse getting broader
@ gentoo.org but bigger boats been done by less water

Ralph Sennhauser 10-13-2012 06:28 AM

Drop EAPI=0 requirement for system packages.
 
On Fri, 12 Oct 2012 21:10:23 -0600
Ryan Hill <dirtyepic@gentoo.org> wrote:

> I'd argue against deprecating EAPI 0 any time soon though. Killing
> EAPI 1 would be a better idea.

I'm not for forced EAPI bumps anytime soon, but I expect EAPI 0 to be
gone from tree in 3-5 years once the EAPI=0 requirement is lifted.

Currently we have only 6 official EAPIs which is still manageable to
remember the details of each. Though it might be confusing for new
developers. Once we are at 20 EAPIs it will be an issue also for
seasoned folks.

Therefore deprecation is a given, how to go about it is certainly up to
discussion. What do you see as an acceptable path here?


All times are GMT. The time now is 10:06 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.