Hello
The root of my Perforce stream contains a subfolder “UE“ so when my Horde agents sync, everything goes to <WKS_ROOT>/UE/Engine and /UE/MyProject
In the myproject.stream.json config file (Horde server side), I’ve added “enginePath”: “UE/Engine” to be sure runuat will be run from the proper location.
It works… but there is problem when saving file list at the end of the process.
Here is the output I have in Horde:
Saving file list to D:\HordeAgent\P4\Main\Sync\Engine\Saved\BuildGraph\MyProject Update Version Files Win64\Tag-MyProject Update Version Files Win64.xml
(…)
Reading local file list from D:\HordeAgent\P4\Main\Sync\UE\Engine\Saved\BuildGraph\MyProject Update Version Files Win64\Tag-MyProject Update Version Files Win64.xml
Exception while executing step: System.IO.DirectoryNotFoundException: Could not find a part of the path ‘D:\HordeAgent\P4\Main\Sync\UE\Engine\Saved\BuildGraph\MyProject Update Version Files Win64\Tag-MyProject Update Version Files Win64.xml’.
We can see the file is not created at the same location that it is read later in the process (“UE” subfolder under “Sync”)
In Horde source code, we see that the root path depends on the env variable uebp_LOCAL_ROOT which is hardcoded and it does not take into account the value “enginePath” specified in the *.stream.json config file.
The workaround for me was to create a virtual stream in perforce that remaps UE/Engine to Engine and UE/MyProject to MyProject. It works… but there’s many side effects when using UGS, because UGS does not use this virtual stream and when it sends requests to Horde, it needs to pass the matching stream name.
The solution would be to remove this “UE” subfolder in Perforce but such a move is not harmless.
I am modifying UGS to add streamMapping feature to map ugs stream with horde stream. It’s working but not ideal as you can imagine.
Could you confirm the issue in Horde?
Thanks a lot
Mathieu
[Attachment Removed]