diff --git a/tools/profiling/bloat/bloat_diff.py b/tools/profiling/bloat/bloat_diff.py index 81e183b4f05..3dd4dbe01b8 100755 --- a/tools/profiling/bloat/bloat_diff.py +++ b/tools/profiling/bloat/bloat_diff.py @@ -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)