diff -u -r --exclude portage_dep.py --exclude .svn --exclude '*.pyo' --exclude '*.pyc' ./bin/ebuild.sh /home/skyfw/gentoo/portage-chroot-2/usr/lib/portage/bin/ebuild.sh --- ./bin/ebuild.sh 2006-02-12 21:37:12.420936750 -0500 +++ /home/skyfw/gentoo/portage-chroot-2/usr/lib/portage/bin/ebuild.sh 2006-02-12 11:22:27.000000000 -0500 @@ -949,7 +949,7 @@ CXXFLAGS DEPEND EXTRA_ECONF EXTRA_EINSTALL EXTRA_MAKE \ FEATURES INHERITED IUSE LDFLAGS LIBCFLAGS LIBCXXFLAGS \ LICENSE PDEPEND PF PKGUSE PROVIDE RDEPEND RESTRICT SLOT \ - KEYWORDS HOMEPAGE SRC_URI DESCRIPTION; do + KEYWORDS HOMEPAGE SRC_URI DESCRIPTION IUSE_DEFAULTS; do [ -n "${!f}" ] && echo $(echo "${!f}" | tr '\n,\r,\t' ' , , ' | sed s/' \+'/' '/g) > ${f} done echo "${USE}" > USE @@ -1857,7 +1857,7 @@ if [ "${EBUILD_PHASE}" != "depend" ]; then # Lock the dbkey variables after the global phase declare -r DEPEND RDEPEND SLOT SRC_URI RESTRICT HOMEPAGE LICENSE DESCRIPTION - declare -r KEYWORDS INHERITED IUSE PDEPEND PROVIDE + declare -r KEYWORDS INHERITED IUSE PDEPEND PROVIDE IUSE_DEFAULTS fi set +f @@ -1950,6 +1950,7 @@ echo `echo "$KEYWORDS"` >> $dbkey echo `echo "$INHERITED"` >> $dbkey echo `echo "$IUSE"` >> $dbkey + echo `echo "$IUSE_DEFAULTS"` >> $dbkey echo >> $dbkey echo `echo "$PDEPEND"` >> $dbkey echo `echo "$PROVIDE"` >> $dbkey @@ -1960,7 +1961,6 @@ echo `echo "$UNUSED_04"` >> $dbkey echo `echo "$UNUSED_05"` >> $dbkey echo `echo "$UNUSED_06"` >> $dbkey - echo `echo "$UNUSED_07"` >> $dbkey set +f #make sure it is writable by our group: exit 0 diff -u -r --exclude portage_dep.py --exclude .svn --exclude '*.pyo' --exclude '*.pyc' ./bin/emerge /home/skyfw/gentoo/portage-chroot-2/usr/lib/portage/bin/emerge --- ./bin/emerge 2006-02-12 21:37:12.408936000 -0500 +++ /home/skyfw/gentoo/portage-chroot-2/usr/lib/portage/bin/emerge 2006-02-12 21:51:18.000000000 -0500 @@ -965,7 +965,7 @@ return 1 if myuse == None: - self.pkgsettings.setcpv(mykey) + self.pkgsettings.setcpv(mykey,treedbapi=portage.db[myroot]["porttree"].dbapi) myuse = self.pkgsettings["USE"].split() self.applied_useflags[mykey] = myuse diff -u -r --exclude portage_dep.py --exclude .svn --exclude '*.pyo' --exclude '*.pyc' ./pym/portage.py /home/skyfw/gentoo/portage-chroot-2/usr/lib/portage/pym/portage.py --- ./pym/portage.py 2006-02-12 21:37:10.116792750 -0500 +++ /home/skyfw/gentoo/portage-chroot-2/usr/lib/portage/pym/portage.py 2006-02-12 21:55:23.000000000 -0500 @@ -932,11 +932,12 @@ self.configlist[-1] = os.environ.copy() self.configdict = { "globals": self.configlist[0], "defaults": self.configlist[1], - "conf": self.configlist[2], - "pkg": self.configlist[3], - "auto": self.configlist[4], - "backupenv": self.configlist[5], - "env": self.configlist[6] } + "iuse_defaults": self.configlist[2], + "conf": self.configlist[3], + "pkg": self.configlist[4], + "auto": self.configlist[5], + "backupenv": self.configlist[6], + "env": self.configlist[7] } self.profiles = copy.deepcopy(clone.profiles) self.backupenv = copy.deepcopy(clone.backupenv) self.pusedict = copy.deepcopy(clone.pusedict) @@ -1074,6 +1075,9 @@ writemsg("!!! Incorrect multiline literals can cause this. Do not use them.\n") sys.exit(1) + # this list code makes baby jesus cry :/ + self.configlist.append({}) + self.configdict["iuse_defaults"]=self.configlist[-1] self.configlist.append(self.mygcfg) self.configdict["conf"]=self.configlist[-1] @@ -1201,7 +1205,7 @@ if not useorder: # reasonable defaults; this is important as without USE_ORDER, # USE will always be "" (nothing set)! - useorder="env:pkg:conf:auto:defaults" + useorder="env:pkg:conf:iuse_defaults:auto:defaults" useordersplit=useorder.split(":") self.uvlist=[] @@ -1346,21 +1350,30 @@ return 1 return 0 - def setcpv(self,mycpv,use_cache=1): - self.modifying() - self.mycpv = mycpv - cp = dep_getkey(mycpv) - newpuse = "" - if self.pusedict.has_key(cp): - self.pusekey = best_match_to_list(self.mycpv, self.pusedict[cp].keys()) - if self.pusekey: - newpuse = string.join(self.pusedict[cp][self.pusekey]) - if newpuse == self.puse: - return - self.puse = newpuse - self.configdict["pkg"]["PKGUSE"] = self.puse[:] # For saving to PUSE file - self.configdict["pkg"]["USE"] = self.puse[:] # this gets appended to USE - self.reset(keeping_pkg=1,use_cache=use_cache) + def setcpv(self,mycpv, treedbapi = None, use_cache=1 ): + self.modifying() + self.mycpv = mycpv + cp = dep_getkey(mycpv) + newpuse = "" + if self.pusedict.has_key(cp): + self.pusekey = best_match_to_list(self.mycpv, self.pusedict[cp].keys()) + if self.pusekey: + newpuse = string.join(self.pusedict[cp][self.pusekey]) + if newpuse != self.puse: + self.puse = newpuse + self.configdict["pkg"]["PKGUSE"] = self.puse[:] # For saving to PUSE file + self.configdict["pkg"]["USE"] = self.puse[:] # this gets appended to USE + if treedbapi: + iuse = "" + iuse_defaults = treedbapi.aux_get( self.mycpv, ["IUSE_DEFAULTS"] )[0].split() + for flag in iuse_defaults: + if flag[0:1] == '+': + iuse += flag[1:] # flags don't take +'s + else: + iuse += flag # -flag stays in as minux so it stacks. + iuse += " " + self.configdict["iuse_defaults"]["USE"] = iuse # any flags that should be flicked on or off + self.reset(keeping_pkg=1,use_cache=use_cache) def setinst(self,mycpv,mydbapi): # Grab the virtuals this package provides and add them into the tree virtuals. @@ -4649,10 +4667,10 @@ auxdbkeys=[ 'DEPEND', 'RDEPEND', 'SLOT', 'SRC_URI', 'RESTRICT', 'HOMEPAGE', 'LICENSE', 'DESCRIPTION', - 'KEYWORDS', 'INHERITED', 'IUSE', 'CDEPEND', + 'KEYWORDS', 'INHERITED', 'IUSE', 'IUSE_DEFAULTS', 'CDEPEND', 'PDEPEND', 'PROVIDE', 'EAPI', 'UNUSED_01', 'UNUSED_02', 'UNUSED_03', 'UNUSED_04', - 'UNUSED_05', 'UNUSED_06', 'UNUSED_07', + 'UNUSED_05', 'UNUSED_06', ] auxdbkeylen=len(auxdbkeys)