diff options
author | ccalvarin <ccalvarin@google.com> | 2018-04-20 13:56:55 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-04-20 13:58:51 -0700 |
commit | 5305a36b93f2ad0a1b499bc916e6cf365676532c (patch) | |
tree | fd59c966cda802c6f36831ee47f3317cbf0343f1 /src/main/cpp | |
parent | fc44daf3c4142a588c4a553c8abfd6f28bbaf4f3 (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/BUILD | 17 | ||||
-rw-r--r-- | src/main/cpp/bazel_startup_options.cc | 57 | ||||
-rw-r--r-- | src/main/cpp/bazel_startup_options.h | 36 | ||||
-rw-r--r-- | src/main/cpp/main.cc | 3 | ||||
-rw-r--r-- | src/main/cpp/option_processor.cc | 10 | ||||
-rw-r--r-- | src/main/cpp/startup_options.cc | 38 | ||||
-rw-r--r-- | src/main/cpp/startup_options.h | 12 |
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); |