Packaging 4.15 plugin from source fails 'Remote compiling requires a server name'

I am attempting to upgrade and package a plugin from UE4 source.

I have fixed the headers to the new requirements but I am rebuffed once more.

This is what is deposited into the output log:

Picking the default remote server 
Remote compiling requires a server name. Use the editor (Project Settings, IOS) to set up your remote compilation settings.
Doing xcode-select --print-path
ERROR: Failed to start local process for action ("Cannot start process because a file name has not been provided."):  -o BatchMode=yes  ${CURRENT_USER}@ "cd \"/\" && xcode-select --print-path"

Like many other failed builds it does ‘leave an aborted non-working plugin’ in the intended folder.

Things I have tried:

  • Setting the Supported Platforms (this is a VR related plugin) to only allow for Windows (not even Desktop)
  • Deleting the Intermediate and Saved folders then rebuilding the project.
  • Creating a new C++ project and setting the supported platforms.
  • Looking into the Build.cs to see if there is anything Mac/iOS related that could be convincing UE4 to try and build for mac.
  • Looking into the Project/Editor Settings to disable anything Mac/iOS related

Things I plan on trying:

  • Deleting the engine source’s Intermediate and Saved folders then rebuilding the entire engine (I expect this will take a decent amount of time and might start the process right before I go home for the night)
  • Sacrificing a piece of livestock (goat, chicken or several rabbits).
  • Rooting through parts of the build pipeline and commenting out some iOS related things, then recompiling and attempting to package (I expect this will not be very fruitful)
  • If all else fails, finding a developer friend who has a mac so I can satiate Apple’s lust for garden walls.

I would really appreciate help here.
Thank you for your time.

Hey NullSpaceVR,

I was going to suggest deleting the Saved and Intermediate folders, so do let me know the results of that test once you’ve completed it.

To clarify, this is a plugin that you’ve built successfully in the past without running into any issues? The issue just began to occur as of 4.15, correct?

When you suggest deleting the Saved/Intermediate folders, are you suggesting this on the project level or the engine level?

In the ‘Things I’ve tried’ section I mentioned that I attempted that and did not have success. I just want to confirm that you’re suggesting deleting the Engine’s Saved/Intermediate folders and then rebuilding the entire engine (being as it takes 15-45 minutes and I was not sure if they would be recreated by rebuilding the engine).

This problem has only occurred after the plugin upgrade to 4.15. I previously built updated versions on 4.14 (the last version)

I am uncertain what caused this problem. I assume it is defaulting the platforms that packages are built upon.

I solved (monstrously hacked apart parts of UnrealBuildTool) the current issue by going into BuildPluginCommand.Automation.cs and adding a couple easy lines around line 90.

if (TargetPlatforms.Contains(UnrealTargetPlatform.IOS))
{
    TargetPlatforms.Remove(UnrealTargetPlatform.IOS);
}
if (TargetPlatforms.Contains(UnrealTargetPlatform.TVOS))
{
    TargetPlatforms.Remove(UnrealTargetPlatform.TVOS);
}

What this does is it manually removes IOS and TVOS which were requiring the xcode remote building requirements. I also

Additionally, I went into UEBuildTarget.cs at line 478 and made some minor modifications (mostly overwriting the request for Mac target platform). I don’t believe this has any impact on my problem being as the Output Log was stating that the target platforms were IOS, TVOS, Html5, Win64 and Win32. Including just to cover all my bases.

case "-XCODEPROJECTFILE":
{
    // @todo Mac: Don't want to force a platform/config for generated projects, in case they affect defines/includes (each project's individual configuration should be generated with correct settings)

    // Force platform to Mac for building IntelliSense files
    //Platform = UnrealTargetPlatform.Mac;

    //// Force configuration to Development for IntelliSense
    //Configuration = UnrealTargetConfiguration.Development;

    Platform = UnrealTargetPlatform.Win64;

    // Force configuration to Development for IntelliSense
    Configuration = UnrealTargetConfiguration.Development;
}
break;

Note: My plugin isn’t fully upgraded, but it is hitting a fresh basket of errors which are related to the plugin rather than obscure unrelated build problems for a platform the plugin isn’t targeting.

Happy hunting!

Thanks for the information. So to clarify, were you able to resolve the issue with this method? I just want to make sure I don’t close out the thread if you are still experiencing the issue.

You can use WhitelistPlatforms or BlacklistPlatforms section in .uplugin file to detirme where your plugin where build. So, this not so hardcoded solution

flame_7777, thankyou very much for the clue. I had a plugin that would not package. - actually, the sample plugin code auto generated by the unreal engine when you create a blueprint plugin.
The error was
UnrealBuildTool: ERROR: Failed to start local process for action (“Cannot start process because a file name has not been provided.”)
A few lines previous to this Error, IOS was mentioned. So, I whitelisted only my target machine and the plugin packaged.

I am writing this both to thank you and maybe to help someone who hits the same problem that I did.

Since the whitelist nor blacklist didn’t work for me, here is what did.

I opened up CMD and used CD to get the path to where the exe runuat is. For me it was D:\UE_4.19\Engine\Build\BatchFiles. Once there you can type the following noting that the targetplatforms can be whatever target platforms you want to build to, in my case just Windows.

runuat BuildPlugin -plugin="Path to uplugin" -targetPlatforms=Win32+Win64 -package="path to package to" -rocket

What do you mean is: opening the Uplugine file in Notepad and adding a line “Blacklist Platforms”: “IOS”?

Thanks! This solved the issue. It’s strange that the whitelist and blacklist thing doesn’t work.

whitelist is implemented this way, inside plugin folder edit the .uplugin file

{
“FileVersion” : 3,
.
. (omitted for brevity)
.
“Modules” :
[
{
“Name” : “YourModule”,
“Type” : “Runtime”,
“LoadingPhase” : “Default”,
“WhitelistPlatforms” :
[
“Win64”,
“Android”
]
},
{
“Name” : “YourEditorModule”,
“Type” : “Editor”,
“LoadingPhase” : “PreDefault”,
“WhitelistPlatforms” :
[
“Win64”
]
}
]
}

1 Like