UBA can't access AutoSDK tools via UNC paths

Build errors when using UBA and AutoSDK is configured with UNC path:

cl : Command line error D8027 : cannot execute ‘\\server\mount\AutoSDKRootDir\HostWin64\Win64\VS2022\14.38.33130\bin\Hostx64\x64\c1xx.dll’

  • All files and folders in \\server\mount\AutoSDKRootDir have read/execute permission for all users
  • The error does not occur when AutoSDK uses a mounted drive letter
  • The error does not occur when calling UBT with -NoUBA -NoUBALocal

Steps to Reproduce

  1. Set UE_SDKS_ROOT=\\server\mount\AutoSDKRootDir
  2. Run UBT to compile a game or editor target for Win64 Development

yes, that might not work. there has been zero testing with UNC paths. I think you need to mount the path and use a normal path for it to work.

I can put it on the backlog to test this out… but it might require tons of work since so much code in UBA expects “<drive>:” paths

It might be that I can get this working if building with -vfs..

Then I think it will be less places that need this support… since most code only see the virtual paths.

Have you tried -vfs? what is this for, farm machines or local devs?

I suspect you might not know what -vfs is in relation to UBT/UBA.

So with vfs enabled all paths are virtualized to the tools executed from ubt/uba.. to z:\uevfs\xxx

Error messages etc are translated back to local paths.. so it should be entirely transparent to the user. Only time someone might see it is first time they start the debugger and a dialog pops up asking to find the source file (this does not happen for everyone, I have not looked into why)

The main reason we have implemented this is to be able to enable cached builds. At Epic we run a cache server (UbaCacheService.exe.. or rather the linux version) and have our farm write and read from the cache. The result is that some builds only take a few seconds.

Our plan is to try to get vfs enabled by default.

Hehe, spelunking is always good :slight_smile: I don’t think there is any documentation unfortunately. Vfs is kind of awesome.. since all machines now handle the same paths regardless of local environment.. so we can share cached results between totally different machines.

So I _just_ submitted a changelist that seems to be handling UNC paths regardless of -vfs… I think it will land on github in a few hours (we have a grace period before uploading to github in case we by accident write something that can’t be released publicly)

UBA should be backward compatible.. or at least I’m trying to make sure it is.. so you can take absolute latest from github and copy that in to your branch.

I tested using \\localhost\c$\sdk as my UE_SDKS_ROOT and fixed all the issues I ran into.. I’ve tested it on all our platforms and it seems to be working. scream if you see something not working.

Yes, please add UNC path support to the backlog. We’ve moved forward without UBA for builds running as service users.

As you suspect, it’s for farm machines. We’re using TeamCity and GitLab for various operations, and getting a Windows service to create network drive mounts is painful at best and a security nightmare at worst. It’s likely more of an issue with our enterprise networking and security model than anything else, but if -vfs means the drive letter doesn’t have to exist in the service user space it’s certainly worth a shot. Are there any docs on this, or is it best to go code spelunking in UBT source?