Move xcode-locator into src/tools packages, defining it as a target under @bazel_tools. Currently the tool still remains in embedded_binaries, but we will migrate away from that: Eventually it can simply live just under @bazel_tools.
--
MOS_MIGRATED_REVID=123436822
diff --git a/scripts/bootstrap/compile.sh b/scripts/bootstrap/compile.sh
index 3862bde..6faa330 100755
--- a/scripts/bootstrap/compile.sh
+++ b/scripts/bootstrap/compile.sh
@@ -256,7 +256,7 @@
cp src/main/tools/build_interface_so ${ARCHIVE_DIR}/_embedded_binaries/build_interface_so
cp src/main/tools/jdk.BUILD ${ARCHIVE_DIR}/_embedded_binaries/jdk.BUILD
cp $OUTPUT_DIR/libblaze.jar ${ARCHIVE_DIR}
-cp src/main/tools/xcode_locator_stub.sh ${ARCHIVE_DIR}/_embedded_binaries/xcode-locator
+cp src/tools/xcode/xcodelocator/xcode_locator_stub.sh ${ARCHIVE_DIR}/_embedded_binaries/xcode-locator
# bazel build using bootstrap version
function bootstrap_build() {
diff --git a/src/BUILD b/src/BUILD
index 6604f6f..443eba1 100644
--- a/src/BUILD
+++ b/src/BUILD
@@ -26,9 +26,9 @@
":libunix",
"//src/main/tools:build-runfiles",
"//src/main/tools:process-wrapper",
- "//src/main/tools:xcode-locator",
"//src/main/tools:namespace-sandbox",
"//src/main/tools:build_interface_so",
+ "//src/tools/xcode/xcodelocator:xcode-locator",
] + embedded_tools,
outs = ["install_base_key" + suffix],
cmd = select({
@@ -105,6 +105,7 @@
"//src/tools/xcode/momcwrapper:momcwrapper",
"//src/tools/xcode/swiftstdlibtoolwrapper:swiftstdlibtoolwrapper",
"//src/tools/xcode/environment:environment_plist",
+ "//src/tools/xcode/xcodelocator:xcode-locator",
"//src/tools/xcode/xcrunwrapper:xcrunwrapper",
"//src/objc_tools/bundlemerge:bundlemerge_deploy.jar",
"//src/objc_tools/plmerge:plmerge_deploy.jar",
@@ -180,10 +181,10 @@
":libunix",
"//src/main/tools:build-runfiles",
"//src/main/tools:process-wrapper",
- "//src/main/tools:xcode-locator",
"//src/main/tools:jdk-support",
"//src/main/tools:namespace-sandbox",
"//src/main/tools:build_interface_so",
+ "//src/tools/xcode/xcodelocator:xcode-locator",
":java-version",
],
outs = ["package" + suffix + ".zip"],
@@ -302,6 +303,7 @@
"//src/tools/xcode/realpath:srcs",
"//src/tools/xcode/stdredirect:srcs",
"//src/tools/xcode/swiftstdlibtoolwrapper:srcs",
+ "//src/tools/xcode/xcodelocator:srcs",
"//src/tools/xcode/xcrunwrapper:srcs",
"//src/tools/xcode-common:srcs",
],
diff --git a/src/create_embedded_tools.sh b/src/create_embedded_tools.sh
index bba803a..cb0295e 100755
--- a/src/create_embedded_tools.sh
+++ b/src/create_embedded_tools.sh
@@ -43,6 +43,7 @@
*src/objc_tools/*) OUTPUT_PATH=tools/objc/precomp_${i##*/} ;;
*xcode*StdRedirect.dylib) OUTPUT_PATH=tools/objc/StdRedirect.dylib ;;
*xcode*realpath) OUTPUT_PATH=tools/objc/realpath ;;
+ *xcode*xcode-locator) OUTPUT_PATH=tools/objc/xcode-locator ;;
*src/tools/xcode/*) OUTPUT_PATH=tools/objc/${i##*/}.sh ;;
*) OUTPUT_PATH=$(echo $i | sed 's_^.*bazel-out/[^/]*/bin/__') ;;
esac
diff --git a/src/main/tools/BUILD b/src/main/tools/BUILD
index 6f2832c..de5ec21 100644
--- a/src/main/tools/BUILD
+++ b/src/main/tools/BUILD
@@ -51,28 +51,6 @@
}),
)
-DARWIN_XCODE_LOCATOR_COMPILE_COMMAND = """
- /usr/bin/xcrun clang -fobjc-arc -framework CoreServices \
- -framework Foundation -o $@ $<
-"""
-
-genrule(
- name = "xcode-locator-genrule",
- srcs = select({
- "//src:darwin": ["xcode_locator.m"],
- "//src:darwin_x86_64": ["xcode_locator.m"],
- "//conditions:default": ["xcode_locator_stub.sh"],
- }),
- outs = ["xcode-locator"],
- cmd = select({
- "//src:darwin": DARWIN_XCODE_LOCATOR_COMPILE_COMMAND,
- "//src:darwin_x86_64": DARWIN_XCODE_LOCATOR_COMPILE_COMMAND,
- "//conditions:default": "cp $< $@",
- }),
- local = 1,
- output_to_bindir = 1,
-)
-
filegroup(
name = "jdk-support",
srcs = [
diff --git a/src/test/shell/bazel/bazel_objc_test.sh b/src/test/shell/bazel/bazel_objc_test.sh
index 410d95e..5a80672 100755
--- a/src/test/shell/bazel/bazel_objc_test.sh
+++ b/src/test/shell/bazel/bazel_objc_test.sh
@@ -161,4 +161,22 @@
expect_log "SDK \"iphonesimulator2.34\" cannot be located."
}
+function test_xcodelocator_embedded_tool() {
+ rm -rf ios
+ mkdir -p ios
+
+ cat >ios/BUILD <<EOF
+genrule(
+ name = "invoke_tool",
+ srcs = ["@bazel_tools//tools/objc:xcode-locator"],
+ outs = ["tool_output"],
+ cmd = "\$< > \$@",
+ tags = ["requires-darwin"],
+)
+EOF
+
+ bazel build --verbose_failures //ios:invoke_tool >$TEST_log 2>&1 \
+ || fail "should be able to resolve xcode-locator"
+}
+
run_suite "objc/ios test suite"
diff --git a/src/tools/xcode/xcodelocator/BUILD b/src/tools/xcode/xcodelocator/BUILD
new file mode 100644
index 0000000..48eb694
--- /dev/null
+++ b/src/tools/xcode/xcodelocator/BUILD
@@ -0,0 +1,28 @@
+package(default_visibility = ["//src:__subpackages__"])
+
+filegroup(
+ name = "srcs",
+ srcs = glob(["**"]),
+)
+
+DARWIN_XCODE_LOCATOR_COMPILE_COMMAND = """
+ /usr/bin/xcrun clang -fobjc-arc -framework CoreServices \
+ -framework Foundation -o $@ $<
+"""
+
+genrule(
+ name = "xcode-locator-genrule",
+ srcs = select({
+ "//src:darwin": ["xcode_locator.m"],
+ "//src:darwin_x86_64": ["xcode_locator.m"],
+ "//conditions:default": ["xcode_locator_stub.sh"],
+ }),
+ outs = ["xcode-locator"],
+ cmd = select({
+ "//src:darwin": DARWIN_XCODE_LOCATOR_COMPILE_COMMAND,
+ "//src:darwin_x86_64": DARWIN_XCODE_LOCATOR_COMPILE_COMMAND,
+ "//conditions:default": "cp $< $@",
+ }),
+ local = 1,
+ output_to_bindir = 1,
+)
diff --git a/src/main/tools/xcode_locator.m b/src/tools/xcode/xcodelocator/xcode_locator.m
similarity index 92%
rename from src/main/tools/xcode_locator.m
rename to src/tools/xcode/xcodelocator/xcode_locator.m
index 5b7a12e..09ebc00 100644
--- a/src/main/tools/xcode_locator.m
+++ b/src/tools/xcode/xcodelocator/xcode_locator.m
@@ -91,17 +91,17 @@
int main(int argc, const char * argv[]) {
@autoreleasepool {
- NSString *version = nil;
+ NSString *versionArg = nil;
if (argc == 1) {
- version = @"";
+ versionArg = @"";
} else if (argc == 2) {
- version = [NSString stringWithUTF8String:argv[1]];
+ versionArg = [NSString stringWithUTF8String:argv[1]];
NSCharacterSet *versSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789."];
- if ([version rangeOfCharacterFromSet:versSet.invertedSet].length != 0) {
- version = nil;
+ if ([versionArg rangeOfCharacterFromSet:versSet.invertedSet].length != 0) {
+ versionArg = nil;
}
}
- if (version == nil) {
+ if (versionArg == nil) {
printf("xcode_locator <version_number>\n"
"Given a version number, or partial version number in x.y.z format, will attempt "
"to return the path to the appropriate developer directory.\nOmitting a version "
@@ -137,7 +137,7 @@
AddEntryToDictionary(entry, dict);
}
- XcodeVersionEntry *entry = [dict objectForKey:version];
+ XcodeVersionEntry *entry = [dict objectForKey:versionArg];
if (entry) {
printf("%s\n", entry.url.fileSystemRepresentation);
return 0;
@@ -150,6 +150,6 @@
printf("\t\"%s\": \"%s\",\n", version.UTF8String, entry.url.fileSystemRepresentation);
}
printf("}\n");
- return (version == nil ? 0 : 1);
+ return ([@"" isEqualToString:versionArg] ? 0 : 1);
}
}
diff --git a/src/main/tools/xcode_locator_stub.sh b/src/tools/xcode/xcodelocator/xcode_locator_stub.sh
similarity index 100%
rename from src/main/tools/xcode_locator_stub.sh
rename to src/tools/xcode/xcodelocator/xcode_locator_stub.sh