aboutsummaryrefslogtreecommitdiff
path: root/zenserver/upstream/upstreamapply.cpp
diff options
context:
space:
mode:
authorMartin Ridgers <[email protected]>2021-11-16 14:41:55 +0100
committerMartin Ridgers <[email protected]>2021-11-16 14:41:55 +0100
commit2f45b5f9389d18c795a83f7c08a2e3999940e4d8 (patch)
tree35f771b5d9693ebf880ed68ab3db721321d1c9de /zenserver/upstream/upstreamapply.cpp
parentChanged SpawnServer() over to use zen::CreateProc() (diff)
parentMerge branch 'main' of https://github.com/EpicGames/zen (diff)
downloadzen-2f45b5f9389d18c795a83f7c08a2e3999940e4d8.tar.xz
zen-2f45b5f9389d18c795a83f7c08a2e3999940e4d8.zip
Merged main
Diffstat (limited to 'zenserver/upstream/upstreamapply.cpp')
-rw-r--r--zenserver/upstream/upstreamapply.cpp46
1 files changed, 40 insertions, 6 deletions
diff --git a/zenserver/upstream/upstreamapply.cpp b/zenserver/upstream/upstreamapply.cpp
index 3c67779c4..f32b08959 100644
--- a/zenserver/upstream/upstreamapply.cpp
+++ b/zenserver/upstream/upstreamapply.cpp
@@ -282,6 +282,28 @@ namespace detail {
Exception = 6,
};
+ std::string_view ComputeTaskOutcomeToString(const ComputeTaskOutcome Outcome)
+ {
+ switch (Outcome)
+ {
+ case ComputeTaskOutcome::Success:
+ return "Success"sv;
+ case ComputeTaskOutcome::Failed:
+ return "Failed"sv;
+ case ComputeTaskOutcome::Cancelled:
+ return "Cancelled"sv;
+ case ComputeTaskOutcome::NoResult:
+ return "NoResult"sv;
+ case ComputeTaskOutcome::Exipred:
+ return "Exipred"sv;
+ case ComputeTaskOutcome::BlobNotFound:
+ return "BlobNotFound"sv;
+ case ComputeTaskOutcome::Exception:
+ return "Exception"sv;
+ };
+ return "Unknown"sv;
+ }
+
virtual GetUpstreamApplyUpdatesResult GetUpdates() override
{
int64_t Bytes{};
@@ -413,8 +435,14 @@ namespace detail {
if (Outcome != ComputeTaskOutcome::Success)
{
+ using namespace fmt::literals;
const std::string_view Detail = TaskStatus["d"sv].AsString();
- return {.Error{.ErrorCode = -1, .Reason = std::string(Detail)}};
+ if (!Detail.empty())
+ {
+ return {.Error{.ErrorCode = -1,
+ .Reason = "Task {}: {}"_format(ComputeTaskOutcomeToString(Outcome), std::string(Detail))}};
+ }
+ return {.Error{.ErrorCode = -1, .Reason = "Task {}"_format(ComputeTaskOutcomeToString(Outcome))}};
}
const IoHash TaskId = TaskStatus["h"sv].AsObjectAttachment();
@@ -770,17 +798,23 @@ namespace detail {
const IoHash SandboxHash = Sandbox.GetHash();
Data.Objects[SandboxHash] = std::move(Sandbox);
- CbObject Requirements = BuildRequirements("OSFamily == 'Windows'"sv, {}, false);
- const IoHash RequirementsId = Requirements.GetHash();
- Data.Objects[RequirementsId] = std::move(Requirements);
- Data.RequirementsId = RequirementsId;
+ {
+ using namespace fmt::literals;
+ std::string_view HostPlatform = ApplyRecord.WorkerDescriptor["host"sv].AsString();
+ // TODO: Enable when Horde accepts the UE style Host Platforms (Win64, Linux, Mac)
+ //CbObject Requirements = BuildRequirements("OSFamily == '{}'"_format(HostPlatform), {}, false);
+ CbObject Requirements = BuildRequirements("OSFamily == 'Windows'", {}, false);
+ const IoHash RequirementsId = Requirements.GetHash();
+ Data.Objects[RequirementsId] = std::move(Requirements);
+ Data.RequirementsId = RequirementsId;
+ }
CbObject Task = BuildTask(ExecutablePath,
{"-Build=build.action"},
Environment,
{},
SandboxHash,
- RequirementsId,
+ Data.RequirementsId,
{"Build.output", "Outputs"});
const IoHash TaskId = Task.GetHash();