summaryrefslogtreecommitdiff
path: root/src/buildtool/main/main.cpp
diff options
context:
space:
mode:
authorKlaus Aehlig <klaus.aehlig@huawei.com>2025-05-05 11:16:49 +0200
committerKlaus Aehlig <klaus.aehlig@huawei.com>2025-05-06 13:09:35 +0200
commitd4994870829cacf1d3f4756a732653d679af1d9b (patch)
tree1da94c8ef26244617eec21adffeeb12dbfa7df06 /src/buildtool/main/main.cpp
parent5f899a316dfed58be9c3fe9e81ba3102cf9e9e9e (diff)
downloadjustbuild-d4994870829cacf1d3f4756a732653d679af1d9b.tar.gz
Extend just exit codes to distinguish different kinds of failures
Diffstat (limited to 'src/buildtool/main/main.cpp')
-rw-r--r--src/buildtool/main/main.cpp62
1 files changed, 36 insertions, 26 deletions
diff --git a/src/buildtool/main/main.cpp b/src/buildtool/main/main.cpp
index a0aa27fe..0a979a78 100644
--- a/src/buildtool/main/main.cpp
+++ b/src/buildtool/main/main.cpp
@@ -765,25 +765,25 @@ auto main(int argc, char* argv[]) -> int {
auto const storage_config = CreateStorageConfig(
arguments.endpoint, arguments.protocol.hash_type);
if (not storage_config) {
- return kExitFailure;
+ return kExitBuildEnvironment;
}
if (GarbageCollector::TriggerGarbageCollection(
*storage_config, arguments.gc.no_rotate)) {
return kExitSuccess;
}
- return kExitFailure;
+ return kExitBuildEnvironment;
}
auto local_exec_config = CreateLocalExecutionConfig(arguments.build);
if (not local_exec_config) {
- return kExitFailure;
+ return kExitBuildEnvironment;
}
auto auth_config =
CreateAuthConfig(arguments.auth, arguments.cauth, arguments.sauth);
if (not auth_config) {
- return kExitFailure;
+ return kExitBuildEnvironment;
}
if (arguments.cmd == SubCommand::kExecute) {
@@ -803,7 +803,7 @@ auto main(int argc, char* argv[]) -> int {
auto const storage_config = CreateStorageConfig(
arguments.endpoint, arguments.protocol.hash_type);
if (not storage_config) {
- return kExitFailure;
+ return kExitBuildEnvironment;
}
auto const storage = Storage::Create(&*storage_config);
@@ -830,20 +830,20 @@ auto main(int argc, char* argv[]) -> int {
? kExitSuccess
: kExitFailure;
}
- return kExitFailure;
+ return kExitBuildEnvironment;
}
auto serve_config = CreateServeConfig(
arguments.serve, arguments.common, arguments.build, arguments.tc);
if (not serve_config) {
- return kExitFailure;
+ return kExitBuildEnvironment;
}
// Set up the retry arguments, needed only for the client-side logic of
// remote execution, i.e., just serve and the regular just client.
auto retry_config = CreateRetryConfig(arguments.retry);
if (not retry_config) {
- return kExitFailure;
+ return kExitBuildEnvironment;
}
if (arguments.cmd == SubCommand::kServe) {
@@ -859,7 +859,7 @@ auto main(int argc, char* argv[]) -> int {
auto remote_exec_config = CreateRemoteExecutionConfig(
arguments.endpoint, arguments.rebuild);
if (not remote_exec_config) {
- return kExitFailure;
+ return kExitBuildEnvironment;
}
// Set up storage for serve operation.
@@ -870,7 +870,7 @@ auto main(int argc, char* argv[]) -> int {
remote_exec_config->platform_properties,
remote_exec_config->dispatch);
if (not storage_config) {
- return kExitFailure;
+ return kExitBuildEnvironment;
}
auto const storage = Storage::Create(&*storage_config);
@@ -910,7 +910,7 @@ auto main(int argc, char* argv[]) -> int {
? kExitSuccess
: kExitFailure;
}
- return kExitFailure;
+ return kExitBuildEnvironment;
}
// Setup profile logging, if requested
@@ -937,9 +937,9 @@ auto main(int argc, char* argv[]) -> int {
CreateRemoteExecutionConfig(arguments.endpoint, arguments.rebuild);
if (not remote_exec_config) {
if (profile != nullptr) {
- profile->Write(kExitFailure);
+ profile->Write(kExitBuildEnvironment);
}
- return kExitFailure;
+ return kExitBuildEnvironment;
}
// Set up storage for client-side operation. This needs to have all the
@@ -959,9 +959,9 @@ auto main(int argc, char* argv[]) -> int {
#endif // BOOTSTRAP_BUILD_TOOL
if (not storage_config) {
if (profile != nullptr) {
- profile->Write(kExitFailure);
+ profile->Write(kExitBuildEnvironment);
}
- return kExitFailure;
+ return kExitBuildEnvironment;
}
auto const storage = Storage::Create(&*storage_config);
@@ -1025,12 +1025,12 @@ auto main(int argc, char* argv[]) -> int {
return FetchAndInstallArtifacts(
main_apis, arguments.fetch, remote_context)
? kExitSuccess
- : kExitFailure;
+ : kExitBuildEnvironment;
}
if (arguments.cmd == SubCommand::kAddToCas) {
return AddArtifactsToCas(arguments.to_add, storage, main_apis)
? kExitSuccess
- : kExitFailure;
+ : kExitBuildEnvironment;
}
#endif // BOOTSTRAP_BUILD_TOOL
@@ -1050,9 +1050,9 @@ auto main(int argc, char* argv[]) -> int {
&exec_context,
eval_root_jobs)) {
if (profile != nullptr) {
- profile->Write(kExitFailure);
+ profile->Write(kExitAnalysisFailure);
}
- return kExitFailure;
+ return kExitAnalysisFailure;
}
#else
std::optional<ServeApi> serve;
@@ -1062,9 +1062,9 @@ auto main(int argc, char* argv[]) -> int {
auto lock = GarbageCollector::SharedLock(*storage_config);
if (not lock) {
if (profile != nullptr) {
- profile->Write(kExitFailure);
+ profile->Write(kExitBuildEnvironment);
}
- return kExitFailure;
+ return kExitBuildEnvironment;
}
if (arguments.cmd == SubCommand::kTraverse) {
@@ -1076,7 +1076,7 @@ auto main(int argc, char* argv[]) -> int {
"together.",
"--git-cas",
"--compatible");
- return kExitFailure;
+ return kExitSyntaxError;
}
if (not repo_config.SetGitCAS(*arguments.graph.git_cas,
LogLevel::Debug)) {
@@ -1114,9 +1114,9 @@ auto main(int argc, char* argv[]) -> int {
return result;
}
if (profile != nullptr) {
- profile->Write(kExitFailure);
+ profile->Write(kExitAnalysisFailure);
}
- return kExitFailure;
+ return kExitAnalysisFailure;
}
#endif // BOOTSTRAP_BUILD_TOOL
@@ -1276,14 +1276,24 @@ auto main(int argc, char* argv[]) -> int {
}
return result;
}
+ if (profile != nullptr) {
+ profile->Write(kExitFailure);
+ }
+ return kExitFailure;
#endif // BOOTSTRAP_BUILD_TOOL
}
+ else {
+ if (profile != nullptr) {
+ profile->Write(kExitAnalysisFailure);
+ }
+ return kExitAnalysisFailure;
+ }
} catch (std::exception const& ex) {
Logger::Log(
LogLevel::Error, "Caught exception with message: {}", ex.what());
}
if (profile != nullptr) {
- profile->Write(kExitFailure);
+ profile->Write(kExitBuildEnvironment);
}
- return kExitFailure;
+ return kExitBuildEnvironment;
}