I've written a repoman check that looks for ebuilds using deprecated eclasses. The need came up in the Qt herd. At some point we rolled out a second version of our main eclass, however migration to it has been rather slow. Hopefully this check will make more devs aware of the need to migrate. The check accepts a list of deprecated eclasses and their replacements, if any, so it can be used for other eclasses as well :) Thanks :)
Created attachment 237365 [details, diff] repoman check for deprecated eclasses
1) Your check() looks a bit bogus. It looks to me like something like that would suffice: + def check(self, num, line): + pass 2) The longest line in end() could use some white spaces ("+i+" -> "+ i +") and a line break. 3) The qt4.eclass misses a deprecation notice. 4) The following eclass are marked as deprecated: "ruby": "ruby-ng", "qt3": 0, "gems": "ruby-fakegem", "ruby-gnome2": "ruby-ng-gnome2", "php-pear": "php-pear-r1" It would be nicer if this the list wouldn't be hard coded, but I guess it's not that easy. Other than that, looks good. :)
(In reply to comment #2) > It would be nicer if this the list wouldn't be hard coded, but I guess it's not > that easy. Maybe one could agree on a standard header for deprecated eclasses that could be found by a regex. Something like: for eclasses without replacement: # @DEAD for eclasses with replacement: # @DEPRECATED <new-eclass> CCing QA and release for consideration.
Created attachment 242991 [details, diff] updated patch with eclass deprecation check Sorry for the delay. I've fixed all your points :)
(In reply to comment #4) > Created an attachment (id=242991) [details] > updated patch with eclass deprecation check > > Sorry for the delay. I've fixed all your points :) > Why is this a LineCheck at all? This is just a metadata check. if bad_eclasses in metadata['INHERITED'] .... -A
Please add to your list x-modular -> xorg-2 Other than that the patch looks good :)
Ruby team would love to see this soon :)
(In reply to comment #5) > Why is this a LineCheck at all? This is just a metadata check. > > if bad_eclasses in metadata['INHERITED'] .... Maybe do both. Do we care to distinguish between direct and indirect inherits?
(In reply to comment #8) > (In reply to comment #5) > > Why is this a LineCheck at all? This is just a metadata check. > > > > if bad_eclasses in metadata['INHERITED'] .... > > Maybe do both. Do we care to distinguish between direct and indirect inherits? > We should probably distinguish about them and just warn when using eclass with bad inherit and die when using the bad inherit directly (eclasses are fixed slowly than ebuilds :))
(In reply to comment #4) > Created an attachment (id=242991) [details] > updated patch with eclass deprecation check Thanks, that's in git: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=6bfbbbefc91069cb4244cf5a5462e6cef3cef3e6 (In reply to comment #5) > Why is this a LineCheck at all? This is just a metadata check. Support for direct inherits with line numbers: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=c810b639133301f605eabb1c9644d05cc0ff515a Support for indirect inherits, with errors indicating indirect nature: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=93ceaa213a10df814de8e893f4312dc43e2047c4
This is fixed in 2.1.9 and 2.2_rc68.
(In reply to comment #6) > Please add to your list x-modular -> xorg-2 This is in git now: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=9cf77a6c178f435e6747b1d6ab8d6757955e46f2