[gentoo-portage-dev] confcache, final chance to ixnay it

2006-02-02 Thread Brian Harring
Yo...

attached is a patch enabling confcache support for portage.  Lots of 
testing, plus fixups from comments from folks prior.

So... giving it a few days, nows the time to bitch if you dislike the 
implementation (and no, I'm not rewriting all of doebuild just for 
this :)
~harring
Index: pym/portage.py
===
--- pym/portage.py  (revision 2622)
+++ pym/portage.py  (working copy)
@@ -2666,7 +2666,38 @@
print !!! Perhaps: rm -Rf,mysettings[BUILD_PREFIX]
print !!!,str(e)
return 1
+   try:
+   if confcache in features:
+   if not mysettings.has_key(CONFCACHE_DIR):
+   mysettings[CONFCACHE_DIR] = 
os.path.join(mysettings[PORTAGE_TMPDIR], confcache)
+   if not 
os.path.exists(mysettings[CONFCACHE_DIR]):
+   if not os.getuid() == 0:
+   # we're boned.
+   features.remove(confcache)
+   mysettings[FEATURES] =  
.join(features)
+   else:
+   
os.makedirs(mysettings[CONFCACHE_DIR], mode=0775)
+   
os.chown(mysettings[CONFCACHE_DIR], -1, portage_gid)
+   else:
+   st = 
os.stat(mysettings[CONFCACHE_DIR])
+   if not (st.st_mode  0)  == 0775:
+   
os.chmod(mysettings[CONFCACHE_DIR], 0775)
+   if not st.st_gid == portage_gid:
+   
os.chown(mysettings[CONFCACHE_DIR], -1, portage_gid)
 
+   # check again, since it may have been disabled.
+   if confcache in features:
+   for x in listdir(mysettings[CONFCACHE_DIR]):
+   p = 
os.path.join(mysettings[CONFCACHE_DIR], x)
+   st = os.stat(p)
+   if not (st.st_mode  0)  07600 == 
0600:
+   os.chmod(p, (st.st_mode  0777) 
| 0600)
+   if not st.st_gid == portage_gid:
+   os.chown(p, -1, portage_gid)
+   
+   except OSError, e:
+   print !!! Failed resetting perms on confcachedir %s % 
mysettings[CONFCACHE_DIR]
+   return 1
#try:
#   mystat=os.stat(mysettings[CCACHE_DIR])
#   if (mystat[stat.ST_GID]!=portage_gid) or 
((mystat[stat.ST_MODE]02070)!=02070):
Index: bin/ebuild.sh
===
--- bin/ebuild.sh   (revision 2622)
+++ bin/ebuild.sh   (working copy)
@@ -493,7 +493,32 @@
LOCAL_EXTRA_ECONF=--libdir=${CONF_LIBDIR_RESULT} 
${LOCAL_EXTRA_ECONF}
fi
 
-   echo ${ECONF_SOURCE}/configure \
+   local TMP_CONFCACHE_DIR CONFCACHE_ARG
+   if hasq confcache $FEATURES  ! hasq confcache $RESTRICT; then
+   CONFCACHE=$(type -p confcache)
+   if [ -z ${CONFCACHE} ]; then
+   ewarn disabling confcache, binary cannot be 
found
+   else
+   CONFCACHE=${CONFCACHE/ /\ }
+   
TMP_CONFCACHE_DIR=${CONFCACHE:+${CONFCACHE_DIR:-${PORTAGE_TMPDIR}/confcache}}
+   TMP_CONFCACHE_DIR=${TMP_CONFCACHE_DIR/ /\ }
+   CONFCACHE_ARG=--confcache-dir
+   local s
+   if [ -n $CCACHE_DIR ]; then
+   s=$CCACHE_DIR
+   fi
+   if [ -n $DISTCC_DIR ]; then
+   s=${s:+${s}:}$DISTCC_DIR
+   fi
+   if [ -n $s ]; then
+   CONFCACHE_ARG=--confcache-ignore $s 
$CONFCACHE_ARG
+   fi
+   fi
+   else
+   CONFCACHE=
+   fi
+
+   echo ${CONFCACHE} ${CONFCACHE_ARG} ${TMP_CONFCACHE_DIR} 
${ECONF_SOURCE}/configure \
--prefix=/usr \
--host=${CHOST} \
--mandir=/usr/share/man \
@@ -504,7 +529,7 @@

Re: [gentoo-portage-dev] confcache, final chance to ixnay it

2006-02-02 Thread Jason Stubbs
On Thursday 02 February 2006 21:12, Brian Harring wrote:
 Yo...
 
 attached is a patch enabling confcache support for portage.  Lots of 
 testing, plus fixups from comments from folks prior.
 
 So... giving it a few days, nows the time to bitch if you dislike the 
 implementation (and no, I'm not rewriting all of doebuild just for 
 this :)

Happy here. If there were no other issues, may as well go ahead with it
earlier rather than later. Spread the goodness (or something like that ;)

--
Jason Stubbs
-- 
gentoo-portage-dev@gentoo.org mailing list