Skip to content

Commit ebcee78

Browse files
Switch to using cargo metadata instead of cargo read-manifest (llvm-ml#20)
1 parent 7730147 commit ebcee78

File tree

3 files changed

+41
-17
lines changed

3 files changed

+41
-17
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"repo_name": "azure-sdk-for-rust",
3+
"git_repo": "https://github.com/Azure/azure-sdk-for-rust.git",
4+
"build_system": "cargo",
5+
"commit_sha": "7fe4da3b4388f6be5aa3049cb3e0658425ce3295"
6+
}

llvm_ir_dataset_utils/builders/cargo_builder.py

+33-15
Original file line numberDiff line numberDiff line change
@@ -11,39 +11,55 @@
1111

1212

1313
def get_targets_from_manifest(source_dir):
14-
command_vector = ["cargo", "read-manifest"]
14+
command_vector = ["cargo", "metadata", "--no-deps"]
1515
try:
1616
with subprocess.Popen(
1717
command_vector, stdout=subprocess.PIPE, cwd=source_dir) as process:
1818
out, err = process.communicate()
1919
manifest = json.loads(out.decode("utf-8"))
20-
targets = manifest["targets"]
21-
target_tuples = []
22-
for target in targets:
23-
target_tuples.append((target["kind"][0], target["name"]))
24-
return target_tuples
20+
targets = []
21+
for package in manifest["packages"]:
22+
for target in package["targets"]:
23+
targets.append({
24+
"name": target["name"],
25+
"kind": target["kind"][0],
26+
"package": package["name"],
27+
"version": package["version"]
28+
})
29+
return targets
2530
except:
2631
return []
2732

2833

2934
def build_all_targets(source_dir, build_dir):
3035
targets_list = get_targets_from_manifest(source_dir)
3136
for target in targets_list:
32-
logging.info(f"Building target {target[1]} of type {target[0]}")
37+
logging.info(
38+
f"Building target {target['name']} of type {target['kind']} from package {target['package']}"
39+
)
3340
perform_build(source_dir, build_dir, target)
34-
logging.info(f"Finished building target {target[1]} of type {target[0]}")
41+
logging.info(
42+
f"Finished building target {target['name']} of type {target['kind']} from package {target['package']}"
43+
)
3544

3645

3746
def perform_build(source_dir, build_dir, target):
3847
build_env = os.environ.copy()
3948
build_env["CARGO_TARGET_DIR"] = build_dir
40-
build_command_vector = ["cargo", "rustc", "--all-features"]
41-
if target[0] == "lib":
49+
build_command_vector = [
50+
"cargo", "rustc", "--all-features", "-p",
51+
f"{target['package']}@{target['version']}"
52+
]
53+
if target['kind'] == "lib":
4254
build_command_vector.append("--lib")
43-
elif target[0] == "test":
44-
build_command_vector.extend(["--test", target[1]])
45-
elif target[0] == "bench":
46-
build_command_vector.extend(["--bench", target[1]])
55+
elif target['kind'] == "test":
56+
build_command_vector.extend(["--test", target['name']])
57+
elif target['kind'] == "bench":
58+
build_command_vector.extend(["--bench", target['name']])
59+
elif target['kind'] == "bin":
60+
build_command_vector.extend(["--bin", target['name']])
61+
elif target['kind'] == "example":
62+
build_command_vector.extend(["--example", target['name']])
4763
else:
4864
logging.warn("Unrecognized target type, not building.")
4965
return
@@ -57,7 +73,9 @@ def perform_build(source_dir, build_dir, target):
5773
stdout=subprocess.PIPE,
5874
stderr=subprocess.PIPE)
5975
except:
60-
logging.warn(f"Failed to build target {target[1]} of type {target[0]}")
76+
logging.warn(
77+
f"Failed to build target {target['name']} of type {target['kind']} from package {target['package']}"
78+
)
6179

6280

6381
def extract_ir(build_dir, corpus_dir):

llvm_ir_dataset_utils/tools/build_crate_from_repository.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def main(_):
4040
elif FLAGS.repository_list is not None:
4141
with open(FLAGS.repository_list) as repository_list_file:
4242
crates_list = repository_list_file.read().splitlines()
43-
43+
4444
for index, crate_to_build in enumerate(crates_list):
4545
corpus_description = {
4646
'git_repo': crate_to_build,
@@ -50,7 +50,7 @@ def main(_):
5050
}
5151

5252
builder.parse_and_build_from_description(corpus_description, FLAGS.base_dir,
53-
FLAGS.corpus_dir)
53+
FLAGS.corpus_dir)
5454

5555

5656
if __name__ == '__main__':

0 commit comments

Comments
 (0)