@ -6,6 +6,7 @@ the reclient lifecycle safely. It will automatically start
reproxy before running ninja and stop reproxy when build stops
reproxy before running ninja and stop reproxy when build stops
for any reason e . g . build completion , keyboard interrupt etc . """
for any reason e . g . build completion , keyboard interrupt etc . """
import atexit
import contextlib
import contextlib
import datetime
import datetime
import hashlib
import hashlib
@ -194,14 +195,23 @@ def set_reproxy_path_flags(out_dir, make_dirs=True):
Windows Only :
Windows Only :
RBE_server_address = pipe : / / md5 ( out_dir / . reproxy_tmp ) / reproxy . pipe
RBE_server_address = pipe : / / md5 ( out_dir / . reproxy_tmp ) / reproxy . pipe
"""
"""
os . environ . setdefault ( " AUTONINJA_BUILD_ID " , str ( uuid . uuid4 ( ) ) )
os . environ . setdefault ( " AUTONINJA_BUILD_ID " , str ( uuid . uuid4 ( ) ) )
run_sub_dir = datetime_now ( ) . strftime (
' % Y % m %d T % H % M % S. %f ' ) + " _ " + os . environ [ " AUTONINJA_BUILD_ID " ]
tmp_dir = os . path . abspath ( os . path . join ( out_dir , ' .reproxy_tmp ' ) )
tmp_dir = os . path . abspath ( os . path . join ( out_dir , ' .reproxy_tmp ' ) )
log_dir = os . path . join ( tmp_dir , ' logs ' )
log_dir = os . path . join ( tmp_dir , ' logs ' )
run_log_dir = os . path . join (
run_log_dir = os . path . join ( log_dir , run_sub_dir )
log_dir ,
datetime_now ( ) . strftime ( ' % Y % m %d T % H % M % S. %f ' ) + " _ " +
os . environ [ " AUTONINJA_BUILD_ID " ] )
racing_dir = os . path . join ( tmp_dir , ' racing ' )
racing_dir = os . path . join ( tmp_dir , ' racing ' )
run_racing_dir = os . path . join ( racing_dir , run_sub_dir )
# Clear out old racing directories, if there are any. They are kept
# for a single build in the event the contents are needed for debugging.
if os . path . exists ( racing_dir ) :
for rcd in os . listdir ( racing_dir ) :
if os . path . isdir ( os . path . join ( racing_dir , rcd ) ) :
shutil . rmtree ( os . path . join ( racing_dir , rcd ) )
cache_dir = find_cache_dir ( tmp_dir )
cache_dir = find_cache_dir ( tmp_dir )
if make_dirs :
if make_dirs :
if os . path . isfile ( os . path . join ( log_dir , " rbe_metrics.txt " ) ) :
if os . path . isfile ( os . path . join ( log_dir , " rbe_metrics.txt " ) ) :
@ -219,6 +229,8 @@ def set_reproxy_path_flags(out_dir, make_dirs=True):
os . makedirs ( run_log_dir , exist_ok = True )
os . makedirs ( run_log_dir , exist_ok = True )
os . makedirs ( cache_dir , exist_ok = True )
os . makedirs ( cache_dir , exist_ok = True )
os . makedirs ( racing_dir , exist_ok = True )
os . makedirs ( racing_dir , exist_ok = True )
os . makedirs ( run_racing_dir , exist_ok = True )
old_log_dirs = [
old_log_dirs = [
d for d in os . listdir ( log_dir )
d for d in os . listdir ( log_dir )
if os . path . isdir ( os . path . join ( log_dir , d ) )
if os . path . isdir ( os . path . join ( log_dir , d ) )
@ -233,7 +245,7 @@ def set_reproxy_path_flags(out_dir, make_dirs=True):
os . environ . setdefault ( " RBE_proxy_log_dir " , run_log_dir )
os . environ . setdefault ( " RBE_proxy_log_dir " , run_log_dir )
os . environ . setdefault ( " RBE_log_dir " , run_log_dir )
os . environ . setdefault ( " RBE_log_dir " , run_log_dir )
os . environ . setdefault ( " RBE_cache_dir " , cache_dir )
os . environ . setdefault ( " RBE_cache_dir " , cache_dir )
os . environ . setdefault ( " RBE_racing_tmp_dir " , r acing_dir)
os . environ . setdefault ( " RBE_racing_tmp_dir " , r un_r acing_dir)
if sys . platform . startswith ( ' win ' ) :
if sys . platform . startswith ( ' win ' ) :
pipe_dir = hashlib . md5 ( tmp_dir . encode ( ) ) . hexdigest ( )
pipe_dir = hashlib . md5 ( tmp_dir . encode ( ) ) . hexdigest ( )
os . environ . setdefault ( " RBE_server_address " ,
os . environ . setdefault ( " RBE_server_address " ,
@ -294,7 +306,9 @@ def build_context(argv, tool):
try :
try :
set_reproxy_path_flags ( ninja_out )
set_reproxy_path_flags ( ninja_out )
except OSError as e :
except OSError as e :
print ( f " Error creating reproxy_tmp in output dir: { e } " , file = sys . stderr )
print (
f " Error creating reproxy temporary directories in output dir: { e } " ,
file = sys . stderr )
yield 1
yield 1
return
return