FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Gentoo > Gentoo Development

 
 
LinkBack Thread Tools
 
Old 12-08-2011, 09:24 PM
Mike Frysinger
 
Default multiple inclusion protection with eclasses

ferringb did some tests and found that doing multiple inclusion protection in
eclasses gets us some nice speed ups. it isn't nearly as nice as if we had a
way of skipping the `source` altogether, but that that would require PMS/tree
changes. the change i'm proposing can be implemented $now and should work
with all versions. PMS extensions can thus be discussed in parallel.

simply put, it's the same thing as doing standard #ifdef logic in headers to
protect against multiple inclusion errors. on to the example:

--- autotools.eclass
+++ autotools.eclass
@@ -10,6 +10,9 @@
# This eclass is for safely handling autotooled software packages that need
# regenerate their build scripts. All functions will abort in case of

+if [[ ${___ECLASS_ONCE_AUTOTOOLS} != "recur -_+^+_- spank" ]] ; then
+___ECLASS_ONCE_AUTOTOOLS="recur -_+^+_- spank"
+
inherit eutils libtool

# @ECLASS-VARIABLE: WANT_AUTOCONF
@@ -399,3 +402,5 @@

echo $include_opts
}
+
+fi

this assumes that the eclass in question isn't doing something weird. for
example, if you had an ebuild today that did:
inherit eutils
epatch() { die erp; }
inherit eutils

that local epatch() would get reset by the eutils inherit. but i can't see
any ebuild having a valid reason for doing things like this, so screw 'em.

i plan on implementing this in the eclasses i generally look over. i don't
plan on doing it for all eclasses since i'm not familiar with them.
-mike
 

Thread Tools




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

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org