[Linux] Cannot cook for server target

Whenever I try and cook any basic Linux server target (here, in this case, shootergame demo from Epic, but got same error with a blank project):

Project.CreatePakUsingStagingManifest: Creating pak using staging manifest.

InternalUtils.SafeWriteAllLines: SafeWriteAllLines /hd/home/blender/Library/Logs/Unreal
Engine/LocalBuildLogs/PrePak_Server_UFSFiles.txt

BuildCommand.Execute: ERROR: BUILD FAILED

Program.Main: ERROR: Exception in AutomationScripts.Automation: Staging manifest already contains
/hd/home/UE4/4.8/Engine/Content/Slate/Common/DebugBorder.png (or a file that differs in case only)

Program.Main: ERROR: Staging manifest already contains /hd/home/UE4/4.8/Engine/Content/Slate/Common/DebugBorder.png (or a file that differs in case only)

Command used to cook:

./Engine/Build/BatchFiles/RunUAT.sh BuildCookRun -nop4 -platform=Linux -project=/hd/home/ShooterGame/ShooterGame.uproject -build -cook -compressed -allmaps -stage -archive -archivedirectory=/hd/home/ShooterGame-STAGING -package -LinuxNoEditor -serverconfig=Development -server -noclient -nocompileeditor -clean -pak -serverplatform=Linux -utf8output

Relevant portion in Engine’s .cs – (~ line 627)

./4.8/Engine/Source/Programs/AutomationTool/Scripts/CopyBuildToStagingDirectory.Automation.cs: throw new AutomationException(“Staging manifest already contains {0} (or a file that differs in case only)”, Src);

		// there can be files that only differ in case only, we don't support that in paks as paks are case-insensitive
		if (UnrealPakResponseFile.ContainsKey(Src))
		{
			throw new AutomationException("Staging manifest already contains {0} (or a file that differs in case only)", Src);
		}
		UnrealPakResponseFile.Add(Src, Dest);

Questions

1- Why does it bother with case-sensitivity with that file (DebugBorder.png)

2- How can I fix it, should I comment this part (throw new AutomationException) and recompile the engine

3- Or maybe something else is going on…

Thanks!

UPDATE : Recompiling AutomationTool.exe did let me go further, but now I have this…

$ ./ShooterGameServer

Using binned.
Increasing per-process limit of core file size to infinity.
Assertion failed: HasFoundDataDirectory [File:/hd/home/UE4/4.8/Engine/Source/Runtime/Core/Private/Internationalization/ICUInternationalization.cpp] [Line: 117]
ICU data directory was not discovered:
…/…/…/ShooterGame/Content/Internationalization
…/…/…/Engine/Content/Internationalization
Signal 11 caught.
EngineCrashHandler: Signal=11
$

Not sure why… could it be because it created the ShooterGame-STAGING directory at the same level than ShooterGame ?

It would be really nice to get a bit of an explanation on how this is supposed to work, and how/should I copy the ICU directories just to launch (test) it?

Hi,
the issue is very easy to resolve and at the same time quite embarrassing…
It probably only affects an OS with a true case sensitive file system, like Linux.

Problem:
Program.Main: ERROR: Exception in AutomationScripts.Automation: Staging manifest already contains /hd/home/UE4/4.8/Engine/Content/Slate/Common/DebugBorder.png (or a file that differs in case only) ------------------

In other words, the problem is caused by duplicates of PNG image files with upper case extension .PNG
And UE4 only need the lowercase .png ones. And once you try to package the project, AutomationScripts…Automation correctly detects it and throws the error message.

How to fix it:

find files using:
locate .PNG | grep UnrealEngine
and delete them.
Bingo!
Packaging now works like a dream!

,Hi,
the issue is very easy to resolve and at the same time quite embarrassing…

Problem:
Program.Main: ERROR: Exception in AutomationScripts.Automation: Staging manifest already contains /hd/home/UE4/4.8/Engine/Content/Slate/Common/DebugBorder.png (or a file that differs in case only) ------------------

locate .PNG | grep UnrealEngine