Files
UnrealEngineUWP/Engine/Source/Programs/AutomationTool/Scripts/BuildDerivedDataCache.Automation.cs
Ben Marsh 6af6c038ea Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 2982165)
==========================
MAJOR FEATURES + CHANGES
==========================

Change 2963214 on 2016/05/02 by Ben.Marsh

	BuildGraph: Allow specifying optional dependencies for a node, indicating that the build products from an upstream node are desired, but should not block the node from running.

Change 2972295 on 2016/05/10 by Ben.Marsh

	EC: Remove spacing in notification emails to reduce size, and help prevent gmail from truncating messages. Also allow mailing notification emails when doing a dry run, and reading stream settings from another branch.

Change 2976096 on 2016/05/12 by Ben.Marsh

	EC: Store properties for the last succeeded builds, including the list of users that were notified about it.

Change 2976390 on 2016/05/12 by Ben.Marsh

	EC: Add a separate line to the notification email summary with a link to edit settings, and pass the missing ec-update parameter to set the last build status.

Change 2976441 on 2016/05/12 by Ben.Marsh

	UAT: Remove log file copy on builders after UAT failure. This is done outside the EC step that originally did it now.

Change 2976456 on 2016/05/12 by Ben.Marsh

	BuildGraph: Catch exceptions thrown by child processes failing when building or running UAT commands, and return failure normally without dumping callstacks.

Change 2978440 on 2016/05/16 by Ben.Marsh

	EC: Age out entries from the "latest builds" list after a week. There's no obvious way to tell if a node has been removed, but a periodic cleanup should keep the build notifications list in check.

Change 2979446 on 2016/05/16 by Ben.Marsh

	Rename ambiguous headers which exist with the same name in different paths.

Change 2979839 on 2016/05/16 by Ben.Marsh

	UE4: Renaming HTML5 SocketSubsystem files to eliminate ambiguities.

Change 2979852 on 2016/05/16 by Ben.Marsh

	UE4: Use explicit relative paths for public headers in PortalServiceInterfaces modules which do not have unique names

Change 2980113 on 2016/05/17 by Ben.Marsh

	UE4: Fix include paths for HTML5 SocketSubsystem files.

Change 2980117 on 2016/05/17 by Ben.Marsh

	UE4: Remove reference to private PCH from Oculus common code.

Change 2980186 on 2016/05/17 by Ben.Marsh

	UAT: Add a -StopOnErrors parameter to UE4Build, which is propagated to XGE.

Change 2980879 on 2016/05/17 by Ben.Marsh

	UE4: Fixup Lightmass to use LightmassPCH.h rather than stdafx.h

Change 2981117 on 2016/05/17 by Ben.Marsh

	Portal: Use a unique name for the Portal PCH, rather than just calling it PrivatePCH.h

Change 2981839 on 2016/05/18 by Ben.Marsh

	Replace ambiguous D3D11/D3D12 includes with direct includes for the current platform.

#lockdown Nick.Penwarden

[CL 2982178 by Ben Marsh in Main branch]
2016-05-18 13:26:45 -04:00

72 lines
2.9 KiB
C#

using AutomationTool;
using UnrealBuildTool;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
public class BuildDerivedDataCache : BuildCommand
{
public override void ExecuteBuild()
{
// Get the list of platform names
string[] FeaturePacks = ParseParamValue("FeaturePacks").Split(';');
string TempDir = ParseParamValue("TempDir");
string HostPlatform = ParseParamValue("HostPlatform");
string TargetPlatforms = ParseParamValue("TargetPlatforms");
string SavedDir = ParseParamValue("SavedDir");
// Get paths to everything within the temporary directory
string EditorExe = CommandUtils.GetEditorCommandletExe(TempDir, (UnrealTargetPlatform)Enum.Parse(typeof(UnrealTargetPlatform), HostPlatform));
string RelativePakPath = "Engine/DerivedDataCache/Compressed.ddp";
string OutputPakFile = CommandUtils.CombinePaths(TempDir, RelativePakPath);
string OutputCsvFile = Path.ChangeExtension(OutputPakFile, ".csv");
List<string> ProjectPakFiles = new List<string>();
List<string> FeaturePackPaths = new List<string>();
// loop through all the projects first and bail out if one of them doesn't exist.
foreach (string FeaturePack in FeaturePacks)
{
string FeaturePackPath = CommandUtils.CombinePaths(CommandUtils.RootDirectory.FullName, FeaturePack);
if (!CommandUtils.FileExists(FeaturePackPath))
{
throw new AutomationException("Could not find project: " + FeaturePack);
}
FeaturePackPaths.Add(FeaturePackPath);
}
// loop through all the paths and generate ddc data for them
foreach (string FeaturePackPath in FeaturePackPaths)
{
FileReference FileRef = new FileReference(FeaturePackPath);
string GameName = FileRef.GetFileNameWithoutAnyExtensions();
CommandUtils.Log("Generating DDC data for {0} on {1}", GameName, TargetPlatforms);
CommandUtils.DDCCommandlet(FileRef, EditorExe, null, TargetPlatforms, "-fill -DDC=CreateInstalledEnginePak -ProjectOnly");
string ProjectPakFile = CommandUtils.CombinePaths(Path.GetDirectoryName(OutputPakFile), String.Format("Compressed-{0}.ddp", GameName));
CommandUtils.DeleteFile(ProjectPakFile);
CommandUtils.RenameFile(OutputPakFile, ProjectPakFile);
string ProjectCsvFile = Path.ChangeExtension(ProjectPakFile, ".csv");
CommandUtils.DeleteFile(ProjectCsvFile);
CommandUtils.RenameFile(OutputCsvFile, ProjectCsvFile);
ProjectPakFiles.Add(Path.GetFileName(ProjectPakFile));
}
// Generate DDC for the editor, and merge all the other PAK files in
CommandUtils.Log("Generating DDC data for engine content on {0}", TargetPlatforms);
CommandUtils.DDCCommandlet(null, EditorExe, null, TargetPlatforms, "-fill -DDC=CreateInstalledEnginePak " + CommandUtils.MakePathSafeToUseWithCommandLine("-MergePaks=" + String.Join("+", ProjectPakFiles)));
string SavedPakFile = CommandUtils.CombinePaths(SavedDir, RelativePakPath);
CommandUtils.CopyFile(OutputPakFile, SavedPakFile);
}
}