C++,runfiles: rename sources to avoid conflict Avoid include collision inside the Bazel source tree when a rule depends on @bazel_tools//tools/cpp/runfiles and includes "tools/cpp/runfiles/runfiles.h", but they end up getting "tools/cpp/runfiles/runfiles.h" from the main repo. Change-Id: Ic0fa23045b25cf9b1987780f9e752a54fa32be45 Details: https://github.com/bazelbuild/bazel/issues/5640#issuecomment-416957997 Closes #6023. Change-Id: Ic0fa23045b25cf9b1987780f9e752a54fa32be45 PiperOrigin-RevId: 210878008
diff --git a/src/create_embedded_tools.py b/src/create_embedded_tools.py index 4ad4a5a..3041f6a 100644 --- a/src/create_embedded_tools.py +++ b/src/create_embedded_tools.py
@@ -31,6 +31,8 @@ ('*tools/jdk/BUILD*', lambda x: 'tools/jdk/BUILD'), ('*tools/platforms/platforms.BUILD', lambda x: 'platforms/BUILD'), ('*tools/platforms/*', lambda x: 'platforms/' + os.path.basename(x)), + ('*tools/cpp/runfiles/*', + lambda x: 'tools/cpp/runfiles/' + os.path.basename(x)), ('*JavaBuilder*_deploy.jar', lambda x: 'tools/jdk/' + os.path.basename(x)), ('*JacocoCoverage*_deploy.jar', lambda x: 'tools/jdk/JacocoCoverage_deploy.jar'), @@ -44,7 +46,6 @@ lambda x: 'tools/jdk/ExperimentalTestRunner_deploy.jar'), ('*Runner_deploy.jar', lambda x: 'tools/jdk/TestRunner_deploy.jar'), ('*singlejar_local', lambda x: 'tools/jdk/singlejar/singlejar'), - ('src/tools/runfiles/runfiles.py', lambda x: 'tools/runfiles/runfiles.py'), ('*launcher.exe', lambda x: 'tools/launcher/launcher.exe'), ('*def_parser.exe', lambda x: 'tools/def_parser/def_parser.exe'), ('*ijar.exe', lambda x: 'tools/jdk/ijar/ijar.exe'),
diff --git a/src/test/py/bazel/test_base.py b/src/test/py/bazel/test_base.py index 8670f0d..6455ae2 100644 --- a/src/test/py/bazel/test_base.py +++ b/src/test/py/bazel/test_base.py
@@ -61,7 +61,7 @@ self._test_cwd = tempfile.mkdtemp(dir=self._tests_root) self._test_bazelrc = os.path.join(self._temp, 'test_bazelrc') with open(self._test_bazelrc, 'wt') as f: - f.write('build --announce --jobs=8\n') + f.write('build --jobs=8\n') os.chdir(self._test_cwd) def tearDown(self):
diff --git a/tools/cpp/runfiles/BUILD b/tools/cpp/runfiles/BUILD index dae87c9..e53618e 100644 --- a/tools/cpp/runfiles/BUILD +++ b/tools/cpp/runfiles/BUILD
@@ -16,17 +16,32 @@ name = "embedded_tools", srcs = [ "BUILD.tools", + ":srcs_for_embedded_tools", + ], + visibility = ["//tools:__pkg__"], +) + +genrule( + name = "srcs_for_embedded_tools", + srcs = [ + "runfiles_src.cc", + "runfiles_src.h", + ], + outs = [ "runfiles.cc", "runfiles.h", ], - visibility = ["//tools:__pkg__"], + cmd = ("sed " + + " 's|^#include.*/runfiles_src.h.*|#include \"tools/cpp/runfiles/runfiles.h\"|' " + + " $(location runfiles_src.cc) > $(location runfiles.cc) && " + + "cp $(location runfiles_src.h) $(location runfiles.h)"), ) cc_library( name = "runfiles", testonly = 1, - srcs = ["runfiles.cc"], - hdrs = ["runfiles.h"], + srcs = ["runfiles_src.cc"], + hdrs = ["runfiles_src.h"], ) cc_test(
diff --git a/tools/cpp/runfiles/runfiles.cc b/tools/cpp/runfiles/runfiles_src.cc similarity index 98% rename from tools/cpp/runfiles/runfiles.cc rename to tools/cpp/runfiles/runfiles_src.cc index 64e797f..4ee1191 100644 --- a/tools/cpp/runfiles/runfiles.cc +++ b/tools/cpp/runfiles/runfiles_src.cc
@@ -11,7 +11,7 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -#include "tools/cpp/runfiles/runfiles.h" +#include "tools/cpp/runfiles/runfiles_src.h" // this line is replaced in @bazel_tools #ifdef _WIN32 #include <windows.h>
diff --git a/tools/cpp/runfiles/runfiles.h b/tools/cpp/runfiles/runfiles_src.h similarity index 96% rename from tools/cpp/runfiles/runfiles.h rename to tools/cpp/runfiles/runfiles_src.h index cfb1f30..e75a569 100644 --- a/tools/cpp/runfiles/runfiles.h +++ b/tools/cpp/runfiles/runfiles_src.h
@@ -33,12 +33,13 @@ // // int main(int argc, char** argv) { // std::string error; -// std::unique_ptr<Runfiles> runfiles(Runfiles::Create(argv[0], -// &error)); if (runfiles == nullptr) { +// std::unique_ptr<Runfiles> runfiles( +// Runfiles::Create(argv[0], &error)); +// if (runfiles == nullptr) { // ... // error handling // } // std::string path = -// runfiles->Rlocation("my_workspace/path/to/my/data.txt"); +// runfiles->Rlocation("my_workspace/path/to/my/data.txt"); // ... // // The code above creates a Runfiles object and retrieves a runfile path.
diff --git a/tools/cpp/runfiles/runfiles_test.cc b/tools/cpp/runfiles/runfiles_test.cc index d6ecac9..6f18a9e 100644 --- a/tools/cpp/runfiles/runfiles_test.cc +++ b/tools/cpp/runfiles/runfiles_test.cc
@@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "tools/cpp/runfiles/runfiles.h" +#include "tools/cpp/runfiles/runfiles_src.h" #ifdef _WIN32 #include <windows.h>