Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 141677 - A standardized way to deprecate eclasses
Summary: A standardized way to deprecate eclasses
Status: RESOLVED WORKSFORME
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Eclasses (show other bugs)
Hardware: All Linux
: High normal
Assignee: Gentoo TreeCleaner Project
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 341961
  Show dependency tree
 
Reported: 2006-07-25 01:46 UTC by Stefan Schweizer (RETIRED)
Modified: 2023-05-11 06:18 UTC (History)
7 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Stefan Schweizer (RETIRED) gentoo-dev 2006-07-25 01:46:37 UTC
and die when it detects one of course.

Jakub posted a list of those deprecated eclasses here: http://rafb.net/paste/results/nkpesC59.html

Additionally kernel-mod.eclass should be in the list. I think the list should be put in /usr/portage/eclass/deprecated but the portage people have to decide about this.

Can we please implement this? :)
Comment 1 Jakub Moc (RETIRED) gentoo-dev 2006-07-25 11:41:48 UTC
Better post it here, pastebins suck ;)

64-bit, darcs, db4-fix, debian, embassy-2.10, embassy-2.9, gcc, gnustep-old, gtk-engines, gtk-engines2, inherit, jakarta-commons, java-pkg, java-utils, kde-base, kde-i18n, kde-source, kmod, koffice-i18n, motif, mozilla, myth, pax-utils, perl-post, php, php-2, php-ext, php-ext-base, php-ext-pecl, php-ext-source, php-lib, php-pear, php-sapi, php5-sapi, php5-sapi-r1,         php5-sapi-r2, php5-sapi-r3, tla, webapp-apache, xfree
Comment 2 Zac Medico gentoo-dev 2006-07-25 13:05:00 UTC
We should store the list of deprecated eclasses in the portage tree somewhere so that we don't have to hard code them in repoman.  How about $PORTDIR/metadata/eclass.deprecated?  Should this check result in a warning or be fatal?
Comment 3 Alec Warner (RETIRED) archtester gentoo-dev Security 2006-07-25 15:00:49 UTC
(In reply to comment #2)
> We should store the list of deprecated eclasses in the portage tree somewhere
> so that we don't have to hard code them in repoman.  How about
> $PORTDIR/metadata/eclass.deprecated?  Should this check result in a warning or
> be fatal?
> 

Fatal, as long as the upgrade path is provided.

In this case comments should be required in the eclass.deprecated file, such that in the event of a repoman fatal error repoman can print the comment (similar to package.mask).

something like:
repoman scan
eclass.deprecated - foo.ebuild attempted to use really-old.eclass, please fix the ebuild to work with shiny-new.eclass

eclass.deprecated:
really-old.eclass shiny-new.eclass
Comment 4 Marius Mauch (RETIRED) gentoo-dev 2006-07-27 11:15:08 UTC
Do not put it into $PORTDIR/metadata. How about a new dir for repoman data, I don't think this will the only file we'll ever need for repoman (in fact we already have another one, metadata.dtd), so a separate location makes sense (allow users to exclude them on sync).
Comment 5 Zac Medico gentoo-dev 2006-07-27 11:22:50 UTC
Perhaps $PORTDIR/eclass/deprecated would be a logical location?  After thinking a bit, I want it directly in $PORTDIR/metadata either.  We could make a subdirectory for QA metadata. Perhaps $PORTDIR/metadata/qa/eclass.deprecated?
Comment 6 Zac Medico gentoo-dev 2006-07-27 14:19:04 UTC
Marius has helped convince me that metadata/ should be reserved for files that are pulled in from places other than gentoo-x86 specifically for convenient distribution via the rsync tree.  If we add a metadata/ directory to gentoo-86 itself and overlay it with the existing stuff then it would be needlessly messy.

So, how about $PORTDIR/qa-data/eclass.deprecated then?  We should announce this on the -dev list since all the devs will need to know about this file.
Comment 7 Zac Medico gentoo-dev 2006-07-29 08:18:36 UTC
(In reply to comment #3)
> Fatal, as long as the upgrade path is provided.
> 
> In this case comments should be required in the eclass.deprecated file, such
> that in the event of a repoman fatal error repoman can print the comment
> (similar to package.mask).

Why clutter the file with with comments that basically say "never use this eclass and use something else instead"?  Can't they just put some kind of comment in the old eclass itself about why the eclass is deprecated and a suggested migration path?  Eclass deprecation shouldn't be a reversible process like package masking is, so comments in the deprecation file don't seem nearly as useful.
Comment 8 Simon Stelling (RETIRED) gentoo-dev 2006-07-29 10:19:45 UTC
> Fatal, as long as the upgrade path is provided.

From an arch tester point of view, this is very annoying. It would likely result in arch devs being unable to stablize newer ebuilds which are fixed because old ones still inherit the deprecated eclasses, like in the case of modular X. But if it doesn't fail, people problably won't fix it, so... *shrug*
Comment 9 Alec Warner (RETIRED) archtester gentoo-dev Security 2006-07-30 12:40:31 UTC
(In reply to comment #8)
> > Fatal, as long as the upgrade path is provided.
> 
> From an arch tester point of view, this is very annoying. It would likely
> result in arch devs being unable to stablize newer ebuilds which are fixed
> because old ones still inherit the deprecated eclasses, like in the case of
> modular X. But if it doesn't fail, people problably won't fix it, so... *shrug*
> 

It's moreso for me a class of "what is fatal and what is not"

Ebuilds that will fail due to invalid spacing, or just brokenness are fatal, ebuilds missing key variables are fatal, ebuilds inheriting eclasses that are broken/deprecated, are fatal.

Ebuilds missing modular X deps, not so fatal.

I think a fatal error is good, as long as everyone understands that ebuilds should be migrated prior to marking an eclass as deprecated.

Aka you grep the tree for violators and file bugs, once those bugs are closed, file again, find 0 ebuilds, deprecate.

Not, Oh I want this eclass deprecated, so deprecate it and then screw over everyone trying to do actual work.

The intent for this check is to prevent new devs and new ebuilds from inheriting eclasses that "look ok" but may in fact be old/deprecated.
Comment 10 Simon Stelling (RETIRED) gentoo-dev 2006-07-31 00:38:55 UTC
(In reply to comment #9)
> Aka you grep the tree for violators and file bugs, once those bugs are closed,
> file again, find 0 ebuilds, deprecate.

Given that fact, I'm all for making it fatal.
Comment 11 Zac Medico gentoo-dev 2006-07-31 02:57:08 UTC
Well, we could do both. How about eclass.deprecated and eclass.obsolete?
Comment 12 Marius Mauch (RETIRED) gentoo-dev 2006-07-31 09:22:38 UTC
(In reply to comment #11)
> Well, we could do both. How about eclass.deprecated and eclass.obsolete?

I'd rather not, gets too confusing IMHO.
Comment 13 Zac Medico gentoo-dev 2006-08-01 12:00:25 UTC
(In reply to comment #12)
> I'd rather not, gets too confusing IMHO.

Fair enough.  I guess the scripts (other than repoman) that people use to scan for such things will fill the gap until we're ready to fully deprecate an eclass.

If we're all satisfied with $PORTDIR/qa-data/eclass.deprecated then it's about time that we announce it on -dev and get the file added to the repo.
Comment 14 Stefan Schweizer (RETIRED) gentoo-dev 2007-02-11 11:25:37 UTC
obviously no one is interested there ..
Comment 15 Simon Stelling (RETIRED) gentoo-dev 2007-02-11 11:57:26 UTC
i am
Comment 16 Jakub Moc (RETIRED) gentoo-dev 2008-02-17 21:19:28 UTC
Dunno, but we should agree upon a way of deprecating eclasses first -> sending to PMS folks. ;)
Comment 17 Ulrich Müller gentoo-dev 2011-04-10 22:46:23 UTC
Not sure what PMS should say about this. Eclass removal policy has been addressed by the council, see bug 341959.

Closing.