From 475e05938e565ba06d9e2655af359388d5ceec8b Mon Sep 17 00:00:00 2001 From: UebelAndre Date: Fri, 11 Feb 2022 07:07:08 -0800 Subject: [PATCH 1/3] Fixed cdylib_has_native_dep_and_alwayslink_test --- test/unit/native_deps/native_deps_test.bzl | 30 ++++++++++++---------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/test/unit/native_deps/native_deps_test.bzl b/test/unit/native_deps/native_deps_test.bzl index 5755f5d2e6..f9c74319f5 100644 --- a/test/unit/native_deps/native_deps_test.bzl +++ b/test/unit/native_deps/native_deps_test.bzl @@ -29,15 +29,6 @@ def _rlib_has_no_native_libs_test_impl(ctx): assert_argv_contains_prefix_not(env, action, "--codegen=linker=") return analysistest.end(env) -def _dylib_has_native_libs_test_impl(ctx): - env = analysistest.begin(ctx) - tut = analysistest.target_under_test(env) - action = tut.actions[0] - assert_argv_contains(env, action, "--crate-type=dylib") - assert_argv_contains(env, action, "-lstatic=native_dep") - assert_argv_contains_prefix(env, action, "--codegen=linker=") - return analysistest.end(env) - def _cdylib_has_native_libs_test_impl(ctx): env = analysistest.begin(ctx) tut = analysistest.target_under_test(env) @@ -118,24 +109,37 @@ def _cdylib_has_native_dep_and_alwayslink_test_impl(ctx): tut = analysistest.target_under_test(env) action = tut.actions[0] + linker_args = _extract_linker_args(action.argv) + if ctx.target_platform_has_constraint(ctx.attr._macos_constraint[platform_common.ConstraintValueInfo]): + # Determine the macos min version + macosx_version_min = "12.1" + for linker_arg in linker_args: + for arg in linker_arg.split(" "): + if "-mmacosx-version-min" in arg: + _, _, val = arg.partition("=") + macosx_version_min = val + want = [ - "-lstatic=native_dep", + "link-args=-lc++ -fobjc-link-runtime -headerpad_max_install_names -no-canonical-prefixes -target x86_64-apple-macosx -mmacosx-version-min={} -lc++ -target x86_64-apple-macosx".format(macosx_version_min), + "link-arg=bazel-out/darwin-fastbuild/bin/test/unit/native_deps/libnative_dep.a", "link-arg=-Wl,-force_load,bazel-out/darwin-fastbuild/bin/test/unit/native_deps/libalwayslink.lo", ] elif ctx.target_platform_has_constraint(ctx.attr._windows_constraint[platform_common.ConstraintValueInfo]): want = [ - "-lstatic=native_dep", + "link-args=/nologo /SUBSYSTEM:CONSOLE /MACHINE:X64 /DEFAULTLIB:msvcrt.lib /DEBUG:FASTLINK /INCREMENTAL:NO", + "link-arg=bazel-out/x64_windows-fastbuild/bin/test/unit/native_deps/native_dep.lib", "link-arg=/WHOLEARCHIVE:bazel-out/x64_windows-fastbuild/bin/test/unit/native_deps/alwayslink.lo.lib", ] else: want = [ + "link-args=-fuse-ld=gold -Wl,-no-as-needed -Wl,-z,relro,-z,now -B/usr/bin -pass-exit-codes -lstdc++ -lm", "link-arg=bazel-out/k8-fastbuild/bin/test/unit/native_deps/libnative_dep.a", "link-arg=-Wl,--whole-archive", "link-arg=bazel-out/k8-fastbuild/bin/test/unit/native_deps/libalwayslink.lo", "link-arg=-Wl,--no-whole-archive", ] - asserts.equals(env, want, _extract_linker_args(action.argv)) + asserts.equals(env, want, linker_args) return analysistest.end(env) rlib_has_no_native_libs_test = analysistest.make(_rlib_has_no_native_libs_test_impl) @@ -159,7 +163,7 @@ bin_has_native_dep_and_alwayslink_test = analysistest.make(_bin_has_native_dep_a "_macos_constraint": attr.label(default = Label("@platforms//os:macos")), "_windows_constraint": attr.label(default = Label("@platforms//os:windows")), }) -cdylib_has_native_dep_and_alwayslink_test = analysistest.make(_cdylib_has_native_libs_test_impl, attrs = { +cdylib_has_native_dep_and_alwayslink_test = analysistest.make(_cdylib_has_native_dep_and_alwayslink_test_impl, attrs = { "_macos_constraint": attr.label(default = Label("@platforms//os:macos")), "_windows_constraint": attr.label(default = Label("@platforms//os:windows")), }) From e21a11217cf7050d19a77ba4a40ae5151649b567 Mon Sep 17 00:00:00 2001 From: UebelAndre Date: Fri, 11 Feb 2022 07:07:08 -0800 Subject: [PATCH 2/3] unpin buildifier --- .bazelci/presubmit.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml index c8b3805bcd..afe0148fac 100644 --- a/.bazelci/presubmit.yml +++ b/.bazelci/presubmit.yml @@ -302,9 +302,5 @@ tasks: # TODO: fix test targets in `crate_universe_windows_targets` test_targets: *crate_universe_windows_targets buildifier: - # TODO: Version 5.0.0 introduced a ton of unused variable warnings in cases - # that should have been accounted for by `_` prefixes on the variable. Buildifier - # should ignore `_` prefixed variables when checking if something is unused - # https://github.com/bazelbuild/buildtools/issues/1044 - version: 4.2.5 + version: latest warnings: "all" From 6797b5bc8c46bef33e36b4c2979fdc1efcb38c82 Mon Sep 17 00:00:00 2001 From: UebelAndre Date: Fri, 11 Feb 2022 07:19:40 -0800 Subject: [PATCH 3/3] Fixed buildifier defects --- rust/private/rustc.bzl | 3 --- rust/private/rustdoc_test.bzl | 13 +++---------- test/unit/native_deps/native_deps_test.bzl | 18 +++++++++--------- 3 files changed, 12 insertions(+), 22 deletions(-) diff --git a/rust/private/rustc.bzl b/rust/private/rustc.bzl index 1b5a71f06e..04346544d0 100644 --- a/rust/private/rustc.bzl +++ b/rust/private/rustc.bzl @@ -1133,9 +1133,6 @@ def _make_link_flags_default(linker_input): ret.extend(_portable_link_flags(lib)) return ret -def _libraries_dirnames(linker_input): - return [get_preferred_artifact(lib).dirname for lib in linker_input.libraries] - def _add_native_link_flags(args, dep_info, linkstamp_outs, crate_type, toolchain, cc_toolchain, feature_configuration): """Adds linker flags for all dependencies of the current target. diff --git a/rust/private/rustdoc_test.bzl b/rust/private/rustdoc_test.bzl index 20e960dcfb..663c65f12b 100644 --- a/rust/private/rustdoc_test.bzl +++ b/rust/private/rustdoc_test.bzl @@ -18,7 +18,7 @@ load("//rust/private:common.bzl", "rust_common") load("//rust/private:rustdoc.bzl", "rustdoc_compile_action") load("//rust/private:utils.bzl", "dedent", "find_toolchain") -def _construct_writer_arguments(ctx, test_runner, action, crate_info, rust_toolchain): +def _construct_writer_arguments(ctx, test_runner, action, crate_info): """Construct arguments and environment variables specific to `rustdoc_test_writer`. This is largely solving for the fact that tests run from a runfiles directory @@ -30,7 +30,6 @@ def _construct_writer_arguments(ctx, test_runner, action, crate_info, rust_toolc test_runner (File): The test_runner output file declared by `rustdoc_test`. action (struct): Action arguments generated by `rustdoc_compile_action`. crate_info (CrateInfo): The provider of the crate who's docs are being tested. - rust_toolchain (rust_toolchain): The currently configured `rust_toolchain`. Returns: tuple: A tuple of `rustdoc_test_writer` specific inputs @@ -38,11 +37,6 @@ def _construct_writer_arguments(ctx, test_runner, action, crate_info, rust_toolc - dict: Required environment variables """ - # Set the SYSROOT to the directory of the rust_lib files passed to the toolchain - env = { - "SYSROOT": "${{pwd}}/{}".format(rust_toolchain.sysroot), - } - writer_args = ctx.actions.args() # Track the output path where the test writer should write the test @@ -50,8 +44,8 @@ def _construct_writer_arguments(ctx, test_runner, action, crate_info, rust_toolc # Track what environment variables should be written to the test runner writer_args.add("--action_env=DEVELOPER_DIR") - writer_args.add("--action_env=SDKROOT") writer_args.add("--action_env=PATHEXT") + writer_args.add("--action_env=SDKROOT") writer_args.add("--action_env=SYSROOT") for var in action.env.keys(): writer_args.add("--action_env={}".format(var)) @@ -113,7 +107,7 @@ def _rust_doc_test_impl(ctx): action = rustdoc_compile_action( ctx = ctx, - toolchain = find_toolchain(ctx), + toolchain = toolchain, crate_info = crate_info, rustdoc_flags = rustdoc_flags, is_test = True, @@ -126,7 +120,6 @@ def _rust_doc_test_impl(ctx): test_runner = test_runner, action = action, crate_info = crate_info, - rust_toolchain = toolchain, ) # Allow writer environment variables to override those from the action. diff --git a/test/unit/native_deps/native_deps_test.bzl b/test/unit/native_deps/native_deps_test.bzl index f9c74319f5..fc1681c3f4 100644 --- a/test/unit/native_deps/native_deps_test.bzl +++ b/test/unit/native_deps/native_deps_test.bzl @@ -340,7 +340,7 @@ def _additional_deps_test(): cc_library( name = "additional_deps_cc", srcs = ["native_dep.cc"], - linkopts = ["-L$(location :dynamic.lds)"], + linkopts = ["-L$(execpath :dynamic.lds)"], deps = [":dynamic.lds"], ) @@ -372,16 +372,16 @@ def native_deps_test_suite(name): native.test_suite( name = name, tests = [ - ":rlib_has_no_native_libs_test", - ":staticlib_has_native_libs_test", - ":cdylib_has_native_libs_test", - ":proc_macro_has_native_libs_test", - ":bin_has_native_libs_test", - ":bin_has_native_dep_and_alwayslink_test", - ":cdylib_has_native_dep_and_alwayslink_test", - ":native_linkopts_propagate_test", ":bin_has_additional_deps_test", + ":bin_has_native_dep_and_alwayslink_test", + ":bin_has_native_libs_test", ":cdylib_has_additional_deps_test", + ":cdylib_has_native_dep_and_alwayslink_test", + ":cdylib_has_native_libs_test", ":lib_has_no_additional_deps_test", + ":native_linkopts_propagate_test", + ":proc_macro_has_native_libs_test", + ":rlib_has_no_native_libs_test", + ":staticlib_has_native_libs_test", ], )