distributed compilation distcc ice cream etc

What is the current status of distcc with Unreal Engine?

There used to be a build configuration bAllowDistccLocalFallback

But this term no longer exists in the documentation according to the search mechanism.

There a few news posts.

Everything else seems to be forum posts from 2015 or earlier

There is a big discussion here about the topic in general:

I tried to adapt what amigo has said here:

But I feel I’m missing more pieces of the puzzle.

I agree completely with the staff here:

Also, ice cream should certain get a mention, they have some reasons why they think you should use ice cream over distcc.

Regardless, I’ve seen both perform admirably over the years at spreading out compilation tasks, you can easily achieve an overall time reduction factor of 10x or more with a small farm.

As an alternative, there is this FastBuild which I have not tried, and will, but at least one other has tried with no success here

Or Incredibuild, which really I find disdainful that they exclude linux from the free version, if anything it should be the other way around with Windows in the paid for with free trial only subscription and Linux in the free version, shame on you Incredibuild, I’ll skip for now.

And just to document some of the older topics that did not seem to go anywhere, but are on this topic:

Of useful note, I seem to have gotten Fastbuilds working on linux:

fbuildworker -mode=dedicated                                                                        
FBuildWorker v1.11
Listening on port 31264
0 Connections
1 Connections
0 Connections
1 Connections
0 Connections

I have something like this for all hosts env vars:

export FASTBUILD_WORKERS="10.0.0.66;10.0.0.160;10.0.0.11;10.0.0.18"
export FASTBUILD_BROKERAGE_PATH="/unreal/unrealPJX/FASTBUILD_BROKERAGE"
export FASTBUILD_CACHE_PATH="/unreal/unrealPJX/FASTBUILD_CACHE"
export FASTBUILD_TEMP_PATH="/unreal/unrealPJX/FASTBUILD_TEMP"

where /unreal is an NFS mounted in to all hosts, I am not certain they should be sharing the temp and cache directories like that amongst the hosts or maybe they should be local to each host and not shared. But it is working at the moment. Also, I had to create a directory:

/opt/UnrealEngine/Engine/Extras/ThirdPartyNotUE/FASTBuild/Linux

and place the two files you get from here in there and I had to copy them over to have both the lower case version and the mixed case versions:

\ls -alh
total 7.2M
drwxr-xr-x 2 thoth thoth 4.0K Oct 20 12:24 .
drwxr-xr-x 5 thoth thoth 4.0K Oct 20 12:14 ..
-rwxr-xr-x 1 thoth thoth 1.8M Oct 20 12:24 fbuild
-rwxr-xr-x 1 thoth thoth 1.8M Oct 20 12:14 FBuild
-rwxr-xr-x 1 thoth thoth 1.9M Oct 20 12:24 fbuildworker
-rwxr-xr-x 1 thoth thoth 1.9M Oct 20 12:14 FBuildWorker

FBuildWorker, may be unnecessary as I’m manually starting on each host with something like fbuildworker -mode=dedicated

And, finally, I had to alter my BuildConfiguration.xml in /home/thoth/.config/Unreal Engine/UnrealBuildTool/BuildConfiguration.xml:

<?xml version="1.0" encoding="utf-8" ?>
<Configuration xmlns="https://www.unrealengine.com/BuildConfiguration">
  <BuildConfiguration>
    <bAllowFASTBuild>1</bAllowFASTBuild>
  </BuildConfiguration>
  <FASTBuild>
    <bEnableDistribution>true</bEnableDistribution>
    <FBuildExecutablePath>/home/thoth/.bin/fbuild</FBuildExecutablePath>
    <CacheMode>ReadWrite</CacheMode>
  </FASTBuild>
</Configuration>

And on a few hosts they showed in the brokerage directory as 127.0.1.1, I had to alter their /etc/hosts file to change their line from:

127.0.1.1  host1.example.com   host1

to:

10.0.0.6  host1.example.com   host1

SN-DBS is the way

Tell me more! Is there any documentation?

update:

my current env vars:

#export FASTBUILD_WORKERS=
export FASTBUILD_BROKERAGE_PATH="/unreal/FASTBUILD_BROKERAGE"
export FASTBUILD_CACHE_MODE="rw"
export FASTBUILD_CACHE_PATH="/unreal/FASTBUILD_CACHE/cache"
export FASTBUILD_CACHE_PATH_MOUNT_POINT="/unreal/FASTBUILD_CACHE"
mkdir -p /tmp/FASTBUILD_TEMP
chmod 777 /tmp/FASTBUILD_TEMP
export FASTBUILD_TEMP_PATH="/tmp/FASTBUILD_TEMP"
  1. Notice I am commenting out #export FASTBUILD_WORKERS as the brokerage directory is verified to be working.
  2. /tmp/FASTBUILD_TEMP is local to each worker and no longer shared.
  3. Unreal is no longer an NFS mount
  4. FASTBUILD_CACHE and FASTBUILD_BROKERAGE are individual NFS mounts
  5. extremely liberal perms have been given to the tmp directory

EDIT: I am still receiving some errors about fileID like:

Failed to store fileId 1016 for manifest 0x1ff03b798451c16c

I’ve opened an issue with fastbuild, but I get the impression this maybe an issue with unreal and perhaps how it is building the .bff file.