Add YouTube 16.12 to run_on_app.py

Fixes: 183734568
Change-Id: I8b58be9bb1e162a938d0886c03a290f130bbf776
diff --git a/tools/run_on_app.py b/tools/run_on_app.py
index b58eafb..60cd4f1 100755
--- a/tools/run_on_app.py
+++ b/tools/run_on_app.py
@@ -454,72 +454,62 @@
 def should_build(options):
   return not options.no_build and not options.golem
 
-def build_desugared_library_dex(options, quiet, temp, android_java8_libs, inputs, outdir):
-  if not input:
-    raise Exception("If 'android_java8_libs' is specified the inputs must be explicit"
-       + "(not defined using '-injars' in Proguard configuration files)")
+def build_desugared_library_dex(
+    options,
+    quiet,
+    temp,
+    android_java8_libs,
+    desugared_lib_pg_conf,
+    inputs,
+    outdir):
+  if not inputs:
+    raise Exception(
+        "If 'android_java8_libs' is specified the inputs must be explicit"
+            + "(not defined using '-injars' in Proguard configuration files)")
   if outdir.endswith('.zip') or outdir.endswith('.jar'):
-    raise Exception("If 'android_java8_libs' is specified the output must be a directory")
+    raise Exception(
+        "If 'android_java8_libs' is specified the output must be a directory")
 
   jar = None
   main = None
   if options.hash:
     jar = os.path.join(utils.LIBS, 'r8-' + options.hash + '.jar')
+    main = 'com.android.tools.r8.R8'
 
+  # Determine the l8 tool.
   assert(options.compiler_build in ['full', 'lib'])
   lib_prefix = 'r8lib-' if options.compiler_build == 'lib' else ''
+  tool = lib_prefix + 'l8'
 
-  # Determine the tracereferences tool.
-  tool = lib_prefix + 'tracereferences'
-  if options.hash:
-    main = 'com.android.tools.r8.TraceReferences'
-  tracereferences_output = os.path.join(outdir, 'tracereferences.pgcfg')
-  args = [
-    '--map-diagnostics:MissingDefinitionsDiagnostic', 'error', 'warning',
-    '--keep-rules',
-    '--lib', 'third_party/android_jar/lib-v30/android.jar',
-    '--target', android_java8_libs['library'],
-    '--output', tracereferences_output,
-  ]
-  for source in inputs:
-    args.extend(['--source', source])
-  exit_code = toolhelper.run(tool, args,
-      build=should_build(options),
-      debug=not options.no_debug,
-      quiet=quiet,
-      jar=jar,
-      main=main)
-  if exit_code != 0:
-    raise Exception("tracereferences failed")
-
-  # Determine the r8 tool.
-  tool = lib_prefix + 'r8'
-  if options.compiler_build == 'full':
-    tool = ''
-  else:
-    assert(options.compiler_build == 'lib')
-    tool = 'r8lib-r8'
-  if options.hash:
-    main = 'com.android.tools.r8.R8'
+  # Prepare out directory.
   android_java8_libs_output = os.path.join(temp, 'android_java8_libs')
   os.makedirs(android_java8_libs_output)
+
+  # Prepare arguments for L8.
   args = [
-    '--no-desugaring',
-    '--lib', '%s/android_jar/lib-v30/android.jar' % utils.THIRD_PARTY,
+    '--desugared-lib', android_java8_libs['config'],
+    '--lib', android_java8_libs['library'],
     '--output', android_java8_libs_output,
-    '--pg-conf', tracereferences_output,
-    android_java8_libs['library']
+    '--pg-conf', desugared_lib_pg_conf,
+    '--release',
   ]
-  for pgconf in android_java8_libs['pgconf']:
-    args.extend(['--pg-conf', pgconf])
-  exit_code = toolhelper.run(tool, args,
+  if 'pgconf' in android_java8_libs:
+    for pgconf in android_java8_libs['pgconf']:
+      args.extend(['--pg-conf', pgconf])
+  args.extend(android_java8_libs['program'])
+
+  # Run L8.
+  exit_code = toolhelper.run(
+      tool, args,
       build=should_build(options),
       debug=not options.no_debug,
       quiet=quiet,
       jar=jar,
       main=main)
+
   # Copy the desugared library DEX to the output.
-  dex_file_name = 'classes' + str(len(glob(os.path.join(outdir, '*.dex'))) + 1) + '.dex'
+  dex_file_name = (
+      'classes' + str(len(glob(os.path.join(outdir, '*.dex'))) + 1) + '.dex')
   shutil.copyfile(
       os.path.join(android_java8_libs_output, 'classes.dex'),
       os.path.join(outdir, dex_file_name))
@@ -680,6 +670,15 @@
           additional_pg_conf = GenerateAdditionalProguardConfiguration(
               temp, os.path.abspath(pg_outdir))
           args.extend(['--pg-conf', additional_pg_conf])
+
+      android_java8_libs = values.get('android_java8_libs')
+      if android_java8_libs:
+        desugared_lib_pg_conf = os.path.join(
+            temp, 'desugared-lib-pg-conf.txt')
+        args.extend(['--desugared-lib', android_java8_libs['config']])
+        args.extend(
+            ['--desugared-lib-pg-conf-output', desugared_lib_pg_conf])
+
       stderr_path = os.path.join(temp, 'stderr')
       with open(stderr_path, 'w') as stderr:
         jar = None
@@ -722,9 +721,10 @@
             .format(options.print_memoryuse,
                 utils.grep_memoryuse(options.track_memory_to_file)))
 
-      if 'android_java8_libs' in values:
-        android_java8_libs = values['android_java8_libs']
-        build_desugared_library_dex(options, quiet, temp, android_java8_libs, inputs, outdir)
+      if android_java8_libs:
+        build_desugared_library_dex(
+            options, quiet, temp, android_java8_libs,
+            desugared_lib_pg_conf, inputs, outdir)
 
 
   if options.print_runtimeraw: