Resolved by adding IProcessResult::bExitCodeSuccess virtual property which may be overridden on the affected platforms to explicitly indicate which exit codes are allowed.
#preflight 6462a07a592448f08bde34e4
#rb David.Harvey
#jira UE-178885
#rnx
[CL 25497459 by Wojciech Krywult in ue5-main branch]
Fix bug where quick launching with cotf from a debug editor failed to launch the cook server due to a missing or old development editor executable.
Since the default executable is the the console -cmd.exe one, implement ShellExecute to open a separate shell for the server output, also fixes duplicated stdout lines in that window.
Improve BuildCookRun log messages for booting and shutting down server and client.
#jira UE-173897, UEENGQA-80955
#rb carlmagnus.nordin
#preflight 63ca9499c503023ab986b09c
[CL 23788926 by PJ Kack in ue5-main branch]
While the command prompt always shows such text correctly, the issue becomes apparent when redirecting the output to a file as text would appear as:
T h i s i s s o m e u n i c o d e o u t p u t
#preflight 637f90c6f514e1ded9cad139
#rb David.Harvey
#rnx
[CL 23260393 by Wojciech Krywult in ue5-main branch]
In ProcessManager.KillAll() make a local copy of global ActiveProcesses and to avoid calling any external code while iterating the internal global list.
In ProcessResult.StopProcess() make sure to set the ExitCode member from the killed process, else the information is lost forever since the member Proc has already been nulled out.
In CommandUtils.Run() check Result.ProcessObject for null for the case when WaitForExit() returns after StopProcess() has been called from another thread (ctrl-c handler).
#jira none
#rb carlmagnus.nordin
#rnx
#preflight 62441c4dc667881bf4e70722
[CL 19570185 by PJ Kack in ue5-main branch]
Optimize StopProcess() when called with KillDescendants=true by using the standard Process.Kill(bool entireProcessTree) instead of our own slow KillAllDescendants() implementation.
Kill entire process trees when killing the launched processes from KillAll on uat exit.
Build machines will still call KillAllDescendants as the last fallback just as before.
#jira none
#rb carlmagnus.nordin
#rnx
#preflight 62304a9510686369534217ce
[CL 19383104 by PJ Kack in ue5-main branch]
Give ERunOptions.NoStdOutCapture a unique value so that Options.HasFlag(ERunOptions.NoStdOutCapture) returns the expected result.
#jira none
#rb carlmagnus.nordin
#rnx
#preflight 6229dbc7377a9e55bac9ec3a
[CL 19334901 by PJ Kack in ue5-main branch]
This represents UE4/Main @17774255, Release-5.0 @17791557 and Dev-PerfTest @17789485
[CL 17794212 by aurel cordonnier in ue5-release-engine-test branch]
Move enum from AutomationUtils.Automation to BuildUtilities
#jira none
#trivial
#preflight 60ca8a3d78c3b00001f86b24
#ROBOMERGE-SOURCE: CL 16701095 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v835-16672529)
[CL 16701097 by jonathan adamczewski in ue5-release-engine-test branch]
#ROBOMERGE-SOURCE: CL 16341432 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v804-16311228)
[CL 16341434 by ben marsh in ue5-release-engine-test branch]
Some behavior changes:
Output paths - Both tools are now output to a subdirectory of Binaries/Dotnet, I believe most hardcoded paths have been fixed up but there may be tools that will fail because of this.
UAT Plugin Building - As .NET Core does not support AppDomain unloading, how we build the plugins has changed quite a bit, these are now built before UAT is started rather then by UAT itself. If you just start UAT via RunUAT.bat/sh this should just continue to work.
#rb ben.marsh
[CL 14834347 by Joakim Lindqvist in ue5-main branch]