Move over to ABSL logging and flags.
Removes gperftools too since that wants gflags.
Here come the fireworks.
Change-Id: I79cb7bcf60f1047fbfa28bfffc21a0fd692e4b1c
Signed-off-by: Austin Schuh <austin.linux@gmail.com>
diff --git a/aos/starter/BUILD b/aos/starter/BUILD
index 9d359d4..13751e0 100644
--- a/aos/starter/BUILD
+++ b/aos/starter/BUILD
@@ -37,7 +37,8 @@
"//aos/events:shm_event_loop",
"//aos/util:scoped_pipe",
"//aos/util:top",
- "@com_github_google_glog//:glog",
+ "@com_google_absl//absl/log",
+ "@com_google_absl//absl/log:check",
],
)
@@ -53,7 +54,8 @@
"//aos:configuration",
"//aos:macros",
"//aos/events:shm_event_loop",
- "@com_github_google_glog//:glog",
+ "@com_google_absl//absl/log",
+ "@com_google_absl//absl/log:check",
],
)
@@ -179,7 +181,8 @@
deps = [
":starter_rpc_lib",
"//aos/time",
- "@com_github_google_glog//:glog",
+ "@com_google_absl//absl/log",
+ "@com_google_absl//absl/log:check",
"@com_google_absl//absl/strings:str_format",
],
)
@@ -245,7 +248,8 @@
hdrs = ["irq_affinity_lib.h"],
deps = [
"//aos/scoped:scoped_fd",
- "@com_github_google_glog//:glog",
+ "@com_google_absl//absl/log",
+ "@com_google_absl//absl/log:check",
"@com_google_absl//absl/strings",
],
)
diff --git a/aos/starter/irq_affinity.cc b/aos/starter/irq_affinity.cc
index 94c9c71..0dad287 100644
--- a/aos/starter/irq_affinity.cc
+++ b/aos/starter/irq_affinity.cc
@@ -15,12 +15,13 @@
#include <utility>
#include <vector>
+#include "absl/flags/flag.h"
+#include "absl/log/check.h"
+#include "absl/log/log.h"
#include "absl/strings/str_cat.h"
#include "flatbuffers/buffer.h"
#include "flatbuffers/string.h"
#include "flatbuffers/vector.h"
-#include "gflags/gflags.h"
-#include "glog/logging.h"
#include "aos/configuration.h"
#include "aos/events/event_loop.h"
@@ -33,12 +34,13 @@
#include "aos/util/file.h"
#include "aos/util/top.h"
-DEFINE_string(config, "aos_config.json", "File path of aos configuration");
+ABSL_FLAG(std::string, config, "aos_config.json",
+ "File path of aos configuration");
-DEFINE_string(user, "",
- "Starter runs as though this user ran a SUID binary if set.");
-DEFINE_string(irq_config, "rockpi_config.json",
- "File path of rockpi configuration");
+ABSL_FLAG(std::string, user, "",
+ "Starter runs as though this user ran a SUID binary if set.");
+ABSL_FLAG(std::string, irq_config, "rockpi_config.json",
+ "File path of rockpi configuration");
namespace aos {
@@ -281,7 +283,7 @@
int main(int argc, char **argv) {
aos::InitGoogle(&argc, &argv);
- if (!FLAGS_user.empty()) {
+ if (!absl::GetFlag(FLAGS_user).empty()) {
// Maintain root permissions as we switch to become the user so we can
// actually manipulate priorities.
PCHECK(prctl(PR_SET_SECUREBITS, SECBIT_NO_SETUID_FIXUP | SECBIT_NOROOT) ==
@@ -290,12 +292,12 @@
uid_t uid;
uid_t gid;
{
- struct passwd *user_data = getpwnam(FLAGS_user.c_str());
+ struct passwd *user_data = getpwnam(absl::GetFlag(FLAGS_user).c_str());
if (user_data != nullptr) {
uid = user_data->pw_uid;
gid = user_data->pw_gid;
} else {
- LOG(FATAL) << "Could not find user " << FLAGS_user;
+ LOG(FATAL) << "Could not find user " << absl::GetFlag(FLAGS_user);
return 1;
}
}
@@ -306,22 +308,22 @@
constexpr int kUnchanged = -1;
if (setresgid(/* ruid */ gid, /* euid */ gid,
/* suid */ kUnchanged) != 0) {
- PLOG(FATAL) << "Failed to change GID to " << FLAGS_user;
+ PLOG(FATAL) << "Failed to change GID to " << absl::GetFlag(FLAGS_user);
}
if (setresuid(/* ruid */ uid, /* euid */ uid,
/* suid */ kUnchanged) != 0) {
- PLOG(FATAL) << "Failed to change UID to " << FLAGS_user;
+ PLOG(FATAL) << "Failed to change UID to " << absl::GetFlag(FLAGS_user);
}
}
aos::FlatbufferDetachedBuffer<aos::Configuration> config =
- aos::configuration::ReadConfig(FLAGS_config);
+ aos::configuration::ReadConfig(absl::GetFlag(FLAGS_config));
aos::FlatbufferDetachedBuffer<aos::starter::IrqAffinityConfig>
irq_affinity_config =
aos::JsonFileToFlatbuffer<aos::starter::IrqAffinityConfig>(
- FLAGS_irq_config);
+ absl::GetFlag(FLAGS_irq_config));
aos::ShmEventLoop shm_event_loop(&config.message());
diff --git a/aos/starter/irq_affinity_lib.cc b/aos/starter/irq_affinity_lib.cc
index 7075e31..de58be6 100644
--- a/aos/starter/irq_affinity_lib.cc
+++ b/aos/starter/irq_affinity_lib.cc
@@ -7,12 +7,13 @@
#include <ostream>
#include <utility>
+#include "absl/log/check.h"
+#include "absl/log/log.h"
#include "absl/strings/ascii.h"
#include "absl/strings/match.h"
#include "absl/strings/numbers.h"
#include "absl/strings/str_split.h"
#include "absl/strings/string_view.h"
-#include "glog/logging.h"
#include "aos/scoped/scoped_fd.h"
diff --git a/aos/starter/mock_starter.cc b/aos/starter/mock_starter.cc
index d52db95..d729833 100644
--- a/aos/starter/mock_starter.cc
+++ b/aos/starter/mock_starter.cc
@@ -5,11 +5,12 @@
#include <string_view>
#include <utility>
+#include "absl/log/check.h"
+#include "absl/log/log.h"
#include "flatbuffers/buffer.h"
#include "flatbuffers/flatbuffer_builder.h"
#include "flatbuffers/string.h"
#include "flatbuffers/vector.h"
-#include "glog/logging.h"
#include "aos/configuration.h"
#include "aos/starter/starter_rpc_generated.h"
diff --git a/aos/starter/starter_cmd.cc b/aos/starter/starter_cmd.cc
index b79485a..c4d324d 100644
--- a/aos/starter/starter_cmd.cc
+++ b/aos/starter/starter_cmd.cc
@@ -16,12 +16,13 @@
#include <utility>
#include <vector>
+#include "absl/flags/flag.h"
+#include "absl/log/check.h"
+#include "absl/log/log.h"
#include "absl/strings/str_format.h"
#include "absl/strings/str_join.h"
#include "flatbuffers/string.h"
#include "flatbuffers/vector.h"
-#include "gflags/gflags.h"
-#include "glog/logging.h"
#include "aos/configuration.h"
#include "aos/flatbuffers.h"
@@ -31,21 +32,21 @@
#include "aos/starter/starter_rpc_lib.h"
#include "aos/time/time.h"
-DEFINE_string(config, "aos_config.json", "File path of aos configuration");
+ABSL_FLAG(std::string, config, "aos_config.json",
+ "File path of aos configuration");
// TODO(james): Bash autocompletion for node names.
-DEFINE_string(
- node, "",
- "Node to interact with. If empty, just interact with local node.");
-DEFINE_bool(all_nodes, false, "Interact with all nodes.");
+ABSL_FLAG(std::string, node, "",
+ "Node to interact with. If empty, just interact with local node.");
+ABSL_FLAG(bool, all_nodes, false, "Interact with all nodes.");
-DEFINE_bool(_bash_autocomplete, false,
- "Internal use: Outputs commands or applications for use with "
- "autocomplete script.");
-DEFINE_string(_bash_autocomplete_word, "",
- "Internal use: Current word being autocompleted");
-DEFINE_string(sort, "name",
- "The name of the column to sort processes by. "
- "Can be \"name\", \"state\", \"pid\", or \"uptime\".");
+ABSL_FLAG(bool, _bash_autocomplete, false,
+ "Internal use: Outputs commands or applications for use with "
+ "autocomplete script.");
+ABSL_FLAG(std::string, _bash_autocomplete_word, "",
+ "Internal use: Current word being autocompleted");
+ABSL_FLAG(std::string, sort, "name",
+ "The name of the column to sort processes by. "
+ "Can be \"name\", \"state\", \"pid\", or \"uptime\".");
namespace {
@@ -62,12 +63,14 @@
return {nullptr};
}
- if (!FLAGS_node.empty()) {
- CHECK(!FLAGS_all_nodes) << "Can't specify both --node and --all_nodes.";
- return {aos::configuration::GetNode(configuration, FLAGS_node)};
+ if (!absl::GetFlag(FLAGS_node).empty()) {
+ CHECK(!absl::GetFlag(FLAGS_all_nodes))
+ << "Can't specify both --node and --all_nodes.";
+ return {
+ aos::configuration::GetNode(configuration, absl::GetFlag(FLAGS_node))};
}
- if (FLAGS_all_nodes) {
+ if (absl::GetFlag(FLAGS_all_nodes)) {
return aos::configuration::GetNodes(configuration);
}
@@ -114,25 +117,26 @@
sorted_statuses.push_back(app_status);
}
// If --sort flag not set, then return this unsorted vector as is.
- if (FLAGS_sort.empty()) {
+ if (absl::GetFlag(FLAGS_sort).empty()) {
return sorted_statuses;
}
// Convert --sort flag to lowercase for testing below.
- std::transform(FLAGS_sort.begin(), FLAGS_sort.end(), FLAGS_sort.begin(),
- tolower);
+ std::transform(absl::GetFlag(FLAGS_sort).begin(),
+ absl::GetFlag(FLAGS_sort).end(),
+ absl::GetFlag(FLAGS_sort).begin(), tolower);
// This function is called once for each node being reported upon, so there is
// no need to sort on node, it happens implicitly.
- if (FLAGS_sort == "name") {
+ if (absl::GetFlag(FLAGS_sort) == "name") {
// Sort on name using std::string_view::operator< for lexicographic order.
std::sort(sorted_statuses.begin(), sorted_statuses.end(),
[](const aos::starter::ApplicationStatus *lhs,
const aos::starter::ApplicationStatus *rhs) {
return lhs->name()->string_view() < rhs->name()->string_view();
});
- } else if (FLAGS_sort == "state") {
+ } else if (absl::GetFlag(FLAGS_sort) == "state") {
// Sort on state first, and then name for apps in same state.
// ApplicationStatus::state is an enum, so need to call EnumNameState()
// convenience wrapper to convert enum to char*, and then wrap in
@@ -148,7 +152,7 @@
: (lhs->name()->string_view() <
rhs->name()->string_view());
});
- } else if (FLAGS_sort == "pid") {
+ } else if (absl::GetFlag(FLAGS_sort) == "pid") {
// Sort on pid first, and then name for when both apps are not running.
// If the app state is STOPPED, then it will not have a pid, so need to test
// that first. If only one app is STOPPED, then return Boolean state to put
@@ -171,7 +175,7 @@
}
}
});
- } else if (FLAGS_sort == "uptime") {
+ } else if (absl::GetFlag(FLAGS_sort) == "uptime") {
// Sort on last_start_time first, and then name for when both apps are not
// running, or have exact same start time. Only use last_start_time when app
// is not STOPPED. If only one app is STOPPED, then return Boolean state to
@@ -198,7 +202,8 @@
}
});
} else {
- std::cerr << "Unknown sort criteria \"" << FLAGS_sort << "\"" << std::endl;
+ std::cerr << "Unknown sort criteria \"" << absl::GetFlag(FLAGS_sort) << "\""
+ << std::endl;
exit(1);
}
@@ -486,7 +491,7 @@
const std::string_view app_name = (argc >= 3 ? argv[2] : "");
std::cout << "COMPREPLY=(";
- if (FLAGS__bash_autocomplete_word == command) {
+ if (absl::GetFlag(FLAGS__bash_autocomplete_word) == command) {
// Autocomplete the starter command
for (const auto &entry : kCommands) {
if (std::get<0>(entry).find(command) == 0) {
@@ -515,9 +520,9 @@
aos::InitGoogle(&argc, &argv);
aos::FlatbufferDetachedBuffer<aos::Configuration> config =
- aos::configuration::ReadConfig(FLAGS_config);
+ aos::configuration::ReadConfig(absl::GetFlag(FLAGS_config));
- if (FLAGS__bash_autocomplete) {
+ if (absl::GetFlag(FLAGS__bash_autocomplete)) {
Autocomplete(argc, argv, &config.message());
return 0;
}
diff --git a/aos/starter/starter_rpc_lib.cc b/aos/starter/starter_rpc_lib.cc
index b497792..4a54f71 100644
--- a/aos/starter/starter_rpc_lib.cc
+++ b/aos/starter/starter_rpc_lib.cc
@@ -3,11 +3,12 @@
#include <algorithm>
#include <ostream>
+#include "absl/log/check.h"
+#include "absl/log/log.h"
#include "flatbuffers/buffer.h"
#include "flatbuffers/flatbuffer_builder.h"
#include "flatbuffers/string.h"
#include "flatbuffers/vector.h"
-#include "glog/logging.h"
#include "aos/events/context.h"
#include "aos/events/shm_event_loop.h"
diff --git a/aos/starter/starter_test.cc b/aos/starter/starter_test.cc
index 0a074e0..65d43aa 100644
--- a/aos/starter/starter_test.cc
+++ b/aos/starter/starter_test.cc
@@ -8,10 +8,12 @@
#include <string>
#include <thread>
+#include "absl/flags/flag.h"
+#include "absl/flags/reflection.h"
+#include "absl/log/check.h"
+#include "absl/log/log.h"
#include "absl/strings/str_format.h"
#include "flatbuffers/string.h"
-#include "gflags/gflags.h"
-#include "glog/logging.h"
#include "gtest/gtest.h"
#include "aos/configuration.h"
@@ -56,7 +58,7 @@
public:
StarterdTest() {
// Nuke the shm dir:
- aos::util::UnlinkRecursive(FLAGS_shm_base);
+ aos::util::UnlinkRecursive(absl::GetFlag(FLAGS_shm_base));
}
protected:
@@ -71,7 +73,7 @@
std::chrono::milliseconds(100));
}
- gflags::FlagSaver flag_saver_;
+ absl::FlagSaver flag_saver_;
// Used to track when the test completes so that we can clean up the starter
// in its thread.
std::atomic<bool> test_done_{false};
@@ -87,8 +89,8 @@
public ::testing::WithParamInterface<TestParams> {};
TEST_P(StarterdConfigParamTest, MultiNodeStartStopTest) {
- gflags::FlagSaver flag_saver;
- FLAGS_override_hostname = GetParam().hostname;
+ absl::FlagSaver flag_saver;
+ absl::SetFlag(&FLAGS_override_hostname, GetParam().hostname);
const std::string config_file = ArtifactPath(GetParam().config);
aos::FlatbufferDetachedBuffer<aos::Configuration> config =
@@ -111,9 +113,9 @@
"args": ["--shm_base", "%s", "--config", "%s", "--override_hostname", "%s"]
}
]})",
- ArtifactPath("aos/events/ping"), FLAGS_shm_base, config_file,
- GetParam().hostname, ArtifactPath("aos/events/pong"), FLAGS_shm_base,
- config_file, GetParam().hostname));
+ ArtifactPath("aos/events/ping"), absl::GetFlag(FLAGS_shm_base),
+ config_file, GetParam().hostname, ArtifactPath("aos/events/pong"),
+ absl::GetFlag(FLAGS_shm_base), config_file, GetParam().hostname));
const aos::Configuration *config_msg = &new_config.message();
@@ -220,8 +222,9 @@
aos::configuration::ReadConfig(config_file);
auto new_config = aos::configuration::MergeWithConfig(
- &config.message(), absl::StrFormat(
- R"({"applications": [
+ &config.message(),
+ absl::StrFormat(
+ R"({"applications": [
{
"name": "ping",
"executable_name": "%s",
@@ -233,8 +236,8 @@
"args": ["--shm_base", "%s"]
}
]})",
- ArtifactPath("aos/events/ping"), FLAGS_shm_base,
- ArtifactPath("aos/events/pong"), FLAGS_shm_base));
+ ArtifactPath("aos/events/ping"), absl::GetFlag(FLAGS_shm_base),
+ ArtifactPath("aos/events/pong"), absl::GetFlag(FLAGS_shm_base)));
const aos::Configuration *config_msg = &new_config.message();
@@ -307,8 +310,9 @@
aos::configuration::ReadConfig(config_file);
auto new_config = aos::configuration::MergeWithConfig(
- &config.message(), absl::StrFormat(
- R"({"applications": [
+ &config.message(),
+ absl::StrFormat(
+ R"({"applications": [
{
"name": "ping",
"executable_name": "%s",
@@ -321,8 +325,8 @@
"args": ["--shm_base", "%s"]
}
]})",
- ArtifactPath("aos/events/ping"), FLAGS_shm_base,
- ArtifactPath("aos/events/pong"), FLAGS_shm_base));
+ ArtifactPath("aos/events/ping"), absl::GetFlag(FLAGS_shm_base),
+ ArtifactPath("aos/events/pong"), absl::GetFlag(FLAGS_shm_base)));
const aos::Configuration *config_msg = &new_config.message();
@@ -397,8 +401,9 @@
aos::configuration::ReadConfig(config_file);
auto new_config = aos::configuration::MergeWithConfig(
- &config.message(), absl::StrFormat(
- R"({"applications": [
+ &config.message(),
+ absl::StrFormat(
+ R"({"applications": [
{
"name": "ping",
"executable_name": "%s",
@@ -411,8 +416,8 @@
"args": ["--shm_base", "%s"]
}
]})",
- ArtifactPath("aos/events/ping"), FLAGS_shm_base,
- ArtifactPath("aos/events/pong"), FLAGS_shm_base));
+ ArtifactPath("aos/events/ping"), absl::GetFlag(FLAGS_shm_base),
+ ArtifactPath("aos/events/pong"), absl::GetFlag(FLAGS_shm_base)));
const aos::Configuration *config_msg = &new_config.message();
@@ -488,8 +493,9 @@
aos::FlatbufferDetachedBuffer<aos::Configuration> config =
aos::configuration::ReadConfig(config_file);
auto new_config = aos::configuration::MergeWithConfig(
- &config.message(), absl::StrFormat(
- R"({"applications": [
+ &config.message(),
+ absl::StrFormat(
+ R"({"applications": [
{
"name": "ping",
"executable_name": "%s",
@@ -502,8 +508,8 @@
"args": ["--shm_base", "%s"]
}
]})",
- ArtifactPath("aos/events/ping"), FLAGS_shm_base,
- ArtifactPath("aos/events/pong"), FLAGS_shm_base));
+ ArtifactPath("aos/events/ping"), absl::GetFlag(FLAGS_shm_base),
+ ArtifactPath("aos/events/pong"), absl::GetFlag(FLAGS_shm_base)));
const aos::Configuration *config_msg = &new_config.message();
// Set up starter with config file
diff --git a/aos/starter/starterd.cc b/aos/starter/starterd.cc
index 64858d4..127bf41 100644
--- a/aos/starter/starterd.cc
+++ b/aos/starter/starterd.cc
@@ -4,8 +4,9 @@
#include <ostream>
#include <string>
-#include "gflags/gflags.h"
-#include "glog/logging.h"
+#include "absl/flags/flag.h"
+#include "absl/log/check.h"
+#include "absl/log/log.h"
#include "aos/configuration.h"
#include "aos/events/event_loop.h"
@@ -14,33 +15,34 @@
#include "aos/starter/starterd_lib.h"
#include "aos/util/file.h"
-DEFINE_string(config, "aos_config.json", "File path of aos configuration");
-DEFINE_string(user, "",
- "Starter runs as though this user ran a SUID binary if set.");
-DEFINE_string(version_string, "",
- "Version to report for starterd and subprocesses.");
+ABSL_FLAG(std::string, config, "aos_config.json",
+ "File path of aos configuration");
+ABSL_FLAG(std::string, user, "",
+ "Starter runs as though this user ran a SUID binary if set.");
+ABSL_FLAG(std::string, version_string, "",
+ "Version to report for starterd and subprocesses.");
-DECLARE_string(shm_base);
-DEFINE_bool(purge_shm_base, false,
- "If true, delete everything in --shm_base before starting.");
+ABSL_DECLARE_FLAG(std::string, shm_base);
+ABSL_FLAG(bool, purge_shm_base, false,
+ "If true, delete everything in --shm_base before starting.");
int main(int argc, char **argv) {
aos::InitGoogle(&argc, &argv);
- if (FLAGS_purge_shm_base) {
- aos::util::UnlinkRecursive(FLAGS_shm_base);
+ if (absl::GetFlag(FLAGS_purge_shm_base)) {
+ aos::util::UnlinkRecursive(absl::GetFlag(FLAGS_shm_base));
}
- if (!FLAGS_user.empty()) {
+ if (!absl::GetFlag(FLAGS_user).empty()) {
uid_t uid;
uid_t gid;
{
- struct passwd *user_data = getpwnam(FLAGS_user.c_str());
+ struct passwd *user_data = getpwnam(absl::GetFlag(FLAGS_user).c_str());
if (user_data != nullptr) {
uid = user_data->pw_uid;
gid = user_data->pw_gid;
} else {
- LOG(FATAL) << "Could not find user " << FLAGS_user;
+ LOG(FATAL) << "Could not find user " << absl::GetFlag(FLAGS_user);
return 1;
}
}
@@ -51,24 +53,24 @@
constexpr int kUnchanged = -1;
if (setresgid(/* ruid */ gid, /* euid */ gid,
/* suid */ kUnchanged) != 0) {
- PLOG(FATAL) << "Failed to change GID to " << FLAGS_user << ", group "
- << gid;
+ PLOG(FATAL) << "Failed to change GID to " << absl::GetFlag(FLAGS_user)
+ << ", group " << gid;
}
if (setresuid(/* ruid */ uid, /* euid */ uid,
/* suid */ kUnchanged) != 0) {
- PLOG(FATAL) << "Failed to change UID to " << FLAGS_user;
+ PLOG(FATAL) << "Failed to change UID to " << absl::GetFlag(FLAGS_user);
}
}
aos::FlatbufferDetachedBuffer<aos::Configuration> config =
- aos::configuration::ReadConfig(FLAGS_config);
+ aos::configuration::ReadConfig(absl::GetFlag(FLAGS_config));
const aos::Configuration *config_msg = &config.message();
aos::starter::Starter starter(config_msg);
- if (!FLAGS_version_string.empty()) {
- starter.event_loop()->SetVersionString(FLAGS_version_string);
+ if (!absl::GetFlag(FLAGS_version_string).empty()) {
+ starter.event_loop()->SetVersionString(absl::GetFlag(FLAGS_version_string));
}
starter.Run();
diff --git a/aos/starter/starterd_lib.cc b/aos/starter/starterd_lib.cc
index 79e564e..e507507 100644
--- a/aos/starter/starterd_lib.cc
+++ b/aos/starter/starterd_lib.cc
@@ -11,27 +11,29 @@
#include <thread>
#include <utility>
+#include "absl/flags/declare.h"
+#include "absl/flags/flag.h"
+#include "absl/log/check.h"
+#include "absl/log/log.h"
#include "flatbuffers/buffer.h"
#include "flatbuffers/flatbuffer_builder.h"
#include "flatbuffers/string.h"
#include "flatbuffers/vector.h"
-#include "gflags/gflags.h"
-#include "glog/logging.h"
#include "aos/events/context.h"
#include "aos/json_to_flatbuffer.h"
// FLAGS_shm_base is defined elsewhere, declare it here so it can be used
// to override the shared memory folder for unit testing.
-DECLARE_string(shm_base);
+ABSL_DECLARE_FLAG(std::string, shm_base);
// FLAGS_permissions is defined elsewhere, declare it here so it can be used
// to set the file permissions on the shared memory block.
-DECLARE_uint32(permissions);
+ABSL_DECLARE_FLAG(uint32_t, permissions);
-DEFINE_uint32(queue_initialization_threads, 0,
- "Number of threads to spin up to initialize the queue. 0 means "
- "use the main thread.");
-DECLARE_bool(enable_ftrace);
+ABSL_FLAG(uint32_t, queue_initialization_threads, 0,
+ "Number of threads to spin up to initialize the queue. 0 means "
+ "use the main thread.");
+ABSL_DECLARE_FLAG(bool, enable_ftrace);
namespace aos::starter {
@@ -64,7 +66,7 @@
1),
timing_report_fetcher_(
event_loop_.MakeFetcher<aos::timing::Report>("/aos")),
- shm_base_(FLAGS_shm_base),
+ shm_base_(absl::GetFlag(FLAGS_shm_base)),
listener_(&event_loop_,
[this](signalfd_siginfo signal) { OnSignal(signal); }),
top_(&event_loop_, aos::util::Top::TrackThreadsMode::kDisabled,
@@ -132,7 +134,7 @@
std::vector<const aos::Channel *> channels_to_construct;
for (const aos::Channel *channel : *config_msg_->channels()) {
if (aos::configuration::ChannelIsReadableOnNode(channel, this_node)) {
- if (FLAGS_queue_initialization_threads == 0) {
+ if (absl::GetFlag(FLAGS_queue_initialization_threads) == 0) {
AddChannel(channel);
} else {
channels_to_construct.push_back(channel);
@@ -140,11 +142,12 @@
}
}
- if (FLAGS_queue_initialization_threads != 0) {
+ if (absl::GetFlag(FLAGS_queue_initialization_threads) != 0) {
std::mutex pool_mutex;
std::vector<std::thread> threads;
- threads.reserve(FLAGS_queue_initialization_threads);
- for (size_t i = 0; i < FLAGS_queue_initialization_threads; ++i) {
+ threads.reserve(absl::GetFlag(FLAGS_queue_initialization_threads));
+ for (size_t i = 0; i < absl::GetFlag(FLAGS_queue_initialization_threads);
+ ++i) {
threads.emplace_back([this, &pool_mutex, &channels_to_construct]() {
while (true) {
const aos::Channel *channel;
@@ -160,7 +163,8 @@
}
});
}
- for (size_t i = 0; i < FLAGS_queue_initialization_threads; ++i) {
+ for (size_t i = 0; i < absl::GetFlag(FLAGS_queue_initialization_threads);
+ ++i) {
threads[i].join();
}
}
@@ -230,7 +234,7 @@
if (info.ssi_signo == SIGCHLD) {
// SIGCHLD messages can be collapsed if multiple are received, so all
// applications must check their status.
- if (FLAGS_enable_ftrace) {
+ if (absl::GetFlag(FLAGS_enable_ftrace)) {
ftrace_.FormatMessage("SIGCHLD");
ftrace_.TurnOffOrDie();
}
@@ -324,7 +328,8 @@
CHECK(channel != nullptr);
std::unique_ptr<aos::ipc_lib::MemoryMappedQueue> queue =
std::make_unique<aos::ipc_lib::MemoryMappedQueue>(
- shm_base_, FLAGS_permissions, event_loop_.configuration(), channel);
+ shm_base_, absl::GetFlag(FLAGS_permissions),
+ event_loop_.configuration(), channel);
{
std::unique_lock<std::mutex> locker(queue_mutex_);
diff --git a/aos/starter/subprocess.cc b/aos/starter/subprocess.cc
index c36d59b..593945b 100644
--- a/aos/starter/subprocess.cc
+++ b/aos/starter/subprocess.cc
@@ -15,9 +15,11 @@
#include <ostream>
#include <ratio>
+#include "absl/flags/flag.h"
+#include "absl/log/check.h"
+#include "absl/log/log.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/str_split.h"
-#include "glog/logging.h"
#include "aos/util/file.h"
#include "aos/util/process_info_generated.h"
@@ -655,7 +657,7 @@
last_timing_report_ +
// Leave a bit of margin on the timing report receipt time, to allow
// for timing errors.
- 3 * std::chrono::milliseconds(FLAGS_timing_report_ms) >
+ 3 * std::chrono::milliseconds(absl::GetFlag(FLAGS_timing_report_ms)) >
event_loop_->monotonic_now());
status_builder.add_last_stop_reason(stop_reason_);
if (pid_ != -1) {
diff --git a/aos/starter/subprocess_reliable_test.cc b/aos/starter/subprocess_reliable_test.cc
index a395870..894b6fe 100644
--- a/aos/starter/subprocess_reliable_test.cc
+++ b/aos/starter/subprocess_reliable_test.cc
@@ -9,8 +9,9 @@
#include <string>
#include <thread>
+#include "absl/log/check.h"
+#include "absl/log/log.h"
#include "absl/strings/str_cat.h"
-#include "glog/logging.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
diff --git a/aos/starter/subprocess_test.cc b/aos/starter/subprocess_test.cc
index 2951b2b..d2dc3b0 100644
--- a/aos/starter/subprocess_test.cc
+++ b/aos/starter/subprocess_test.cc
@@ -6,10 +6,11 @@
#include <ostream>
+#include "absl/flags/flag.h"
+#include "absl/log/check.h"
+#include "absl/log/log.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/str_join.h"
-#include "gflags/gflags.h"
-#include "glog/logging.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
@@ -25,15 +26,10 @@
class SubprocessTest : public ::testing::Test {
protected:
- SubprocessTest() : shm_dir_(aos::testing::TestTmpDir() + "/aos") {
- FLAGS_shm_base = shm_dir_;
-
+ SubprocessTest() {
// Nuke the shm dir:
- aos::util::UnlinkRecursive(shm_dir_);
+ aos::util::UnlinkRecursive(absl::GetFlag(FLAGS_shm_base));
}
-
- gflags::FlagSaver flag_saver_;
- std::string shm_dir_;
};
TEST_F(SubprocessTest, CaptureOutputs) {