Use placeholders in progress_message throughout the Android rules to save analysis time memory.

PiperOrigin-RevId: 990336210
Change-Id: I45ba8e2e06afe1ce4dc440974eb5a808ac7faf7b
diff --git a/mobile_install/apks.bzl b/mobile_install/apks.bzl
index 56fbeeb..f5c5e6f 100644
--- a/mobile_install/apks.bzl
+++ b/mobile_install/apks.bzl
@@ -42,7 +42,7 @@
         inputs = [manifest, resources_zip, android_jar],
         outputs = [out_manifest],
         mnemonic = "CompileAndroidManifest",
-        progress_message = "MI Compiling AndroidManifest.xml from " + manifest.path,
+        progress_message = "MI Compiling AndroidManifest.xml from %{input}",
     )
 
 def _patch_split_manifests(ctx, orig_manifest, split_manifests, out_manifest_package_name):
@@ -87,7 +87,7 @@
         inputs = inputs,
         outputs = [unsigned],
         mnemonic = "MakeSplitApk",
-        progress_message = "MI Making split app %s" % out.path,
+        progress_message = "MI Making split app %{output}",
     )
 
     _zipalign_sign(ctx, unsigned, out, debug_signing_keys, debug_signing_lineage_file, key_rotation_min_sdk, zipalign_alignment)
@@ -202,7 +202,7 @@
         inputs = [ctx.file._mi_java8_legacy_dex],
         outputs = [java8_legacy],
         mnemonic = "CopyJava8Legacy",
-        progress_message = "MI Copy %s to %s" % (ctx.file._mi_java8_legacy_dex.path, java8_legacy.path),
+        progress_message = "MI Copy %{input} to %{output}",
     )
 
     # Resources are now in the base apk to support RRO. Previously they were a separate split, but
@@ -257,12 +257,12 @@
             str(zipalign_alignment),
         ],
         tools = [ctx.executable._zipalign],
-        inputs = (debug_signing_keys +
+        inputs = ([unsigned_apk] +
+                  debug_signing_keys +
                   ([debug_signing_lineage_file] if debug_signing_lineage_file else []) +
-                  [unsigned_apk] +
                   ctx.attr._apk_signer[DefaultInfo].files.to_list() +
                   ctx.attr._java_jdk[DefaultInfo].files.to_list()),
         outputs = [signed_apk],
         mnemonic = "SignShellApp",
-        progress_message = "MI Signing shell app %s" % unsigned_apk.path,
+        progress_message = "MI Signing shell app %{input}",
     )
diff --git a/mobile_install/r_java.bzl b/mobile_install/r_java.bzl
index 03c9d96..cf36625 100644
--- a/mobile_install/r_java.bzl
+++ b/mobile_install/r_java.bzl
@@ -53,7 +53,7 @@
         inputs = [resource_src_jar],
         outputs = [out_r_java],
         mnemonic = "MakeRJava",
-        progress_message = "MI R.java " + out_r_java.path,
+        progress_message = "MI R.java %{output}",
     )
 
 def _make_r_jar(ctx, r_java, packages, out_r_jar):
@@ -89,7 +89,7 @@
         inputs = depset([r_packages, r_java], transitive = [ctx.attr._java_jdk[DefaultInfo].files]),
         outputs = [out_r_jar],
         mnemonic = "RJar",
-        progress_message = "MI RJar " + out_r_jar.path,
+        progress_message = "MI RJar %{output}",
     )
 
 def make_r(ctx, r_java_zip, main_package, packages, sibling):
diff --git a/mobile_install/resources.bzl b/mobile_install/resources.bzl
index e0babcf..499d569 100644
--- a/mobile_install/resources.bzl
+++ b/mobile_install/resources.bzl
@@ -159,7 +159,7 @@
             inputs = data[res_dir],
             outputs = res_buckets,
             mnemonic = "BucketizeRes",
-            progress_message = "MI Bucketize resources for %s" % res_dir,
+            progress_message = "MI Bucketize resources for %{input}",
         )
         res_dir_buckets_map[res_dir] = res_buckets
     return res_dir_buckets_map
@@ -201,7 +201,7 @@
                 inputs = [res_bucket] + ctx.attr._aapt2[DefaultInfo].files.to_list(),
                 outputs = [out],
                 mnemonic = "CompileRes",
-                progress_message = "MI Compiling resources for %s" % res_dir,
+                progress_message = "MI Compiling resources for %{input}",
             )
             compiled_res_buckets.append(out)
 
@@ -246,7 +246,7 @@
                 inputs = data[res_type][res_dir] + ctx.attr._aapt2[DefaultInfo].files.to_list(),
                 outputs = [out],
                 mnemonic = "CompileRes",
-                progress_message = "MI Compiling resources for %s" % res_dir,
+                progress_message = "MI Compiling resources for %{input}",
             )
     return compiled_res_dirs
 
@@ -298,7 +298,7 @@
         ),
         outputs = [resource_apk, rjava_zip],
         mnemonic = "LinkRes",
-        progress_message = "MI Linking resources for %s" % ctx.label,
+        progress_message = "MI Linking resources for %{label}",
     )
     return resource_apk, rjava_zip
 
@@ -328,7 +328,7 @@
         inputs = ctx.rule.files.resource_files,
         outputs = [r_pb],
         mnemonic = "ResLiteParse",
-        progress_message = "MI Lite parse Android Resources %s" % ctx.label,
+        progress_message = "MI Lite parse Android Resources %{label}",
     )
     return r_pb
 
@@ -354,5 +354,5 @@
         inputs = r_pbs,
         outputs = [output_srcjar],
         mnemonic = "CompileTimeRSrcjar",
-        progress_message = "MI Make compile-time R.srcjar %s" % ctx.label,
+        progress_message = "MI Make compile-time R.srcjar %{label}",
     )
diff --git a/mobile_install/utils.bzl b/mobile_install/utils.bzl
index 26d2b30..07e22c9 100644
--- a/mobile_install/utils.bzl
+++ b/mobile_install/utils.bzl
@@ -198,12 +198,12 @@
         tools = [ctx.executable._desugar_dex_sharding],
         arguments = [launcher_args, args],
         inputs = depset(
-            bootclasspath + ctx.files._mi_host_javabase + [jar, ctx.file._desugared_lib_config],
+            [jar, ctx.file._desugared_lib_config] + bootclasspath + ctx.files._mi_host_javabase,
             transitive = [deps] if deps else [],
         ),
         outputs = out_dex_shards,
         mnemonic = "DesugarDexSharding",
-        progress_message = "MI Desugar, dex and sharding " + jar.short_path,
+        progress_message = "MI Desugar, dex and sharding %{input}",
         execution_requirements = {
             "worker-key-mnemonic": "DesugarDexSharding",
             "supports-workers": "1",
@@ -234,7 +234,7 @@
         inputs = [jar],
         outputs = [out_resources],
         mnemonic = "ExtractJarResources",
-        progress_message = "MI Extracting resources from " + jar.path,
+        progress_message = "MI Extracting resources from %{input}",
     )
 
 def first(collection, allow_empty = False):
@@ -323,7 +323,7 @@
         inputs = [jar],
         outputs = [out_jar],
         mnemonic = "StripR",
-        progress_message = "MI Stripping R from " + jar.path,
+        progress_message = "MI Stripping R from %{input}",
         toolchain = None,
     )
 
@@ -348,7 +348,7 @@
         inputs = [apk],
         outputs = [package_name_output_file],
         mnemonic = "ExtractPackageName",
-        progress_message = "MI Extracts the package name from %s" % apk.path,
+        progress_message = "MI Extracts the package name from %{input}",
     )
 
 def _get_extension_registry_class_jar(target):
diff --git a/rules/aapt.bzl b/rules/aapt.bzl
index 9a1657a..506e879 100644
--- a/rules/aapt.bzl
+++ b/rules/aapt.bzl
@@ -76,7 +76,7 @@
         inputs = resource_files,
         outputs = [out_dir],
         mnemonic = "CompileAndroidResources",
-        progress_message = "ResV3 Compiling Android Resources in %s" % out_dir,
+        progress_message = "ResV3 Compiling Android Resources in %{output}",
         toolchain = ANDROID_TOOLCHAIN_TYPE,
     )
 
@@ -98,7 +98,7 @@
         inputs = [input],
         outputs = [out],
         mnemonic = "AaptConvert",
-        progress_message = "ResV3 Convert to %s" % out.short_path,
+        progress_message = "ResV3 Convert to %{output}",
         toolchain = ANDROID_TOOLCHAIN_TYPE,
     )
 
@@ -118,7 +118,7 @@
         inputs = [apk],
         outputs = [out],
         mnemonic = "GenerateAaptManifestDump",
-        progress_message = "Generate AAPT manifest dump %s" % out,
+        progress_message = "Generate AAPT manifest dump %{output}",
         toolchain = ANDROID_TOOLCHAIN_TYPE,
     )
 
@@ -219,7 +219,7 @@
         ),
         outputs = [out_resource_apk, out_r_java],
         mnemonic = "LinkAndroidResources",
-        progress_message = "ResV3 Linking Android Resources to %s" % out_resource_apk.short_path,
+        progress_message = "ResV3 Linking Android Resources to %{output}",
         toolchain = ANDROID_TOOLCHAIN_TYPE,
     )
 
diff --git a/rules/aar_import/impl.bzl b/rules/aar_import/impl.bzl
index 520ca10..c6b4875 100644
--- a/rules/aar_import/impl.bzl
+++ b/rules/aar_import/impl.bzl
@@ -85,7 +85,7 @@
                 create_empty_file = str(create_empty_file).lower(),
             ),
         mnemonic = "AarFileExtractor",
-        progress_message = "Extracting %s from %s" % (filename, aar.basename),
+        progress_message = "Extracting %s from %%{input}" % filename,
         toolchain = ANDROID_TOOLCHAIN_TYPE,
     )
 
@@ -105,7 +105,7 @@
         inputs = [aar],
         outputs = [out_resources_dir, out_assets_dir],
         mnemonic = "AarResourcesExtractor",
-        progress_message = "Extracting resources and assets from %s" % aar.basename,
+        progress_message = "Extracting resources and assets from %{input}",
         toolchain = None,
     )
 
@@ -196,7 +196,7 @@
         inputs = [aar],
         outputs = [out_jars_tree_artifact, out_jars_params_file],
         mnemonic = "AarEmbeddedJarsExtractor",
-        progress_message = "Extracting classes.jar and libs/*.jar from %s" % aar.basename,
+        progress_message = "Extracting classes.jar and libs/*.jar from %{input}",
         toolchain = None,
     )
 
@@ -285,7 +285,7 @@
         ),
         outputs = [jdeps_output],
         mnemonic = "ImportDepsChecker",
-        progress_message = "Checking the completeness of the deps for %s" % jars_to_check,
+        progress_message = "Checking the completeness of the deps for %{label}",
     )
 
 def _process_jars(
@@ -389,7 +389,7 @@
         inputs = [aar, manifest],
         outputs = [validation_output],
         mnemonic = "ValidateAAR",
-        progress_message = "Validating aar_import %s" % str(ctx.label),
+        progress_message = "Validating aar_import %{label}",
         toolchain = None,
     )
     return validation_output
@@ -441,7 +441,7 @@
         inputs = [aar],
         outputs = [out_proguard],
         mnemonic = "AarEmbeddedProguardExtractor",
-        progress_message = "Extracting proguard spec from %s" % aar.basename,
+        progress_message = "Extracting proguard spec from %{input}",
         toolchain = None,
     )
     transitive_proguard_specs = []
diff --git a/rules/android_application/android_application_rule.bzl b/rules/android_application/android_application_rule.bzl
index 47a7dc4..6b48acc 100644
--- a/rules/android_application/android_application_rule.bzl
+++ b/rules/android_application/android_application_rule.bzl
@@ -200,7 +200,7 @@
                 aapt2,
             ],
             mnemonic = "GenFeatureManifest",
-            progress_message = "Generating AndroidManifest.xml for " + feature_target.label.name,
+            progress_message = "Generating AndroidManifest.xml %{output}",
             toolchain = None,
         )
         return manifest
@@ -229,7 +229,7 @@
             aapt2,
         ],
         mnemonic = "GenPriorityFeatureManifest",
-        progress_message = "Generating Priority AndroidManifest.xml for " + feature_target.label.name,
+        progress_message = "Generating Priority AndroidManifest.xml %{output}",
         toolchain = None,
     )
 
diff --git a/rules/android_application/android_feature_module_rule.bzl b/rules/android_application/android_feature_module_rule.bzl
index 6da2c4c..8421168 100644
--- a/rules/android_application/android_feature_module_rule.bzl
+++ b/rules/android_application/android_feature_module_rule.bzl
@@ -60,7 +60,7 @@
             get_android_toolchain(ctx).unzip_tool.files_to_run.executable,
         ],
         mnemonic = "ValidateFeatureModule",
-        progress_message = "Validating feature module %s" % str(ctx.label),
+        progress_message = "Validating feature module %{label}",
         toolchain = None,
     )
 
diff --git a/rules/apk_packaging.bzl b/rules/apk_packaging.bzl
index f222bb0..d355e47 100644
--- a/rules/apk_packaging.bzl
+++ b/rules/apk_packaging.bzl
@@ -436,7 +436,7 @@
         arguments = [args],
         outputs = [deploy_info],
         mnemonic = "WriteDeployInfo",
-        progress_message = "Writing Deploy info proto file %s" % deploy_info.short_path,
+        progress_message = "Writing Deploy info proto file %{output}",
         toolchain = toolchain_type,
     )
 
diff --git a/rules/bundletool.bzl b/rules/bundletool.bzl
index f6c5cbc..4859f9e 100644
--- a/rules/bundletool.bzl
+++ b/rules/bundletool.bzl
@@ -65,7 +65,7 @@
         ),
         outputs = [out],
         mnemonic = "BuildBundle",
-        progress_message = "Building bundle %s" % out.short_path,
+        progress_message = "Building bundle %{output}",
     )
 
 def _build_device_json(
@@ -123,7 +123,7 @@
         tools = [aapt2],
         outputs = [apks_out],
         mnemonic = "BuildSdkApksDir",
-        progress_message = "Building SDK APKs directory %s" % apks_out.short_path,
+        progress_message = "Building SDK APKs directory %{output}",
     )
 
     # Now move standalone APK out of bundletool output dir.
@@ -143,7 +143,7 @@
         inputs = [apks_out],
         outputs = [out],
         mnemonic = "ExtractDebugSdkApk",
-        progress_message = "Extract debug SDK APK to %s" % out.short_path,
+        progress_message = "Extract debug SDK APK to %{output}",
     )
 
 def _build_sdk_apks_for_app(
@@ -189,7 +189,7 @@
         tools = [aapt2],
         outputs = [split_out_dir],
         mnemonic = "BuildSdkSplit",
-        progress_message = "Building SDK split %s" % out.short_path,
+        progress_message = "Building SDK split %{output}",
     )
 
     # Now move split out of bundletool output dir.
@@ -215,7 +215,7 @@
         inputs = [split_out_dir],
         outputs = [out],
         mnemonic = "MoveSplitApk",
-        progress_message = "Move SDK split APK from Bundletool output: %s" % out.short_path,
+        progress_message = "Move SDK split APK from Bundletool output: %{output}",
     )
 
 def _build_sdk_bundle(
@@ -245,7 +245,7 @@
         ],
         outputs = [out],
         mnemonic = "BuildASB",
-        progress_message = "Building SDK bundle %s" % out.short_path,
+        progress_message = "Building SDK bundle %{output}",
     )
 
 def _build_sdk_module(
@@ -263,7 +263,7 @@
         executable = bundletool_module_builder,
         arguments = [args],
         mnemonic = "BuildSdkModule",
-        progress_message = "Building ASB zip module %s" % out.short_path,
+        progress_message = "Building ASB zip module %{output}",
         toolchain = ANDROID_TOOLCHAIN_TYPE,
     )
 
@@ -332,7 +332,7 @@
         outputs = [out],
         tools = [aapt2],
         mnemonic = "BundleToApks",
-        progress_message = "Converting bundle to .apks: %s" % out.short_path,
+        progress_message = "Converting bundle to .apks: %{output}",
     )
 
 def _extract_config(
@@ -358,7 +358,7 @@
         outputs = [out],
         tools = depset([bundletool.executable], transitive = [host_javabase[java_common.JavaRuntimeInfo].files]),
         mnemonic = "ExtractBundleConfig",
-        progress_message = "Extract bundle config to %s" % out.short_path,
+        progress_message = "Extract bundle config to %{output}",
         command = cmd,
         exec_group = "android_and_java",
     )
@@ -394,7 +394,7 @@
         outputs = [out],
         tools = depset([bundletool.executable], transitive = [host_javabase[java_common.JavaRuntimeInfo].files]),
         mnemonic = "ExtractBundleManifest",
-        progress_message = "Extract bundle manifest to %s" % out.short_path,
+        progress_message = "Extract bundle manifest to %{output}",
         command = cmd,
         exec_group = "android_and_java",
     )
@@ -415,7 +415,7 @@
         executable = bundletool_module_builder,
         arguments = [args],
         mnemonic = "BuildAppModule",
-        progress_message = "Building AAB zip module %s" % out.short_path,
+        progress_message = "Building AAB zip module %{output}",
         toolchain = ANDROID_TOOLCHAIN_TYPE,
     )
 
diff --git a/rules/busybox.bzl b/rules/busybox.bzl
index 7850aca..ce57dc2 100644
--- a/rules/busybox.bzl
+++ b/rules/busybox.bzl
@@ -454,7 +454,7 @@
         inputs = depset(input_files, transitive = transitive_input_files),
         outputs = output_files,
         mnemonic = "PackageAndroidResources",
-        progress_message = "Packaging Android Resources in %s" % ctx.label,
+        progress_message = "Packaging Android Resources in %{label}",
         jvm_flags = _C1_ONLY_FLAGS,
     )
 
@@ -499,7 +499,7 @@
         inputs = assets,
         outputs = [out_symbols],
         mnemonic = "ParseAndroidResources",
-        progress_message = "Parsing Android Resources in %s" % out_symbols.short_path,
+        progress_message = "Parsing Android Resources in %{output}",
         jvm_flags = _C1_ONLY_FLAGS,
     )
 
@@ -586,8 +586,7 @@
         ),
         outputs = [out_assets_zip],
         mnemonic = "MergeAndroidAssets",
-        progress_message =
-            "Merging Android Assets in %s" % out_assets_zip.short_path,
+        progress_message = "Merging Android Assets in %{output}",
         jvm_flags = _C1_ONLY_FLAGS,
     )
 
@@ -662,11 +661,9 @@
     if java_package:
         args.add("--packageForR", java_package)
     args.add("--sourceJarOut", out_r_src_jar)
-    output_files.append(out_r_src_jar)
     args.add("--rTxtOut", out_r_txt)
-    output_files.append(out_r_txt)
     args.add("--staticLibraryOut", out_file)
-    output_files.append(out_file)
+    output_files.extend([out_file, out_r_src_jar, out_r_txt])
     args.add_joined(
         "--resourceApks",
         resource_apks,
@@ -688,8 +685,7 @@
         inputs = depset(input_files, transitive = transitive_input_files),
         outputs = output_files,
         mnemonic = "LinkAndroidResources",
-        progress_message =
-            "Linking Android Resources in " + out_file.short_path,
+        progress_message = "Linking Android Resources in %{output}",
         jvm_flags = _C1_ONLY_FLAGS,
         execution_requirements = {"supports-path-mapping": "1"},
     )
@@ -752,7 +748,7 @@
         inputs = resource_files + assets,
         outputs = [out_file],
         mnemonic = "CompileAndroidResources",
-        progress_message = "Compiling Android Resources in %s" % out_file.short_path,
+        progress_message = "Compiling Android Resources in %{output}",
         jvm_flags = _C1_ONLY_FLAGS,
     )
 
@@ -859,8 +855,7 @@
         inputs = depset(input_files, transitive = transitive_input_files),
         outputs = output_files,
         mnemonic = "StarlarkMergeCompiledAndroidResources",
-        progress_message =
-            "Merging compiled Android Resources in " + out_class_jar.short_path,
+        progress_message = "Merging compiled Android Resources in %{output}",
         jvm_flags = _C1_ONLY_FLAGS,
     )
 
@@ -988,7 +983,7 @@
         inputs = depset(directs, transitive = transitives),
         outputs = outputs,
         mnemonic = "MergeManifests",
-        progress_message = "Merging Android Manifests in %s" % out_file.short_path,
+        progress_message = "Merging Android Manifests in %{output}",
         jvm_flags = _C1_ONLY_FLAGS,
     )
 
@@ -1120,7 +1115,7 @@
         inputs = depset([r_txt, manifest], transitive = transitive_r_txts + transitive_manifests),
         outputs = [out_class_jar],
         mnemonic = "StarlarkRClassGenerator",
-        progress_message = "Generating R classes for %s" % out_class_jar.short_path,
+        progress_message = "Generating R classes for %{output}",
     )
 
 def _make_aar(
@@ -1199,7 +1194,7 @@
         ),
         outputs = [out_aar],
         mnemonic = "StarlarkAARGenerator",
-        progress_message = "Generating AAR package for %s" % ctx.label,
+        progress_message = "Generating AAR package for %{label}",
         jvm_flags = _C1_ONLY_FLAGS,
     )
 
@@ -1281,8 +1276,7 @@
         inputs = input_files,
         arguments = [args],
         mnemonic = "ResourceShrinker",
-        progress_message =
-            "Shrinking resources for " + str(ctx.label),
+        progress_message = "Shrinking resources for %{label}",
         host_javabase = host_javabase,
         use_default_shell_env = True,
     )
@@ -1340,8 +1334,7 @@
         inputs = input_files,
         arguments = [args],
         mnemonic = "ResourceConverter",
-        progress_message =
-            "Converting resources for " + str(ctx.label),
+        progress_message = "Converting resources for %{label}",
         host_javabase = host_javabase,
         use_default_shell_env = True,
     )
@@ -1405,8 +1398,7 @@
         inputs = input_files,
         outputs = output_files,
         mnemonic = "Aapt2Optimize",
-        progress_message =
-            "Optimizing Android resources for " + str(ctx.label),
+        progress_message = "Optimizing Android resources for %{label}",
         use_default_shell_env = True,
     )
 
diff --git a/rules/common.bzl b/rules/common.bzl
index ae7ef91..a7e498d 100644
--- a/rules/common.bzl
+++ b/rules/common.bzl
@@ -59,7 +59,7 @@
         inputs = [in_zip],
         outputs = [out_zip],
         mnemonic = "FilterZipInclude",
-        progress_message = "Filtering %s" % in_zip.short_path,
+        progress_message = "Filtering %{input}",
         toolchain = ANDROID_TOOLCHAIN_TYPE,
     )
 
@@ -112,7 +112,7 @@
         inputs = [input] + filter_zips,
         outputs = [output],
         mnemonic = "FilterZipExclude",
-        progress_message = "Filtering %s" % input.short_path,
+        progress_message = "Filtering %{input}",
         toolchain = ANDROID_TOOLCHAIN_TYPE,
     )
 
diff --git a/rules/data_binding.bzl b/rules/data_binding.bzl
index 4460cdd..ab27299 100644
--- a/rules/data_binding.bzl
+++ b/rules/data_binding.bzl
@@ -92,9 +92,7 @@
         inputs = inputs,
         outputs = [class_info, srcjar],
         mnemonic = "GenerateDataBindingBaseClasses",
-        progress_message = (
-            "GenerateDataBindingBaseClasses %s" % class_info.short_path
-        ),
+        progress_message = "GenerateDataBindingBaseClasses %{output}",
         toolchain = ANDROID_TOOLCHAIN_TYPE,
     )
     return srcjar, class_info
diff --git a/rules/desugar.bzl b/rules/desugar.bzl
index 21e6fe2..16ff9e0 100644
--- a/rules/desugar.bzl
+++ b/rules/desugar.bzl
@@ -77,7 +77,7 @@
         executable = desugar_exec,
         arguments = [args],
         mnemonic = "Desugar",
-        progress_message = "Desugaring " + input.short_path + " for Android",
+        progress_message = "Desugaring %{input} for Android",
         execution_requirements = {"supports-workers": "1", "supports-path-mapping": "1"},
         use_default_shell_env = True,
         toolchain = toolchain_type,
diff --git a/rules/dex.bzl b/rules/dex.bzl
index e6c1fdd..0d08ca4 100644
--- a/rules/dex.bzl
+++ b/rules/dex.bzl
@@ -213,7 +213,7 @@
             output = output,
             inputs = [dexes],
             mnemonic = "MergeDexZips",
-            progress_message = "Merging dex shards for %s." % ctx.label,
+            progress_message = "Merging dex shards for %{label}.",
             java_toolchain = _common.get_java_toolchain(ctx),
         )
 
@@ -244,7 +244,7 @@
         inputs = inputs,
         outputs = [classes_dex_intermediate],
         arguments = [args],
-        progress_message = "Converting %s to dex format" % input.short_path,
+        progress_message = "Converting %{input} to dex format",
         mnemonic = "AndroidDexer",
         use_default_shell_env = True,
         resource_set = _resource_set_for_monolithic_dexing,
@@ -260,7 +260,7 @@
         include_prefixes = ["classes"],
         java_toolchain = _common.get_java_toolchain(ctx),
         mnemonic = "TrimDexZip",
-        progress_message = "Trimming %s." % classes_dex_intermediate.short_path,
+        progress_message = "Trimming %{input}.",
     )
 
 def _shard_proguarded_jar_and_dex(
@@ -300,7 +300,7 @@
         inputs = inputs,
         arguments = [args],
         mnemonic = "ShardClassesToDex",
-        progress_message = "Sharding classes for dexing for " + str(ctx.label),
+        progress_message = "Sharding classes for dexing for %{label}",
         use_default_shell_env = True,
         toolchain = toolchain_type,
     )
@@ -362,7 +362,7 @@
         mnemonic = "ShardForMultidex",
         # TODO(b/519583193): update CPU reservation when b/519583193 is implemented
         execution_requirements = {"cpu:4": ""},  # see b/501344408
-        progress_message = "Assembling dex files for " + ctx.label.name,
+        progress_message = "Assembling dex files for %{label}",
         use_default_shell_env = True,
         toolchain = toolchain_type,
     )
@@ -384,7 +384,7 @@
         arguments = [args],
         use_default_shell_env = True,
         mnemonic = "AppendDesugarDexes",
-        progress_message = "Adding Desugar dex file(s) for %s" % ctx.label,
+        progress_message = "Adding Desugar dex file(s) for %{label}",
         toolchain = ANDROID_TOOLCHAIN_TYPE,
     )
 
@@ -443,7 +443,7 @@
         inputs = [input],
         outputs = [output],
         mnemonic = "DexBuilder",
-        progress_message = "Dexing " + input.path + " with applicable dexopts " + str(incremental_dexopts),
+        progress_message = "Dexing %{input} with applicable dexopts " + str(incremental_dexopts),
         execution_requirements = execution_requirements,
         toolchain = toolchain_type,
     )
@@ -500,7 +500,7 @@
         inputs = inputs,
         outputs = [output, globals_output],
         mnemonic = "ShardedOptimizingDex",
-        progress_message = "Optimized dexing " + input.path + " with applicable dexopts " + str(incremental_dexopts),
+        progress_message = "Optimized dexing %{input} with applicable dexopts " + str(incremental_dexopts),
         toolchain = toolchain_type,
     )
 
@@ -556,7 +556,7 @@
             outputs = [java8_legacy_dex_rules, java8_legacy_dex_map, java8_legacy_dex],
             arguments = [args],
             mnemonic = "BuildLegacyDex",
-            progress_message = "Building Java8 legacy library for %s" % ctx.label,
+            progress_message = "Building Java8 legacy library for %{label}",
             toolchain = ANDROID_TOOLCHAIN_TYPE,
         )
 
@@ -586,7 +586,7 @@
         inputs = inputs,
         outputs = [output],
         mnemonic = "DexMerger",
-        progress_message = "Assembling dex files into " + output.short_path,
+        progress_message = "Assembling dex files into %{output}",
         toolchain = toolchain_type,
     )
 
@@ -672,7 +672,7 @@
         inputs = inputs,
         outputs = outputs,
         mnemonic = "OptimizingDex",
-        progress_message = "Optimized dexing for " + ctx.label.name,
+        progress_message = "Optimized dexing for %{label}",
         execution_requirements = acls.get_optimizer_execution_requirements(ctx.label.package),
         toolchain = toolchain_type,
     )
diff --git a/rules/idl.bzl b/rules/idl.bzl
index 35e2b7e..212e1a6 100644
--- a/rules/idl.bzl
+++ b/rules/idl.bzl
@@ -77,7 +77,7 @@
         executable = aidl,
         arguments = [args],
         inputs = depset(
-            [aidl_framework],
+            [idl_src, aidl_framework],
             transitive = aidl_lib_files + [
                 transitive_idl_imports,
                 transitive_idl_preprocessed,
@@ -85,7 +85,7 @@
         ),
         outputs = [out_idl_java_src],
         mnemonic = "AndroidIDLGenerate",
-        progress_message = "Android IDL generation %s" % idl_src.path,
+        progress_message = "Android IDL generation %{input}",
         toolchain = ANDROID_TOOLCHAIN_TYPE,
     )
 
diff --git a/rules/intellij.bzl b/rules/intellij.bzl
index 5e7b503..f535809 100644
--- a/rules/intellij.bzl
+++ b/rules/intellij.bzl
@@ -47,9 +47,9 @@
         executable = idlclass,
         arguments = [args],
         inputs = idl_java_srcs + [jar, manifest_proto],
-        outputs = [out_srcjar, out_jar],
+        outputs = [out_jar, out_srcjar],
         mnemonic = "AndroidIdlJars",
-        progress_message = "Building idl jars %s" % out_jar.path,
+        progress_message = "Building idl jars %{output}",
         execution_requirements = {"supports-path-mapping": ""},
     )
 
diff --git a/rules/java.bzl b/rules/java.bzl
index e641dfa..a99c158 100644
--- a/rules/java.bzl
+++ b/rules/java.bzl
@@ -509,7 +509,7 @@
         inputs = runtime_jars,
         output = output,
         mnemonic = "JavaDeployJar",
-        progress_message = "Building deploy jar %s" % output.short_path,
+        progress_message = "Building deploy jar %{output}",
         java_toolchain = java_toolchain,
         build_target = build_target,
         check_desugar_deps = True,
diff --git a/rules/proguard.bzl b/rules/proguard.bzl
index abf3115..17a717d 100644
--- a/rules/proguard.bzl
+++ b/rules/proguard.bzl
@@ -51,9 +51,7 @@
         inputs = [proguard_spec],
         outputs = [out_validated_proguard_spec],
         mnemonic = "ValidateProguard",
-        progress_message = (
-            "Validating proguard configuration %s" % proguard_spec.short_path
-        ),
+        progress_message = "Validating proguard configuration %{input}",
         toolchain = ANDROID_TOOLCHAIN_TYPE,
     )
 
@@ -613,7 +611,7 @@
             optimize_resources = optimize_resources,
             final = True,
             mnemonic = mnemonic,
-            progress_message = "Trimming %s with %s" % (ctx.label, mnemonic),
+            progress_message = "Trimming %%{label} with %s" % mnemonic,
             proguard_tool = proguard_tool,
         )
         return outputs
@@ -645,7 +643,7 @@
         runtype = "INITIAL",
         next_stage_output = last_stage_output,
         mnemonic = mnemonic,
-        progress_message = "Trimming %s with %s: Verification/Shrinking Pass" % (ctx.label, mnemonic),
+        progress_message = "Trimming %%{label} with %s: Verification/Shrinking Pass" % mnemonic,
         proguard_tool = proguard_tool,
     )
     for i in range(1, num_passes + 1):
@@ -719,7 +717,7 @@
         runtype = "FINAL",
         last_stage_output = last_stage_output,
         mnemonic = mnemonic,
-        progress_message = "Trimming %s with %s: Obfuscation and Final Output Pass" % (ctx.label, mnemonic),
+        progress_message = "Trimming %%{label} with %s: Obfuscation and Final Output Pass" % mnemonic,
         proguard_tool = proguard_tool,
     )
     return outputs
@@ -751,7 +749,7 @@
         runtype = "OPTIMIZATION" + runtype_suffix,
         last_stage_output = last_stage_output,
         next_stage_output = next_stage_output,
-        progress_message = "Trimming %s with %s: Optimization%s Pass %d" % (ctx.label, mnemonic, runtype_suffix, optimization_pass_num),
+        progress_message = "Trimming %%{label} with %s: Optimization%s Pass %d" % (mnemonic, runtype_suffix, optimization_pass_num),
         proguard_tool = proguard_tool,
     )
     return next_stage_output
@@ -772,7 +770,7 @@
         inputs = inputs,
         arguments = [args],
         mnemonic = "MergeProguardMaps",
-        progress_message = "Merging app and desugared library Proguard maps for %s" % ctx.label,
+        progress_message = "Merging app and desugared library Proguard maps for %{label}",
         use_default_shell_env = True,
         toolchain = toolchain_type,
     )
@@ -800,7 +798,7 @@
         executable = generator_tool,
         arguments = [args],
         mnemonic = "GenerateOptimizationReport",
-        progress_message = "Generating optimization report for %s" % ctx.label,
+        progress_message = "Generating optimization report for %{label}",
         toolchain = toolchain_type,
     )
 
diff --git a/rules/resources.bzl b/rules/resources.bzl
index 97c6588..fab794a 100644
--- a/rules/resources.bzl
+++ b/rules/resources.bzl
@@ -226,7 +226,7 @@
         inputs = [manifest, instrument_xslt],
         outputs = [out_manifest],
         mnemonic = "AddG3ITRStarlark",
-        progress_message = "Adding G3ITR to test manifest for %s" % ctx.label,
+        progress_message = "Adding G3ITR to test manifest for %{label}",
         toolchain = None,
     )
 
@@ -885,7 +885,7 @@
         inputs = resource_files,
         outputs = [out_r_pb],
         mnemonic = "ResLiteParse",
-        progress_message = "Lite parse Android Resources %s" % ctx.label,
+        progress_message = "Lite parse Android Resources %{label}",
         toolchain = None,
     )
 
@@ -1057,7 +1057,7 @@
         outputs = [out_manifest, log],
         arguments = ["minsdkfloor", args],
         mnemonic = "BumpMinSdkFloor",
-        progress_message = "Bumping up AndroidManifest min SDK %s" % str(ctx.label),
+        progress_message = "Bumping up AndroidManifest min SDK %{label}",
         toolchain = ANDROID_TOOLCHAIN_TYPE,
     )
     manifest_ctx[_PROCESSED_MANIFEST] = out_manifest
@@ -1105,7 +1105,7 @@
         outputs = [out_manifest, log],
         arguments = ["minsdkfloor", args],
         mnemonic = "SetDefaultMinSdkFloor",
-        progress_message = "Setting AndroidManifest min SDK to default %s" % str(ctx.label),
+        progress_message = "Setting AndroidManifest min SDK to default %{label}",
         toolchain = ANDROID_TOOLCHAIN_TYPE,
     )
     manifest_ctx[_PROCESSED_MANIFEST] = out_manifest
diff --git a/rules/utils.bzl b/rules/utils.bzl
index 8a72620..f950b6a 100644
--- a/rules/utils.bzl
+++ b/rules/utils.bzl
@@ -217,7 +217,7 @@
         inputs = [src],
         outputs = [dest],
         mnemonic = "CopyFile",
-        progress_message = "Copy %s to %s" % (src.short_path, dest.short_path),
+        progress_message = "Copy %{input} to %{output}",
     )
 
 def _copy_dir(ctx, src, dest):
@@ -229,7 +229,7 @@
         inputs = [src],
         outputs = [dest],
         mnemonic = "CopyDir",
-        progress_message = "Copy %s to %s" % (src.short_path, dest.short_path),
+        progress_message = "Copy %{input} to %{output}",
     )
 
 def _info(msg):
diff --git a/tools/jdk/system.bzl b/tools/jdk/system.bzl
index f2ad0eb..204d115 100644
--- a/tools/jdk/system.bzl
+++ b/tools/jdk/system.bzl
@@ -36,7 +36,7 @@
         outputs = [output],
         executable = ijar_bin,
         arguments = [args],
-        progress_message = "Extracting interfaces from %s" % input.short_path,
+        progress_message = "Extracting interfaces from %{input}",
         mnemonic = "Ijar",
     )