From 2ea5617455f1633a67fa6f39ecc7699f0cba49ab Mon Sep 17 00:00:00 2001 From: kafumanto Date: Tue, 12 Feb 2019 09:39:55 -0500 Subject: [PATCH] PR #5488: Fixed packaging of framework resource bundles when doing a remote build for iOS (Contributed by kafumanto) #rb none #jira UE-68921 #ROBOMERGE-SOURCE: CL 4957419 in //UE4/Release-4.22/... #ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main) [CL 4968448 by ben marsh in Main branch] --- .../UnrealBuildTool/ToolChain/RemoteMac.cs | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Engine/Source/Programs/UnrealBuildTool/ToolChain/RemoteMac.cs b/Engine/Source/Programs/UnrealBuildTool/ToolChain/RemoteMac.cs index e568ee756b04..3002f7adc3d3 100644 --- a/Engine/Source/Programs/UnrealBuildTool/ToolChain/RemoteMac.cs +++ b/Engine/Source/Programs/UnrealBuildTool/ToolChain/RemoteMac.cs @@ -535,12 +535,20 @@ namespace UnrealBuildTool FilesToDownload.AddRange(Manifest.BuildProducts.Select(x => new FileReference(x))); DownloadFiles(FilesToDownload); + // Copy remote FrameworkAssets directory as it could contain resource bundles that must be packaged locally. + DirectoryReference BaseDir = DirectoryReference.FromFile(TargetDesc.ProjectFile) ?? UnrealBuildTool.EngineDirectory; + DirectoryReference FrameworkAssetsDir = DirectoryReference.Combine(BaseDir, "Intermediate", "IOS", "FrameworkAssets"); + + Log.TraceInformation("[Remote] Downloading {0}", FrameworkAssetsDir); + DownloadDirectory(FrameworkAssetsDir); + // Write out all the local manifests foreach(FileReference LocalManifestFile in LocalManifestFiles) { Log.TraceInformation("[Remote] Writing {0}", LocalManifestFile); Utils.WriteClass(Manifest, LocalManifestFile.FullName, ""); } + return true; } @@ -947,6 +955,28 @@ namespace UnrealBuildTool } } + /// + /// Download a directory from the remote Mac + /// + /// Directory to download + private void DownloadDirectory(DirectoryReference LocalDirectory) + { + DirectoryReference.CreateDirectory(LocalDirectory); + + string RemoteDirectory = GetRemotePath(LocalDirectory); + + List Arguments = new List(CommonRsyncArguments); + Arguments.Add(String.Format("--rsync-path=\"[ ! -d {0} ] || rsync\"", EscapeShellArgument(RemoteDirectory))); + Arguments.Add(String.Format("\"{0}@{1}\":'{2}/'", UserName, ServerName, RemoteDirectory)); + Arguments.Add(String.Format("\"{0}/\"", GetLocalCygwinPath(LocalDirectory))); + + int Result = Rsync(String.Join(" ", Arguments)); + if (Result != 0) + { + throw new BuildException("Unable to download '{0}' from the remote Mac (exit code {1}).", LocalDirectory, Result); + } + } + /// /// Execute Rsync ///