Setup AutoSDK and Turnkey for the Linux Cross Compile Tool chain

Hi Martin,

Thanks for checking in and apologies for not responding sooner. I was working on getting this setup on a build farm machine, in order to roll it out to all our build agents.

You have covered everything and I have managed to get it working on a build agent as well. It did require restarting the build agent, then doing an Editor build before everything registered. An Editor build without a restart was still not causing everything to register.

The only odd thing is that when installing via the Turnkey CLI, the AutoSdk is not registered as a valid AutoSdk. I need to select Show Invalid SDKs and request to install it. It still sets it up correctly, with Turnkey then registering the AutoSdk as installed. This occurred on my local machine and on the build agent.

Thought to feed this back in case.

Otherwise we are good to go! I really appreciate your time and help in walking me through the AutoSdk setup.

Thanks!

Hi Martin,

Just a further feedback and potential issue, the fact that the AutoSdk is not appearing as a valid SDK to install, means any automation using the Turnkey CLI will not work, I was just creating and testing the CLI, I ran:

.\RunUAT.bat turnkey -command=InstallSdk -SdkType=AutoSdk -platform=Linux -NeededOnlyBut it gets stuck on the below, requiring user input instead of just proceeding:

[Image Removed]

I am not sure how to use the CLI to tell it to install the invalid SDK. And as mentioned, I am uncertain why the Sdk is registering as invalid despite the setup being correct.

Is there any command line option for Turnkey to select Invalid and proceed with the Install?

Thanks!

Turnkey has an -AllowInvalid argument that should help in this case.

Thing is that the proper version for 5.6 is V25 and that would be the source of the problem with Turnkey. I was recently made aware that there we originally published the wrong installer for the 5.6 cross compile toolchain so my guess is that you got that wrong package when you started. Updating the P4 repo with the v25 toolchain should get things in order. https://dev.epicgames.com/documentation/en\-us/unreal\-engine/linux\-development\-requirements\-for\-unreal\-engine

Hi Martin,

Thanks for that Turnkey argument, I included that and ran the following command:

.\RunUAT.bat turnkey -command=InstallSdk -SdkType=AutoSdk -platform=Linux -NeededOnly -AllowInvalidHowever it seems it freezes and does not proceed any further as you can see in the screenshot below

[Image Removed]I did leave it in this state for some time and it did not proceed any further. Hitting Ctrl+C to exit gives the below:

[Image Removed]The Python script I wrote to interactively select the invalid SDK and install it, works well being automated through our Team City. I was successful in setting up a second build agent and producing a Linux Server build using the AutoSdk.

Thanks for the info on V25 for 5.6. We are currently still on 5.5 but are working towards moving to 5.6. So right now I still need to deploy V23. I will deploy V25 to the Perforce depot in the same way and upgrade to it once we move to 5.6.

I would expect that the V23 installer is correct and should be working as expected. So it is puzzling why the V23 Tool chain is being recognised as invalid.

Sorry for the comment on v25, I got confused with the case being tagged as version 5.6. V23 is the right toolchain for 5.5.

I dug through the Trunkey code and I’m not sure why the SDK is not detected as valid. The test is a comparison between the ExpVersion and the MainVersion field from Linux_SDK.json. You could change the manifest so the expanded version is used as part of the Name that is outputted. Would look like this:

`
Linux
$(ExpVersion)
Linux AutoSdk version $(ExpVersion)

…`

Which results in the following in my local tests: [Linux] Linux AutoSdk version v23_clang-18.1.0-rockylinux8

It should already be fine based on the information you shared in the previous exchanges but things have been changing so the content of the feed is confusing. Can you share the current state of the manifest so I can do another check?

Hi Martin,

Apologies for the confusion there and thank you for the feedback,

Here is the Turnkey manifest file I currently have defined:

`<?xml version="1.0" encoding="utf-8" ?>


Linux
$[ExpVersion]
AutoSdk
Linux Toolchain

fileexpansion:perforce://sdk/main/Host$(HOST_PLATFORM_NAME)/Linux_x64/$[ExpVersion]/Setup.bat Win64 `Note that \ is the replaced by the real project name so it would be perforce://namesdk etc in the actual file.

The file is called TurnkeyManifest.xml and is located at ..\Engine\Platforms\Linux\Build\Turnkey

The top level TurnkeyManifest file is located at ..\Engine\Build\Turnkey and has not been modified from how Epic provides it, so the other manifest files are pointed at by:

<Manifest>file:$(EngineDir)/Platforms/*/Build/Turnkey/TurnkeyManifest.xml</Manifest>Thanks!

The config seems ok. I hacked our internal config so it’s as similar as possible to yours and the following works fine for me:

`
Linux
$(ExpVersion)
Linux Toolchain $(ExpVersion)
AutoSdk

fileexpansion:perforce://depotName/ROOTFOLDER/Host$(HOST_PLATFORM_NAME)/Linux_x64/$[ExpVersion]/Setup.* `

RunUAT.bat turnkey -command=InstallSdk -SdkType=AutoSdk -platform=Linux -neededonly

[Image Removed]The toolchain is detected as valid in my case. The version validation is a string comparison so it would help to see what Turnkey is getting. Can you try with the ExpVersion as part of the Name so it display what Turnkey is seeing?

<Name>Linux AutoSdk version $(ExpVersion)</Name>

Thanks for the info and validation, I have changed the name line in my Turnkey manifest file to

<Name>Linux AutoSdk version $(ExpVersion)</Name>Here are the results from running RunUAT.bat turnkey -command=InstallSdk -SdkType=AutoSdk -platform=Linux -neededonly

[Image Removed]

Its definitely picking up the correct version and name change but still showing as invalid.

Just in case sharing the p4 depot structure again as it currently is.

[Image Removed]

Thanks!

I had the owner of Turnkey look at the case and he confirmed the config should be valid and also doesn’t understand why the SDK is seen as invalid.

You could try debugging FileSource::IsVersionValid to understand why it’s failing. There is an AutomationTool project in the VS solution and you can use UnrealVS for facilitate the management of the launch argument. https://dev.epicgames.com/documentation/en\-us/unreal\-engine/using\-the\-unrealvs\-extension\-for\-unreal\-engine\-cplusplus\-projects

Please make sure to disable `Just My Code` in VS so your breakpoints are hit. [Image Removed]

Hi there,

Thanks for the information and update. I will do my best to debug this and provide information back from debugging.

I have been successfully using my Python work around to automate installing the AutoSdk on build agents and the Linux AutoSdk is being recognised and allowing our Linux Server to be built successfully.

Thanks!