Skip to content

Commit

Permalink
Revert "Fixes incorrect install names on darwin platforms" (bazelbuil…
Browse files Browse the repository at this point in the history
…d#15450)

This reverts commit b06f495.

Also had to add a missing mnemonic function call parameter to `getDynamicLibrarySoname`. Copy-pasted the parameter from the other use of that function in the codebase.

Tested manually with a custom toolchain and there is also a test from the reverted code.

Fixes bazelbuild#15214

Closes bazelbuild#15261.

PiperOrigin-RevId: 446662219

Co-authored-by: Chris Clearwater <chris@clearwater.dev>
  • Loading branch information
2 people authored and meteorcloudy committed May 10, 2022
1 parent 26f8783 commit 1651b3b
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -820,7 +820,10 @@ public CppLinkAction build() throws InterruptedException, RuleErrorException {
getLinkType().linkerOrArchiver().equals(LinkerOrArchiver.LINKER),
configuration.getBinDirectory(repositoryName).getExecPath(),
output.getExecPathString(),
output.getRootRelativePath().getBaseName(),
SolibSymlinkAction.getDynamicLibrarySoname(
output.getRootRelativePath(),
/* preserveName= */ false,
actionConstructionContext.getConfiguration().getMnemonic()),
linkType.equals(LinkTargetType.DYNAMIC_LIBRARY),
paramFile != null ? paramFile.getExecPathString() : null,
thinltoParamFile != null ? thinltoParamFile.getExecPathString() : null,
Expand Down
50 changes: 16 additions & 34 deletions src/test/shell/bazel/cpp_darwin_integration_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -124,59 +124,41 @@ EOF
}

function test_cc_test_with_explicit_install_name() {
mkdir -p cpp/install_name
cat > cpp/install_name/BUILD <<EOF
mkdir -p cpp
cat > cpp/BUILD <<EOF
cc_library(
name = "foo",
srcs = ["foo.cc"],
)
cc_binary(
name = "libbar.so",
srcs = ["bar.cc"],
linkshared = 1,
)
cc_binary(
name = "libbaz.dylib",
srcs = ["baz.cc"],
linkshared = 1,
hdrs = ["foo.h"],
)
cc_test(
name = "test",
srcs = ["test.cc", ":libbar.so", ":libbaz.dylib"],
srcs = ["test.cc"],
deps = [":foo"],
)
EOF
cat > cpp/install_name/foo.cc <<EOF
int foo() { return 2; }
cat > cpp/foo.h <<EOF
int foo();
EOF
cat > cpp/install_name/bar.cc <<EOF
int bar() { return 12; }
cat > cpp/foo.cc <<EOF
int foo() { return 0; }
EOF
cat > cpp/install_name/baz.cc <<EOF
int baz() { return 42; }
EOF
cat > cpp/install_name/test.cc <<EOF
int foo();
int bar();
int baz();
cat > cpp/test.cc <<EOF
#include "cpp/foo.h"
int main() {
int result = foo() + bar() + baz();
if (result == 56) {
return 0;
} else {
return result;
}
return foo();
}
EOF

bazel test --incompatible_macos_set_install_name //cpp/install_name:test || \
fail "bazel test //cpp/install_name:test failed"
bazel test --incompatible_macos_set_install_name //cpp:test || \
fail "bazel test //cpp:test failed"
# Ensure @rpath is correctly set in the binary.
./bazel-bin/cpp/install_name/test || \
./bazel-bin/cpp/test || \
fail "//cpp:test workspace execution failed, expected return 0, got $?"
cd bazel-bin
./cpp/install_name/test || \
./cpp/test || \
fail "//cpp:test execution failed, expected 0, but $?"
}

run_suite "Tests for Bazel's C++ rules on Darwin"

0 comments on commit 1651b3b

Please sign in to comment.