Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace slashes with underscores in default crate names. #1336

Merged
merged 1 commit into from
May 13, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions rust/private/rustc.bzl
Original file line number Diff line number Diff line change
@@ -923,7 +923,7 @@ def rustc_compile_action(
if toolchain.os == "windows" and crate_info.type == "cdylib":
# Rustc generates the import library with a `.dll.lib` extension rather than the usual `.lib` one that msvc
# expects (see https://github.com/rust-lang/rust/pull/29520 for more context).
interface_library = ctx.actions.declare_file(crate_info.output.basename + ".lib")
interface_library = ctx.actions.declare_file(crate_info.output.basename + ".lib", sibling = crate_info.output)
outputs.append(interface_library)

# The action might generate extra output that we don't want to include in the `DefaultInfo` files.
@@ -935,10 +935,10 @@ def rustc_compile_action(
dsym_folder = None
if crate_info.type in ("cdylib", "bin") and not crate_info.is_test:
if toolchain.os == "windows":
pdb_file = ctx.actions.declare_file(crate_info.output.basename[:-len(crate_info.output.extension)] + "pdb")
pdb_file = ctx.actions.declare_file(crate_info.output.basename[:-len(crate_info.output.extension)] + "pdb", sibling = crate_info.output)
action_outputs.append(pdb_file)
elif toolchain.os == "darwin":
dsym_folder = ctx.actions.declare_directory(crate_info.output.basename + ".dSYM")
dsym_folder = ctx.actions.declare_directory(crate_info.output.basename + ".dSYM", sibling = crate_info.output)
action_outputs.append(dsym_folder)

if ctx.executable._process_wrapper:
4 changes: 3 additions & 1 deletion rust/private/utils.bzl
Original file line number Diff line number Diff line change
@@ -272,7 +272,9 @@ def name_to_crate_name(name):
Returns:
str: The name of the crate for this target.
"""
return name.replace("-", "_")
for illegal in ("-", "/"):
name = name.replace(illegal, "_")
return name

def _invalid_chars_in_crate_name(name):
"""Returns any invalid chars in the given crate name.
18 changes: 9 additions & 9 deletions test/unit/crate_name/crate_name_test.bzl
Original file line number Diff line number Diff line change
@@ -48,7 +48,7 @@ def _custom_crate_name_test_test_impl(ctx):

def _invalid_default_crate_name_test_impl(ctx):
env = analysistest.begin(ctx)
asserts.expect_failure(env, "contains invalid character(s): /")
asserts.expect_failure(env, "contains invalid character(s): @")
return analysistest.end(env)

def _invalid_custom_crate_name_test_impl(ctx):
@@ -119,7 +119,7 @@ no_extra_filename_test = analysistest.make(

def _crate_name_test():
rust_library(
name = "default-crate-name-library",
name = "default/crate-name-library",
srcs = ["lib.rs"],
edition = "2018",
)
@@ -132,7 +132,7 @@ def _crate_name_test():
)

rust_binary(
name = "default-crate-name-binary",
name = "default/crate-name-binary",
srcs = ["main.rs"],
edition = "2018",
)
@@ -145,7 +145,7 @@ def _crate_name_test():
)

rust_test(
name = "default-crate-name-test",
name = "default/crate-name-test",
srcs = ["main.rs"],
edition = "2018",
)
@@ -158,7 +158,7 @@ def _crate_name_test():
)

rust_library(
name = "invalid/default-crate-name",
name = "invalid@default-crate-name",
srcs = ["lib.rs"],
edition = "2018",
tags = ["manual", "norustfmt"],
@@ -197,7 +197,7 @@ def _crate_name_test():

default_crate_name_library_test(
name = "default_crate_name_library_test",
target_under_test = ":default-crate-name-library",
target_under_test = ":default/crate-name-library",
)

custom_crate_name_library_test(
@@ -207,7 +207,7 @@ def _crate_name_test():

default_crate_name_binary_test(
name = "default_crate_name_binary_test",
target_under_test = ":default-crate-name-binary",
target_under_test = ":default/crate-name-binary",
)

custom_crate_name_binary_test(
@@ -217,7 +217,7 @@ def _crate_name_test():

default_crate_name_test_test(
name = "default_crate_name_test_test",
target_under_test = ":default-crate-name-test",
target_under_test = ":default/crate-name-test",
)

custom_crate_name_test_test(
@@ -227,7 +227,7 @@ def _crate_name_test():

invalid_default_crate_name_test(
name = "invalid_default_crate_name_test",
target_under_test = ":invalid/default-crate-name",
target_under_test = ":invalid@default-crate-name",
)

invalid_custom_crate_name_test(