Skip to content

Commit 1ea9f99

Browse files
committed
Pass build_target to singlejar when extracting aar contents
1 parent d9a4adb commit 1ea9f99

3 files changed

Lines changed: 17 additions & 5 deletions

File tree

rules/aar_import/impl.bzl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,7 @@ def _extract_jars(
193193
args = ctx.actions.args()
194194
args.add("--input_aar", aar)
195195
args.add("--output_dir", out_jars_tree_artifact.path)
196+
args.add("--build_target", ctx.label)
196197
args.add("--output_singlejar_param_file", out_jars_params_file)
197198
ctx.actions.run(
198199
executable = aar_embedded_jars_extractor_tool,

tools/android/aar_embedded_jars_extractor.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
flags.mark_flag_as_required("input_aar")
3636
flags.DEFINE_string("output_singlejar_param_file", None,
3737
"Output parameter file for singlejar")
38+
flags.DEFINE_string("build_target", None,
39+
"Build target label to pass to singlejar")
3840
flags.mark_flag_as_required("output_singlejar_param_file")
3941
flags.DEFINE_string("output_dir", None, "Output directory to extract jars in")
4042
flags.mark_flag_as_required("output_dir")
@@ -43,6 +45,7 @@
4345
def ExtractEmbeddedJars(aar,
4446
singlejar_param_file,
4547
output_dir,
48+
build_target=None,
4649
output_dir_orig=None):
4750
"""Extracts all embedded jars from an AAR.
4851
@@ -56,6 +59,9 @@ def ExtractEmbeddedJars(aar,
5659
output_dir_orig = output_dir
5760
jar_pattern = re.compile("^(classes|libs/.+)\\.jar$")
5861
singlejar_param_file.write(b"--exclude_build_data\n")
62+
if build_target:
63+
singlejar_param_file.write(b"--build_target\n")
64+
singlejar_param_file.write(f"{build_target}\n".encode("utf-8"))
5965
for name in aar.namelist():
6066
if jar_pattern.match(name):
6167
singlejar_param_file.write(b"--sources\n")
@@ -69,12 +75,13 @@ def ExtractEmbeddedJars(aar,
6975
def _Main(input_aar,
7076
output_singlejar_param_file,
7177
output_dir,
78+
build_target=None,
7279
output_dir_orig=None):
7380
if not output_dir_orig:
7481
output_dir_orig = output_dir
7582
with zipfile.ZipFile(input_aar, "r") as aar:
7683
with open(output_singlejar_param_file, "wb") as singlejar_param_file:
77-
ExtractEmbeddedJars(aar, singlejar_param_file, output_dir,
84+
ExtractEmbeddedJars(aar, singlejar_param_file, output_dir, build_target,
7885
output_dir_orig)
7986

8087

@@ -93,9 +100,9 @@ def main(unused_argv):
93100
os.path.join(aar_junc, os.path.basename(aar_long)),
94101
os.path.join(params_junc, os.path.basename(params_long)),
95102
os.path.join(out_junc, os.path.basename(out_long)),
96-
FLAGS.output_dir)
103+
FLAGS.output_dir, FLAGS.build_target)
97104
else:
98-
_Main(FLAGS.input_aar, FLAGS.output_singlejar_param_file, FLAGS.output_dir)
105+
_Main(FLAGS.input_aar, FLAGS.output_singlejar_param_file, FLAGS.output_dir, FLAGS.build_target)
99106

100107

101108
if __name__ == "__main__":

tools/android/aar_embedded_jars_extractor_test.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,14 @@ def testClassesJarAndLibsJars(self):
5454
aar.writestr("libs/b.jar", "")
5555
param_file = io.BytesIO()
5656
os.makedirs("out_dir")
57-
aar_embedded_jars_extractor.ExtractEmbeddedJars(aar, param_file, "out_dir")
57+
aar_embedded_jars_extractor.ExtractEmbeddedJars(aar, param_file, "out_dir", "//foo:bar")
5858
self.assertCountEqual(["classes.jar", "libs"], os.listdir("out_dir"))
5959
self.assertCountEqual(["a.jar", "b.jar"], os.listdir("out_dir/libs"))
6060
param_file.seek(0)
6161
self.assertEqual(
6262
[b"--exclude_build_data\n",
63+
b"--build_target\n",
64+
b"//foo:bar\n",
6365
b"--sources\n",
6466
b"out_dir/classes.jar\n",
6567
b"--sources\n",
@@ -73,11 +75,13 @@ def testOnlyClassesJar(self):
7375
aar.writestr("classes.jar", "")
7476
param_file = io.BytesIO()
7577
os.makedirs("out_dir")
76-
aar_embedded_jars_extractor.ExtractEmbeddedJars(aar, param_file, "out_dir")
78+
aar_embedded_jars_extractor.ExtractEmbeddedJars(aar, param_file, "out_dir", "//foo:bar")
7779
self.assertEqual(["classes.jar"], os.listdir("out_dir"))
7880
param_file.seek(0)
7981
self.assertEqual(
8082
[b"--exclude_build_data\n",
83+
b"--build_target\n",
84+
b"//foo:bar\n",
8185
b"--sources\n",
8286
b"out_dir/classes.jar\n"],
8387
param_file.readlines())

0 commit comments

Comments
 (0)