aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/cpp
diff options
context:
space:
mode:
authorGravatar ccalvarin <ccalvarin@google.com>2018-04-20 13:56:55 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-20 13:58:51 -0700
commit5305a36b93f2ad0a1b499bc916e6cf365676532c (patch)
treefd59c966cda802c6f36831ee47f3317cbf0343f1 /src/main/cpp
parentfc44daf3c4142a588c4a553c8abfd6f28bbaf4f3 (diff)
Remove overlap between the blazerc and bazelrc names.
Bazel now has its own subclass of StartupOptions to specify bazel-only options. This is needed for https://github.com/bazelbuild/bazel/issues/4502. RELNOTES(INC): No longer accepts --blazerc or --[no]master_blazerc, accepts bazelrc name only. PiperOrigin-RevId: 193718297
Diffstat (limited to 'src/main/cpp')
-rw-r--r--src/main/cpp/BUILD17
-rw-r--r--src/main/cpp/bazel_startup_options.cc57
-rw-r--r--src/main/cpp/bazel_startup_options.h36
-rw-r--r--src/main/cpp/main.cc3
-rw-r--r--src/main/cpp/option_processor.cc10
-rw-r--r--src/main/cpp/startup_options.cc38
-rw-r--r--src/main/cpp/startup_options.h12
7 files changed, 121 insertions, 52 deletions
diff --git a/src/main/cpp/BUILD b/src/main/cpp/BUILD
index 1ec8912492..73bbf5d0b8 100644
--- a/src/main/cpp/BUILD
+++ b/src/main/cpp/BUILD
@@ -100,6 +100,7 @@ cc_binary(
}),
visibility = ["//src:__pkg__"],
deps = [
+ ":bazel_startup_options",
":blaze_util",
":option_processor",
":startup_options",
@@ -154,6 +155,22 @@ cc_library(
)
cc_library(
+ name = "bazel_startup_options",
+ srcs = ["bazel_startup_options.cc"],
+ hdrs = ["bazel_startup_options.h"],
+ visibility = [
+ "//src:__pkg__",
+ "//src/test/cpp:__pkg__",
+ ],
+ deps = [
+ ":blaze_util",
+ ":startup_options",
+ ":workspace_layout",
+ "//src/main/cpp/util:blaze_exit_code",
+ ],
+)
+
+cc_library(
name = "workspace_layout",
srcs = ["workspace_layout.cc"],
hdrs = ["workspace_layout.h"],
diff --git a/src/main/cpp/bazel_startup_options.cc b/src/main/cpp/bazel_startup_options.cc
new file mode 100644
index 0000000000..f3138f781b
--- /dev/null
+++ b/src/main/cpp/bazel_startup_options.cc
@@ -0,0 +1,57 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// 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 "src/main/cpp/bazel_startup_options.h"
+
+#include <cassert>
+
+#include "src/main/cpp/blaze_util.h"
+#include "src/main/cpp/workspace_layout.h"
+
+namespace blaze {
+
+BazelStartupOptions::BazelStartupOptions(
+ const WorkspaceLayout *workspace_layout)
+ : StartupOptions("Bazel", workspace_layout) {
+ RegisterNullaryStartupFlag("master_bazelrc");
+ RegisterUnaryStartupFlag("bazelrc");
+}
+
+blaze_exit_code::ExitCode BazelStartupOptions::ProcessArgExtra(
+ const char *arg, const char *next_arg, const std::string &rcfile,
+ const char **value, bool *is_processed, std::string *error) {
+ assert(value);
+ assert(is_processed);
+
+ if ((*value = GetUnaryOption(arg, next_arg, "--bazelrc")) != nullptr) {
+ if (!rcfile.empty()) {
+ *error = "Can't specify --bazelrc in the .bazelrc file.";
+ return blaze_exit_code::BAD_ARGV;
+ }
+ } else if (GetNullaryOption(arg, "--nomaster_bazelrc") ||
+ GetNullaryOption(arg, "--master_bazelrc")) {
+ if (!rcfile.empty()) {
+ *error = "Can't specify --[no]master_bazelrc in .bazelrc file.";
+ return blaze_exit_code::BAD_ARGV;
+ }
+ option_sources["blazerc"] = rcfile;
+ } else {
+ *is_processed = false;
+ return blaze_exit_code::SUCCESS;
+ }
+
+ *is_processed = true;
+ return blaze_exit_code::SUCCESS;
+}
+
+} // namespace blaze
diff --git a/src/main/cpp/bazel_startup_options.h b/src/main/cpp/bazel_startup_options.h
new file mode 100644
index 0000000000..53ce6cb021
--- /dev/null
+++ b/src/main/cpp/bazel_startup_options.h
@@ -0,0 +1,36 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// 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.
+#ifndef BAZEL_SRC_MAIN_CPP_BAZEL_STARTUP_OPTIONS_H_
+#define BAZEL_SRC_MAIN_CPP_BAZEL_STARTUP_OPTIONS_H_
+
+#include <string>
+
+#include "src/main/cpp/startup_options.h"
+#include "src/main/cpp/util/exit_code.h"
+
+namespace blaze {
+
+// BazelStartupOptions contains the startup options that are Bazel-specific.
+class BazelStartupOptions : public StartupOptions {
+ public:
+ explicit BazelStartupOptions(const WorkspaceLayout *workspace_layout);
+
+ blaze_exit_code::ExitCode ProcessArgExtra(
+ const char *arg, const char *next_arg, const std::string &rcfile,
+ const char **value, bool *is_processed, std::string *error) override;
+};
+
+} // namespace blaze
+
+#endif // BAZEL_SRC_MAIN_CPP_BAZEL_STARTUP_OPTIONS_H_
diff --git a/src/main/cpp/main.cc b/src/main/cpp/main.cc
index c88ea9ffd8..25a1dbf79b 100644
--- a/src/main/cpp/main.cc
+++ b/src/main/cpp/main.cc
@@ -14,6 +14,7 @@
#include <memory>
+#include "src/main/cpp/bazel_startup_options.h"
#include "src/main/cpp/blaze.h"
#include "src/main/cpp/option_processor.h"
#include "src/main/cpp/startup_options.h"
@@ -23,7 +24,7 @@ int main(int argc, const char *argv[]) {
std::unique_ptr<blaze::WorkspaceLayout> workspace_layout(
new blaze::WorkspaceLayout());
std::unique_ptr<blaze::StartupOptions> startup_options(
- new blaze::StartupOptions(workspace_layout.get()));
+ new blaze::BazelStartupOptions(workspace_layout.get()));
return blaze::Main(argc, argv, workspace_layout.get(),
new blaze::OptionProcessor(workspace_layout.get(),
std::move(startup_options)));
diff --git a/src/main/cpp/option_processor.cc b/src/main/cpp/option_processor.cc
index 864d968a3b..68237570fe 100644
--- a/src/main/cpp/option_processor.cc
+++ b/src/main/cpp/option_processor.cc
@@ -227,8 +227,7 @@ blaze_exit_code::ExitCode OptionProcessor::GetRcFiles(
// Find the master bazelrcs if requested. This list may contain duplicates.
vector<string> candidate_bazelrc_paths;
- if (SearchNullaryOption(cmd_line->startup_args, "master_blazerc", true) &&
- SearchNullaryOption(cmd_line->startup_args, "master_bazelrc", true)) {
+ if (SearchNullaryOption(cmd_line->startup_args, "master_bazelrc", true)) {
const string workspace_rc =
workspace_layout->GetWorkspaceRcPath(workspace, cmd_line->startup_args);
const string binary_rc =
@@ -240,13 +239,10 @@ blaze_exit_code::ExitCode OptionProcessor::GetRcFiles(
candidate_bazelrc_paths = {workspace_rc, binary_rc, system_rc};
}
- const char* blazerc = SearchUnaryOption(cmd_line->startup_args, "--blazerc");
- if (blazerc == nullptr) {
- blazerc = SearchUnaryOption(cmd_line->startup_args, "--bazelrc");
- }
string user_bazelrc_path;
blaze_exit_code::ExitCode find_bazelrc_exit_code =
- FindUserBlazerc(blazerc, workspace, &user_bazelrc_path, error);
+ FindUserBlazerc(SearchUnaryOption(cmd_line->startup_args, "--bazelrc"),
+ workspace, &user_bazelrc_path, error);
if (find_bazelrc_exit_code != blaze_exit_code::SUCCESS) {
return find_bazelrc_exit_code;
}
diff --git a/src/main/cpp/startup_options.cc b/src/main/cpp/startup_options.cc
index ef083dbdc0..1f9bc8b324 100644
--- a/src/main/cpp/startup_options.cc
+++ b/src/main/cpp/startup_options.cc
@@ -58,9 +58,6 @@ bool NullaryStartupFlag::IsValid(const std::string &arg) const {
GetNullaryOption(arg.c_str(), ("--no" + name_).c_str());
}
-StartupOptions::StartupOptions(const WorkspaceLayout* workspace_layout)
- : StartupOptions("Bazel", workspace_layout) {}
-
void StartupOptions::RegisterNullaryStartupFlag(const std::string &flag_name) {
valid_startup_flags.insert(std::unique_ptr<NullaryStartupFlag>(
new NullaryStartupFlag(flag_name)));
@@ -131,13 +128,9 @@ StartupOptions::StartupOptions(const string &product_name,
RegisterNullaryStartupFlag("experimental_oom_more_eagerly");
RegisterNullaryStartupFlag("fatal_event_bus_exceptions");
RegisterNullaryStartupFlag("host_jvm_debug");
- RegisterNullaryStartupFlag("master_bazelrc");
- RegisterNullaryStartupFlag("master_blazerc");
RegisterNullaryStartupFlag("watchfs");
RegisterNullaryStartupFlag("write_command_log");
RegisterNullaryStartupFlag("expand_configs_in_place");
- RegisterUnaryStartupFlag("bazelrc");
- RegisterUnaryStartupFlag("blazerc");
RegisterUnaryStartupFlag("command_port");
RegisterUnaryStartupFlag("connect_timeout_secs");
RegisterUnaryStartupFlag("experimental_oom_more_eagerly_threshold");
@@ -232,30 +225,6 @@ blaze_exit_code::ExitCode StartupOptions::ProcessArg(
NULL) {
host_jvm_args.push_back(value);
option_sources["host_jvm_args"] = rcfile; // NB: This is incorrect
- } else if ((value = GetUnaryOption(arg, next_arg, "--bazelrc")) != NULL) {
- if (!rcfile.empty()) {
- *error = "Can't specify --bazelrc in the .bazelrc file.";
- return blaze_exit_code::BAD_ARGV;
- }
- } else if ((value = GetUnaryOption(arg, next_arg, "--blazerc")) != NULL) {
- if (!rcfile.empty()) {
- *error = "Can't specify --blazerc in the .blazerc file.";
- return blaze_exit_code::BAD_ARGV;
- }
- } else if (GetNullaryOption(arg, "--nomaster_blazerc") ||
- GetNullaryOption(arg, "--master_blazerc")) {
- if (!rcfile.empty()) {
- *error = "Can't specify --[no]master_blazerc in .blazerc file.";
- return blaze_exit_code::BAD_ARGV;
- }
- option_sources["blazerc"] = rcfile;
- } else if (GetNullaryOption(arg, "--nomaster_bazelrc") ||
- GetNullaryOption(arg, "--master_bazelrc")) {
- if (!rcfile.empty()) {
- *error = "Can't specify --[no]master_bazelrc in .bazelrc file.";
- return blaze_exit_code::BAD_ARGV;
- }
- option_sources["blazerc"] = rcfile;
} else if (GetNullaryOption(arg, "--batch")) {
batch = true;
option_sources["batch"] = rcfile;
@@ -423,13 +392,6 @@ blaze_exit_code::ExitCode StartupOptions::ProcessArgs(
return blaze_exit_code::SUCCESS;
}
-blaze_exit_code::ExitCode StartupOptions::ProcessArgExtra(
- const char *arg, const char *next_arg, const string &rcfile,
- const char **value, bool *is_processed, string *error) {
- *is_processed = false;
- return blaze_exit_code::SUCCESS;
-}
-
string StartupOptions::GetDefaultHostJavabase() const {
return blaze::GetDefaultHostJavabase();
}
diff --git a/src/main/cpp/startup_options.h b/src/main/cpp/startup_options.h
index 1830cc5246..91a4ab7fd8 100644
--- a/src/main/cpp/startup_options.h
+++ b/src/main/cpp/startup_options.h
@@ -74,8 +74,9 @@ struct RcStartupFlag {
: source(source_arg), value(value_arg) {}
};
-// This class holds the parsed startup options for Blaze.
-// These options and their defaults must be kept in sync with those in
+// This class defines the startup options accepted by all versions Bazel, and
+// holds the parsed values. These options and their defaults must be kept in
+// sync with those in
// src/main/java/com/google/devtools/build/lib/runtime/BlazeServerStartupOptions.java.
// The latter are (usually) purely decorative (they affect the help message,
// which displays the defaults). The actual defaults are defined
@@ -86,7 +87,6 @@ struct RcStartupFlag {
// names also don't conform to the style guide.
class StartupOptions {
public:
- explicit StartupOptions(const WorkspaceLayout* workspace_layout);
virtual ~StartupOptions();
// Parses a single argument, either from the command line or from the .blazerc
@@ -131,7 +131,7 @@ class StartupOptions {
// StartupOptions, the "ExtraOptions" concept makes no sense; remove it.
virtual blaze_exit_code::ExitCode ProcessArgExtra(
const char *arg, const char *next_arg, const std::string &rcfile,
- const char **value, bool *is_processed, std::string *error);
+ const char **value, bool *is_processed, std::string *error) = 0;
// Return the default path to the JDK used to run Blaze itself
// (must be an absolute directory).
@@ -291,8 +291,8 @@ class StartupOptions {
// Constructor for subclasses only so that site-specific extensions of this
// class can override the product name. The product_name must be the
// capitalized version of the name, as in "Bazel".
- explicit StartupOptions(const std::string &product_name,
- const WorkspaceLayout* workspace_layout);
+ StartupOptions(const std::string &product_name,
+ const WorkspaceLayout *workspace_layout);
void RegisterUnaryStartupFlag(const std::string& flag_name);