All pastes #1863338 Raw Edit

Unbenannt

public diff v1 · immutable
#1863338 ·published 2010-04-16 14:41 UTC
rendered paste body
Index: kdesettings-example.bat===================================================================--- kdesettings-example.bat	(Revision 1115374)+++ kdesettings-example.bat	(Arbeitskopie)@@ -178,6 +178,10 @@ rem for all other packages this option doesn't have any effect rem set EMERGE_DEFAULTCATEGORY=kde-4.3 +rem This option can be used to set a directory where build logs are saved+rem instead of being printed to the console.+rem set EMERGE_LOG_DIR=%KDEROOT%\buildlogs+ rem No editing should be necessary below this line (in an ideal world) rem ################################################################## Index: bin/utils.py===================================================================--- bin/utils.py	(Revision 1115374)+++ bin/utils.py	(Arbeitskopie)@@ -420,15 +420,26 @@     print >> sys.stderr, "emerge fatal error: %s" % message     exit( 1 ) -def system( cmdstring, outstream=sys.stdout, errstream=sys.stderr ):+def system( cmdstring, outstream=None, errstream=None ):++    if outstream is None: outstream = sys.stdout+    if errstream is None: errstream = sys.stderr+     debug( "executing command: %s" % cmdstring, 1 )-    if verbose() == 0 and outstream == sys.stdout and errstream == sys.stderr:-        sys.stderr = file('test.outlog', 'wb')-        sys.stdout = sys.stderr-    p = subprocess.Popen( cmdstring, shell=True, stdout=outstream, stderr=errstream )-    ret = p.wait()-    sys.stderr = sys.__stderr__-    sys.stdout = sys.__stdout__+    redirected = False+    try:+        if verbose() == 0 and outstream == sys.stdout and errstream == sys.stderr:+            redirected = True+            sys.stderr = file('test.outlog', 'wb')+            sys.stdout = sys.stderr++        p = subprocess.Popen( cmdstring, shell=True, stdout=outstream, stderr=errstream )+        ret = p.wait()+    finally:+        if redirected:+            sys.stderr = sys.__stderr__+            sys.stdout = sys.__stdout__+     return ( ret == 0 )  def systemWithoutShell(cmdstring, outstream=sys.stdout, errstream=sys.stderr):@@ -895,3 +906,31 @@     cmd = "patch -d %s -p%s < %s" % ( sourceDir, patchLevel, file )         debug("applying patch %s" % ( cmd ), 2)     return system( cmd )++def log(fn):+    def inner(*args, **argv):++        logdir = os.environ.get('EMERGE_LOG_DIR')++        if not logdir:+            return fn(*args, **argv)++        if not os.path.exists(logdir):+            os.mkdir(logdir)+        +        logfile = "%s-%s-%s.log" % (args[0], args[1], args[2])++        logfile = os.path.join(logdir, logfile)+        f = open(logfile, "a+")+        try:+            old_out = sys.stdout+            old_err = sys.stderr+            sys.stdout = f+            sys.stderr = f+            return fn(*args, **argv)+        finally:+            sys.stdout = old_out+            sys.stderr = old_err+            f.close()++    return innerIndex: bin/emerge.py===================================================================--- bin/emerge.py	(Revision 1115374)+++ bin/emerge.py	(Arbeitskopie)@@ -92,6 +92,8 @@                                 star in the printout of --print-targets --patchlevel=[PATCHLEVEL]       This will add a patch level when used together                                  with --package                               +--log-dir=[LOG_DIR]             This will log the build output to a logfile in+                                LOG_DIR for each package.  -i          ignore install: using this option will install a package over an             existing install. This can be useful if you want to check some@@ -140,6 +142,7 @@  """ +@utils.log def doExec( category, package, version, action, opts ):     utils.debug( "emerge doExec called. action: %s opts: %s" % (action, opts), 2 )     fileName = portage.getFilename( category, package, version )@@ -226,6 +229,7 @@ environ["EMERGE_BUILDTYPE"]     = os.getenv( "EMERGE_BUILDTYPE" ) environ["EMERGE_TARGET"]        = os.getenv( "EMERGE_TARGET" ) environ["EMERGE_TARGET"]        = os.getenv( "EMERGE_PKGPATCHLVL" )+environ["EMERGE_LOG_DIR"]       = os.getenv( "EMERGE_LOG_DIR" )  if ( environ['EMERGE_NOCOPY'] == "False" ):     nocopy = False@@ -269,6 +273,8 @@         os.environ["EMERGE_TARGET"] = i.replace( "--target=", "" )     elif ( i.startswith( "--patchlevel=" ) ):         os.environ["EMERGE_PKGPATCHLVL"] = i.replace( "--patchlevel=", "" )+    elif ( i.startswith( "--log-dir=" ) ):+        os.environ["EMERGE_LOG_DIR"] = i.replace( "--log-dir=", "" )     elif ( i == "-v" ):         verbose = verbose + 1         os.environ["EMERGE_VERBOSE"] = str( verbose )