cesium-unreal
cesium-unreal copied to clipboard
RunUAT.sh doesn't produce a package
I'm trying to build CesiumForUnreal on Arch Linux for Unreal Engine 5 according to the documentation: https://github.com/CesiumGS/cesium-unreal/blob/ue4-main/Documentation/developer-setup-linux.md (sidenote: the directory $UNREAL_ENGINE_DIR/Engine/Source/ThirdParty/Linux/LibCxx doesn't exist, I used $UNREAL_ENGINE_DIR/Engine/Source/ThirdParty/Unix/LibCxx instead)
The compilation succeeded but now I'm stuck at the packaging step described here: https://github.com/CesiumGS/cesium-unreal/blob/ue4-main/Documentation/packaging-guide.md
The $UNREAL_ENGINE_DIR/Engine/Build/BatchFiles/RunUAT.sh command just doesn't produce any output. This is all I get:
Running AutomationTool...
Fixing inconsistent case in filenames. Setting up Mono Setting up bundled DotNet SDK AutomationTool.dll is up to date Start UAT Interactively: ./AutomationTool BuildPlugin -Plugin=/home/vidar/dev/cesium-unreal-samples/Plugins/cesium-unreal/CesiumForUnreal.uplugin -Package=/home/vidar/dev/packages/CesiumForUnreal -CreateSubFolder -TargetPlatforms=Linux
But the dev/packages folder stays empty. Am I missing something?
Addendum: I also tried to check out the ue5-main branch, got it to compile alright but the outcome is the same as above: the RunUAT.sh script doesn't produce a package.
For the sake of completeness: I tried installing the release version of the plugin (https://github.com/CesiumGS/cesium-unreal/releases/tag/v1.16.2-ue5) But then I always get the dreaded "Missing Modules" error message ("Engine modules cannot be compiled at runtime. please build through your IDE.")
I'm glad I'm not the only one having issues running Cesium for UE5 on Linux. I've tested this on Ubuntu 20.04 as well as Ubuntu 22.04 and I'm not able to run the release version of the plugin either. (Same "Engine modules cannot be compiled at runtime..." error).
I tried building the plugin using those same guides but I'm also running into issues on the RunUAT. For me, script fails with the following errors:
Size mismatch /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/NOTICE.md = 10 to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/NOTICE.md = 1523 ERROR: Failed to copy /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/NOTICE.md to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/NOTICE.md Size mismatch /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/linux/Debug-x64/libSDL2-2.0.so.1 = 21 to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/linux/Debug-x64/libSDL2-2.0.so.1 = 132 ERROR: Failed to copy /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/linux/Debug-x64/libSDL2-2.0.so.1 to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/linux/Debug-x64/libSDL2-2.0.so.1 Size mismatch /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Debug/SDL2.framework/SDL2 = 21 to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Debug/SDL2.framework/SDL2 = 132 ERROR: Failed to copy /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Debug/SDL2.framework/SDL2 to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Debug/SDL2.framework/SDL2 Size mismatch /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/SDL2 = 21 to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/SDL2 = 132 ERROR: Failed to copy /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/SDL2 to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/SDL2 Size mismatch /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/Versions/A/Frameworks/hidapi.framework/hidapi = 23 to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/Versions/A/Frameworks/hidapi.framework/hidapi = 130 ERROR: Failed to copy /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/Versions/A/Frameworks/hidapi.framework/hidapi to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/Versions/A/Frameworks/hidapi.framework/hidapi ERROR: Failed to copy /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/NOTICE.md to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/NOTICE.md (see /home/nathan/Library/Logs/Unreal Engine/LocalBuildLogs/Log.txt for full exception trace) AutomationTool executed for 0h 1m 32s AutomationTool exiting with ExitCode=1 (Error_Unknown)
Files do appear in my dev/packages, but copying it to my UE5 results in the same missing modules error.
Hi folks, a little background here...
Until recently, Epic didn't provide official Linux binaries, which made it (nearly?) impossible to provide pre-built Linux Editor binaries for our plugin that a self-built engine would accept as an Engine plugin. However, Epic did provide the necessary binaries for packaging Linux games from Windows or macOS, so we did the same. When you installed Cesium for Unreal, either via the Epic Launcher or via our GitHub releases page, you would get binaries for packaging Linux games, but not for running Cesium for Unreal in the Editor on Linux. If you wanted to do this, you would have to build the plugin yourself.
Two things have changed recently:
- Epic has started releasing official Linux builds of Unreal Engine.
So now it is possible for us to produce the necessary binaries to run Cesium for Unreal in the Editor on Linux. But this is a significant change to our CI system, and we haven't had a chance to set it up yet.
- Due to a problem (on Epic's side as far as we can tell), Cesium for Unreal installed from the Epic Launcher no longer includes any Linux binaries.
Even packaging a game from Windows or macOS no longer works. We're in contact with Epic's support team, and they've escalated it to the development team, but so far no word on this.
You can work around this by installing the plugin from our Releases page on GitHub instead of from the Epic Launcher. This still will not allow you to run Cesium for Unreal in the Editor on a real Linux system, though.
We don't regularly develop or test with it (even though most other teams at Cesium prefer Linux), because, until recently, Linux was only barely supported as a development system. So I can't promise that the instructions are up-to-date, nor can I even promise it works at all. There's nothing fundamentally stopping it from working, though, it just may need some small tweaks.
So if you're using Linux, please share what you find, open pull requests to fix what's broken, etc. Once we get a Linux CI pipeline set up, we'll produce pre-built binaries and be confident they work. But in the meantime, you're on the bleeding edge. Do make sure you're using the ue5-main
branch if you're using UE5, though.
As for the specific problems above...
@widarr:
sidenote: the directory $UNREAL_ENGINE_DIR/Engine/Source/ThirdParty/Linux/LibCxx doesn't exist, I used $UNREAL_ENGINE_DIR/Engine/Source/ThirdParty/Unix/LibCxx instead
Quite right! We would definitely appreciate a pull request to fix this documentation error.
But the dev/packages folder stays empty. Am I missing something?
Very strange. Is the process crashing maybe? See if you can find an additional log. e.g. Nathan's was in /home/nathan/Library/Logs/Unreal Engine/LocalBuildLogs/Log.txt
.
@Nathan127
I tried building the plugin using those same guides but I'm also running into issues on the RunUAT. For me, script fails with the following errors:
It may sound silly, but the first thing I'd check is that you're not out of disk space! Or have some kind of permission errors. Delete the existing packages
folder, maybe. "Size Mismatch" is a very strange error, and I can't think why that would happen if your file system is working correctly. Certainly the Cesium for Unreal plugin isn't checking any sizes itself.
Hello @kring! Thanks for the explanation on the situation with Linux. It's surprising to hear that Epic took this long to release official binaries considered how long UE5 has been out, but I'm thankful they are out now. I realize Linux development has a lower priority, but do you have idea when it's CI pipeline will be up after you resolve those other issues? I know it still might not be any time soon.
On to my issue, I've tried this install on three different Ubuntu machines at this point, so I don't think it's a file system or permissions issue. And for a sanity check, I did double check that I have plenty of space on my disks. I did notice that all of those errors I posted previously involve something called 'KTX-Software', is it possible there is a Linux specific bug with this dependency?
do you have idea when it's CI pipeline will be up after you resolve those other issues?
Sorry, I don't have an estimate for when it will be at the moment.
I did notice that all of those errors I posted previously involve something called 'KTX-Software', is it possible there is a Linux specific bug with this dependency?
Aah I think I might have an idea what's going wrong, now that you mention it. The KTX-Software module installs some of its bits via "git-lfs". If you don't have git-lfs installed, it won't work. There are some more details here: https://github.com/CesiumGS/cesium-unreal/issues/852
I gave that a try, installing git-lfs through their documentation and making sure it was enabled. After running RunUAT, I got a new error of failing to copy due to date mismatches? There was some tips in the KTX-Software repo readme that I tried but no luck there. Here's the bottom errors from the RunAUT, but it seems like more of the same errors with KTX-Software.
Size mismatch /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/Versions/A/Frameworks/hidapi.framework/hidapi = 23 to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/Versions/A/Frameworks/hidapi.framework/hidapi = 40656
Date mismatch /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/SDL2 = 9/2/2022 5:38:09 PM to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/SDL2 = 9/2/2022 5:38:11 PM
ERROR: Failed to copy /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/SDL2 to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/SDL2
Date mismatch /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/Versions/A/Frameworks/hidapi.framework/hidapi = 9/2/2022 5:38:09 PM to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/Versions/A/Frameworks/hidapi.framework/hidapi = 9/2/2022 5:38:12 PM
ERROR: Failed to copy /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/Versions/A/Frameworks/hidapi.framework/hidapi to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/other_lib/mac/Release/SDL2.framework/Versions/A/Frameworks/hidapi.framework/hidapi
ERROR: Failed to copy /home/nathan/CesiumDev/cesium-unreal/extern/cesium-native/extern/KTX-Software/NOTICE.md to /home/nathan/CesiumDev/packages/CesiumForUnreal/HostProject/Plugins/CesiumForUnreal/extern/cesium-native/extern/KTX-Software/NOTICE.md
(see /home/nathan/Library/Logs/Unreal Engine/LocalBuildLogs/Log.txt for full exception trace)
AutomationTool executed for 0h 1m 52s
AutomationTool exiting with ExitCode=1 (Error_Unknown)
I'm not sure where to go from here. I appreciate the troubleshooting tips, let me know if there's something else I can try.
@Nathan127 after you get git-lfs set up, you'll need to re-clone cesium-unreal / cesium-native / KTX-Software. There's probably a command to just update the lfs files without recloning, but I don't know what it is offhand.
I've gotten into the habit of wiping my dev folder on each build attempt, but just to be safe I wiped it and started again, making sure git lfs was enabled first. Unfortunately I'm still running into the RunUAT errors and still get the missing modules error when attempting to launch. I put the full console output into a pastebin, just in case it provides any insights.
Console Log: https://pastebin.com/fn0Xm3Kh
@kring Let me know if there's anything else I should try doing, I'm pretty stumped with this one.
@Nathan127 I finally got a chance to try it out on my own Linux system, and initially ran into the same problem you did. The problem seems to be that the Unreal Build Tool can't cope with the symlinks in the KTX-Software submodule. Fortunately, that directory isn't needed at all once cesium-native is built and installed, so there's an easy workaround. After you run:
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE="unreal-linux-toolchain.cmake" -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build --target install
Delete the entire cesium-unreal/extern
directory:
cd ..
rm -rf extern
(or alternatively, move it somewhere else, so you can get it back easily if you need to and don't need to rebuild everything)
Then continue building the plugin as in the instructions:
cd $UNREAL_ENGINE_DIR/Engine/Build/BatchFiles
./RunUAT.sh BuildPlugin -Plugin="$CESIUM_FOR_UNREAL_DIR/CesiumForUnreal.uplugin" -Package="$CESIUM_FOR_UNREAL_DIR/../packages/CesiumForUnreal" -CreateSubFolder -TargetPlatforms=Linux
That seems to work for me. Unreal still complained about the plugin being unbuilt (even though I had just built it with the same engine version :shrug:), but when I let it build it everything worked fine. Let me know if it works for you, too.
That worked! Didn't have to rebuild a second time, but I now have Cesium working on my Ubuntu 20.05 for UE5. Thank you so much for your help @kring! I'll look into making a PR to update the ue5 linux documentation for this.
I don't know what you guys do differently than me but I still have the problem of not getting anything in the ~/dev/packages folder.
- UE Version: 5.0.3
- set the correct version of the clang compiler in my environment variables
- I installed git-lfs
- completely deleted my old ~/dev/cesium-unreal folder
- I check out cesium-unreal recursively (getting ~1.9GB)
- cd into extern directory
- cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE="unreal-linux-toolchain.cmake" -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release
- cmake --build build --target install
- compilation successful
- export CESIUM_FOR_UNREAL_DIR=~/dev/cesium-unreal
- cd $UNREAL_ENGINE_DIR/Engine/Build/BatchFiles
- ./RunUAT.sh BuildPlugin -Plugin="$CESIUM_FOR_UNREAL_DIR/CesiumForUnreal.uplugin" -Package="$CESIUM_FOR_UNREAL_DIR/../packages/CesiumForUnreal" -CreateSubFolder -TargetPlatforms=Linux
... and still nothing, not even an error message. :(
Hmm, I had problems with the Debug build, but the Release compiled and installed (doesn't launch the sample project yet). You get no terminal output when you run ./RunUAT.sh ?
I did try to build the Release build. The output I get from RunUAT.sh is still the same I posted above:
Running AutomationTool...
Fixing inconsistent case in filenames. Setting up Mono Setting up bundled DotNet SDK AutomationTool.dll is up to date Start UAT Interactively: ./AutomationTool BuildPlugin -Plugin=/home/vidar/dev/cesium-unreal-samples/Plugins/cesium-unreal/CesiumForUnreal.uplugin -Package=/home/vidar/dev/packages/CesiumForUnreal -CreateSubFolder -TargetPlatforms=Linux
that is really all.
It looks like your path in -Plugin is different, (not using $CESIUM_FOR_UNREAL_DIR?)
maybe double check this property in your terminal export CESIUM_FOR_UNREAL_DIR=~/dev/cesium-unreal
my "Start UAT Interactively: . . ." :
Start UAT Interactively: ./AutomationTool BuildPlugin -Plugin=/home/albright/dev/cesium-unreal/CesiumForUnreal.uplugin -Package=/home/albright/dev/cesium-unreal/../packages/CesiumForUnreal -CreateSubFolder -TargetPlatforms=Linux
Your path is pointing under ~/dev/cesium-unreal-samples/Plugins/cesium-unreal not: ~/dev/cesium-unreal
Worth a try . . .
Hopefully this is all resolved now that we include official Linux binaries for UE 5.2. Post to the community forum if you're still having trouble.