|  | @@ -38,33 +38,36 @@ argp.add_argument('-j', '--jobs', type=int, default=multiprocessing.cpu_count())
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  args = argp.parse_args()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +# the libraries for which check bloat difference is calculated
 | 
	
		
			
				|  |  |  LIBS = [
 | 
	
		
			
				|  |  |      'libgrpc.so',
 | 
	
		
			
				|  |  |      'libgrpc++.so',
 | 
	
		
			
				|  |  |  ]
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -def build(where):
 | 
	
		
			
				|  |  | -    subprocess.check_call('make -j%d' % args.jobs, shell=True, cwd='.')
 | 
	
		
			
				|  |  | -    shutil.rmtree('bloat_diff_%s' % where, ignore_errors=True)
 | 
	
		
			
				|  |  | -    os.rename('libs', 'bloat_diff_%s' % where)
 | 
	
		
			
				|  |  | +def _build(output_dir):
 | 
	
		
			
				|  |  | +    """Perform the cmake build under the output_dir."""
 | 
	
		
			
				|  |  | +    shutil.rmtree(output_dir, ignore_errors=True)
 | 
	
		
			
				|  |  | +    subprocess.check_call('mkdir -p %s' % output_dir, shell=True, cwd='.')
 | 
	
		
			
				|  |  | +    subprocess.check_call(
 | 
	
		
			
				|  |  | +        'cmake -DgRPC_BUILD_TESTS=OFF -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo ..',
 | 
	
		
			
				|  |  | +        shell=True,
 | 
	
		
			
				|  |  | +        cwd=output_dir)
 | 
	
		
			
				|  |  | +    subprocess.check_call('make -j%d' % args.jobs, shell=True, cwd=output_dir)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -build('new')
 | 
	
		
			
				|  |  | +_build('bloat_diff_new')
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  if args.diff_base:
 | 
	
		
			
				|  |  | -    old = 'old'
 | 
	
		
			
				|  |  |      where_am_i = subprocess.check_output(
 | 
	
		
			
				|  |  |          ['git', 'rev-parse', '--abbrev-ref', 'HEAD']).strip()
 | 
	
		
			
				|  |  | +    # checkout the diff base (="old")
 | 
	
		
			
				|  |  |      subprocess.check_call(['git', 'checkout', args.diff_base])
 | 
	
		
			
				|  |  |      subprocess.check_call(['git', 'submodule', 'update'])
 | 
	
		
			
				|  |  |      try:
 | 
	
		
			
				|  |  | -        try:
 | 
	
		
			
				|  |  | -            build('old')
 | 
	
		
			
				|  |  | -        except subprocess.CalledProcessError, e:
 | 
	
		
			
				|  |  | -            subprocess.check_call(['make', 'clean'])
 | 
	
		
			
				|  |  | -            build('old')
 | 
	
		
			
				|  |  | +        _build('bloat_diff_old')
 | 
	
		
			
				|  |  |      finally:
 | 
	
		
			
				|  |  | +        # restore the original revision (="new")
 | 
	
		
			
				|  |  |          subprocess.check_call(['git', 'checkout', where_am_i])
 | 
	
		
			
				|  |  |          subprocess.check_call(['git', 'submodule', 'update'])
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -76,19 +79,19 @@ text = ''
 | 
	
		
			
				|  |  |  for lib in LIBS:
 | 
	
		
			
				|  |  |      text += '****************************************************************\n\n'
 | 
	
		
			
				|  |  |      text += lib + '\n\n'
 | 
	
		
			
				|  |  | -    old_version = glob.glob('bloat_diff_old/opt/%s' % lib)
 | 
	
		
			
				|  |  | -    new_version = glob.glob('bloat_diff_new/opt/%s' % lib)
 | 
	
		
			
				|  |  | +    old_version = glob.glob('bloat_diff_old/%s' % lib)
 | 
	
		
			
				|  |  | +    new_version = glob.glob('bloat_diff_new/%s' % lib)
 | 
	
		
			
				|  |  |      assert len(new_version) == 1
 | 
	
		
			
				|  |  |      cmd = 'third_party/bloaty/bloaty -d compileunits,symbols'
 | 
	
		
			
				|  |  |      if old_version:
 | 
	
		
			
				|  |  |          assert len(old_version) == 1
 | 
	
		
			
				|  |  |          text += subprocess.check_output('%s %s -- %s' %
 | 
	
		
			
				|  |  |                                          (cmd, new_version[0], old_version[0]),
 | 
	
		
			
				|  |  | -                                        shell=True)
 | 
	
		
			
				|  |  | +                                        shell=True).decode()
 | 
	
		
			
				|  |  |      else:
 | 
	
		
			
				|  |  |          text += subprocess.check_output('%s %s' % (cmd, new_version[0]),
 | 
	
		
			
				|  |  | -                                        shell=True)
 | 
	
		
			
				|  |  | +                                        shell=True).decode()
 | 
	
		
			
				|  |  |      text += '\n\n'
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -print text
 | 
	
		
			
				|  |  | +print(text)
 | 
	
		
			
				|  |  |  check_on_pr.check_on_pr('Bloat Difference', '```\n%s\n```' % text)
 |