Line 3517 in 2.0.48-r3: 3510 for myeclass in myeclasses: 3511 myret=eclass(myeclass,mycpv,dmtime) 3512 #print "eclass '",myeclass,"':",myret,doregen,doregen2 3513 if myret==None: 3514 # eclass is missing... We'll die if it doesn't get fixed on regen 3515 doregen2=1 3516 break 3517 if myret==0 and not usingmdcache: 3518 #print "((( 002 0" 3519 #we set doregen2 to regenerate this entry in case it was fixed 3520 #in the ebuild/eclass since the cache entry was created. 3521 #print "Old cache entry. Regen." 3522 doregen2=1 3523 break I believe this should be "if myret==0 and usingmdcache:". The point of this clause is to regenerate the cache file if it isn't current with one of its eclasses. "usingmdcache" implies that we copied the metadata version and therefore want to update that old cache entry. "not usingmdcache" implies that in the first doregen clause we regenerated it. Reproducible: Always Steps to Reproduce: 1. 2. 3.
No... That clause is to force a recreation of the cache file. If you are using the metadatacache, you are not interested in regenerating the cachefile, as you are copying it from the server-generated files instead. The metadatacache is used to short-circuit the long task of regeneration, and is _only_ used during 'emerge sync'.