2019-12-26 23:01:54 -05:00
// Copyright Epic Games, Inc. All Rights Reserved.
2014-03-14 14:13:41 -04:00
using System ;
using System.Collections.Generic ;
using System.Linq ;
using System.Text ;
using System.IO ;
using System.Threading ;
using System.Diagnostics ;
using System.Reflection ;
using UnrealBuildTool ;
using System.Text.RegularExpressions ;
2020-12-21 23:07:37 -04:00
using EpicGames.Core ;
2021-06-17 01:49:34 -04:00
using UnrealBuildBase ;
2023-03-07 21:23:47 -05:00
using Microsoft.Extensions.Logging ;
2014-03-14 14:13:41 -04:00
2023-03-08 14:32:15 -05:00
using static AutomationTool . CommandUtils ;
2014-03-14 14:13:41 -04:00
namespace AutomationTool
{
/// <summary>
/// AutomationTool internal Utilities.
/// </summary>
public static class InternalUtils
{
2023-03-08 12:43:35 -05:00
static ILogger Logger = > Log . Logger ;
2014-03-14 14:13:41 -04:00
/// <summary>
/// Gets environment variable value.
/// </summary>
/// <param name="VarName">Variable name.</param>
/// <param name="Default">Default value to be returned if the variable does not exist.</param>
/// <returns>Variable value or the default value if the variable did not exist.</returns>
public static string GetEnvironmentVariable ( string VarName , string Default , bool bQuiet = false )
{
var Value = Environment . GetEnvironmentVariable ( VarName ) ;
if ( Value = = null )
{
Value = Default ;
}
if ( ! bQuiet )
{
2023-03-08 14:32:15 -05:00
Logger . LogDebug ( "GetEnvironmentVariable {VarName}={Value}" , VarName , Value ) ;
2014-03-14 14:13:41 -04:00
}
return Value ;
}
/// <summary>
/// Creates a directory.
2015-08-05 10:22:11 -04:00
/// @todo: this function should not exchange exception context for error codes that can be ignored.
2014-03-14 14:13:41 -04:00
/// </summary>
/// <param name="Path">Directory name.</param>
/// <returns>True if the directory was created, false otherwise.</returns>
public static bool SafeCreateDirectory ( string Path , bool bQuiet = false )
{
2021-08-23 15:27:50 -04:00
if ( ! bQuiet )
2015-07-23 14:51:46 -04:00
{
2023-03-08 14:32:15 -05:00
Logger . LogDebug ( "SafeCreateDirectory {Path}" , Path ) ;
2014-03-14 14:13:41 -04:00
}
2021-08-23 15:27:50 -04:00
const int MaxAttempts = 10 ;
int Attempts = 0 ;
2014-03-14 14:13:41 -04:00
bool Result = true ;
2021-08-23 15:27:50 -04:00
Exception LastException = null ;
do
2014-03-14 14:13:41 -04:00
{
2021-08-23 15:27:50 -04:00
Result = Directory . Exists ( Path ) ;
if ( ! Result )
2014-03-14 14:13:41 -04:00
{
2021-08-23 15:27:50 -04:00
try
{
Result = Directory . CreateDirectory ( Path ) . Exists ;
}
catch ( Exception Ex )
{
if ( ! Directory . Exists ( Path ) )
{
Thread . Sleep ( 3000 ) ;
}
Result = Directory . Exists ( Path ) ;
LastException = Ex ;
}
}
} while ( Result = = false & & + + Attempts < MaxAttempts ) ;
if ( Result = = false & & LastException ! = null )
{
if ( bQuiet )
{
2023-03-08 14:32:15 -05:00
Logger . LogDebug ( "Failed to create directory {Path} in {MaxAttempts} attempts." , Path , MaxAttempts ) ;
2021-08-23 15:27:50 -04:00
}
else
{
2023-03-08 12:43:35 -05:00
Logger . LogWarning ( "Failed to create directory {Path} in {MaxAttempts} attempts." , Path , MaxAttempts ) ;
Logger . LogWarning ( "{Text}" , LogUtils . FormatException ( LastException ) ) ;
2014-03-14 14:13:41 -04:00
}
}
return Result ;
}
/// <summary>
/// Deletes a file (will remove read-only flag if necessary).
/// </summary>
/// <param name="Path">Filename</param>
/// <param name="bQuiet">if true, then do not print errors, also in quiet mode do not retry</param>
/// <returns>True if the file does not exist, false otherwise.</returns>
public static bool SafeDeleteFile ( string Path , bool bQuiet = false )
{
if ( ! bQuiet )
{
2023-03-08 14:32:15 -05:00
Logger . LogDebug ( "SafeDeleteFile {Path}" , Path ) ;
2014-03-14 14:13:41 -04:00
}
int MaxAttempts = bQuiet ? 1 : 10 ;
int Attempts = 0 ;
bool Result = true ;
Exception LastException = null ;
do
{
Result = true ;
try
{
if ( File . Exists ( Path ) )
{
FileAttributes Attributes = File . GetAttributes ( Path ) ;
if ( ( Attributes & FileAttributes . ReadOnly ) ! = 0 )
{
File . SetAttributes ( Path , Attributes & ~ FileAttributes . ReadOnly ) ;
}
File . Delete ( Path ) ;
2023-01-06 18:32:51 -05:00
FileItem . ResetCachedInfo ( Path ) ;
2014-03-14 14:13:41 -04:00
}
}
catch ( Exception Ex )
{
if ( File . Exists ( Path ) )
{
Result = false ;
}
LastException = Ex ;
}
if ( Result = = false & & Attempts + 1 < MaxAttempts )
{
2015-07-22 15:21:40 -04:00
Thread . Sleep ( 1000 ) ;
2014-03-14 14:13:41 -04:00
}
} while ( Result = = false & & + + Attempts < MaxAttempts ) ;
if ( Result = = false & & LastException ! = null )
{
if ( bQuiet )
{
2023-03-08 14:32:15 -05:00
Logger . LogDebug ( "Failed to delete file {Path} in {MaxAttempts} attempts." , Path , MaxAttempts ) ;
2014-03-14 14:13:41 -04:00
}
else
{
2023-03-08 12:43:35 -05:00
Logger . LogWarning ( "Failed to delete file {Path} in {MaxAttempts} attempts." , Path , MaxAttempts ) ;
Logger . LogWarning ( "{Text}" , LogUtils . FormatException ( LastException ) ) ;
2014-03-14 14:13:41 -04:00
}
}
return Result ;
}
/// <summary>
/// Recursively deletes a directory and all its files and subdirectories.
/// </summary>
/// <param name="Path">Path to delete.</param>
/// <returns>Whether the deletion was succesfull.</returns>
private static bool RecursivelyDeleteDirectory ( string Path , bool bQuiet = false )
{
if ( ! bQuiet )
{
2023-03-08 14:32:15 -05:00
Logger . LogDebug ( "RecursivelyDeleteDirectory {Path}" , Path ) ;
2014-03-14 14:13:41 -04:00
}
// Delete all files. This will also delete read-only files.
var FilesInDirectory = Directory . EnumerateFiles ( Path ) ;
foreach ( string Filename in FilesInDirectory )
{
if ( SafeDeleteFile ( Filename , bQuiet ) = = false )
{
return false ;
}
}
// Recursively delete all files from sub-directories.
var FoldersInDirectory = Directory . EnumerateDirectories ( Path ) ;
foreach ( string Folder in FoldersInDirectory )
{
if ( RecursivelyDeleteDirectory ( Folder , bQuiet ) = = false )
{
return false ;
}
}
// At this point there should be no read-only files in any of the directories and
// this directory should be empty too.
return SafeDeleteEmptyDirectory ( Path , bQuiet ) ;
}
/// <summary>
/// Deletes an empty directory.
/// </summary>
/// <param name="Path">Path to the Directory.</param>
/// <returns>True if deletion was successful, otherwise false.</returns>
public static bool SafeDeleteEmptyDirectory ( string Path , bool bQuiet = false )
{
if ( ! bQuiet )
{
2023-03-08 14:32:15 -05:00
Logger . LogDebug ( "SafeDeleteEmptyDirectory {Path}" , Path ) ;
2014-03-14 14:13:41 -04:00
}
const int MaxAttempts = 10 ;
int Attempts = 0 ;
bool Result = true ;
Exception LastException = null ;
do
{
Result = ! Directory . Exists ( Path ) ;
if ( ! Result )
{
try
{
Directory . Delete ( Path , true ) ;
2023-01-06 18:32:51 -05:00
DirectoryItem . ResetCachedInfo ( Path ) ;
2014-03-14 14:13:41 -04:00
}
catch ( Exception Ex )
{
if ( Directory . Exists ( Path ) )
{
Thread . Sleep ( 3000 ) ;
}
Result = ! Directory . Exists ( Path ) ;
LastException = Ex ;
}
}
} while ( Result = = false & & + + Attempts < MaxAttempts ) ;
if ( Result = = false & & LastException ! = null )
{
2023-03-08 12:43:35 -05:00
Logger . LogWarning ( "Failed to delete directory {Path} in {MaxAttempts} attempts." , Path , MaxAttempts ) ;
Logger . LogWarning ( "{Text}" , LogUtils . FormatException ( LastException ) ) ;
2014-03-14 14:13:41 -04:00
}
return Result ;
}
/// <summary>
/// Deletes a directory and all its contents. Will delete read-only files.
/// </summary>
/// <param name="Path">Directory name.</param>
/// <returns>True if the directory no longer exists, false otherwise.</returns>
public static bool SafeDeleteDirectory ( string Path , bool bQuiet = false )
{
if ( ! bQuiet )
{
2023-03-08 14:32:15 -05:00
Logger . LogDebug ( "SafeDeleteDirectory {Path}" , Path ) ;
2014-03-14 14:13:41 -04:00
}
if ( Directory . Exists ( Path ) )
{
return RecursivelyDeleteDirectory ( Path , bQuiet ) ;
}
else
{
return true ;
}
}
2022-07-01 18:52:43 -04:00
/// <summary>
/// Renames/moves a directory and all its contents
/// </summary>
/// <param name="Oldname"></param>
/// <param name="NewName"></param>
/// <param name="bQuiet"></param>
/// <returns>True if the directory was moved, false otehrwise</returns>
2023-02-24 04:00:24 -05:00
public static bool SafeRenameDirectory ( string OldName , string NewName , bool bQuiet = false , bool bRetry = true , bool bThrow = false )
2022-07-01 18:52:43 -04:00
{
if ( ! bQuiet )
{
2023-03-08 14:32:15 -05:00
Logger . LogDebug ( "SafeRenameDirectory {OldName} {NewName}" , OldName , NewName ) ;
2022-07-01 18:52:43 -04:00
}
const int MaxAttempts = 10 ;
int Attempts = 0 ;
bool Result = true ;
do
{
Result = true ;
try
{
Directory . Move ( OldName , NewName ) ;
}
catch ( Exception Ex )
{
if ( Directory . Exists ( OldName ) = = true | | Directory . Exists ( NewName ) = = false )
{
2023-02-24 04:00:24 -05:00
if ( ! bQuiet )
{
2023-03-08 12:43:35 -05:00
Logger . LogWarning ( "Failed to rename {OldName} to {NewName}" , OldName , NewName ) ;
Logger . LogWarning ( "{Text}" , LogUtils . FormatException ( Ex ) ) ;
2023-02-24 04:00:24 -05:00
}
2022-07-01 18:52:43 -04:00
Result = false ;
}
2023-02-24 04:00:24 -05:00
+ + Attempts ;
if ( Attempts = = MaxAttempts )
{
if ( bThrow )
{
throw ;
}
break ;
}
2022-07-01 18:52:43 -04:00
}
}
2023-02-24 04:00:24 -05:00
while ( Result = = false & & bRetry ) ;
2022-07-01 18:52:43 -04:00
return Result ;
}
2014-03-14 14:13:41 -04:00
/// <summary>
/// Renames/moves a file.
/// </summary>
/// <param name="OldName">Old name</param>
/// <param name="NewName">New name</param>
/// <returns>True if the operation was successful, false otherwise.</returns>
public static bool SafeRenameFile ( string OldName , string NewName , bool bQuiet = false )
{
if ( ! bQuiet )
2015-07-23 14:51:46 -04:00
{
2023-03-08 14:32:15 -05:00
Logger . LogDebug ( "SafeRenameFile {OldName} {NewName}" , OldName , NewName ) ;
2014-03-14 14:13:41 -04:00
}
const int MaxAttempts = 10 ;
int Attempts = 0 ;
bool Result = true ;
do
{
Result = true ;
try
{
if ( File . Exists ( OldName ) )
{
FileAttributes Attributes = File . GetAttributes ( OldName ) ;
if ( ( Attributes & FileAttributes . ReadOnly ) ! = 0 )
{
File . SetAttributes ( OldName , Attributes & ~ FileAttributes . ReadOnly ) ;
}
}
File . Move ( OldName , NewName ) ;
}
catch ( Exception Ex )
{
if ( File . Exists ( OldName ) = = true | | File . Exists ( NewName ) = = false )
{
2023-03-08 12:43:35 -05:00
Logger . LogWarning ( "Failed to rename {OldName} to {NewName}" , OldName , NewName ) ;
Logger . LogWarning ( "{Text}" , LogUtils . FormatException ( Ex ) ) ;
2014-03-14 14:13:41 -04:00
Result = false ;
}
}
}
while ( Result = = false & & + + Attempts < MaxAttempts ) ;
return Result ;
}
2019-10-09 04:54:01 -04:00
// Characters that can appear at the start of
2020-04-27 18:44:44 -04:00
private static char [ ] IgnoredIniValuePrefixes = { '+' , '-' , ' ' , '\t' } ;
2015-02-05 15:19:39 -05:00
2023-02-27 08:46:00 -05:00
private static void FilterIniFile ( string SourceName , string TargetName , List < string > IniKeyDenyList , List < string > InSectionDenyList , List < string > InSectionAllowList )
2015-02-05 15:19:39 -05:00
{
string [ ] Lines = File . ReadAllLines ( SourceName ) ;
StringBuilder NewLines = new StringBuilder ( "" ) ;
2019-10-09 04:54:01 -04:00
bool bFilteringSection = false ;
2015-02-05 15:19:39 -05:00
2019-10-09 04:54:01 -04:00
foreach ( string OriginalLine in Lines )
2015-02-05 15:19:39 -05:00
{
2019-10-09 04:54:01 -04:00
string Line = OriginalLine . Trim ( ) ;
2020-04-27 18:44:44 -04:00
if ( Line . StartsWith ( ";" ) )
{
continue ;
}
2019-10-09 04:54:01 -04:00
bool bFiltered = bFilteringSection ;
2015-02-05 15:19:39 -05:00
// look for each filter on each line
2023-02-27 08:46:00 -05:00
if ( ! bFiltered & & IniKeyDenyList ! = null )
2015-02-05 15:19:39 -05:00
{
2019-10-09 04:54:01 -04:00
string TrimmedLine = Line . TrimStart ( IgnoredIniValuePrefixes ) ;
2021-10-12 21:21:22 -04:00
foreach ( string Filter in IniKeyDenyList )
2015-02-05 15:19:39 -05:00
{
2019-10-09 04:54:01 -04:00
if ( TrimmedLine . StartsWith ( Filter + "=" ) )
{
bFiltered = true ;
break ;
}
}
}
2023-02-27 08:46:00 -05:00
if ( InSectionDenyList ! = null | | InSectionAllowList ! = null )
2019-10-09 04:54:01 -04:00
{
if ( Line . StartsWith ( "[" ) & & Line . EndsWith ( "]" ) )
{
string SectionName = Line . Substring ( 1 , Line . Length - 2 ) ;
2023-02-27 08:46:00 -05:00
bFilteringSection = bFiltered = ( ( InSectionDenyList ! = null & & InSectionAllowList = = null & & InSectionDenyList . Contains ( SectionName ) ) | |
( InSectionAllowList ! = null & & ! InSectionAllowList . Contains ( SectionName ) ) ) ;
2019-10-09 04:54:01 -04:00
if ( bFilteringSection )
{
2023-03-08 14:32:15 -05:00
Logger . LogDebug ( "Filtering config section '{SectionName}'" , SectionName ) ;
2019-10-09 04:54:01 -04:00
}
2015-02-05 15:19:39 -05:00
}
}
// write out if it's not filtered out
if ( ! bFiltered )
{
NewLines . AppendLine ( Line ) ;
}
}
// now write out the final .ini file
if ( File . Exists ( TargetName ) )
{
File . Delete ( TargetName ) ;
}
File . WriteAllText ( TargetName , NewLines . ToString ( ) ) ;
// other code assumes same timestamp for source and dest
File . SetLastWriteTimeUtc ( TargetName , File . GetLastWriteTimeUtc ( SourceName ) ) ;
}
2014-03-14 14:13:41 -04:00
/// <summary>
/// Copies a file.
/// </summary>
/// <param name="SourceName">Source name</param>
/// <param name="TargetName">Target name</param>
/// <returns>True if the operation was successful, false otherwise.</returns>
2023-02-27 08:46:00 -05:00
public static bool SafeCopyFile ( string SourceName , string TargetName , bool bQuiet = false , List < string > IniKeyDenyList = null , List < string > IniSectionDenyList = null , List < string > IniSectionAllowList = null , bool bSafeCreateDirectory = false )
2014-03-14 14:13:41 -04:00
{
if ( ! bQuiet )
{
2023-03-08 14:32:15 -05:00
Logger . LogDebug ( "SafeCopyFile {SourceName} {TargetName}" , SourceName , TargetName ) ;
2014-03-14 14:13:41 -04:00
}
2023-02-27 08:46:00 -05:00
if ( bSafeCreateDirectory )
{
SafeCreateDirectory ( Path . GetDirectoryName ( TargetName ) , bQuiet ) ;
}
2014-03-14 14:13:41 -04:00
const int MaxAttempts = 10 ;
int Attempts = 0 ;
bool Result = true ;
do
{
Result = true ;
2015-01-06 13:57:28 -05:00
bool Retry = true ;
2014-03-14 14:13:41 -04:00
try
{
2015-02-05 15:19:39 -05:00
bool bSkipSizeCheck = false ;
2020-12-11 14:21:20 -04:00
// BinaryConfig.ini is a special case with binary data, but with same extension to handle all ini
// file chunking/packaging/etc rules
2023-02-27 08:46:00 -05:00
if ( ( IniKeyDenyList ! = null | | IniSectionDenyList ! = null | | IniSectionAllowList ! = null ) & & Path . GetExtension ( SourceName ) = = ".ini" & & Path . GetFileName ( SourceName ) ! = "BinaryConfig.ini" )
2015-02-05 15:19:39 -05:00
{
2023-02-27 08:46:00 -05:00
FilterIniFile ( SourceName , TargetName , IniKeyDenyList , IniSectionDenyList , IniSectionAllowList ) ;
2015-02-05 15:19:39 -05:00
// ini files may change size, don't check
bSkipSizeCheck = true ;
}
else
{
2018-02-22 11:25:06 -05:00
if ( File . Exists ( SourceName ) )
{
File . Copy ( SourceName , TargetName , overwrite : true ) ;
}
else
{
2023-03-08 12:43:35 -05:00
Logger . LogInformation ( "Skip copying file {SourceName} because it doesn't exist." , SourceName ) ;
2018-02-22 11:25:06 -05:00
}
2015-02-05 15:19:39 -05:00
}
2015-01-06 13:57:28 -05:00
Retry = ! File . Exists ( TargetName ) ;
if ( ! Retry )
{
FileInfo SourceInfo = new FileInfo ( SourceName ) ;
FileInfo TargetInfo = new FileInfo ( TargetName ) ;
2015-02-05 15:19:39 -05:00
if ( ! bSkipSizeCheck & & SourceInfo . Length ! = TargetInfo . Length )
2015-01-06 13:57:28 -05:00
{
2023-03-08 12:43:35 -05:00
Logger . LogInformation ( "Size mismatch {SourceName} = {SourceLength} to {TargetName} = {TargetLength}" , SourceName , SourceInfo . Length , TargetName , TargetInfo . Length ) ;
2015-01-06 13:57:28 -05:00
Retry = true ;
}
// Timestamps should be no more than 2 seconds out - assuming this as exFAT filesystems store timestamps at 2 second intervals:
// http://ntfs.com/exfat-time-stamp.htm
if ( ! ( ( SourceInfo . LastWriteTimeUtc - TargetInfo . LastWriteTimeUtc ) . TotalSeconds < 2 & & ( SourceInfo . LastWriteTimeUtc - TargetInfo . LastWriteTimeUtc ) . TotalSeconds > - 2 ) )
{
2022-03-10 22:25:34 -05:00
// Copy on some networks have lag for updating timestamps, so sleep and retry the check
Thread . Sleep ( 2000 ) ;
SourceInfo . Refresh ( ) ;
TargetInfo . Refresh ( ) ;
if ( ! ( ( SourceInfo . LastWriteTimeUtc - TargetInfo . LastWriteTimeUtc ) . TotalSeconds < 2 & & ( SourceInfo . LastWriteTimeUtc - TargetInfo . LastWriteTimeUtc ) . TotalSeconds > - 2 ) )
{
2023-03-08 12:43:35 -05:00
Logger . LogInformation ( "Date mismatch {SourceName} = {SourceTime} to {TargetName} = {TargetTime}" , SourceName , SourceInfo . LastWriteTimeUtc , TargetName , TargetInfo . LastWriteTimeUtc ) ;
2022-03-10 22:25:34 -05:00
Retry = true ;
}
2015-01-06 13:57:28 -05:00
}
}
}
2014-03-14 14:13:41 -04:00
catch ( Exception Ex )
{
2023-03-08 12:43:35 -05:00
Logger . LogInformation ( "SafeCopyFile Exception was {Ex}" , LogUtils . FormatException ( Ex ) ) ;
2015-01-06 13:57:28 -05:00
Retry = true ;
2014-03-14 14:13:41 -04:00
}
2014-07-15 06:54:22 -04:00
2015-01-06 13:57:28 -05:00
if ( Retry )
{
if ( Attempts + 1 < MaxAttempts )
{
2023-03-08 12:43:35 -05:00
Logger . LogInformation ( "Failed to copy {SourceName} to {TargetName}, deleting, waiting 10s and retrying." , SourceName , TargetName ) ;
2015-01-06 13:57:28 -05:00
if ( File . Exists ( TargetName ) )
{
SafeDeleteFile ( TargetName ) ;
}
Thread . Sleep ( 10000 ) ;
}
else
{
2023-03-08 12:43:35 -05:00
Logger . LogError ( "Failed to copy {SourceName} to {TargetName}" , SourceName , TargetName ) ;
2015-01-06 13:57:28 -05:00
}
Result = false ;
}
}
2014-03-14 14:13:41 -04:00
while ( Result = = false & & + + Attempts < MaxAttempts ) ;
return Result ;
}
/// <summary>
/// Reads all lines from a file.
/// </summary>
/// <param name="Filename">Filename</param>
/// <returns>An array containing all lines read from the file or null if the file could not be read.</returns>
public static string [ ] SafeReadAllLines ( string Filename )
{
2023-03-08 14:32:15 -05:00
Logger . LogDebug ( "SafeReadAllLines {Filename}" , Filename ) ;
2014-03-14 14:13:41 -04:00
string [ ] Result = null ;
try
{
Result = File . ReadAllLines ( Filename ) ;
}
catch ( Exception Ex )
{
2023-03-08 12:43:35 -05:00
Logger . LogWarning ( "Failed to load {Filename}" , Filename ) ;
Logger . LogWarning ( Ex , "{Text}" , LogUtils . FormatException ( Ex ) ) ;
2014-03-14 14:13:41 -04:00
}
return Result ;
}
/// <summary>
/// Reads all text from a file.
/// </summary>
/// <param name="Filename">Filename</param>
/// <returns>String containing all text read from the file or null if the file could not be read.</returns>
public static string SafeReadAllText ( string Filename )
{
2023-03-08 14:32:15 -05:00
Logger . LogDebug ( "SafeReadAllLines {Filename}" , Filename ) ;
2014-03-14 14:13:41 -04:00
string Result = null ;
try
{
Result = File . ReadAllText ( Filename ) ;
}
catch ( Exception Ex )
{
2023-03-08 12:43:35 -05:00
Logger . LogWarning ( "Failed to load {Filename}" , Filename ) ;
Logger . LogWarning ( Ex , "{Text}" , LogUtils . FormatException ( Ex ) ) ;
2014-03-14 14:13:41 -04:00
}
return Result ;
}
/// <summary>
/// Finds files in the specified path.
/// </summary>
/// <param name="Path">Path</param>
/// <param name="SearchPattern">Search pattern</param>
/// <param name="Recursive">Whether to search recursively or not.</param>
/// <returns>List of all files found (can be empty) or null if the operation failed.</returns>
public static string [ ] FindFiles ( string Path , string SearchPattern , bool Recursive , bool bQuiet = false )
{
if ( ! bQuiet )
{
2023-03-08 14:32:15 -05:00
Logger . LogDebug ( "FindFiles {Path} {SearchPattern} {Recursive}" , Path , SearchPattern , Recursive ) ;
2014-03-14 14:13:41 -04:00
}
2014-10-16 19:14:57 -04:00
2015-04-21 20:53:58 -04:00
// On Linux, filter out symlinks since we (usually) create them to fix mispelled case-sensitive filenames in content, and if they aren't filtered,
// UAT picks up both the symlink and the original file and considers them duplicates when packaging (pak files are case-insensitive).
// Windows needs the symlinks though because that's how deduplication works on Windows server,
// see https://answers.unrealengine.com/questions/212888/automated-buildjenkins-failing-due-to-symlink-chec.html
// FIXME: ZFS, JFS and other fs that can be case-insensitive on Linux should use the faster path as well.
2015-07-22 15:21:40 -04:00
if ( BuildHostPlatform . Current . Platform ! = UnrealTargetPlatform . Linux )
2014-10-16 19:14:57 -04:00
{
2015-04-21 20:53:58 -04:00
return Directory . GetFiles ( Path , SearchPattern , Recursive ? SearchOption . AllDirectories : SearchOption . TopDirectoryOnly ) ;
}
else
{
List < string > FileNames = new List < string > ( ) ;
DirectoryInfo DirInfo = new DirectoryInfo ( Path ) ;
foreach ( FileInfo File in DirInfo . EnumerateFiles ( SearchPattern , Recursive ? SearchOption . AllDirectories : SearchOption . TopDirectoryOnly ) )
2014-10-16 19:14:57 -04:00
{
2015-04-21 20:53:58 -04:00
if ( File . Attributes . HasFlag ( FileAttributes . ReparsePoint ) )
2014-10-16 19:14:57 -04:00
{
2015-04-21 20:53:58 -04:00
if ( ! bQuiet )
{
2023-03-08 12:43:35 -05:00
Logger . LogWarning ( "Ignoring symlink {Path}" , File . FullName ) ;
2015-04-21 20:53:58 -04:00
}
continue ;
2014-10-16 19:14:57 -04:00
}
2015-04-21 20:53:58 -04:00
FileNames . Add ( File . FullName ) ;
2014-10-16 19:14:57 -04:00
}
2015-04-21 20:53:58 -04:00
return FileNames . ToArray ( ) ;
2014-10-16 19:14:57 -04:00
}
2014-03-14 14:13:41 -04:00
}
2014-04-02 18:09:23 -04:00
/// <summary>
/// Finds directories in the specified path.
/// </summary>
/// <param name="Path">Path</param>
/// <param name="SearchPattern">Search pattern</param>
/// <param name="Recursive">Whether to search recursively or not.</param>
/// <returns>List of all directories found (can be empty) or null if the operation failed.</returns>
public static string [ ] FindDirectories ( string Path , string SearchPattern , bool Recursive , bool bQuiet = false )
{
if ( ! bQuiet )
{
2023-03-08 14:32:15 -05:00
Logger . LogDebug ( "FindDirectories {Path} {SearchPattern} {Recursive}" , Path , SearchPattern , Recursive ) ;
2014-04-02 18:09:23 -04:00
}
return Directory . GetDirectories ( Path , SearchPattern , Recursive ? SearchOption . AllDirectories : SearchOption . TopDirectoryOnly ) ;
}
2014-03-14 14:13:41 -04:00
/// <summary>
/// Finds files in the specified path.
/// </summary>
/// <param name="Path">Path</param>
/// <param name="SearchPattern">Search pattern</param>
/// <param name="Recursive">Whether to search recursively or not.</param>
/// <returns>List of all files found (can be empty) or null if the operation failed.</returns>
public static string [ ] SafeFindFiles ( string Path , string SearchPattern , bool Recursive , bool bQuiet = false )
{
if ( ! bQuiet )
{
2023-03-08 14:32:15 -05:00
Logger . LogDebug ( "SafeFindFiles {Path} {SearchPattern} {Recursive}" , Path , SearchPattern , Recursive ) ;
2014-03-14 14:13:41 -04:00
}
string [ ] Files = null ;
try
{
Files = FindFiles ( Path , SearchPattern , Recursive , bQuiet ) ;
}
catch ( Exception Ex )
{
2023-03-08 12:43:35 -05:00
Logger . LogWarning ( "Unable to Find Files in {Path}" , Path ) ;
Logger . LogWarning ( Ex , "{Text}" , LogUtils . FormatException ( Ex ) ) ;
2014-03-14 14:13:41 -04:00
}
return Files ;
}
2014-04-02 18:09:23 -04:00
/// <summary>
/// Finds directories in the specified path.
/// </summary>
/// <param name="Path">Path</param>
/// <param name="SearchPattern">Search pattern</param>
/// <param name="Recursive">Whether to search recursively or not.</param>
/// <returns>List of all files found (can be empty) or null if the operation failed.</returns>
public static string [ ] SafeFindDirectories ( string Path , string SearchPattern , bool Recursive , bool bQuiet = false )
{
if ( ! bQuiet )
{
2023-03-08 14:32:15 -05:00
Logger . LogDebug ( "SafeFindDirectories {Path} {SearchPattern} {Recursive}" , Path , SearchPattern , Recursive ) ;
2014-04-02 18:09:23 -04:00
}
string [ ] Directories = null ;
try
{
Directories = FindDirectories ( Path , SearchPattern , Recursive , bQuiet ) ;
}
catch ( Exception Ex )
{
2023-03-08 12:43:35 -05:00
Logger . LogWarning ( "Unable to Find Directories in {Path}" , Path ) ;
Logger . LogWarning ( Ex , "{Text}" , LogUtils . FormatException ( Ex ) ) ;
2014-04-02 18:09:23 -04:00
}
return Directories ;
}
2014-03-14 14:13:41 -04:00
/// <summary>
/// Checks if a file exists.
/// </summary>
/// <param name="Path">Filename</param>
/// <param name="bQuiet">if true, do not print a message</param>
/// <returns>True if the file exists, false otherwise.</returns>
public static bool SafeFileExists ( string Path , bool bQuiet = false )
{
bool Result = false ;
try
{
Result = File . Exists ( Path ) ;
if ( ! bQuiet )
{
2023-03-08 14:32:15 -05:00
Logger . LogDebug ( "SafeFileExists {Path}={Result}" , Path , Result ) ;
2014-03-14 14:13:41 -04:00
}
}
catch ( Exception Ex )
{
2023-03-08 12:43:35 -05:00
Logger . LogWarning ( "Unable to check if file {Path} exists." , Path ) ;
Logger . LogWarning ( Ex , "{Text}" , LogUtils . FormatException ( Ex ) ) ;
2014-03-14 14:13:41 -04:00
}
return Result ;
}
/// <summary>
/// Checks if a directory exists.
/// </summary>
/// <param name="Path">Directory</param>
/// <param name="bQuiet">if true, no longging</param>
/// <returns>True if the directory exists, false otherwise.</returns>
public static bool SafeDirectoryExists ( string Path , bool bQuiet = false )
{
bool Result = false ;
try
{
Result = Directory . Exists ( Path ) ;
if ( ! bQuiet )
{
2023-03-08 14:32:15 -05:00
Logger . LogDebug ( "SafeDirectoryExists {Path}={Result}" , Path , Result ) ;
2014-03-14 14:13:41 -04:00
}
}
catch ( Exception Ex )
{
2023-03-08 12:43:35 -05:00
Logger . LogWarning ( "Unable to check if directory {Path} exists." , Path ) ;
Logger . LogWarning ( Ex , "{Text}" , LogUtils . FormatException ( Ex ) ) ;
2014-03-14 14:13:41 -04:00
}
return Result ;
}
/// <summary>
/// Writes lines to a file.
/// </summary>
/// <param name="Path">Filename</param>
/// <param name="Text">Text</param>
/// <returns>True if the operation was successful, false otherwise.</returns>
public static bool SafeWriteAllLines ( string Path , string [ ] Text )
{
2023-03-08 14:32:15 -05:00
Logger . LogDebug ( "SafeWriteAllLines {Path}" , Path ) ;
2014-03-14 14:13:41 -04:00
bool Result = false ;
try
{
File . WriteAllLines ( Path , Text ) ;
Result = true ;
}
catch ( Exception Ex )
{
2023-03-08 12:43:35 -05:00
Logger . LogWarning ( "Unable to write text to {Path}" , Path ) ;
Logger . LogWarning ( Ex , "{Text}" , LogUtils . FormatException ( Ex ) ) ;
2014-03-14 14:13:41 -04:00
}
return Result ;
}
/// <summary>
/// Writes text to a file.
/// </summary>
/// <param name="Path">Filename</param>
/// <param name="Text">Text</param>
/// <returns>True if the operation was successful, false otherwise.</returns>
public static bool SafeWriteAllText ( string Path , string Text )
{
2023-03-08 14:32:15 -05:00
Logger . LogDebug ( "SafeWriteAllText {Path}" , Path ) ;
2014-03-14 14:13:41 -04:00
bool Result = false ;
try
{
File . WriteAllText ( Path , Text ) ;
Result = true ;
}
catch ( Exception Ex )
{
2023-03-08 12:43:35 -05:00
Logger . LogWarning ( "Unable to write text to {Path}" , Path ) ;
Logger . LogWarning ( Ex , "{Text}" , LogUtils . FormatException ( Ex ) ) ;
2014-03-14 14:13:41 -04:00
}
return Result ;
}
/// <summary>
/// Writes text to a file.
/// </summary>
/// <param name="Path">Filename</param>
/// <param name="Text">Text</param>
/// <returns>True if the operation was successful, false otherwise.</returns>
public static bool SafeWriteAllBytes ( string Path , byte [ ] Bytes )
{
2023-03-08 14:32:15 -05:00
Logger . LogDebug ( "SafeWriteAllBytes {Path}" , Path ) ;
2014-03-14 14:13:41 -04:00
bool Result = false ;
try
{
File . WriteAllBytes ( Path , Bytes ) ;
Result = true ;
}
catch ( Exception Ex )
{
2023-03-08 12:43:35 -05:00
Logger . LogWarning ( "Unable to write text to {Path}" , Path ) ;
Logger . LogWarning ( Ex , "{Text}" , LogUtils . FormatException ( Ex ) ) ;
2014-03-14 14:13:41 -04:00
}
return Result ;
}
2015-07-22 15:21:40 -04:00
public static void Robust_CopyFile ( string InputFileName , string OutputFileName )
{
if ( OutputFileName . StartsWith ( "/Volumes/" ) )
{
int Retry = 0 ;
int NumRetries = 60 ;
bool bCopied = false ;
while ( ! bCopied & & Retry < NumRetries )
{
if ( Retry > 0 )
{
2015-08-05 10:22:11 -04:00
//@todo: These retries should be reported so we can track how often they are occurring.
2023-03-08 14:32:15 -05:00
Logger . LogInformation ( "*** Mac temp storage retry {OutputFileName}" , OutputFileName ) ;
2015-07-22 15:21:40 -04:00
System . Threading . Thread . Sleep ( 1000 ) ;
}
bCopied = CommandUtils . CopyFile_NoExceptions ( InputFileName , OutputFileName , true ) ;
Retry + + ;
}
}
else
{
CommandUtils . CopyFile ( InputFileName , OutputFileName ) ;
}
}
2015-08-05 10:22:11 -04:00
public static void Robust_FileExists ( string Filename , string Message )
2015-07-22 15:21:40 -04:00
{
2015-08-05 10:22:11 -04:00
Robust_FileExists ( false , Filename , Message ) ;
2015-07-22 15:21:40 -04:00
}
2015-08-05 10:22:11 -04:00
public static void Robust_FileExists ( bool bQuiet , string Filename , string Message )
2015-07-22 15:21:40 -04:00
{
if ( ! CommandUtils . FileExists_NoExceptions ( bQuiet , Filename ) )
{
bool bFound = false ;
// mac is terrible on shares, this isn't a solution, but a stop gap
if ( Filename . StartsWith ( "/Volumes/" ) )
{
int Retry = 0 ;
while ( ! bFound & & Retry < 60 )
{
2015-08-05 10:22:11 -04:00
//@todo: These retries should be reported so we can track how often they are occurring.
2023-03-08 14:32:15 -05:00
Logger . LogInformation ( "*** Mac temp storage retry {Filename}" , Filename ) ;
2015-07-22 15:21:40 -04:00
System . Threading . Thread . Sleep ( 10000 ) ;
bFound = CommandUtils . FileExists_NoExceptions ( bQuiet , Filename ) ;
Retry + + ;
}
}
if ( ! bFound )
{
throw new AutomationException ( Message , Filename ) ;
}
}
}
public static bool Robust_DirectoryExists_NoExceptions ( string Directoryname , string Message )
{
bool bFound = false ;
if ( ! CommandUtils . DirectoryExists_NoExceptions ( Directoryname ) )
{
// mac is terrible on shares, this isn't a solution, but a stop gap
if ( Directoryname . StartsWith ( "/Volumes/" ) )
{
int Retry = 0 ;
while ( ! bFound & & Retry < 60 )
{
2015-08-05 10:22:11 -04:00
//@todo: These retries should be reported so we can track how often they are occurring.
2023-03-08 14:32:15 -05:00
Logger . LogInformation ( "*** Mac temp storage retry {Directoryname}" , Directoryname ) ;
2015-07-22 15:21:40 -04:00
System . Threading . Thread . Sleep ( 10000 ) ;
bFound = CommandUtils . DirectoryExists_NoExceptions ( Directoryname ) ;
Retry + + ;
}
}
}
else
{
bFound = true ;
}
return bFound ;
}
public static bool Robust_DirectoryExistsAndIsWritable_NoExceptions ( string Directoryname )
{
bool bFound = false ;
if ( ! CommandUtils . DirectoryExistsAndIsWritable_NoExceptions ( Directoryname ) )
{
// mac is terrible on shares, this isn't a solution, but a stop gap
if ( Directoryname . StartsWith ( "/Volumes/" ) )
{
int Retry = 0 ;
int NumRetries = 60 ;
2022-01-11 15:15:59 -05:00
if ( ! Directoryname . Contains ( "UE" ) )
2015-07-22 15:21:40 -04:00
{
NumRetries = 2 ;
}
while ( ! bFound & & Retry < NumRetries )
{
2015-08-05 10:22:11 -04:00
//@todo: These retries should be reported so we can track how often they are occurring.
2023-03-08 14:32:15 -05:00
Logger . LogInformation ( "*** Mac temp storage retry {Directoryname}" , Directoryname ) ;
2015-07-22 15:21:40 -04:00
System . Threading . Thread . Sleep ( 1000 ) ;
bFound = CommandUtils . DirectoryExistsAndIsWritable_NoExceptions ( Directoryname ) ;
Retry + + ;
}
}
}
else
{
bFound = true ;
}
return bFound ;
}
Copying //UE4/Orion-Staging to //UE4/Main (Source: //Orion/Dev-General @ 2949393)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2949393 on 2016/04/20 by Graeme.Thornton
Orion non-pak file security.
- Removed security bypass code from platform pak file
- Added a delegate to pak file code which allows the game to decide whether a file should be allowed or not
- Added an orion delegate which whitelists appropriate files
#rb robert.manuszewski
#tests win64 client + dedicated server. golden path.
Change 2949232 on 2016/04/19 by david.nikdel
#ROBOMERGE-AUTHOR: michael.noland
Paragon: Added a distinct menu frame rate limit, currently set to 60 fps and not visible in settings (if the user sets a game frame rate limit of below 60, we also clamp the menu limit to that threshold, so they can go down but not up for menus)
#jira OR-18017
#rb marcus.wassmer
#tests Ran paragon and switched between gameplay, menus, and replays, observing t.MaxFPS at different points
#ROBOMERGE-SOURCE: CL 2949231 in //Orion/Main/...
#ROBOMERGE-BOT: ORION (Main -> Dev-General)
Change 2949032 on 2016/04/19 by Zak.Middleton
#orion - Lower default NetUpdateFrequency for minions (10->6). Avoid excessive latency for some knockback/knockup abilities that would have noticeable lag by forcing an update sooner when they are triggered.
This should have the following effects:
1. Reduce server CPU cost (we tick minions at the net frequency).
2. Reduce server bandwidth
3. Reduce client CPU cost (we move character capsules and perform overlaps when new positions are received).
#rb Bart.Bressler, John.Pollard
#codereview Dmitry.Rekman
#tests MultiPIE AI lane, Replays
Change 2948966 on 2016/04/19 by Lina.Halper
Added log (check) of the asset info for Anim Per Track contains invalid format key
#rb: Michael.Noland
#code review: Martin.Wilson, Laurent.Delayen, Michael.Noland
#tests: editor/ cooked and test with AI_Tests with 10 bots.
Change 2948876 on 2016/04/19 by Michael.Noland
PS4: Validate that the texture pool size is not set to automatic (-1, which will crash later on as an attempt to allocate too much memory)
#rb none
#codereview marcus.wassmer
#tests Ran Paragon on PS4
Change 2948765 on 2016/04/19 by Daniel.Lamb
Removed AssetImportData tag from cooked asset registry builds.
#rb Andrew.Grant
#test Cook orion
Change 2948691 on 2016/04/19 by Marcus.Wassmer
Fix copytoresolvetarget ensure
#rb none
#test pc agora
Change 2948633 on 2016/04/19 by david.nikdel
#ROBOMERGE-AUTHOR: jason.bestimt
[AUTOMERGE]
Fix copytoresolve crash and change validation to ensure.
#test PC editor / PC golden path
#rb none
--------
Integrated using branch //Orion/Main_to_//Orion/Release-Next (reversed) of change#2948169 by Marcus.Wassmer on 2016/04/19 10:50:32.
#ROBOMERGE-SOURCE: CL 2948632 in //Orion/Main/...
#ROBOMERGE-BOT: ORION (Main -> Dev-General)
Change 2948507 on 2016/04/19 by david.nikdel
#ROBOMERGE-AUTHOR: andrew.grant
Merging 2937781 (Pak signing) using //Orion/Dev-General_to_Release
#rb none
#tests cooked client, checked game runs
#ROBOMERGE-SOURCE: CL 2948497 in //Orion/Release-0.24.1/... via CL 2948506
#ROBOMERGE-BOT: ORION (Main -> Dev-General)
Change 2948431 on 2016/04/19 by Steve.Robb
CL#s 2919775 and 2942793 integrated to prevent annotation map performance problems on shutdown and asserts in PIE.
#codereview robert.manuszewski,bob.tellez
#rb bob.tellez
#tests Ran editor
Change 2948408 on 2016/04/19 by Leslie.Nivison
Adding .tps
#rb none
#test none
Change 2948185 on 2016/04/19 by david.nikdel
#ROBOMERGE-AUTHOR: chris.bunner
Fix for HLOD visibility freeze.
#tests Golden Path, Editor
#rb rolando.caloca, michael.noland
#lockdown andrew.grant
#jira OR-19863
#ROBOMERGE-SOURCE: CL 2948182 in //Orion/Release-0.24.1/... via CL 2948183
#ROBOMERGE-BOT: ORION (Main -> Dev-General)
Change 2948149 on 2016/04/19 by Simon.Tovey
Fixed crash. Collision rendering path was not dealing with mesh batch with 0 triangles where other paths do.
#rb none
#tests No more crash
#codereview Marcus.Wassmer
Change 2948129 on 2016/04/19 by Lukasz.Furman
fixed gameplay debugger getting stuck with outdated data pack on client,
changed names of AI related debug cvars
#rb none
#tests game, PIE
#codereview Mieszko.Zielinski
Change 2948027 on 2016/04/19 by david.nikdel
#ROBOMERGE-AUTHOR: graeme.thornton
Fix for OR-20033 - CRASH: Client will crash with FRCPassPostProcessCircleDOFSetup
#rb none
#tests checked game runs without crashing
#ROBOMERGE-SOURCE: CL 2948017 in //Orion/Main/...
#ROBOMERGE-BOT: ORION (Main -> Dev-General)
Change 2947558 on 2016/04/18 by Matt.Kuhlenschmidt
Fix compile error
#rb none, #tests none
Change 2947509 on 2016/04/18 by Matt.Kuhlenschmidt
Added more logging to track down
https://jira.ol.epicgames.net/browse/OR-19841
#rb none, #tests none
Change 2947412 on 2016/04/18 by Ryan.Gerleve
Fix shadowed variable.
#rb none
#tests none
Change 2947377 on 2016/04/18 by Jamie.Dale
Gather paths are now sorted by fuzzy-ness, so that more specific includes beat less specific excludes
#rb Matt.Kuhlenschmidt
#tests Built for Windows. Ran a gather, and confirmed that explicitly included heroes were now gathered, and that generically excluded heroes were absent from the gather.
Change 2947351 on 2016/04/18 by Ryan.Gerleve
Allow overriding the demo.AsyncLoadWorld setting with a URL option when playing a replay.
Store the entire URL in the demo net driver instead of just the map name, so that the options can be accessed later.
#tests golden path, replays
#rb john.pollard
Change 2947103 on 2016/04/18 by david.nikdel
#ROBOMERGE-AUTHOR: jason.bestimt
#ORION_MAIN - Merge 24.1 @ CL 2947071
#RB:none
#Tests:none
#ROBOMERGE-SOURCE: CL 2947102 in //Orion/Main/...
#ROBOMERGE-BOT: ORION (Main -> Dev-General)
Change 2947007 on 2016/04/18 by Zak.Middleton
#ue4 - Improve linear smoothing in the presence of low net frequency updates.
#rb Bart.Bressler
#tests MultiPIE AI with lanes
Change 2946994 on 2016/04/18 by Mieszko.Zielinski
Improvements to NavigationSystem's "abstract navigation data" support #UE4
#rb Lukasz.Furman
#test golden path
Change 2946760 on 2016/04/18 by Chris.Bunner
Fixing up bad merge, recommit of CL 2819472 - ForceLOD now clamps to available LODs on primitive, i.e. use MinLOD rather than not drawing at all.
#tests Editor
#rb None
Change 2946745 on 2016/04/18 by david.nikdel
#ROBOMERGE-AUTHOR: jason.bestimt
#ORION_MAIN - Merge 24.1 @ CL 2946637
#RB:none
#Tests:none
#ROBOMERGE-SOURCE: CL 2946656 in //Orion/Main/...
#ROBOMERGE-BOT: ORION (Main -> Dev-General)
Change 2946645 on 2016/04/18 by Richard.Fawcett
When promoting a buidl to staged, prevent enumeration of files already in S3
Enumerating files in S3 is a slow process, and it turns out that simply uploading all chunks blindly is more efficient than enumerating existing chunks and selectively uploading only the new ones.
#rb Leigh.Swift
#tests This technique has already been used in launcher promotions for several months
Change 2946622 on 2016/04/18 by Richard.Fawcett
By default, when enumerating chunks from a manifest file, skip checking they exist on disk at enumeration time.
This will fail anyway further down the line if the files don't exist, but will improve speed of stage promotions by around five minutes. In practice, we have NEVER seen a job fail at this point because of the existence check.
#rb Leigh.Swift
#tests Ensure that output of ExtractDataFilenamesFromManifest method is identical both with and without bSkipExistsCheck specified.
Change 2945812 on 2016/04/15 by Daniel.Lamb
Fixed error in diff cooked build commandlet.
#rb ben.marsh
#test Compile.
Change 2945110 on 2016/04/15 by Matt.Kuhlenschmidt
Fix crash exporting actors with non-scene components to fbx
#rb none, #tests full scene exporting on maps that crashed
#codereview alexis.matte
Change 2945078 on 2016/04/15 by Simon.Tovey
Fix for OR-19778
When some pooled systems are reused, on init they have a non zero lod level but the emitter instances are created at LOD 0 initially.
So the component did not think it had to update it's LOD but the emitters were not at the correct LOD.
Have forced a LOD set on init when the component LOD is non-zero.
#rb none
#tests Works in editor and game.
#codereview Olaf.Piesche
Change 2944664 on 2016/04/14 by Uriel.Doyon
Fix to SM4 compilation issue
#jira OR-19706
#rb marcus.wassmer
#tests tested editor in SM4 and SM5
Change 2944642 on 2016/04/14 by Lukasz.Furman
changed waypoint switch conditions in meta nav paths
#rb none
#tests PIE
#codereview Mieszko.Zielinski
Change 2944599 on 2016/04/14 by david.nikdel
#ROBOMERGE-AUTHOR: andrew.grant
Added sha1 to UnrealPak list output
#rb none
#tests listed content of pakfile
#ROBOMERGE-SOURCE: CL 2944595 in //Orion/Release-0.24/... via CL 2944597 via CL 2944598
#ROBOMERGE-BOT: ORION (Main -> Dev-General)
Change 2944441 on 2016/04/14 by Marcus.Wassmer
Duplicate change to output shader compiler errors.
#rb none
#test run PC and see errors.
Change 2944437 on 2016/04/14 by John.Pollard
Possible fix for https://jira.ol.epicgames.net/browse/OR-19614
#rb JoshM
#codereview Josh.Markiewicz
#tests Golden path matchmaking
Change 2944430 on 2016/04/14 by david.nikdel
#ROBOMERGE-AUTHOR: michael.noland
Engine: Added support for more/fewer settings in individual categories to the editor scalability control widget
#rb david.ratti
#tests Tested in the editor
#ROBOMERGE-SOURCE: CL 2944428 in //Orion/Main/...
#ROBOMERGE-BOT: ORION (Main -> Dev-General)
Change 2944198 on 2016/04/14 by David.Ratti
Paragon - register for slow/stun/root/silence callbacks on any tag count change, not just add/remove. This is so the UI will update if you get another stack of a stackable slow GE.
Ability system - unify client stack count change code path with server. Client now properly update owner ASC's tag map and broadcasts all delegates there.
#rb dayY
#tests pie
Change 2944124 on 2016/04/14 by Wes.Hunt
Change the TPS redirects for DX modules to point to the proper DX redist TPS which is what packaged games will need.
#codereview:leslie.nivison
#rb none
#tests ran UAT ListThirdPartySoftware <for Orion>
Change 2944107 on 2016/04/14 by Wes.Hunt
MeshUtilities now depends on new module nvTessLib to better track the third party dependency.
#codereview:daniel.wright
#rb none
#tests build OrionClient/Editor for Win64
Change 2944102 on 2016/04/14 by Wes.Hunt
Tweak to UBT -ListBuildFolders to do a distinct in a better place to cut down on duplicate module searches.
#tests ran the UBT command
#rb none
Change 2943851 on 2016/04/14 by Ryan.Gerleve
Fix the ForEachNetDriver helper function to get the world context directly off the world instead of going through the game instance. Ensures the correct net drivers will be used when there are multiple worlds but only one game instance.
#rb john.pollard
#tests golden path, replays, PIE
Change 2943847 on 2016/04/14 by Ryan.Gerleve
Fixes to support client replay recording & playback in another world:
When recording a replay, only swap actor roles if the remote role is ROLE_Authority
When loading a replay checkpoint, call NetworkRemapPath to make sure paths have the correct name in the GuidCache
#rb john.pollard
#tests golden path, replays, PIE
Change 2943691 on 2016/04/14 by david.nikdel
#ROBOMERGE-AUTHOR: jason.bestimt
#ORION_24 - Fix for OR-19609, OR-19610, and OR-19611
#RB:none
#Tests:none
#ROBOMERGE-SOURCE: CL 2943687 in //Orion/Release-0.24/... via CL 2943688
#ROBOMERGE-BOT: ORION (Main -> Dev-General)
Change 2943508 on 2016/04/14 by Richard.Fawcett
Automation: Add support for multipart file uploads to Amazon S3 to increase speed of large file uploads.
#jira OPPBUILD-44
#rb Leigh.Swift
#tests Uploaded files to S3 using the new routines, downlaoded via AWS management console and ensured downloaded files identical to uploaded ones
Change 2943274 on 2016/04/13 by jason.bestimt
#ORION_MAIN - Merge 24 @ CL 2943257
#RB:none
#Tests:none
#ROBOMERGE-SOURCE: CL 2943271 in //Orion/Main/...
#ROBOMERGE-BOT: ORION (Main -> Dev-General)
#ROBOMERGE-SAYS: Beep boop! I couldn't merge this change. Please do it yourself, human.
#CodeReview: david.nikdel, jason.bestimt
Change 2943178 on 2016/04/13 by Olaf.Piesche
Bumping size of the particle curve texture to 512x512
#rb martin.mittring
#tests PC Editor, Game
Change 2943174 on 2016/04/13 by Aaron.McLeran
OR-19392 Ensure condition failed: (*RequiresInitialization == 0) on loading into PVP match
- Removing ensure since there is a rare edge case where it's possible for a sound looping node may get ResetChildren called twice.
- Condition is when a child random node o fa looping node has a blank entry and results in no sound chosen in a given frame (which results in ResetChildren getting called). Later in the frame, if a sound had previously been playing with an active sound, it will have stop called on it, which will call NotifyWaveInstanceFinished and hit the ensure. Simply using the branch to check if the looping node has been initialized will work fine in this and other cases.
#codereview Bob.Tellez
#rb Bob.Tellez
#tests ran orion with this change testing problematic sound cue
Change 2943042 on 2016/04/13 by Rob.Cannaday
Fix crash in HTTP completion delegates on shutdown
Stop ticking HTTP retry manager after FOnlineSubsystemImpl::Shutdown has been called
#rb josh.markiewicz
#tests shutting down multiple times
Change 2942913 on 2016/04/13 by Lukasz.Furman
added meta navmesh paths
#orion
#rb Mieszko.Zielinski
#tests PIE
Change 2942132 on 2016/04/13 by Wes.Hunt
Enable UBT -ListBuildFolders to operate on Mac and iOS platforms without having to fully set up the remote environment.
#codereview:leslie.nivison
#rb peter.sauerbrei
#tests running UBT with and without -listbuildfolders
Change 2941651 on 2016/04/12 by Jason.Bestimt
#ORION_DG - Merge MAIN @ CL 2941645
#RB:none
#Tests:none
Change 2941539 on 2016/04/12 by Laurent.Delayen
FABRIK: Normalize outgoing rotations.
Fixes Chains Q ability crashing.
#rb none
#tests Chains not crashing
Change 2941469 on 2016/04/12 by Wes.Hunt
Fix UBT -ListBuildFolders to not prep target for deployment.
#codereview:leslie.nivison
#rb none
#tests tested -ListBuildFolders for Android
Change 2941434 on 2016/04/12 by Leslie.Nivison
Adding/cleaning up .tps files
#rb none
#test none
Change 2941241 on 2016/04/12 by Daniel.Lamb
Removed shadername from the shader code to fix deterministic material cooking issue.
#jira UE-29320
#codereview Marcus.Wassmer
#rb Marcus.Wassmer
#test Running editor, cooking orion.
Change 2941046 on 2016/04/12 by Laurent.Delayen
Added safety net for non state AnimNotifies having a non-zero EndTriggerTimeOffset.
Fixes Twinblast double shot for the left primary attack.
#rb benn.gallagher
#codereview lina.halper, ray.arnett, aaron.eady
#tests twinblast's LMB
Change 2941032 on 2016/04/12 by Jason.Bestimt
#ORION_24 - Merge MAIN @ CL 2940950
#RB:none
#Tests:none
[CL 2952833 by Andrew Grant in Main branch]
2016-04-22 11:21:10 -04:00
/// <summary>
/// Efficient iterator for walking over a string line by line.
/// </summary>
/// <param name="Str">string to walk over</param>
/// <returns>enumerable of each line in the string.</returns>
public static IEnumerable < string > EnumerateLines ( this string Str )
{
if ( Str = = null )
{
yield break ;
}
using ( var Reader = new StringReader ( Str ) )
{
string line = Reader . ReadLine ( ) ;
while ( line ! = null )
{
yield return line ;
line = Reader . ReadLine ( ) ;
}
}
}
2021-04-13 10:28:24 -04:00
/// <summary>
/// Indicates whether the Internet Protocol (IP) address is valid to appear in a Domain Name System (DNS) server database.
///
/// Addresses in the range 169.254.0.0 to 169.254.255.255 are not DNS eligible. These addresses are reserved for Automatic Private IP Addressing (APIPA).
/// https://docs.microsoft.com/en-us/dotnet/api/system.net.networkinformation.ipaddressinformation.isdnseligible?view=netcore-3.1
///
/// NET Core 3.1 does not include a usable implementation of UnicastIPAddressInformation.IsDnsEligible() for Linux or Mac
/// </summary>
/// <param name="AddressInformation">Information about the address to evaluate for DNS eligibility</param>
/// <returns></returns>
public static bool IsDnsEligible ( System . Net . NetworkInformation . IPAddressInformation AddressInformation )
{
byte [ ] AddressBytes = AddressInformation . Address . GetAddressBytes ( ) ;
return ! ( AddressBytes [ 0 ] = = 169 & & AddressBytes [ 1 ] = = 254 ) ;
}
2014-03-14 14:13:41 -04:00
}
Copying //UE4/Orion-Staging to //UE4/Main (Source: //Orion/Dev-General @ 2949393)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2949393 on 2016/04/20 by Graeme.Thornton
Orion non-pak file security.
- Removed security bypass code from platform pak file
- Added a delegate to pak file code which allows the game to decide whether a file should be allowed or not
- Added an orion delegate which whitelists appropriate files
#rb robert.manuszewski
#tests win64 client + dedicated server. golden path.
Change 2949232 on 2016/04/19 by david.nikdel
#ROBOMERGE-AUTHOR: michael.noland
Paragon: Added a distinct menu frame rate limit, currently set to 60 fps and not visible in settings (if the user sets a game frame rate limit of below 60, we also clamp the menu limit to that threshold, so they can go down but not up for menus)
#jira OR-18017
#rb marcus.wassmer
#tests Ran paragon and switched between gameplay, menus, and replays, observing t.MaxFPS at different points
#ROBOMERGE-SOURCE: CL 2949231 in //Orion/Main/...
#ROBOMERGE-BOT: ORION (Main -> Dev-General)
Change 2949032 on 2016/04/19 by Zak.Middleton
#orion - Lower default NetUpdateFrequency for minions (10->6). Avoid excessive latency for some knockback/knockup abilities that would have noticeable lag by forcing an update sooner when they are triggered.
This should have the following effects:
1. Reduce server CPU cost (we tick minions at the net frequency).
2. Reduce server bandwidth
3. Reduce client CPU cost (we move character capsules and perform overlaps when new positions are received).
#rb Bart.Bressler, John.Pollard
#codereview Dmitry.Rekman
#tests MultiPIE AI lane, Replays
Change 2948966 on 2016/04/19 by Lina.Halper
Added log (check) of the asset info for Anim Per Track contains invalid format key
#rb: Michael.Noland
#code review: Martin.Wilson, Laurent.Delayen, Michael.Noland
#tests: editor/ cooked and test with AI_Tests with 10 bots.
Change 2948876 on 2016/04/19 by Michael.Noland
PS4: Validate that the texture pool size is not set to automatic (-1, which will crash later on as an attempt to allocate too much memory)
#rb none
#codereview marcus.wassmer
#tests Ran Paragon on PS4
Change 2948765 on 2016/04/19 by Daniel.Lamb
Removed AssetImportData tag from cooked asset registry builds.
#rb Andrew.Grant
#test Cook orion
Change 2948691 on 2016/04/19 by Marcus.Wassmer
Fix copytoresolvetarget ensure
#rb none
#test pc agora
Change 2948633 on 2016/04/19 by david.nikdel
#ROBOMERGE-AUTHOR: jason.bestimt
[AUTOMERGE]
Fix copytoresolve crash and change validation to ensure.
#test PC editor / PC golden path
#rb none
--------
Integrated using branch //Orion/Main_to_//Orion/Release-Next (reversed) of change#2948169 by Marcus.Wassmer on 2016/04/19 10:50:32.
#ROBOMERGE-SOURCE: CL 2948632 in //Orion/Main/...
#ROBOMERGE-BOT: ORION (Main -> Dev-General)
Change 2948507 on 2016/04/19 by david.nikdel
#ROBOMERGE-AUTHOR: andrew.grant
Merging 2937781 (Pak signing) using //Orion/Dev-General_to_Release
#rb none
#tests cooked client, checked game runs
#ROBOMERGE-SOURCE: CL 2948497 in //Orion/Release-0.24.1/... via CL 2948506
#ROBOMERGE-BOT: ORION (Main -> Dev-General)
Change 2948431 on 2016/04/19 by Steve.Robb
CL#s 2919775 and 2942793 integrated to prevent annotation map performance problems on shutdown and asserts in PIE.
#codereview robert.manuszewski,bob.tellez
#rb bob.tellez
#tests Ran editor
Change 2948408 on 2016/04/19 by Leslie.Nivison
Adding .tps
#rb none
#test none
Change 2948185 on 2016/04/19 by david.nikdel
#ROBOMERGE-AUTHOR: chris.bunner
Fix for HLOD visibility freeze.
#tests Golden Path, Editor
#rb rolando.caloca, michael.noland
#lockdown andrew.grant
#jira OR-19863
#ROBOMERGE-SOURCE: CL 2948182 in //Orion/Release-0.24.1/... via CL 2948183
#ROBOMERGE-BOT: ORION (Main -> Dev-General)
Change 2948149 on 2016/04/19 by Simon.Tovey
Fixed crash. Collision rendering path was not dealing with mesh batch with 0 triangles where other paths do.
#rb none
#tests No more crash
#codereview Marcus.Wassmer
Change 2948129 on 2016/04/19 by Lukasz.Furman
fixed gameplay debugger getting stuck with outdated data pack on client,
changed names of AI related debug cvars
#rb none
#tests game, PIE
#codereview Mieszko.Zielinski
Change 2948027 on 2016/04/19 by david.nikdel
#ROBOMERGE-AUTHOR: graeme.thornton
Fix for OR-20033 - CRASH: Client will crash with FRCPassPostProcessCircleDOFSetup
#rb none
#tests checked game runs without crashing
#ROBOMERGE-SOURCE: CL 2948017 in //Orion/Main/...
#ROBOMERGE-BOT: ORION (Main -> Dev-General)
Change 2947558 on 2016/04/18 by Matt.Kuhlenschmidt
Fix compile error
#rb none, #tests none
Change 2947509 on 2016/04/18 by Matt.Kuhlenschmidt
Added more logging to track down
https://jira.ol.epicgames.net/browse/OR-19841
#rb none, #tests none
Change 2947412 on 2016/04/18 by Ryan.Gerleve
Fix shadowed variable.
#rb none
#tests none
Change 2947377 on 2016/04/18 by Jamie.Dale
Gather paths are now sorted by fuzzy-ness, so that more specific includes beat less specific excludes
#rb Matt.Kuhlenschmidt
#tests Built for Windows. Ran a gather, and confirmed that explicitly included heroes were now gathered, and that generically excluded heroes were absent from the gather.
Change 2947351 on 2016/04/18 by Ryan.Gerleve
Allow overriding the demo.AsyncLoadWorld setting with a URL option when playing a replay.
Store the entire URL in the demo net driver instead of just the map name, so that the options can be accessed later.
#tests golden path, replays
#rb john.pollard
Change 2947103 on 2016/04/18 by david.nikdel
#ROBOMERGE-AUTHOR: jason.bestimt
#ORION_MAIN - Merge 24.1 @ CL 2947071
#RB:none
#Tests:none
#ROBOMERGE-SOURCE: CL 2947102 in //Orion/Main/...
#ROBOMERGE-BOT: ORION (Main -> Dev-General)
Change 2947007 on 2016/04/18 by Zak.Middleton
#ue4 - Improve linear smoothing in the presence of low net frequency updates.
#rb Bart.Bressler
#tests MultiPIE AI with lanes
Change 2946994 on 2016/04/18 by Mieszko.Zielinski
Improvements to NavigationSystem's "abstract navigation data" support #UE4
#rb Lukasz.Furman
#test golden path
Change 2946760 on 2016/04/18 by Chris.Bunner
Fixing up bad merge, recommit of CL 2819472 - ForceLOD now clamps to available LODs on primitive, i.e. use MinLOD rather than not drawing at all.
#tests Editor
#rb None
Change 2946745 on 2016/04/18 by david.nikdel
#ROBOMERGE-AUTHOR: jason.bestimt
#ORION_MAIN - Merge 24.1 @ CL 2946637
#RB:none
#Tests:none
#ROBOMERGE-SOURCE: CL 2946656 in //Orion/Main/...
#ROBOMERGE-BOT: ORION (Main -> Dev-General)
Change 2946645 on 2016/04/18 by Richard.Fawcett
When promoting a buidl to staged, prevent enumeration of files already in S3
Enumerating files in S3 is a slow process, and it turns out that simply uploading all chunks blindly is more efficient than enumerating existing chunks and selectively uploading only the new ones.
#rb Leigh.Swift
#tests This technique has already been used in launcher promotions for several months
Change 2946622 on 2016/04/18 by Richard.Fawcett
By default, when enumerating chunks from a manifest file, skip checking they exist on disk at enumeration time.
This will fail anyway further down the line if the files don't exist, but will improve speed of stage promotions by around five minutes. In practice, we have NEVER seen a job fail at this point because of the existence check.
#rb Leigh.Swift
#tests Ensure that output of ExtractDataFilenamesFromManifest method is identical both with and without bSkipExistsCheck specified.
Change 2945812 on 2016/04/15 by Daniel.Lamb
Fixed error in diff cooked build commandlet.
#rb ben.marsh
#test Compile.
Change 2945110 on 2016/04/15 by Matt.Kuhlenschmidt
Fix crash exporting actors with non-scene components to fbx
#rb none, #tests full scene exporting on maps that crashed
#codereview alexis.matte
Change 2945078 on 2016/04/15 by Simon.Tovey
Fix for OR-19778
When some pooled systems are reused, on init they have a non zero lod level but the emitter instances are created at LOD 0 initially.
So the component did not think it had to update it's LOD but the emitters were not at the correct LOD.
Have forced a LOD set on init when the component LOD is non-zero.
#rb none
#tests Works in editor and game.
#codereview Olaf.Piesche
Change 2944664 on 2016/04/14 by Uriel.Doyon
Fix to SM4 compilation issue
#jira OR-19706
#rb marcus.wassmer
#tests tested editor in SM4 and SM5
Change 2944642 on 2016/04/14 by Lukasz.Furman
changed waypoint switch conditions in meta nav paths
#rb none
#tests PIE
#codereview Mieszko.Zielinski
Change 2944599 on 2016/04/14 by david.nikdel
#ROBOMERGE-AUTHOR: andrew.grant
Added sha1 to UnrealPak list output
#rb none
#tests listed content of pakfile
#ROBOMERGE-SOURCE: CL 2944595 in //Orion/Release-0.24/... via CL 2944597 via CL 2944598
#ROBOMERGE-BOT: ORION (Main -> Dev-General)
Change 2944441 on 2016/04/14 by Marcus.Wassmer
Duplicate change to output shader compiler errors.
#rb none
#test run PC and see errors.
Change 2944437 on 2016/04/14 by John.Pollard
Possible fix for https://jira.ol.epicgames.net/browse/OR-19614
#rb JoshM
#codereview Josh.Markiewicz
#tests Golden path matchmaking
Change 2944430 on 2016/04/14 by david.nikdel
#ROBOMERGE-AUTHOR: michael.noland
Engine: Added support for more/fewer settings in individual categories to the editor scalability control widget
#rb david.ratti
#tests Tested in the editor
#ROBOMERGE-SOURCE: CL 2944428 in //Orion/Main/...
#ROBOMERGE-BOT: ORION (Main -> Dev-General)
Change 2944198 on 2016/04/14 by David.Ratti
Paragon - register for slow/stun/root/silence callbacks on any tag count change, not just add/remove. This is so the UI will update if you get another stack of a stackable slow GE.
Ability system - unify client stack count change code path with server. Client now properly update owner ASC's tag map and broadcasts all delegates there.
#rb dayY
#tests pie
Change 2944124 on 2016/04/14 by Wes.Hunt
Change the TPS redirects for DX modules to point to the proper DX redist TPS which is what packaged games will need.
#codereview:leslie.nivison
#rb none
#tests ran UAT ListThirdPartySoftware <for Orion>
Change 2944107 on 2016/04/14 by Wes.Hunt
MeshUtilities now depends on new module nvTessLib to better track the third party dependency.
#codereview:daniel.wright
#rb none
#tests build OrionClient/Editor for Win64
Change 2944102 on 2016/04/14 by Wes.Hunt
Tweak to UBT -ListBuildFolders to do a distinct in a better place to cut down on duplicate module searches.
#tests ran the UBT command
#rb none
Change 2943851 on 2016/04/14 by Ryan.Gerleve
Fix the ForEachNetDriver helper function to get the world context directly off the world instead of going through the game instance. Ensures the correct net drivers will be used when there are multiple worlds but only one game instance.
#rb john.pollard
#tests golden path, replays, PIE
Change 2943847 on 2016/04/14 by Ryan.Gerleve
Fixes to support client replay recording & playback in another world:
When recording a replay, only swap actor roles if the remote role is ROLE_Authority
When loading a replay checkpoint, call NetworkRemapPath to make sure paths have the correct name in the GuidCache
#rb john.pollard
#tests golden path, replays, PIE
Change 2943691 on 2016/04/14 by david.nikdel
#ROBOMERGE-AUTHOR: jason.bestimt
#ORION_24 - Fix for OR-19609, OR-19610, and OR-19611
#RB:none
#Tests:none
#ROBOMERGE-SOURCE: CL 2943687 in //Orion/Release-0.24/... via CL 2943688
#ROBOMERGE-BOT: ORION (Main -> Dev-General)
Change 2943508 on 2016/04/14 by Richard.Fawcett
Automation: Add support for multipart file uploads to Amazon S3 to increase speed of large file uploads.
#jira OPPBUILD-44
#rb Leigh.Swift
#tests Uploaded files to S3 using the new routines, downlaoded via AWS management console and ensured downloaded files identical to uploaded ones
Change 2943274 on 2016/04/13 by jason.bestimt
#ORION_MAIN - Merge 24 @ CL 2943257
#RB:none
#Tests:none
#ROBOMERGE-SOURCE: CL 2943271 in //Orion/Main/...
#ROBOMERGE-BOT: ORION (Main -> Dev-General)
#ROBOMERGE-SAYS: Beep boop! I couldn't merge this change. Please do it yourself, human.
#CodeReview: david.nikdel, jason.bestimt
Change 2943178 on 2016/04/13 by Olaf.Piesche
Bumping size of the particle curve texture to 512x512
#rb martin.mittring
#tests PC Editor, Game
Change 2943174 on 2016/04/13 by Aaron.McLeran
OR-19392 Ensure condition failed: (*RequiresInitialization == 0) on loading into PVP match
- Removing ensure since there is a rare edge case where it's possible for a sound looping node may get ResetChildren called twice.
- Condition is when a child random node o fa looping node has a blank entry and results in no sound chosen in a given frame (which results in ResetChildren getting called). Later in the frame, if a sound had previously been playing with an active sound, it will have stop called on it, which will call NotifyWaveInstanceFinished and hit the ensure. Simply using the branch to check if the looping node has been initialized will work fine in this and other cases.
#codereview Bob.Tellez
#rb Bob.Tellez
#tests ran orion with this change testing problematic sound cue
Change 2943042 on 2016/04/13 by Rob.Cannaday
Fix crash in HTTP completion delegates on shutdown
Stop ticking HTTP retry manager after FOnlineSubsystemImpl::Shutdown has been called
#rb josh.markiewicz
#tests shutting down multiple times
Change 2942913 on 2016/04/13 by Lukasz.Furman
added meta navmesh paths
#orion
#rb Mieszko.Zielinski
#tests PIE
Change 2942132 on 2016/04/13 by Wes.Hunt
Enable UBT -ListBuildFolders to operate on Mac and iOS platforms without having to fully set up the remote environment.
#codereview:leslie.nivison
#rb peter.sauerbrei
#tests running UBT with and without -listbuildfolders
Change 2941651 on 2016/04/12 by Jason.Bestimt
#ORION_DG - Merge MAIN @ CL 2941645
#RB:none
#Tests:none
Change 2941539 on 2016/04/12 by Laurent.Delayen
FABRIK: Normalize outgoing rotations.
Fixes Chains Q ability crashing.
#rb none
#tests Chains not crashing
Change 2941469 on 2016/04/12 by Wes.Hunt
Fix UBT -ListBuildFolders to not prep target for deployment.
#codereview:leslie.nivison
#rb none
#tests tested -ListBuildFolders for Android
Change 2941434 on 2016/04/12 by Leslie.Nivison
Adding/cleaning up .tps files
#rb none
#test none
Change 2941241 on 2016/04/12 by Daniel.Lamb
Removed shadername from the shader code to fix deterministic material cooking issue.
#jira UE-29320
#codereview Marcus.Wassmer
#rb Marcus.Wassmer
#test Running editor, cooking orion.
Change 2941046 on 2016/04/12 by Laurent.Delayen
Added safety net for non state AnimNotifies having a non-zero EndTriggerTimeOffset.
Fixes Twinblast double shot for the left primary attack.
#rb benn.gallagher
#codereview lina.halper, ray.arnett, aaron.eady
#tests twinblast's LMB
Change 2941032 on 2016/04/12 by Jason.Bestimt
#ORION_24 - Merge MAIN @ CL 2940950
#RB:none
#Tests:none
[CL 2952833 by Andrew Grant in Main branch]
2016-04-22 11:21:10 -04:00
/// <summary>
/// This is to ensure that UAT can produce version strings precisely compatible
/// with FEngineVersion.
///
/// WARNING: If FEngineVersion compatibility changes, this code needs to be updated.
/// </summary>
public class FEngineVersionSupport
2014-03-14 14:13:41 -04:00
{
/// <summary>
/// The version info read from the Version header. The populated fields will be Major, Minor, and Build from the MAJOR, MINOR, and PATCH lines, respectively.
/// Expects lines like:
/// #define APP_MAJOR_VERSION 0
/// #define APP_MINOR_VERSION 0
/// #define APP_PATCH_VERSION 0
/// </summary>
public readonly Version Version ;
/// <summary>
/// The changelist this version is associated with
/// </summary>
public readonly int Changelist ;
/// <summary>
/// The Branch name associated with the version
/// </summary>
public readonly string BranchName ;
/// <summary>
/// Reads a Version.h file, looking for macros that define the MAJOR/MINOR/PATCH version fields. Expected to match the Version.h in the engine.
/// </summary>
/// <param name="Filename">Version.h file to read.</param>
/// <returns>Version that puts the Major/Minor/Patch fields in the Major/Minor/Build fields, respectively.</returns>
public static Version ReadVersionFromFile ( string Filename )
{
var regex = new Regex ( @"#define.+_(?<Type>MAJOR|MINOR|PATCH)_VERSION\s+(?<Value>.+)" , RegexOptions . ExplicitCapture | RegexOptions . IgnoreCase ) ;
var foundElements = new Dictionary < string , int > ( 3 ) ;
foreach ( var line in File . ReadLines ( Filename ) )
{
try
{
var match = regex . Match ( line ) ;
if ( match . Success )
{
foundElements . Add ( match . Groups [ "Type" ] . Value , int . Parse ( match . Groups [ "Value" ] . Value ) ) ;
}
}
catch ( Exception ex )
{
2015-08-04 09:33:03 -04:00
throw new AutomationException ( ex , "Failed to parse line {0} in version file {1}" , line , Filename ) ;
2014-03-14 14:13:41 -04:00
}
}
// must find all three parts to accept the version file.
if ( foundElements . Keys . Intersect ( new [ ] { "MAJOR" , "MINOR" , "PATCH" } ) . Count ( ) ! = 3 )
{
throw new AutomationException ( "Failed to find MAJOR, MINOR, and PATCH fields from version file {0}" , Filename ) ;
}
2023-03-08 14:32:15 -05:00
Logger . LogInformation ( "Read {Arg0}.{Arg1}.{Arg2} from {Filename}" , foundElements [ "MAJOR" ] , foundElements [ "MINOR" ] , foundElements [ "PATCH" ] , Filename ) ;
2014-03-14 14:13:41 -04:00
return new Version ( foundElements [ "MAJOR" ] , foundElements [ "MINOR" ] , foundElements [ "PATCH" ] ) ;
}
/// <summary>
/// Ctor that takes a pre-determined Version. Gets the Changelist and BranchName from the current <see cref="CommandUtils.P4Env"/>.
/// </summary>
2014-04-30 07:58:10 -04:00
/// <param name="InVersion">Predetermined version.</param>
/// <param name="InChangelist">Predetermined changelist (optional)</param>
/// <param name="InBranchName">Predetermined branch name (optional)</param>
public FEngineVersionSupport ( Version InVersion , int InChangelist = - 1 , string InBranchName = null )
2014-03-14 14:13:41 -04:00
{
2014-04-30 07:58:10 -04:00
Version = InVersion ;
if ( InChangelist < = 0 )
{
Changelist = CommandUtils . P4Enabled ? CommandUtils . P4Env . Changelist : 0 ;
}
else
{
Changelist = InChangelist ;
}
if ( String . IsNullOrEmpty ( InBranchName ) )
{
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 3620134)
#lockdown Nick.Penwarden
#rb none
============================
MAJOR FEATURES & CHANGES
============================
Change 3550452 by Ben.Marsh
UAT: Improve readability of error message when an editor commandlet fails with an error code.
Change 3551179 by Ben.Marsh
Add methods for reading text files into an array of strings.
Change 3551260 by Ben.Marsh
Core: Change FFileHelper routines to use enum classes for flags.
Change 3555697 by Gil.Gribb
Fixed a rare crash when the asset registry scanner found old cooked files with package level compression.
#jira UE-47668
Change 3556464 by Ben.Marsh
UGS: If working in a virtual stream, use the name of the first non-virtual ancestor for writing version files.
Change 3557630 by Ben.Marsh
Allow the network version to be set via Build.version if it's not overriden from Version.h.
Change 3561357 by Gil.Gribb
Fixed crashes related to loading old unversioned files in the editor.
#jira UE-47806
Change 3565711 by Graeme.Thornton
PR #3839: Make non-encoding specific Base64 functions accessible (Contributed by stfx)
Change 3565864 by Robert.Manuszewski
Temp fix for a race condition with the async loading thread enabled - caching the linker in case it gets removed (but not deleted) from super class object.
Change 3569022 by Ben.Marsh
PR #3849: Update gitignore (Contributed by mhutch)
Change 3569113 by Ben.Marsh
Fix Japanese errors not displaying correctly in the cook output log.
#jira UE-47746
Change 3569486 by Ben.Marsh
UGS: Always sync the Enterprise folder if the selected .uproject file has the "Enterprise" flag set.
Change 3570483 by Graeme.Thornton
Minor C# cleanups. Removing some redundant "using" calls which also cause dotnetcore compile errors
Change 3570513 by Robert.Manuszewski
Fix for a race condition with async loading thread enabled.
Change 3570664 by Ben.Marsh
UBT: Use P/Invoke to determine number of physical processors on Windows rather than using WMI. Starting up WMIC adds 2.5 seconds to build times, and is not compatible with .NET core.
Change 3570708 by Robert.Manuszewski
Added ENABLE_GC_OBJECT_CHECKS macro to be able to quickly toggle UObject pointer checks in shipping builds when the garbage collector is running.
Change 3571592 by Ben.Marsh
UBT: Allow running with -installed without creating [InstalledPlatforms] entries in BaseEngine.ini. If there is no HasInstalledPlatformInfo=true setting, assume that all platforms are still available.
Change 3572215 by Graeme.Thornton
UBT
- Remove some unnecessary using directives
- Point SN-DBS code at the new Utils.GetPhysicalProcessorCount call, rather than trying to calculate it itself
Change 3572437 by Robert.Manuszewski
Game-specific fix for lazy object pointer issues in one of the test levels. The previous fix had to be partially reverted due to side-effects.
#jira UE-44996
Change 3572480 by Robert.Manuszewski
MaterialInstanceCollections will no longer be added to GC clusters to prevent materials staying around in memory for too long
Change 3573547 by Ben.Marsh
Add support for displaying log timestamps in local time. Set LogTimes=Local in *Engine.ini, or pass -LocalLogTimes on the command line.
Change 3574562 by Robert.Manuszewski
PR #3847: Add GC callbacks for script integrations (Contributed by mhutch)
Change 3575017 by Ben.Marsh
Move some functions related to generating window resolutions out of Core (FParse::Resolution, GenerateConvenientWindowedResolutions). Also remove a few headers from shared PCHs prior to splitting application functionality out of Core.
Change 3575689 by Ben.Marsh
Add a fixed URL for opening the API documentation, so it works correctly in "internal" and "perforce" builds.
Change 3575934 by Steve.Robb
Fix for nested preprocessor definitions.
Change 3575961 by Steve.Robb
Fix for nested zeros.
Change 3576297 by Robert.Manuszewski
Material resources will now be discarded in PostLoad (Game Thread) instead of in Serialize (potentially Async Loading Thread) so that shader deregistration doesn't assert when done from a different thread than the game thread.
#jira FORT-38977
Change 3576366 by Ben.Marsh
Add shim functions to allow redirecting FPlatformMisc::ClipboardCopy()/ClipboardPaste() to FPlatformApplicationMisc::ClipboardCopy()/ClipboardPaste() while they are deprecated.
Change 3578290 by Graeme.Thornton
Changes to Ionic zip library to allow building on dot net core
Change 3578291 by Graeme.Thornton
Ionic zip library binaries built for .NET Core
Change 3578354 by Graeme.Thornton
Added FBase64::GetDecodedDataSize() to determine the size of bytes of a decoded base64 string
Change 3578674 by Robert.Manuszewski
After loading packages flush linker cache on uncooked platforms to free precache memory
Change 3579068 by Steve.Robb
Fix for CLASS_Intrinsic getting stomped.
Fix to EClassFlags so that they are visible in the debugger.
Re-added mysteriously-removed comments.
Change 3579228 by Steve.Robb
BOM removed.
Change 3579297 by Ben.Marsh
Fix exception if a plugin lists the same module twice.
#jira UE-48232
Change 3579898 by Robert.Manuszewski
When creating GC clusters and asserting due to objects still being pending load, the object name and cluster name will now be logged with the assert.
Change 3579983 by Robert.Manuszewski
More fixes for freeing linker cache memory in the editor.
Change 3580012 by Graeme.Thornton
Remove redundant copy of FileReference.cs
Change 3580408 by Ben.Marsh
Validate that arguments passed to the checkf macro are valid sprintf types, and fix up a few places which are currently incorrect.
Change 3582104 by Graeme.Thornton
Added a dynamic compilation path that uses the latest roslyn apis. Currently only used by the .NET Core path.
Change 3582131 by Graeme.Thornton
#define out some PerformanceCounter calls that don't exist in .NET Core. They're only used by mono-specific calls anyway.
Change 3582645 by Ben.Marsh
PR #3879: fix bug when creating a new VS2017 C++ project (Contributed by mnannola)
#jira UE-48192
Change 3583955 by Robert.Manuszewski
Support for EDL cooked packages in the editor
Change 3584035 by Graeme.Thornton
Split RunExternalExecutable into RunExternaNativelExecutable and RunExternalDotNETExecutable. When running under .NET Core, externally launched DotNET utilities must be launched via the 'dotnet' proxy to work correctly.
Change 3584177 by Robert.Manuszewski
Removed unused member variable (FArchiveAsync2::bKeepRestOfFilePrecached)
Change 3584315 by Ben.Marsh
Move Android JNI accessor functions into separate header, to decouple it from the FAndroidApplication class.
Change 3584370 by Ben.Marsh
Move hooks which allow platforms to load any modules into the FPlatformApplicationMisc classes.
Change 3584498 by Ben.Marsh
Move functions for getting and setting the hardware window pointer onto the appropriate platform window classes.
Change 3585003 by Steve.Robb
Fix for TChunkedArray ranged-for iteration.
#jira UE-48297
Change 3585235 by Ben.Marsh
Remove LogEngine extern from Core; use the platform log channels instead.
Change 3585942 by Ben.Marsh
Move MessageBoxExt() implementation into application layer for platforms that require it.
Change 3587071 by Ben.Marsh
Move Linux's UngrabAllInput() function into a callback, so DebugBreak still works without SDL.
Change 3587161 by Ben.Marsh
Remove headers which will be stripped out of the Core module from Core.h and PlatformIncludes.h.
Change 3587579 by Steve.Robb
Fix for Children list not being rebuilt after hot reload.
Change 3587584 by Graeme.Thornton
Logging improvements for pak signature check failures
- Added "PakCorrupt" console command which corrupts the master signature table
- Added some extra log information about which block failed
- Re-hash the master signature table and to make sure that it hasn't changed since startup
- Moved the ensure around so that some extra logging messages can make it out before the ensure is hit
- Added PAK_SIGNATURE_CHECK_FAILS_ARE_FATAL to IPlatformFilePak.h so we have a single place to make signature check failures fatal again
Change 3587586 by Graeme.Thornton
Changes to make UBT build and run on .NET Core
- Added *_DNC csproj files for DotNETUtilities and UnrealBuildTool projects which contain the .NET Core build setups
- VCSharpProjectFile can no be asked for the CsProjectInfo for a particular configuration, which is cached for future use
- After loading VCSharpProjectFiles, .NET Core based projects will be excluded unless generating VSCode projects
Change 3587953 by Steve.Robb
Allow arbitrary UENUM initializers for enumerators.
Editor-only data UENUM support.
Enumerators named MAX are now treated as the UENUM's maximum, and will not cause a MAX+1 value to be generated.
#jira UE-46274
Change 3589827 by Graeme.Thornton
More fixes for VSCode project generation and for UBT running on .NET Core
- Use a different file extension for rules assemblies when build on .NET Core, so they never get used by their counterparts
- UEConsoleTraceListener supports stdout/stderror constructor parameter and outputs to the appropriate channel
- Added documentation for UEConsoleTraceListener
- All platforms .NET project compilation tasks/launch configs now use "dotnet" and not the normal batch files
- Restored the default UBT log verbosity to "Log" rather than "VeryVeryVerbose"
- Renamed assemblies for .NETCore versions of DotNETUtilities and UnrealBuildTool so they don't conflict with the output of the existing .NET Desktop Framework stuff
Change 3589868 by Graeme.Thornton
Separate .NET Core projects for UBT and DotNETCommon out into their own directories so that their intermediates don't overlap with the standard .NET builds, causing failures.
UBT registers ONLY .NET Core C# projects when generating VSCode solutions, and ONLY standard C# projects in all other cases
Change 3589919 by Robert.Manuszewski
Fixing crash when cooking textures that have already been cooked for EDL (support for cooked content in the editor)
Change 3589940 by Graeme.Thornton
Force UBT to think it's running on mono when actually running on .NET Core. Disables a lot of windows specific code paths.
Change 3590078 by Graeme.Thornton
Fully disable automatic assembly info generation in .NET Core projects
Change 3590534 by Robert.Manuszewski
Marking UObject as intrinsic clas to fix a crash on UFE startup.
Change 3591498 by Gil.Gribb
UE4 - Fixed several edge cases in the low level async loading code, especially around cancellation. Also PakFileTest is a console command which can be used to stress test pak file loading.
Change 3591605 by Gil.Gribb
UE4 - Follow up to fixing several edge cases in the low level async loading code.
Change 3592577 by Graeme.Thornton
.NET Core C# projects now reference source files explicitly, to stop it accidentally compiling various intermediates
Change 3592684 by Steve.Robb
Fix for EObjectFlags being passed as the wrong argument to csgCopyBrush.
Change 3592710 by Steve.Robb
Fix for invalid casts in ListProps command.
Some name changes in command output.
Change 3592715 by Ben.Marsh
Move Windows event log code into cpp file, and expose it to other modules even if it's not enabled by default.
Change 3592767 by Gil.Gribb
UE4 - Changed the logic so that engine UObjects boot before anything else. The engine classes are known to be cycle-free, so we will get them done before moving onto game modules.
Change 3592770 by Gil.Gribb
UE4 - Fixed a race condition with async read completion in the prescence of cancels.
Change 3593090 by Steve.Robb
Better error message when there two clashing type names are found.
Change 3593697 by Steve.Robb
VisitTupleElements function, which calls a functor for each element in the tuple.
Change 3595206 by Ben.Marsh
Include additional diagnostics for missing imports when a module load fails.
Change 3596140 by Graeme.Thornton
Batch file for running MSBuild
Change 3596267 by Steve.Robb
Thread safety fix to FPaths::GetProjectFilePath().
Change 3596271 by Robert.Manuszewski
Added code to verify compression flags in package file summary to avoid cases where corrupt packages are crashing the editor
#jira UE-47535
Change 3596283 by Steve.Robb
Redundant casts removed from UHT.
Change 3596303 by Ben.Marsh
EC: Improve parsing of Android Clang errors and warnings, which are formatted as MSVC diagnostics to allow go-to-line clicking in the Output Window.
Change 3596337 by Ben.Marsh
UBT: Format messages about incorrect headers in a way that makes them clickable from Visual Studio.
Change 3596367 by Steve.Robb
Iterator checks in ranged-for on TMap, TSet and TSparseArray.
Change 3596410 by Gil.Gribb
UE4 - Improved some error messages on runtime failures in the EDL.
Change 3596532 by Ben.Marsh
UnrealVS: Fix setting command line to empty not affecting property sheet. Also remove support for VS2013.
#jira UE-48119
Change 3596631 by Steve.Robb
Tool which takes a .map file and a .objmap file (from UBT) and creates a report which shows the size of all the symbols contributed by the source code per-folder.
Change 3596807 by Ben.Marsh
Improve Intellisense when generated headers are missing or out of date (eg. line numbers changed, etc...). These errors seem to be masked by VAX, but are present when using the default Visual Studio Intellisense.
* UCLASS macro is defined to empty when __INTELLISENSE__ is defined. Previous macro was preventing any following class declaration being parsed correctly if generated code was out of date, causing squiggles over all class methods/variables.
* Insert a semicolon after each expanded GENERATED_BODY macro, so that if it parses incorrectly, the compiler can still continue parsing the next declaration.
Change 3596957 by Steve.Robb
UBT can be used to write out an .objsrcmap file for use with the MapFileParser.
Renaming of ObjMap to ObjSrcMap in MapFileParser.
Change 3597213 by Ben.Marsh
Remove AutoReporter. We don't support this any more.
Change 3597558 by Ben.Marsh
UGS: Allow adding custom actions to the context menu for right clicking on a changelist. Actions are specified in the project's UnrealEngine.ini file, with the following syntax:
+ContextMenu=(Label="This is the menu item", Execute="foo.exe", Arguments="bar")
The standard set of variables for custom tools is expanded in each parameter (eg. $(ProjectDir), $(EditorConfig), etc...), plus the $(Change) variable.
Change 3597982 by Ben.Marsh
Add an option to allow overriding the local DDC path from the editor (under Editor Preferences > Global > Local Derived Data Cache).
#jira UE-47173
Change 3598045 by Ben.Marsh
UGS: Add variables for stream and client name, and the ability to escape any variables for URIs using the syntax $(VariableName:URI).
Change 3599214 by Ben.Marsh
Avoid string duplication when comparing extensions.
Change 3600038 by Steve.Robb
Fix for maps being modified during iteration in cache compaction.
Change 3600136 by Steve.Robb
GitHub #3538 : Fixed a bug with the handling of 'TMap' key/value types in the UnrealHeaderTool
Change 3600214 by Steve.Robb
More accurate error message when unsupported template parameters are provided in a TSet property.
Change 3600232 by Ben.Marsh
UBT: Force UHT to run again if the .build.cs file for a module has changed.
#jira UE-46119
Change 3600246 by Steve.Robb
GitHub #3045 : allow multiple interface definition in a file
Change 3600645 by Ben.Marsh
Convert QAGame to Include-What-You-Use.
Change 3600897 by Ben.Marsh
Fix invalid path (multiple slashes) in LibCurl.build.cs. Causes exception when scanning for includes.
Change 3601558 by Graeme.Thornton
Simple first pass VSCode editor integration plugin
Change 3601658 by Graeme.Thornton
Enable intellisense generation for VS Code project files and setup include paths properly
Change 3601762 by Ben.Marsh
UBT: Add support for adaptive non-unity builds when working from a Git repository.
The ISourceFileWorkingSet interface is now used to query files belonging to the working set, and has separate implementations for Perforce (PerforceSourceFileWorkingSet) and Git (GitSourceFileWorkingSet). The Git implementation is used if a .git directory is found in the directory containing the Engine folder, the directory containing the project file, or the parent directory of the project file, and spawns a "git status" process in the background to determine which files are untracked or staged.
Several new settings are supported in BuildConfiguration.xml to allow modifying default behavior:
<SourceFileWorkingSet>
<Provider>Default</Provider> <!-- May be None, Default, Git or Perforce -->
<RepositoryPath></RepositoryPath> <!-- Specifies the path to the repository, relative to the directory containing the Engine folder. If not set, tries to find a .git directory in the locations listed above. -->
<GitPath>git</GitPath> <!-- Specifies the path to the Git executable. Defaults to "git", which assumes that it will be on the PATH -->
</SourceFileWorkingSet>
Change 3604032 by Graeme.Thornton
First attempt at automatically detecting the existance and location of visual studio code in the source code accessor module. Only works for windows.
Change 3604038 by Graeme.Thornton
Added FSourceCodeNavigation::GetSelectedSourceCodeIDE() which returns the name of the selected source code accessor.
Replaced all usages of FSourceCodeNavigation::GetSuggestedSourceCodeIDE() with GetSelectedSourceCodeIDE(), where the message is referring to the opening or editing of code.
Change 3604106 by Steve.Robb
GitHub #3561 : UE-44950: Don't see all caps struct constructor as macro
Change 3604192 by Steve.Robb
GitHub #3911 : Improving ToUpper/ToLower efficiency
Change 3604273 by Graeme.Thornton
IWYU build fixes when malloc profiler is enabled
Change 3605457 by Ben.Marsh
Fix race for intiialization of ThreadID variable on FRunnableThreadWin, and restore a previous check that was working around it.
Change 3606720 by James.Hopkin
Dave Ratti's fix to character base recursion protection code - was missing a GetOwner call, instead attempting to cast a component to a pawn.
Change 3606807 by Graeme.Thornton
Disabled optimizations around FShooterStyle::Create(), which was crashing in Win64 shipping game builds due to some known compiler issue. Same variety of fix as BenZ did in CL 3567741.
Change 3607026 by James.Hopkin
Fixed incorrect ABrush cast - was attempting to cast a UModel to ABrush, which can never succeed
Change 3607142 by Graeme.Thornton
UBT - Minor refactor of BackgroundProcess shutdown in SourceFileWorkingSet. Check whether the process has already exited before trying to kill it during Dispose.
Change 3607146 by Ben.Marsh
UGS: Fix exception due to formatting string when Perforce throws an error.
Change 3607147 by Steve.Robb
Efficiency fix for integer properties, which were causing a property mismatch and thus a tag lookup every time.
Float and double conversion support added to int properties.
NAME_DoubleProperty added.
Fix for converting enum class enumerators > 255 to int properties.
Change 3607516 by Ben.Marsh
PR #3935: Fix DECLARE_DELEGATE_NineParams, DECLARE_MULTICAST_DELEGATE_NineParams. (Contributed by enginevividgames)
Change 3610421 by Ben.Marsh
UAT: Move help for RebuildLightMapsCommand into attributes, so they display when running with -help.
Change 3610657 by Ben.Marsh
UAT: Unify initialization of command environment for build machines and local execution. Always derive parameters which aren't manually set via environment variables.
Change 3611000 by Ben.Marsh
UAT: Remove the -ForceLocal command line option. Settings are now determined automatically, independently of the -Buildmachine argument.
Change 3612471 by Ben.Marsh
UBT: Move FastJSON into DotNETUtilities.
Change 3613479 by Ben.Marsh
UBT: Remove the bIsCodeProject flag from UProjectInfo. This was only really being used to determine which projects to generate an IDE project for, so it is now checked in the project file generator.
Change 3613910 by Ben.Marsh
UBT: Remove unnecessary code to guess a project from the target name; doesn't work due to init order, actual project is determined later.
Change 3614075 by Ben.Marsh
UBT: Remove hacks for testing project file attributes by name.
Change 3614090 by Ben.Marsh
UBT: Remove global lookup of project by name. Projects should be explicitly specified by path when necessary.
Change 3614488 by Ben.Marsh
UBT: Prevent annoying (but handled) exception when constructing SQLiteModuleSupport objects with -precompile enabled.
Change 3614490 by Ben.Marsh
UBT: Simplify generation of arguments for building intellisense; determine the platform/configuration to build from the project file generation code, rather than inside the target itself.
Change 3614962 by Ben.Marsh
UBT: Move the VS2017 strict conformance mode (/permissive-) behind a command line option (-Strict), and disable it by default. Building with this mode is not guaranteed to work correctly without updated Windows headers.
Change 3615416 by Ben.Marsh
EC: Include an icon showing the overall status of a build in the grid view.
Change 3615713 by Ben.Marsh
UBT: Delete any files in output directories which match output files in other directories. Allows automatically deleting build products which are moved into another folder.
#jira UE-48987
Change 3616652 by Ben.Marsh
Plugins: Fix incorrect dialog when binaries for a plugin are missing. Should only prompt to disable if starting a content-only project.
#jira UE-49007
Change 3616680 by Ben.Marsh
Add the CodeAPI-HTML.tgz file into the installed engine build.
Change 3616767 by Ben.Marsh
Plugins: Tweak error message if the FModuleManager::IsUpToDate() function returns false for a plugin module; the module may be missing, not just incompatible.
Change 3616864 by Ben.Marsh
Cap the length of the temporary package name during save, to prevent excessively long filenames going over the limit once a GUID is appended.
#jira UE-48711
Change 3619964 by Ben.Marsh
UnrealVS: Fix single file compile for foreign projects, where the command line contains $(SolutionDir) and $(ProjectName) variables.
Change 3548930 by Ben.Marsh
UBT: Remove UEBuildModuleCSDLL; there is no codepath that still supports creating them. Remove the remaining UEBuildModule/UEBuildModuleCPP abstraction.
Change 3558056 by Ben.Marsh
Deprecate FString::Trim() and FString::TrimTrailing(), and replace them with separate versions to mutate (TrimStartInline(), TrimEndInline()) or return by copy (TrimStart(), TrimEnd()). Also add a functions to trim whitespace from both ends of a string (TrimStartAndEnd(), TrimStartAndEndInline()).
Change 3563309 by Graeme.Thornton
Moved some common C# classes into the DotNETCommon assembly
Change 3570283 by Graeme.Thornton
Move some code out of RPCUtility and into DotNETCommon, removing the dependency between the two projects
Added UEConsoleTraceListener to replace ConsoleTraceListener, which doesn't exist in DotNetCore
Change 3572811 by Ben.Marsh
UBT: Add -enableasan / -enabletsan command line options and bEnableAddressSanitizer / bEnableThreadSanitizer settings in BuildConfiguration.xml (and remove environment variables).
Change 3573397 by Ben.Marsh
UBT: Create a <ExeName>.version file for every target built by UBT, in the same JSON format as Engine/Build/Build.version. This allows monolithic targets to read a version number at runtime, unlike when it's embedded in a modules file, and allows creating versioned client executables that will work with versioned servers when syncing through UGS.
Change 3575659 by Ben.Marsh
Remove CHM API documentation.
Change 3582103 by Graeme.Thornton
Simple ResX writer implemetation that the xbox deloyment code can use instead of the one from the windows forms assembly, which isn't supported on .NET Core
Removed reference to System.Windows.Form from UBT.
Change 3584113 by Ben.Marsh
Move key-mapping functionality into the InputCore module.
Change 3584278 by Ben.Marsh
Move FPlatformMisc::RequestMinimize() into FPlatformApplicationMisc.
Change 3584453 by Ben.Marsh
Move functionality for querying device display density to FApplicationMisc, due to dependence on application-level functionality on mobile platforms.
Change 3585301 by Ben.Marsh
Move PlatformPostInit() into an FPlatformApplicationMisc function.
Change 3587050 by Ben.Marsh
Move IsThisApplicationForeground() into FPlatformApplicationMisc.
Change 3587059 by Ben.Marsh
Move RequiresVirtualKeyboard() into FPlatformApplicationMisc.
Change 3587119 by Ben.Marsh
Move GetAbsoluteLogFilename() into FPlatformMisc.
Change 3587800 by Steve.Robb
Fixes to container visualizers for types whose pointer type isn't simply Type*.
Change 3588393 by Ben.Marsh
Move platform output devices into their own headers.
Change 3588868 by Ben.Marsh
Move creation of console, error and warning output devices int PlatformApplicationMisc.
Change 3589879 by Graeme.Thornton
All automation projects now have a reference to DotNETUtilities
Fixed a build error in the WEX automation library
Change 3590034 by Ben.Marsh
Move functionality related to windowing and input out of the Core module and into an ApplicationCore module, so it is possible to build utilities with Core without adding dependencies on XInput (Windows), SDL (Linux), and OpenGL (Mac).
Change 3593754 by Steve.Robb
Fix for tuple debugger visualization.
Change 3597208 by Ben.Marsh
Move CrashReporter out of a public folder; it's not in a form that is usable by subscribers and licensees.
Change 3600163 by Ben.Marsh
UBT: Simplify how targets are cleaned. Delete all intermediate folders for a platform/configuration, and delete any build products matching the UE4 naming convention for that target, rather than relying on the current build configuration or list of previous build products. This will ensure that build products which are no longer being generated will also be cleaned.
#jira UE-46725
Change 3604279 by Graeme.Thornton
Move pre/post garbage collection delegates into accessor functions so they can be used by globally constructed objects
Change 3606685 by James.Hopkin
Removed redundant 'Cast's (casting to either the same type or a base).
In SClassViewer, replaced cast with TAssetPtr::operator* call to get the wrapped UClass.
Also removed redundant 'IsA's from AnimationRetargetContent::AddRemappedAsset in EditorAnimUtils.cpp.
Change 3610950 by Ben.Marsh
UAT: Simplify logic for detecting Perforce settings, using environment variables if they are set, otherwise falling back to detecting them. Removes special cases for build machines, and makes it simpler to set up UAT commands on builders outside Epic.
Change 3610991 by Ben.Marsh
UAT: Use the correct P4 settings to detect settings if only some parameters are specified on the command line.
Change 3612342 by Ben.Marsh
UBT: Change JsonObject.Read() to take a FileReference parameter.
Change 3612362 by Ben.Marsh
UBT: Remove some more cases of paths being passed as strings rather than using FileReference objects.
Change 3619128 by Ben.Marsh
Include builder warnings and errors in the notification emails for automated tests, otherwise it's difficult to track down non-test failures.
[CL 3620189 by Ben Marsh in Main branch]
2017-08-31 12:08:38 -04:00
BranchName = CommandUtils . P4Enabled ? CommandUtils . EscapePath ( CommandUtils . P4Env . Branch ) : "UnknownBranch" ;
2014-04-30 07:58:10 -04:00
}
else
{
BranchName = InBranchName ;
}
2014-03-14 14:13:41 -04:00
}
/// <summary>
/// Gets a version string compatible with FEngineVersion's native parsing code.
/// </summary>
/// <remarks>
/// The format looks like: Major.Minor.Build-Changelist+BranchName.
/// </remarks>
/// <returns></returns>
public override string ToString ( )
{
return String . Format ( "{0}.{1}.{2}-{3}+{4}" ,
Version . Major ,
Version . Minor ,
Version . Build ,
Changelist . ToString ( "0000000" ) ,
BranchName ) ;
}
2015-05-15 09:31:31 -04:00
public override bool Equals ( object obj )
{
var that = obj as FEngineVersionSupport ;
if ( that = = null )
return false ;
return this . ToString ( ) = = that . ToString ( ) ;
}
public override int GetHashCode ( )
{
return this . ToString ( ) . GetHashCode ( ) ;
}
2014-03-14 14:13:41 -04:00
/// <summary>
/// Ctor initializes with the values from the supplied Version file. The BranchName and CL are also taken from the current <see cref="CommandUtils.P4Env"/>.
/// </summary>
/// <param name="Filename">Full path to the file with the version info.</param>
2014-04-30 07:58:10 -04:00
/// <param name="InChangelist">Predetermined changelist (optional)</param>
/// <param name="InBranchName">Predetermined branch name (optional)</param>
public static FEngineVersionSupport FromVersionFile ( string Filename , int InChangelist = - 1 , string InBranchName = null )
2014-03-14 14:13:41 -04:00
{
2014-04-30 07:58:10 -04:00
return new FEngineVersionSupport ( ReadVersionFromFile ( Filename ) , InChangelist , InBranchName ) ;
2014-03-14 14:13:41 -04:00
}
/// <summary>
/// Creates a <see cref="FEngineVersionSupport"/> from a string that matches the format given in <see cref="ToString"/>.
/// </summary>
/// <param name="versionString">Version string that should match the FEngineVersion::ToString() format.</param>
2014-10-10 05:40:29 -04:00
/// <param name="bAllowVersion">Optional parameter which if set to true, allows version strings with no version number specified.</param>
2014-03-14 14:13:41 -04:00
/// <returns>a new instance with fields initialized to the match those given in the string.</returns>
2014-10-10 05:40:29 -04:00
public static FEngineVersionSupport FromString ( string versionString , bool bAllowNoVersion = false )
2014-03-14 14:13:41 -04:00
{
try
{
2015-11-09 19:35:15 -05:00
if ( bAllowNoVersion & & versionString . StartsWith ( "++" ) )
2014-10-10 05:40:29 -04:00
{
// This form of version is used when a product has no major.minor.patch version
// E.g. ++depot+UE4-ProdName-CL-12345678
var clSplit = versionString . Split ( new string [ ] { "-CL-" } , 2 , StringSplitOptions . None ) ;
var dashSplit = clSplit [ 1 ] . Split ( new [ ] { '-' } , 2 ) ;
var changelist = int . Parse ( dashSplit [ 0 ] ) ;
var branchName = clSplit [ 0 ] ;
return new FEngineVersionSupport ( new Version ( 0 , 0 , 0 ) , changelist , branchName ) ;
}
else
{
Copying //UE4/Dev-Build to //UE4/Main
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2864843 on 2016/02/12 by Ben.Marsh
Add individual 'status', 'outcome', and 'error_code' fields to parsed jobsteps. Should fix grid view not being able to display 'pending' icons.
Change 2865161 on 2016/02/12 by Ben.Marsh
Stop storing a reference to UEBuildTarget from UEBuildModule. It creates an awkward cyclic data dependency, and makes it easy for people to write lazy code that just reaches into the internal state of the build.
Change 2865643 on 2016/02/12 by Ben.Marsh
Rename UEBuildModuleType to UHTModuleType, and move implementation into ExternalExecution.
Change 2874408 on 2016/02/19 by Ben.Marsh
Automatically sort nodes in the dashboard grid view by a weight derived from the node's order in the build graph, summed across all the jobs in which it was present.
Change 2879572 on 2016/02/24 by Ben.Marsh
Allow spoofing a Git merge from a given commit, using a changelist description containing the tag "git merge <branch> <changelist>", where <branch> is the name of a branch on Git (eg. master, 4.11, etc..), and <changelist> is the changelist being merged in.
Change 2883216 on 2016/02/26 by Ben.Marsh
Prevent Jira tickets being incorrectly updated with 'Main CL' fields which are after the 'Fix CL' fields.
Change 2883755 on 2016/02/26 by Ben.Marsh
Fix solution files having a Shipping configuration, even when -NoShippingConfigs is passed on the command line.
Change 2886223 on 2016/02/29 by Ben.Marsh
Ignore SignTool errors - we can recover from them.
Change 2887414 on 2016/03/01 by Ben.Marsh
Dump all the *.crash files produced while running commandlets, to make it easier to diagnose build system crashes cooking on Mac.
Change 2888235 on 2016/03/01 by Ben.Marsh
Add overloads for methods in FileFilter which take FileReference and DirectoryReference objects.
Change 2889602 on 2016/03/02 by Ben.Marsh
Treat shaders as code in UGS. Don't sync them as part of content-only syncs, and don't allow syncing past them without updated binaries.
Change 2889610 on 2016/03/02 by Ben.Marsh
Fix setting for using incremental builds not being saved. Also hide command to do incremental builds if the 'use incremental builds' option is not checked.
Change 2891866 on 2016/03/03 by Matthew.Griffin
Removed Rocket specific batch files and made sure installed build won't try to include them
Removed last use of RocketGenerateProjectFiles.sh by using UBT directly instead
Change 2893349 on 2016/03/03 by Ben.Marsh
Add derived ReplicatedBranch to support mirroring the VR editor branch to GitHub.
Change 2894703 on 2016/03/04 by Ben.Marsh
Include *.usf when looking for the last code changelist. Also update version to 1.68.
Change 2897991 on 2016/03/07 by Ben.Marsh
Copy the changelist number to the clipboard when the user presses Ctrl-C. Update version number to 1.69.
Change 2898005 on 2016/03/07 by Ben.Marsh
Minor changes to support BuildGraph:
* UE4Build now has a static function that can update version files.
* Adding FileReference/DirectoryReference methods to FileFilter and CommandUtils.
* FileFilter treats any pattern containing a slash as implictly starting from the root directory, unless it begins with "...".
Change 2898095 on 2016/03/07 by Ben.Marsh
UAT - Don't retry builds if we're using local executor; we don't encounter failures due to timeouts.
Change 2898248 on 2016/03/07 by Ben.Marsh
UBT - Add the standard game include paths back in to plugin modules. Existing game code relies on this.
Change 2898615 on 2016/03/08 by Matthew.Griffin
Removed last uses of RunningRocket function
All seemed to be overly cautious about people using an Installed build to do non standard things, don't see any ill effects in the most common circumstances.
Change 2898681 on 2016/03/08 by Matthew.Griffin
Removed Automation.RunningRocket function as there are no more uses
Changed the majority of comments referencing Rocket mode that are now either about the engine being installed or from the Launcher etc.
#lockdown Nick.Penwarden
[CL 2898813 by Matthew Griffin in Main branch]
2016-03-08 09:00:48 -05:00
// This is the standard Launcher versioning scheme, e.g. "4.5.0-12345678+++depot+UE4"
2014-10-10 05:40:29 -04:00
var dotSplit = versionString . Split ( new [ ] { '.' } , 3 ) ;
var dashSplit = dotSplit [ 2 ] . Split ( new [ ] { '-' } , 2 ) ;
var plusSplit = dashSplit [ 1 ] . Split ( new [ ] { '+' } , 2 ) ;
var major = int . Parse ( dotSplit [ 0 ] ) ;
var minor = int . Parse ( dotSplit [ 1 ] ) ;
var patch = int . Parse ( dashSplit [ 0 ] ) ;
var changelist = int . Parse ( plusSplit [ 0 ] ) ;
var branchName = plusSplit [ 1 ] ;
return new FEngineVersionSupport ( new Version ( major , minor , patch ) , changelist , branchName ) ;
}
2014-03-14 14:13:41 -04:00
}
catch ( Exception ex )
{
2015-08-04 09:33:03 -04:00
throw new AutomationException ( ex , "Failed to parse {0} as an FEngineVersion compatible string" , versionString ) ;
2014-03-14 14:13:41 -04:00
}
}
}
/// <summary>
/// VersionFileUpdater.
/// </summary>
public class VersionFileUpdater
{
/// <summary>
/// Constructor
/// </summary>
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 3620134)
#lockdown Nick.Penwarden
#rb none
============================
MAJOR FEATURES & CHANGES
============================
Change 3550452 by Ben.Marsh
UAT: Improve readability of error message when an editor commandlet fails with an error code.
Change 3551179 by Ben.Marsh
Add methods for reading text files into an array of strings.
Change 3551260 by Ben.Marsh
Core: Change FFileHelper routines to use enum classes for flags.
Change 3555697 by Gil.Gribb
Fixed a rare crash when the asset registry scanner found old cooked files with package level compression.
#jira UE-47668
Change 3556464 by Ben.Marsh
UGS: If working in a virtual stream, use the name of the first non-virtual ancestor for writing version files.
Change 3557630 by Ben.Marsh
Allow the network version to be set via Build.version if it's not overriden from Version.h.
Change 3561357 by Gil.Gribb
Fixed crashes related to loading old unversioned files in the editor.
#jira UE-47806
Change 3565711 by Graeme.Thornton
PR #3839: Make non-encoding specific Base64 functions accessible (Contributed by stfx)
Change 3565864 by Robert.Manuszewski
Temp fix for a race condition with the async loading thread enabled - caching the linker in case it gets removed (but not deleted) from super class object.
Change 3569022 by Ben.Marsh
PR #3849: Update gitignore (Contributed by mhutch)
Change 3569113 by Ben.Marsh
Fix Japanese errors not displaying correctly in the cook output log.
#jira UE-47746
Change 3569486 by Ben.Marsh
UGS: Always sync the Enterprise folder if the selected .uproject file has the "Enterprise" flag set.
Change 3570483 by Graeme.Thornton
Minor C# cleanups. Removing some redundant "using" calls which also cause dotnetcore compile errors
Change 3570513 by Robert.Manuszewski
Fix for a race condition with async loading thread enabled.
Change 3570664 by Ben.Marsh
UBT: Use P/Invoke to determine number of physical processors on Windows rather than using WMI. Starting up WMIC adds 2.5 seconds to build times, and is not compatible with .NET core.
Change 3570708 by Robert.Manuszewski
Added ENABLE_GC_OBJECT_CHECKS macro to be able to quickly toggle UObject pointer checks in shipping builds when the garbage collector is running.
Change 3571592 by Ben.Marsh
UBT: Allow running with -installed without creating [InstalledPlatforms] entries in BaseEngine.ini. If there is no HasInstalledPlatformInfo=true setting, assume that all platforms are still available.
Change 3572215 by Graeme.Thornton
UBT
- Remove some unnecessary using directives
- Point SN-DBS code at the new Utils.GetPhysicalProcessorCount call, rather than trying to calculate it itself
Change 3572437 by Robert.Manuszewski
Game-specific fix for lazy object pointer issues in one of the test levels. The previous fix had to be partially reverted due to side-effects.
#jira UE-44996
Change 3572480 by Robert.Manuszewski
MaterialInstanceCollections will no longer be added to GC clusters to prevent materials staying around in memory for too long
Change 3573547 by Ben.Marsh
Add support for displaying log timestamps in local time. Set LogTimes=Local in *Engine.ini, or pass -LocalLogTimes on the command line.
Change 3574562 by Robert.Manuszewski
PR #3847: Add GC callbacks for script integrations (Contributed by mhutch)
Change 3575017 by Ben.Marsh
Move some functions related to generating window resolutions out of Core (FParse::Resolution, GenerateConvenientWindowedResolutions). Also remove a few headers from shared PCHs prior to splitting application functionality out of Core.
Change 3575689 by Ben.Marsh
Add a fixed URL for opening the API documentation, so it works correctly in "internal" and "perforce" builds.
Change 3575934 by Steve.Robb
Fix for nested preprocessor definitions.
Change 3575961 by Steve.Robb
Fix for nested zeros.
Change 3576297 by Robert.Manuszewski
Material resources will now be discarded in PostLoad (Game Thread) instead of in Serialize (potentially Async Loading Thread) so that shader deregistration doesn't assert when done from a different thread than the game thread.
#jira FORT-38977
Change 3576366 by Ben.Marsh
Add shim functions to allow redirecting FPlatformMisc::ClipboardCopy()/ClipboardPaste() to FPlatformApplicationMisc::ClipboardCopy()/ClipboardPaste() while they are deprecated.
Change 3578290 by Graeme.Thornton
Changes to Ionic zip library to allow building on dot net core
Change 3578291 by Graeme.Thornton
Ionic zip library binaries built for .NET Core
Change 3578354 by Graeme.Thornton
Added FBase64::GetDecodedDataSize() to determine the size of bytes of a decoded base64 string
Change 3578674 by Robert.Manuszewski
After loading packages flush linker cache on uncooked platforms to free precache memory
Change 3579068 by Steve.Robb
Fix for CLASS_Intrinsic getting stomped.
Fix to EClassFlags so that they are visible in the debugger.
Re-added mysteriously-removed comments.
Change 3579228 by Steve.Robb
BOM removed.
Change 3579297 by Ben.Marsh
Fix exception if a plugin lists the same module twice.
#jira UE-48232
Change 3579898 by Robert.Manuszewski
When creating GC clusters and asserting due to objects still being pending load, the object name and cluster name will now be logged with the assert.
Change 3579983 by Robert.Manuszewski
More fixes for freeing linker cache memory in the editor.
Change 3580012 by Graeme.Thornton
Remove redundant copy of FileReference.cs
Change 3580408 by Ben.Marsh
Validate that arguments passed to the checkf macro are valid sprintf types, and fix up a few places which are currently incorrect.
Change 3582104 by Graeme.Thornton
Added a dynamic compilation path that uses the latest roslyn apis. Currently only used by the .NET Core path.
Change 3582131 by Graeme.Thornton
#define out some PerformanceCounter calls that don't exist in .NET Core. They're only used by mono-specific calls anyway.
Change 3582645 by Ben.Marsh
PR #3879: fix bug when creating a new VS2017 C++ project (Contributed by mnannola)
#jira UE-48192
Change 3583955 by Robert.Manuszewski
Support for EDL cooked packages in the editor
Change 3584035 by Graeme.Thornton
Split RunExternalExecutable into RunExternaNativelExecutable and RunExternalDotNETExecutable. When running under .NET Core, externally launched DotNET utilities must be launched via the 'dotnet' proxy to work correctly.
Change 3584177 by Robert.Manuszewski
Removed unused member variable (FArchiveAsync2::bKeepRestOfFilePrecached)
Change 3584315 by Ben.Marsh
Move Android JNI accessor functions into separate header, to decouple it from the FAndroidApplication class.
Change 3584370 by Ben.Marsh
Move hooks which allow platforms to load any modules into the FPlatformApplicationMisc classes.
Change 3584498 by Ben.Marsh
Move functions for getting and setting the hardware window pointer onto the appropriate platform window classes.
Change 3585003 by Steve.Robb
Fix for TChunkedArray ranged-for iteration.
#jira UE-48297
Change 3585235 by Ben.Marsh
Remove LogEngine extern from Core; use the platform log channels instead.
Change 3585942 by Ben.Marsh
Move MessageBoxExt() implementation into application layer for platforms that require it.
Change 3587071 by Ben.Marsh
Move Linux's UngrabAllInput() function into a callback, so DebugBreak still works without SDL.
Change 3587161 by Ben.Marsh
Remove headers which will be stripped out of the Core module from Core.h and PlatformIncludes.h.
Change 3587579 by Steve.Robb
Fix for Children list not being rebuilt after hot reload.
Change 3587584 by Graeme.Thornton
Logging improvements for pak signature check failures
- Added "PakCorrupt" console command which corrupts the master signature table
- Added some extra log information about which block failed
- Re-hash the master signature table and to make sure that it hasn't changed since startup
- Moved the ensure around so that some extra logging messages can make it out before the ensure is hit
- Added PAK_SIGNATURE_CHECK_FAILS_ARE_FATAL to IPlatformFilePak.h so we have a single place to make signature check failures fatal again
Change 3587586 by Graeme.Thornton
Changes to make UBT build and run on .NET Core
- Added *_DNC csproj files for DotNETUtilities and UnrealBuildTool projects which contain the .NET Core build setups
- VCSharpProjectFile can no be asked for the CsProjectInfo for a particular configuration, which is cached for future use
- After loading VCSharpProjectFiles, .NET Core based projects will be excluded unless generating VSCode projects
Change 3587953 by Steve.Robb
Allow arbitrary UENUM initializers for enumerators.
Editor-only data UENUM support.
Enumerators named MAX are now treated as the UENUM's maximum, and will not cause a MAX+1 value to be generated.
#jira UE-46274
Change 3589827 by Graeme.Thornton
More fixes for VSCode project generation and for UBT running on .NET Core
- Use a different file extension for rules assemblies when build on .NET Core, so they never get used by their counterparts
- UEConsoleTraceListener supports stdout/stderror constructor parameter and outputs to the appropriate channel
- Added documentation for UEConsoleTraceListener
- All platforms .NET project compilation tasks/launch configs now use "dotnet" and not the normal batch files
- Restored the default UBT log verbosity to "Log" rather than "VeryVeryVerbose"
- Renamed assemblies for .NETCore versions of DotNETUtilities and UnrealBuildTool so they don't conflict with the output of the existing .NET Desktop Framework stuff
Change 3589868 by Graeme.Thornton
Separate .NET Core projects for UBT and DotNETCommon out into their own directories so that their intermediates don't overlap with the standard .NET builds, causing failures.
UBT registers ONLY .NET Core C# projects when generating VSCode solutions, and ONLY standard C# projects in all other cases
Change 3589919 by Robert.Manuszewski
Fixing crash when cooking textures that have already been cooked for EDL (support for cooked content in the editor)
Change 3589940 by Graeme.Thornton
Force UBT to think it's running on mono when actually running on .NET Core. Disables a lot of windows specific code paths.
Change 3590078 by Graeme.Thornton
Fully disable automatic assembly info generation in .NET Core projects
Change 3590534 by Robert.Manuszewski
Marking UObject as intrinsic clas to fix a crash on UFE startup.
Change 3591498 by Gil.Gribb
UE4 - Fixed several edge cases in the low level async loading code, especially around cancellation. Also PakFileTest is a console command which can be used to stress test pak file loading.
Change 3591605 by Gil.Gribb
UE4 - Follow up to fixing several edge cases in the low level async loading code.
Change 3592577 by Graeme.Thornton
.NET Core C# projects now reference source files explicitly, to stop it accidentally compiling various intermediates
Change 3592684 by Steve.Robb
Fix for EObjectFlags being passed as the wrong argument to csgCopyBrush.
Change 3592710 by Steve.Robb
Fix for invalid casts in ListProps command.
Some name changes in command output.
Change 3592715 by Ben.Marsh
Move Windows event log code into cpp file, and expose it to other modules even if it's not enabled by default.
Change 3592767 by Gil.Gribb
UE4 - Changed the logic so that engine UObjects boot before anything else. The engine classes are known to be cycle-free, so we will get them done before moving onto game modules.
Change 3592770 by Gil.Gribb
UE4 - Fixed a race condition with async read completion in the prescence of cancels.
Change 3593090 by Steve.Robb
Better error message when there two clashing type names are found.
Change 3593697 by Steve.Robb
VisitTupleElements function, which calls a functor for each element in the tuple.
Change 3595206 by Ben.Marsh
Include additional diagnostics for missing imports when a module load fails.
Change 3596140 by Graeme.Thornton
Batch file for running MSBuild
Change 3596267 by Steve.Robb
Thread safety fix to FPaths::GetProjectFilePath().
Change 3596271 by Robert.Manuszewski
Added code to verify compression flags in package file summary to avoid cases where corrupt packages are crashing the editor
#jira UE-47535
Change 3596283 by Steve.Robb
Redundant casts removed from UHT.
Change 3596303 by Ben.Marsh
EC: Improve parsing of Android Clang errors and warnings, which are formatted as MSVC diagnostics to allow go-to-line clicking in the Output Window.
Change 3596337 by Ben.Marsh
UBT: Format messages about incorrect headers in a way that makes them clickable from Visual Studio.
Change 3596367 by Steve.Robb
Iterator checks in ranged-for on TMap, TSet and TSparseArray.
Change 3596410 by Gil.Gribb
UE4 - Improved some error messages on runtime failures in the EDL.
Change 3596532 by Ben.Marsh
UnrealVS: Fix setting command line to empty not affecting property sheet. Also remove support for VS2013.
#jira UE-48119
Change 3596631 by Steve.Robb
Tool which takes a .map file and a .objmap file (from UBT) and creates a report which shows the size of all the symbols contributed by the source code per-folder.
Change 3596807 by Ben.Marsh
Improve Intellisense when generated headers are missing or out of date (eg. line numbers changed, etc...). These errors seem to be masked by VAX, but are present when using the default Visual Studio Intellisense.
* UCLASS macro is defined to empty when __INTELLISENSE__ is defined. Previous macro was preventing any following class declaration being parsed correctly if generated code was out of date, causing squiggles over all class methods/variables.
* Insert a semicolon after each expanded GENERATED_BODY macro, so that if it parses incorrectly, the compiler can still continue parsing the next declaration.
Change 3596957 by Steve.Robb
UBT can be used to write out an .objsrcmap file for use with the MapFileParser.
Renaming of ObjMap to ObjSrcMap in MapFileParser.
Change 3597213 by Ben.Marsh
Remove AutoReporter. We don't support this any more.
Change 3597558 by Ben.Marsh
UGS: Allow adding custom actions to the context menu for right clicking on a changelist. Actions are specified in the project's UnrealEngine.ini file, with the following syntax:
+ContextMenu=(Label="This is the menu item", Execute="foo.exe", Arguments="bar")
The standard set of variables for custom tools is expanded in each parameter (eg. $(ProjectDir), $(EditorConfig), etc...), plus the $(Change) variable.
Change 3597982 by Ben.Marsh
Add an option to allow overriding the local DDC path from the editor (under Editor Preferences > Global > Local Derived Data Cache).
#jira UE-47173
Change 3598045 by Ben.Marsh
UGS: Add variables for stream and client name, and the ability to escape any variables for URIs using the syntax $(VariableName:URI).
Change 3599214 by Ben.Marsh
Avoid string duplication when comparing extensions.
Change 3600038 by Steve.Robb
Fix for maps being modified during iteration in cache compaction.
Change 3600136 by Steve.Robb
GitHub #3538 : Fixed a bug with the handling of 'TMap' key/value types in the UnrealHeaderTool
Change 3600214 by Steve.Robb
More accurate error message when unsupported template parameters are provided in a TSet property.
Change 3600232 by Ben.Marsh
UBT: Force UHT to run again if the .build.cs file for a module has changed.
#jira UE-46119
Change 3600246 by Steve.Robb
GitHub #3045 : allow multiple interface definition in a file
Change 3600645 by Ben.Marsh
Convert QAGame to Include-What-You-Use.
Change 3600897 by Ben.Marsh
Fix invalid path (multiple slashes) in LibCurl.build.cs. Causes exception when scanning for includes.
Change 3601558 by Graeme.Thornton
Simple first pass VSCode editor integration plugin
Change 3601658 by Graeme.Thornton
Enable intellisense generation for VS Code project files and setup include paths properly
Change 3601762 by Ben.Marsh
UBT: Add support for adaptive non-unity builds when working from a Git repository.
The ISourceFileWorkingSet interface is now used to query files belonging to the working set, and has separate implementations for Perforce (PerforceSourceFileWorkingSet) and Git (GitSourceFileWorkingSet). The Git implementation is used if a .git directory is found in the directory containing the Engine folder, the directory containing the project file, or the parent directory of the project file, and spawns a "git status" process in the background to determine which files are untracked or staged.
Several new settings are supported in BuildConfiguration.xml to allow modifying default behavior:
<SourceFileWorkingSet>
<Provider>Default</Provider> <!-- May be None, Default, Git or Perforce -->
<RepositoryPath></RepositoryPath> <!-- Specifies the path to the repository, relative to the directory containing the Engine folder. If not set, tries to find a .git directory in the locations listed above. -->
<GitPath>git</GitPath> <!-- Specifies the path to the Git executable. Defaults to "git", which assumes that it will be on the PATH -->
</SourceFileWorkingSet>
Change 3604032 by Graeme.Thornton
First attempt at automatically detecting the existance and location of visual studio code in the source code accessor module. Only works for windows.
Change 3604038 by Graeme.Thornton
Added FSourceCodeNavigation::GetSelectedSourceCodeIDE() which returns the name of the selected source code accessor.
Replaced all usages of FSourceCodeNavigation::GetSuggestedSourceCodeIDE() with GetSelectedSourceCodeIDE(), where the message is referring to the opening or editing of code.
Change 3604106 by Steve.Robb
GitHub #3561 : UE-44950: Don't see all caps struct constructor as macro
Change 3604192 by Steve.Robb
GitHub #3911 : Improving ToUpper/ToLower efficiency
Change 3604273 by Graeme.Thornton
IWYU build fixes when malloc profiler is enabled
Change 3605457 by Ben.Marsh
Fix race for intiialization of ThreadID variable on FRunnableThreadWin, and restore a previous check that was working around it.
Change 3606720 by James.Hopkin
Dave Ratti's fix to character base recursion protection code - was missing a GetOwner call, instead attempting to cast a component to a pawn.
Change 3606807 by Graeme.Thornton
Disabled optimizations around FShooterStyle::Create(), which was crashing in Win64 shipping game builds due to some known compiler issue. Same variety of fix as BenZ did in CL 3567741.
Change 3607026 by James.Hopkin
Fixed incorrect ABrush cast - was attempting to cast a UModel to ABrush, which can never succeed
Change 3607142 by Graeme.Thornton
UBT - Minor refactor of BackgroundProcess shutdown in SourceFileWorkingSet. Check whether the process has already exited before trying to kill it during Dispose.
Change 3607146 by Ben.Marsh
UGS: Fix exception due to formatting string when Perforce throws an error.
Change 3607147 by Steve.Robb
Efficiency fix for integer properties, which were causing a property mismatch and thus a tag lookup every time.
Float and double conversion support added to int properties.
NAME_DoubleProperty added.
Fix for converting enum class enumerators > 255 to int properties.
Change 3607516 by Ben.Marsh
PR #3935: Fix DECLARE_DELEGATE_NineParams, DECLARE_MULTICAST_DELEGATE_NineParams. (Contributed by enginevividgames)
Change 3610421 by Ben.Marsh
UAT: Move help for RebuildLightMapsCommand into attributes, so they display when running with -help.
Change 3610657 by Ben.Marsh
UAT: Unify initialization of command environment for build machines and local execution. Always derive parameters which aren't manually set via environment variables.
Change 3611000 by Ben.Marsh
UAT: Remove the -ForceLocal command line option. Settings are now determined automatically, independently of the -Buildmachine argument.
Change 3612471 by Ben.Marsh
UBT: Move FastJSON into DotNETUtilities.
Change 3613479 by Ben.Marsh
UBT: Remove the bIsCodeProject flag from UProjectInfo. This was only really being used to determine which projects to generate an IDE project for, so it is now checked in the project file generator.
Change 3613910 by Ben.Marsh
UBT: Remove unnecessary code to guess a project from the target name; doesn't work due to init order, actual project is determined later.
Change 3614075 by Ben.Marsh
UBT: Remove hacks for testing project file attributes by name.
Change 3614090 by Ben.Marsh
UBT: Remove global lookup of project by name. Projects should be explicitly specified by path when necessary.
Change 3614488 by Ben.Marsh
UBT: Prevent annoying (but handled) exception when constructing SQLiteModuleSupport objects with -precompile enabled.
Change 3614490 by Ben.Marsh
UBT: Simplify generation of arguments for building intellisense; determine the platform/configuration to build from the project file generation code, rather than inside the target itself.
Change 3614962 by Ben.Marsh
UBT: Move the VS2017 strict conformance mode (/permissive-) behind a command line option (-Strict), and disable it by default. Building with this mode is not guaranteed to work correctly without updated Windows headers.
Change 3615416 by Ben.Marsh
EC: Include an icon showing the overall status of a build in the grid view.
Change 3615713 by Ben.Marsh
UBT: Delete any files in output directories which match output files in other directories. Allows automatically deleting build products which are moved into another folder.
#jira UE-48987
Change 3616652 by Ben.Marsh
Plugins: Fix incorrect dialog when binaries for a plugin are missing. Should only prompt to disable if starting a content-only project.
#jira UE-49007
Change 3616680 by Ben.Marsh
Add the CodeAPI-HTML.tgz file into the installed engine build.
Change 3616767 by Ben.Marsh
Plugins: Tweak error message if the FModuleManager::IsUpToDate() function returns false for a plugin module; the module may be missing, not just incompatible.
Change 3616864 by Ben.Marsh
Cap the length of the temporary package name during save, to prevent excessively long filenames going over the limit once a GUID is appended.
#jira UE-48711
Change 3619964 by Ben.Marsh
UnrealVS: Fix single file compile for foreign projects, where the command line contains $(SolutionDir) and $(ProjectName) variables.
Change 3548930 by Ben.Marsh
UBT: Remove UEBuildModuleCSDLL; there is no codepath that still supports creating them. Remove the remaining UEBuildModule/UEBuildModuleCPP abstraction.
Change 3558056 by Ben.Marsh
Deprecate FString::Trim() and FString::TrimTrailing(), and replace them with separate versions to mutate (TrimStartInline(), TrimEndInline()) or return by copy (TrimStart(), TrimEnd()). Also add a functions to trim whitespace from both ends of a string (TrimStartAndEnd(), TrimStartAndEndInline()).
Change 3563309 by Graeme.Thornton
Moved some common C# classes into the DotNETCommon assembly
Change 3570283 by Graeme.Thornton
Move some code out of RPCUtility and into DotNETCommon, removing the dependency between the two projects
Added UEConsoleTraceListener to replace ConsoleTraceListener, which doesn't exist in DotNetCore
Change 3572811 by Ben.Marsh
UBT: Add -enableasan / -enabletsan command line options and bEnableAddressSanitizer / bEnableThreadSanitizer settings in BuildConfiguration.xml (and remove environment variables).
Change 3573397 by Ben.Marsh
UBT: Create a <ExeName>.version file for every target built by UBT, in the same JSON format as Engine/Build/Build.version. This allows monolithic targets to read a version number at runtime, unlike when it's embedded in a modules file, and allows creating versioned client executables that will work with versioned servers when syncing through UGS.
Change 3575659 by Ben.Marsh
Remove CHM API documentation.
Change 3582103 by Graeme.Thornton
Simple ResX writer implemetation that the xbox deloyment code can use instead of the one from the windows forms assembly, which isn't supported on .NET Core
Removed reference to System.Windows.Form from UBT.
Change 3584113 by Ben.Marsh
Move key-mapping functionality into the InputCore module.
Change 3584278 by Ben.Marsh
Move FPlatformMisc::RequestMinimize() into FPlatformApplicationMisc.
Change 3584453 by Ben.Marsh
Move functionality for querying device display density to FApplicationMisc, due to dependence on application-level functionality on mobile platforms.
Change 3585301 by Ben.Marsh
Move PlatformPostInit() into an FPlatformApplicationMisc function.
Change 3587050 by Ben.Marsh
Move IsThisApplicationForeground() into FPlatformApplicationMisc.
Change 3587059 by Ben.Marsh
Move RequiresVirtualKeyboard() into FPlatformApplicationMisc.
Change 3587119 by Ben.Marsh
Move GetAbsoluteLogFilename() into FPlatformMisc.
Change 3587800 by Steve.Robb
Fixes to container visualizers for types whose pointer type isn't simply Type*.
Change 3588393 by Ben.Marsh
Move platform output devices into their own headers.
Change 3588868 by Ben.Marsh
Move creation of console, error and warning output devices int PlatformApplicationMisc.
Change 3589879 by Graeme.Thornton
All automation projects now have a reference to DotNETUtilities
Fixed a build error in the WEX automation library
Change 3590034 by Ben.Marsh
Move functionality related to windowing and input out of the Core module and into an ApplicationCore module, so it is possible to build utilities with Core without adding dependencies on XInput (Windows), SDL (Linux), and OpenGL (Mac).
Change 3593754 by Steve.Robb
Fix for tuple debugger visualization.
Change 3597208 by Ben.Marsh
Move CrashReporter out of a public folder; it's not in a form that is usable by subscribers and licensees.
Change 3600163 by Ben.Marsh
UBT: Simplify how targets are cleaned. Delete all intermediate folders for a platform/configuration, and delete any build products matching the UE4 naming convention for that target, rather than relying on the current build configuration or list of previous build products. This will ensure that build products which are no longer being generated will also be cleaned.
#jira UE-46725
Change 3604279 by Graeme.Thornton
Move pre/post garbage collection delegates into accessor functions so they can be used by globally constructed objects
Change 3606685 by James.Hopkin
Removed redundant 'Cast's (casting to either the same type or a base).
In SClassViewer, replaced cast with TAssetPtr::operator* call to get the wrapped UClass.
Also removed redundant 'IsA's from AnimationRetargetContent::AddRemappedAsset in EditorAnimUtils.cpp.
Change 3610950 by Ben.Marsh
UAT: Simplify logic for detecting Perforce settings, using environment variables if they are set, otherwise falling back to detecting them. Removes special cases for build machines, and makes it simpler to set up UAT commands on builders outside Epic.
Change 3610991 by Ben.Marsh
UAT: Use the correct P4 settings to detect settings if only some parameters are specified on the command line.
Change 3612342 by Ben.Marsh
UBT: Change JsonObject.Read() to take a FileReference parameter.
Change 3612362 by Ben.Marsh
UBT: Remove some more cases of paths being passed as strings rather than using FileReference objects.
Change 3619128 by Ben.Marsh
Include builder warnings and errors in the notification emails for automated tests, otherwise it's difficult to track down non-test failures.
[CL 3620189 by Ben Marsh in Main branch]
2017-08-31 12:08:38 -04:00
public VersionFileUpdater ( FileReference Filename )
2014-03-14 14:13:41 -04:00
{
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 3620134)
#lockdown Nick.Penwarden
#rb none
============================
MAJOR FEATURES & CHANGES
============================
Change 3550452 by Ben.Marsh
UAT: Improve readability of error message when an editor commandlet fails with an error code.
Change 3551179 by Ben.Marsh
Add methods for reading text files into an array of strings.
Change 3551260 by Ben.Marsh
Core: Change FFileHelper routines to use enum classes for flags.
Change 3555697 by Gil.Gribb
Fixed a rare crash when the asset registry scanner found old cooked files with package level compression.
#jira UE-47668
Change 3556464 by Ben.Marsh
UGS: If working in a virtual stream, use the name of the first non-virtual ancestor for writing version files.
Change 3557630 by Ben.Marsh
Allow the network version to be set via Build.version if it's not overriden from Version.h.
Change 3561357 by Gil.Gribb
Fixed crashes related to loading old unversioned files in the editor.
#jira UE-47806
Change 3565711 by Graeme.Thornton
PR #3839: Make non-encoding specific Base64 functions accessible (Contributed by stfx)
Change 3565864 by Robert.Manuszewski
Temp fix for a race condition with the async loading thread enabled - caching the linker in case it gets removed (but not deleted) from super class object.
Change 3569022 by Ben.Marsh
PR #3849: Update gitignore (Contributed by mhutch)
Change 3569113 by Ben.Marsh
Fix Japanese errors not displaying correctly in the cook output log.
#jira UE-47746
Change 3569486 by Ben.Marsh
UGS: Always sync the Enterprise folder if the selected .uproject file has the "Enterprise" flag set.
Change 3570483 by Graeme.Thornton
Minor C# cleanups. Removing some redundant "using" calls which also cause dotnetcore compile errors
Change 3570513 by Robert.Manuszewski
Fix for a race condition with async loading thread enabled.
Change 3570664 by Ben.Marsh
UBT: Use P/Invoke to determine number of physical processors on Windows rather than using WMI. Starting up WMIC adds 2.5 seconds to build times, and is not compatible with .NET core.
Change 3570708 by Robert.Manuszewski
Added ENABLE_GC_OBJECT_CHECKS macro to be able to quickly toggle UObject pointer checks in shipping builds when the garbage collector is running.
Change 3571592 by Ben.Marsh
UBT: Allow running with -installed without creating [InstalledPlatforms] entries in BaseEngine.ini. If there is no HasInstalledPlatformInfo=true setting, assume that all platforms are still available.
Change 3572215 by Graeme.Thornton
UBT
- Remove some unnecessary using directives
- Point SN-DBS code at the new Utils.GetPhysicalProcessorCount call, rather than trying to calculate it itself
Change 3572437 by Robert.Manuszewski
Game-specific fix for lazy object pointer issues in one of the test levels. The previous fix had to be partially reverted due to side-effects.
#jira UE-44996
Change 3572480 by Robert.Manuszewski
MaterialInstanceCollections will no longer be added to GC clusters to prevent materials staying around in memory for too long
Change 3573547 by Ben.Marsh
Add support for displaying log timestamps in local time. Set LogTimes=Local in *Engine.ini, or pass -LocalLogTimes on the command line.
Change 3574562 by Robert.Manuszewski
PR #3847: Add GC callbacks for script integrations (Contributed by mhutch)
Change 3575017 by Ben.Marsh
Move some functions related to generating window resolutions out of Core (FParse::Resolution, GenerateConvenientWindowedResolutions). Also remove a few headers from shared PCHs prior to splitting application functionality out of Core.
Change 3575689 by Ben.Marsh
Add a fixed URL for opening the API documentation, so it works correctly in "internal" and "perforce" builds.
Change 3575934 by Steve.Robb
Fix for nested preprocessor definitions.
Change 3575961 by Steve.Robb
Fix for nested zeros.
Change 3576297 by Robert.Manuszewski
Material resources will now be discarded in PostLoad (Game Thread) instead of in Serialize (potentially Async Loading Thread) so that shader deregistration doesn't assert when done from a different thread than the game thread.
#jira FORT-38977
Change 3576366 by Ben.Marsh
Add shim functions to allow redirecting FPlatformMisc::ClipboardCopy()/ClipboardPaste() to FPlatformApplicationMisc::ClipboardCopy()/ClipboardPaste() while they are deprecated.
Change 3578290 by Graeme.Thornton
Changes to Ionic zip library to allow building on dot net core
Change 3578291 by Graeme.Thornton
Ionic zip library binaries built for .NET Core
Change 3578354 by Graeme.Thornton
Added FBase64::GetDecodedDataSize() to determine the size of bytes of a decoded base64 string
Change 3578674 by Robert.Manuszewski
After loading packages flush linker cache on uncooked platforms to free precache memory
Change 3579068 by Steve.Robb
Fix for CLASS_Intrinsic getting stomped.
Fix to EClassFlags so that they are visible in the debugger.
Re-added mysteriously-removed comments.
Change 3579228 by Steve.Robb
BOM removed.
Change 3579297 by Ben.Marsh
Fix exception if a plugin lists the same module twice.
#jira UE-48232
Change 3579898 by Robert.Manuszewski
When creating GC clusters and asserting due to objects still being pending load, the object name and cluster name will now be logged with the assert.
Change 3579983 by Robert.Manuszewski
More fixes for freeing linker cache memory in the editor.
Change 3580012 by Graeme.Thornton
Remove redundant copy of FileReference.cs
Change 3580408 by Ben.Marsh
Validate that arguments passed to the checkf macro are valid sprintf types, and fix up a few places which are currently incorrect.
Change 3582104 by Graeme.Thornton
Added a dynamic compilation path that uses the latest roslyn apis. Currently only used by the .NET Core path.
Change 3582131 by Graeme.Thornton
#define out some PerformanceCounter calls that don't exist in .NET Core. They're only used by mono-specific calls anyway.
Change 3582645 by Ben.Marsh
PR #3879: fix bug when creating a new VS2017 C++ project (Contributed by mnannola)
#jira UE-48192
Change 3583955 by Robert.Manuszewski
Support for EDL cooked packages in the editor
Change 3584035 by Graeme.Thornton
Split RunExternalExecutable into RunExternaNativelExecutable and RunExternalDotNETExecutable. When running under .NET Core, externally launched DotNET utilities must be launched via the 'dotnet' proxy to work correctly.
Change 3584177 by Robert.Manuszewski
Removed unused member variable (FArchiveAsync2::bKeepRestOfFilePrecached)
Change 3584315 by Ben.Marsh
Move Android JNI accessor functions into separate header, to decouple it from the FAndroidApplication class.
Change 3584370 by Ben.Marsh
Move hooks which allow platforms to load any modules into the FPlatformApplicationMisc classes.
Change 3584498 by Ben.Marsh
Move functions for getting and setting the hardware window pointer onto the appropriate platform window classes.
Change 3585003 by Steve.Robb
Fix for TChunkedArray ranged-for iteration.
#jira UE-48297
Change 3585235 by Ben.Marsh
Remove LogEngine extern from Core; use the platform log channels instead.
Change 3585942 by Ben.Marsh
Move MessageBoxExt() implementation into application layer for platforms that require it.
Change 3587071 by Ben.Marsh
Move Linux's UngrabAllInput() function into a callback, so DebugBreak still works without SDL.
Change 3587161 by Ben.Marsh
Remove headers which will be stripped out of the Core module from Core.h and PlatformIncludes.h.
Change 3587579 by Steve.Robb
Fix for Children list not being rebuilt after hot reload.
Change 3587584 by Graeme.Thornton
Logging improvements for pak signature check failures
- Added "PakCorrupt" console command which corrupts the master signature table
- Added some extra log information about which block failed
- Re-hash the master signature table and to make sure that it hasn't changed since startup
- Moved the ensure around so that some extra logging messages can make it out before the ensure is hit
- Added PAK_SIGNATURE_CHECK_FAILS_ARE_FATAL to IPlatformFilePak.h so we have a single place to make signature check failures fatal again
Change 3587586 by Graeme.Thornton
Changes to make UBT build and run on .NET Core
- Added *_DNC csproj files for DotNETUtilities and UnrealBuildTool projects which contain the .NET Core build setups
- VCSharpProjectFile can no be asked for the CsProjectInfo for a particular configuration, which is cached for future use
- After loading VCSharpProjectFiles, .NET Core based projects will be excluded unless generating VSCode projects
Change 3587953 by Steve.Robb
Allow arbitrary UENUM initializers for enumerators.
Editor-only data UENUM support.
Enumerators named MAX are now treated as the UENUM's maximum, and will not cause a MAX+1 value to be generated.
#jira UE-46274
Change 3589827 by Graeme.Thornton
More fixes for VSCode project generation and for UBT running on .NET Core
- Use a different file extension for rules assemblies when build on .NET Core, so they never get used by their counterparts
- UEConsoleTraceListener supports stdout/stderror constructor parameter and outputs to the appropriate channel
- Added documentation for UEConsoleTraceListener
- All platforms .NET project compilation tasks/launch configs now use "dotnet" and not the normal batch files
- Restored the default UBT log verbosity to "Log" rather than "VeryVeryVerbose"
- Renamed assemblies for .NETCore versions of DotNETUtilities and UnrealBuildTool so they don't conflict with the output of the existing .NET Desktop Framework stuff
Change 3589868 by Graeme.Thornton
Separate .NET Core projects for UBT and DotNETCommon out into their own directories so that their intermediates don't overlap with the standard .NET builds, causing failures.
UBT registers ONLY .NET Core C# projects when generating VSCode solutions, and ONLY standard C# projects in all other cases
Change 3589919 by Robert.Manuszewski
Fixing crash when cooking textures that have already been cooked for EDL (support for cooked content in the editor)
Change 3589940 by Graeme.Thornton
Force UBT to think it's running on mono when actually running on .NET Core. Disables a lot of windows specific code paths.
Change 3590078 by Graeme.Thornton
Fully disable automatic assembly info generation in .NET Core projects
Change 3590534 by Robert.Manuszewski
Marking UObject as intrinsic clas to fix a crash on UFE startup.
Change 3591498 by Gil.Gribb
UE4 - Fixed several edge cases in the low level async loading code, especially around cancellation. Also PakFileTest is a console command which can be used to stress test pak file loading.
Change 3591605 by Gil.Gribb
UE4 - Follow up to fixing several edge cases in the low level async loading code.
Change 3592577 by Graeme.Thornton
.NET Core C# projects now reference source files explicitly, to stop it accidentally compiling various intermediates
Change 3592684 by Steve.Robb
Fix for EObjectFlags being passed as the wrong argument to csgCopyBrush.
Change 3592710 by Steve.Robb
Fix for invalid casts in ListProps command.
Some name changes in command output.
Change 3592715 by Ben.Marsh
Move Windows event log code into cpp file, and expose it to other modules even if it's not enabled by default.
Change 3592767 by Gil.Gribb
UE4 - Changed the logic so that engine UObjects boot before anything else. The engine classes are known to be cycle-free, so we will get them done before moving onto game modules.
Change 3592770 by Gil.Gribb
UE4 - Fixed a race condition with async read completion in the prescence of cancels.
Change 3593090 by Steve.Robb
Better error message when there two clashing type names are found.
Change 3593697 by Steve.Robb
VisitTupleElements function, which calls a functor for each element in the tuple.
Change 3595206 by Ben.Marsh
Include additional diagnostics for missing imports when a module load fails.
Change 3596140 by Graeme.Thornton
Batch file for running MSBuild
Change 3596267 by Steve.Robb
Thread safety fix to FPaths::GetProjectFilePath().
Change 3596271 by Robert.Manuszewski
Added code to verify compression flags in package file summary to avoid cases where corrupt packages are crashing the editor
#jira UE-47535
Change 3596283 by Steve.Robb
Redundant casts removed from UHT.
Change 3596303 by Ben.Marsh
EC: Improve parsing of Android Clang errors and warnings, which are formatted as MSVC diagnostics to allow go-to-line clicking in the Output Window.
Change 3596337 by Ben.Marsh
UBT: Format messages about incorrect headers in a way that makes them clickable from Visual Studio.
Change 3596367 by Steve.Robb
Iterator checks in ranged-for on TMap, TSet and TSparseArray.
Change 3596410 by Gil.Gribb
UE4 - Improved some error messages on runtime failures in the EDL.
Change 3596532 by Ben.Marsh
UnrealVS: Fix setting command line to empty not affecting property sheet. Also remove support for VS2013.
#jira UE-48119
Change 3596631 by Steve.Robb
Tool which takes a .map file and a .objmap file (from UBT) and creates a report which shows the size of all the symbols contributed by the source code per-folder.
Change 3596807 by Ben.Marsh
Improve Intellisense when generated headers are missing or out of date (eg. line numbers changed, etc...). These errors seem to be masked by VAX, but are present when using the default Visual Studio Intellisense.
* UCLASS macro is defined to empty when __INTELLISENSE__ is defined. Previous macro was preventing any following class declaration being parsed correctly if generated code was out of date, causing squiggles over all class methods/variables.
* Insert a semicolon after each expanded GENERATED_BODY macro, so that if it parses incorrectly, the compiler can still continue parsing the next declaration.
Change 3596957 by Steve.Robb
UBT can be used to write out an .objsrcmap file for use with the MapFileParser.
Renaming of ObjMap to ObjSrcMap in MapFileParser.
Change 3597213 by Ben.Marsh
Remove AutoReporter. We don't support this any more.
Change 3597558 by Ben.Marsh
UGS: Allow adding custom actions to the context menu for right clicking on a changelist. Actions are specified in the project's UnrealEngine.ini file, with the following syntax:
+ContextMenu=(Label="This is the menu item", Execute="foo.exe", Arguments="bar")
The standard set of variables for custom tools is expanded in each parameter (eg. $(ProjectDir), $(EditorConfig), etc...), plus the $(Change) variable.
Change 3597982 by Ben.Marsh
Add an option to allow overriding the local DDC path from the editor (under Editor Preferences > Global > Local Derived Data Cache).
#jira UE-47173
Change 3598045 by Ben.Marsh
UGS: Add variables for stream and client name, and the ability to escape any variables for URIs using the syntax $(VariableName:URI).
Change 3599214 by Ben.Marsh
Avoid string duplication when comparing extensions.
Change 3600038 by Steve.Robb
Fix for maps being modified during iteration in cache compaction.
Change 3600136 by Steve.Robb
GitHub #3538 : Fixed a bug with the handling of 'TMap' key/value types in the UnrealHeaderTool
Change 3600214 by Steve.Robb
More accurate error message when unsupported template parameters are provided in a TSet property.
Change 3600232 by Ben.Marsh
UBT: Force UHT to run again if the .build.cs file for a module has changed.
#jira UE-46119
Change 3600246 by Steve.Robb
GitHub #3045 : allow multiple interface definition in a file
Change 3600645 by Ben.Marsh
Convert QAGame to Include-What-You-Use.
Change 3600897 by Ben.Marsh
Fix invalid path (multiple slashes) in LibCurl.build.cs. Causes exception when scanning for includes.
Change 3601558 by Graeme.Thornton
Simple first pass VSCode editor integration plugin
Change 3601658 by Graeme.Thornton
Enable intellisense generation for VS Code project files and setup include paths properly
Change 3601762 by Ben.Marsh
UBT: Add support for adaptive non-unity builds when working from a Git repository.
The ISourceFileWorkingSet interface is now used to query files belonging to the working set, and has separate implementations for Perforce (PerforceSourceFileWorkingSet) and Git (GitSourceFileWorkingSet). The Git implementation is used if a .git directory is found in the directory containing the Engine folder, the directory containing the project file, or the parent directory of the project file, and spawns a "git status" process in the background to determine which files are untracked or staged.
Several new settings are supported in BuildConfiguration.xml to allow modifying default behavior:
<SourceFileWorkingSet>
<Provider>Default</Provider> <!-- May be None, Default, Git or Perforce -->
<RepositoryPath></RepositoryPath> <!-- Specifies the path to the repository, relative to the directory containing the Engine folder. If not set, tries to find a .git directory in the locations listed above. -->
<GitPath>git</GitPath> <!-- Specifies the path to the Git executable. Defaults to "git", which assumes that it will be on the PATH -->
</SourceFileWorkingSet>
Change 3604032 by Graeme.Thornton
First attempt at automatically detecting the existance and location of visual studio code in the source code accessor module. Only works for windows.
Change 3604038 by Graeme.Thornton
Added FSourceCodeNavigation::GetSelectedSourceCodeIDE() which returns the name of the selected source code accessor.
Replaced all usages of FSourceCodeNavigation::GetSuggestedSourceCodeIDE() with GetSelectedSourceCodeIDE(), where the message is referring to the opening or editing of code.
Change 3604106 by Steve.Robb
GitHub #3561 : UE-44950: Don't see all caps struct constructor as macro
Change 3604192 by Steve.Robb
GitHub #3911 : Improving ToUpper/ToLower efficiency
Change 3604273 by Graeme.Thornton
IWYU build fixes when malloc profiler is enabled
Change 3605457 by Ben.Marsh
Fix race for intiialization of ThreadID variable on FRunnableThreadWin, and restore a previous check that was working around it.
Change 3606720 by James.Hopkin
Dave Ratti's fix to character base recursion protection code - was missing a GetOwner call, instead attempting to cast a component to a pawn.
Change 3606807 by Graeme.Thornton
Disabled optimizations around FShooterStyle::Create(), which was crashing in Win64 shipping game builds due to some known compiler issue. Same variety of fix as BenZ did in CL 3567741.
Change 3607026 by James.Hopkin
Fixed incorrect ABrush cast - was attempting to cast a UModel to ABrush, which can never succeed
Change 3607142 by Graeme.Thornton
UBT - Minor refactor of BackgroundProcess shutdown in SourceFileWorkingSet. Check whether the process has already exited before trying to kill it during Dispose.
Change 3607146 by Ben.Marsh
UGS: Fix exception due to formatting string when Perforce throws an error.
Change 3607147 by Steve.Robb
Efficiency fix for integer properties, which were causing a property mismatch and thus a tag lookup every time.
Float and double conversion support added to int properties.
NAME_DoubleProperty added.
Fix for converting enum class enumerators > 255 to int properties.
Change 3607516 by Ben.Marsh
PR #3935: Fix DECLARE_DELEGATE_NineParams, DECLARE_MULTICAST_DELEGATE_NineParams. (Contributed by enginevividgames)
Change 3610421 by Ben.Marsh
UAT: Move help for RebuildLightMapsCommand into attributes, so they display when running with -help.
Change 3610657 by Ben.Marsh
UAT: Unify initialization of command environment for build machines and local execution. Always derive parameters which aren't manually set via environment variables.
Change 3611000 by Ben.Marsh
UAT: Remove the -ForceLocal command line option. Settings are now determined automatically, independently of the -Buildmachine argument.
Change 3612471 by Ben.Marsh
UBT: Move FastJSON into DotNETUtilities.
Change 3613479 by Ben.Marsh
UBT: Remove the bIsCodeProject flag from UProjectInfo. This was only really being used to determine which projects to generate an IDE project for, so it is now checked in the project file generator.
Change 3613910 by Ben.Marsh
UBT: Remove unnecessary code to guess a project from the target name; doesn't work due to init order, actual project is determined later.
Change 3614075 by Ben.Marsh
UBT: Remove hacks for testing project file attributes by name.
Change 3614090 by Ben.Marsh
UBT: Remove global lookup of project by name. Projects should be explicitly specified by path when necessary.
Change 3614488 by Ben.Marsh
UBT: Prevent annoying (but handled) exception when constructing SQLiteModuleSupport objects with -precompile enabled.
Change 3614490 by Ben.Marsh
UBT: Simplify generation of arguments for building intellisense; determine the platform/configuration to build from the project file generation code, rather than inside the target itself.
Change 3614962 by Ben.Marsh
UBT: Move the VS2017 strict conformance mode (/permissive-) behind a command line option (-Strict), and disable it by default. Building with this mode is not guaranteed to work correctly without updated Windows headers.
Change 3615416 by Ben.Marsh
EC: Include an icon showing the overall status of a build in the grid view.
Change 3615713 by Ben.Marsh
UBT: Delete any files in output directories which match output files in other directories. Allows automatically deleting build products which are moved into another folder.
#jira UE-48987
Change 3616652 by Ben.Marsh
Plugins: Fix incorrect dialog when binaries for a plugin are missing. Should only prompt to disable if starting a content-only project.
#jira UE-49007
Change 3616680 by Ben.Marsh
Add the CodeAPI-HTML.tgz file into the installed engine build.
Change 3616767 by Ben.Marsh
Plugins: Tweak error message if the FModuleManager::IsUpToDate() function returns false for a plugin module; the module may be missing, not just incompatible.
Change 3616864 by Ben.Marsh
Cap the length of the temporary package name during save, to prevent excessively long filenames going over the limit once a GUID is appended.
#jira UE-48711
Change 3619964 by Ben.Marsh
UnrealVS: Fix single file compile for foreign projects, where the command line contains $(SolutionDir) and $(ProjectName) variables.
Change 3548930 by Ben.Marsh
UBT: Remove UEBuildModuleCSDLL; there is no codepath that still supports creating them. Remove the remaining UEBuildModule/UEBuildModuleCPP abstraction.
Change 3558056 by Ben.Marsh
Deprecate FString::Trim() and FString::TrimTrailing(), and replace them with separate versions to mutate (TrimStartInline(), TrimEndInline()) or return by copy (TrimStart(), TrimEnd()). Also add a functions to trim whitespace from both ends of a string (TrimStartAndEnd(), TrimStartAndEndInline()).
Change 3563309 by Graeme.Thornton
Moved some common C# classes into the DotNETCommon assembly
Change 3570283 by Graeme.Thornton
Move some code out of RPCUtility and into DotNETCommon, removing the dependency between the two projects
Added UEConsoleTraceListener to replace ConsoleTraceListener, which doesn't exist in DotNetCore
Change 3572811 by Ben.Marsh
UBT: Add -enableasan / -enabletsan command line options and bEnableAddressSanitizer / bEnableThreadSanitizer settings in BuildConfiguration.xml (and remove environment variables).
Change 3573397 by Ben.Marsh
UBT: Create a <ExeName>.version file for every target built by UBT, in the same JSON format as Engine/Build/Build.version. This allows monolithic targets to read a version number at runtime, unlike when it's embedded in a modules file, and allows creating versioned client executables that will work with versioned servers when syncing through UGS.
Change 3575659 by Ben.Marsh
Remove CHM API documentation.
Change 3582103 by Graeme.Thornton
Simple ResX writer implemetation that the xbox deloyment code can use instead of the one from the windows forms assembly, which isn't supported on .NET Core
Removed reference to System.Windows.Form from UBT.
Change 3584113 by Ben.Marsh
Move key-mapping functionality into the InputCore module.
Change 3584278 by Ben.Marsh
Move FPlatformMisc::RequestMinimize() into FPlatformApplicationMisc.
Change 3584453 by Ben.Marsh
Move functionality for querying device display density to FApplicationMisc, due to dependence on application-level functionality on mobile platforms.
Change 3585301 by Ben.Marsh
Move PlatformPostInit() into an FPlatformApplicationMisc function.
Change 3587050 by Ben.Marsh
Move IsThisApplicationForeground() into FPlatformApplicationMisc.
Change 3587059 by Ben.Marsh
Move RequiresVirtualKeyboard() into FPlatformApplicationMisc.
Change 3587119 by Ben.Marsh
Move GetAbsoluteLogFilename() into FPlatformMisc.
Change 3587800 by Steve.Robb
Fixes to container visualizers for types whose pointer type isn't simply Type*.
Change 3588393 by Ben.Marsh
Move platform output devices into their own headers.
Change 3588868 by Ben.Marsh
Move creation of console, error and warning output devices int PlatformApplicationMisc.
Change 3589879 by Graeme.Thornton
All automation projects now have a reference to DotNETUtilities
Fixed a build error in the WEX automation library
Change 3590034 by Ben.Marsh
Move functionality related to windowing and input out of the Core module and into an ApplicationCore module, so it is possible to build utilities with Core without adding dependencies on XInput (Windows), SDL (Linux), and OpenGL (Mac).
Change 3593754 by Steve.Robb
Fix for tuple debugger visualization.
Change 3597208 by Ben.Marsh
Move CrashReporter out of a public folder; it's not in a form that is usable by subscribers and licensees.
Change 3600163 by Ben.Marsh
UBT: Simplify how targets are cleaned. Delete all intermediate folders for a platform/configuration, and delete any build products matching the UE4 naming convention for that target, rather than relying on the current build configuration or list of previous build products. This will ensure that build products which are no longer being generated will also be cleaned.
#jira UE-46725
Change 3604279 by Graeme.Thornton
Move pre/post garbage collection delegates into accessor functions so they can be used by globally constructed objects
Change 3606685 by James.Hopkin
Removed redundant 'Cast's (casting to either the same type or a base).
In SClassViewer, replaced cast with TAssetPtr::operator* call to get the wrapped UClass.
Also removed redundant 'IsA's from AnimationRetargetContent::AddRemappedAsset in EditorAnimUtils.cpp.
Change 3610950 by Ben.Marsh
UAT: Simplify logic for detecting Perforce settings, using environment variables if they are set, otherwise falling back to detecting them. Removes special cases for build machines, and makes it simpler to set up UAT commands on builders outside Epic.
Change 3610991 by Ben.Marsh
UAT: Use the correct P4 settings to detect settings if only some parameters are specified on the command line.
Change 3612342 by Ben.Marsh
UBT: Change JsonObject.Read() to take a FileReference parameter.
Change 3612362 by Ben.Marsh
UBT: Remove some more cases of paths being passed as strings rather than using FileReference objects.
Change 3619128 by Ben.Marsh
Include builder warnings and errors in the notification emails for automated tests, otherwise it's difficult to track down non-test failures.
[CL 3620189 by Ben Marsh in Main branch]
2017-08-31 12:08:38 -04:00
MyFile = new FileInfo ( Filename . FullName ) ;
OriginalLines = new List < string > ( InternalUtils . SafeReadAllLines ( Filename . FullName ) ) ;
Copying //UE4/Orion-Staging to //UE4/Main (Origin: //Orion/Dev-General @ 2904087)
==========================
MAJOR FEATURES + CHANGES
==========================
#lockdown Nick.Penwarden
Change 2903938 on 2016/03/10 by Frank.Gigliotti
Added an instance ID to FAnimMontageInstance
#CodeReview Laurent.Delayen
#RB Laurent.Delayen
#Tests PIE
Change 2903745 on 2016/03/10 by Wes.Hunt
Update Oodle TPS
#rb none
#tests none
#codereview:john.pollard
Change 2903689 on 2016/03/10 by Uriel.Doyon
New "LogHeroMaterials" console command, displaying the current state of materials and textures on the character hero.
#rb marcus.wasmer
#codereview marcus.wassmer
#tests editor, playing PC games, trying the new command
Change 2903669 on 2016/03/10 by Aaron.McLeran
OR-17180 Make stat soundcues and stat soundwaves NOT display zero volume sounds
- Change only effects debug stat commands for audio guys
#rb none
#tests played paragon with new debug stat commands, confirms doesn't show zero-volume sounds
Change 2903625 on 2016/03/10 by John.Pollard
XB1 Oodle SDK
#rb none
#tests none
#codereview Jeff.Campeau
Change 2903577 on 2016/03/10 by Ben.Marsh
Remaking latest build scripts from //UE4/Main @ 2900980.
Change 2903560 on 2016/03/10 by Ben.Marsh
Initial version of BuildGraph scripts - used to create build processes in UE4 which can be run locally or in parallel across a build farm (assuming synchronization and resource allocation implemented by a separate system). Intended to supersede GUBP.
Build graphs are declared using an XML script using syntax similar to MSBuild, ANT or NAnt, and consist of the following components:
* Tasks: Building blocks which can be executed as part of the build process. Many predefined tasks are provided (<Cook>, <Compile>, <Copy>, <Stage>, <Log>, <PakFile>, etc...), and additional tasks may be added be declaring classes derived from AutomationTool.CustomTask in other UAT modules.
* Nodes: A named sequence of tasks which is executed to produce outputs. Nodes may have input dependencies on other nodes before they can be executed. Declared with the <Node> element in scripts.
* Agent Groups: A set of nodes nodes which is executed on the same machine if running as part of a build system. Has no effect when building locally. Declared with the <Group> element in scripts.
* Triggers: Container for groups which should only be executed when explicitly triggered (using the -Trigger=<Name> or -SkipTriggers command line argument). Declared with the <Trigger> element in scripts.
* Notifiers: Specifies email recipients for failures in one or more nodes, whether they should receive notifications on warnings, and so on.
Properties can be passed in to a script on the command line, or set procedurally with the <Property Name="Foo" Value="Bar"/> syntax. Properties referenced with the $(Property Name) notation are valid within all strings, and will be expanded as macros when the script is read. If a property name is not set explicitly, it defaults to the contents of an environment variable with the same name.
Local properties, which only affect the scope of the containing XML element (node, group, etc...) are declared with the <Local Name="Foo" Value="Bar"/> element, and will override a similarly named global property for the local property's scope.
Any elements can be conditionally defined via the "If" attribute, and are largely identical to MSBuild conditions. Literals in conditions may be quoted with single (') or double (") quotes, or an unquoted sequence of letters, digits and underscore characters. All literals are considered identical regardless of how they are declared, and are considered case-insensitive for comparisons (so true equals 'True', equals "TRUE"). Available operators are "==", "!=", "And", "Or", "!", "(...)", "Exists(...)" and "HasTrailingSlash(...)". A full grammar is written up in Condition.cs.
File manipulation is done using wildcards and tags. Any attribute that accepts a list of files may consist of: a Perforce-style wildcard (matching any number of "...", "*" and "?" patterns in any location), a full path name, or a reference to a tagged collection of files, denoted by prefixing with a '#' character. Files may be added to a tag set using the <Tag> Task, which also allows performing set union/difference style operations. Each node can declare multiple outputs in the form of a list of named tags, which other nodes can then depend on.
Build graphs may be executed in parallel as part build system. To do so, the initial graph configuration is generated by running with the -Export=<Filename> argument (producing a JSON file listing the nodes and dependencies to execute). Each participating agent should be synced to the same changelist, and UAT should be re-run with the appropriate -Node=<Name> argument. Outputs from different nodes are transferred between agents via shared storage, typically a network share, the path to which can be specified on the command line using the -SharedStorageDir=<Path> argument. Note that the allocation of machines, and coordination between them, is assumed to be managed by an external system.
A schema for the known set of tasks can be generated by running UAT with the "-Schema=<FileName>" option. Generating a schema and referencing it from a BuildGraph script allows Visual Studio to validate and auto-complete elements as you type.
#rb none
#codereview Marc.Audy, Wes.Hunt, Matthew.Griffin, Richard.Fawcett
#tests local only so far, but not part of any build process yet
Change 2903539 on 2016/03/10 by John.Pollard
Improve replay playback debugging of character movement
#rb none
#tests replays
Change 2903526 on 2016/03/10 by Ben.Marsh
Remake changes from //UE4/Main without integration history, to add support for BuildGraph tasks.
#rb none
#tests none
Change 2903512 on 2016/03/10 by Dan.Youhon
Modify minimum Duration values for JumpForce and MoveToForce ability tasks so that having minimum Duration values doesn't trigger check()s
#rb None
#tests Compiles
Change 2903474 on 2016/03/10 by Marc.Audy
Fix crash if ChildActor is null
#rb None
#tests None
Change 2903314 on 2016/03/10 by Marc.Audy
Fix ParentComponent not being persisted and fixup content that was saved in the window it was broken
#rb James.Golding
#tests Selection of child actors works as expected
#jira UE-28201
Change 2903298 on 2016/03/10 by Simon.Tovey
Disabling the trails optimization.
#tests none
#rb none
#codereview Olaf.Piesche
Change 2903124 on 2016/03/10 by Robert.Manuszewski
Small refactor to pak signing to help with exe protection
#rb none
#tests none
[CL 2907678 by Andrew Grant in Main branch]
2016-03-13 18:53:13 -04:00
Lines = new List < string > ( OriginalLines ) ;
2014-04-30 07:58:10 -04:00
if ( CommandUtils . IsNullOrEmpty ( Lines ) )
2014-03-14 14:13:41 -04:00
{
throw new AutomationException ( "Version file {0} was empty or not found!" , Filename ) ;
}
}
/// <summary>
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3075869)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3059740 on 2016/07/21 by Ben.Marsh
Format license violations on separate lines rather than as a single multi-line string, so they can be parsed out correctly by the EC log parser.
Change 3063115 on 2016/07/25 by Ben.Marsh
Add missing projects to Mono AutomationTool solution.
Change 3067125 on 2016/07/27 by Ben.Marsh
Clean up and document the engine versioning system.
* Version.h has a summary of all the different versioning concepts in UE4, as well as an explanation of what all the macros do.
* VersionLocked.h has been removed. ENGINE_NET_VERSION and ENGINE_REPLAY_VERSION can be overriden directly in Version.h if necessary.
* Added explicit macros for ENGINE_CURRENT_CL_VERSION And ENGINE_COMPATIBLE_CL_VERSION. The MODULE_API_VERSION macro is now defined to be the same as ENGINE_COMPATIBLE_CL_VERSION.
* Build/Build.version now includes the compatible CL version, so it can be determined without having to parse header files inside MacToolChain.cs.
* UpdateLocalVersion UAT command now exposes a -CompatibleCL=... argument to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* SetVersion BuildGraph task now has a CompatibleChange="" attribute to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* VersionFileUpdater now makes an effort to parse tokens matching the macros it's going to overwrite, rather than requiring exact matches in whitespace in Version.h.
* Running UpdateLocalVersion now syncs files to revision 0 before writing if P4 is enabled, similarly to UGS, or fails if they are not writable.
Change 3067242 on 2016/07/27 by Ben.Marsh
Fix UGS showing a build failure/warning dialog immediately if you submit while the build is yellow/red. Now ignores builds before your last submitted CL.
Change 3068116 on 2016/07/28 by Ben.Marsh
Add a small Windows utility to terminate all running processes under a given root directory, and run it before and after every sync. Mean to fix instances where zombie editor processes do not terminate correctly and cause subsequent syncs to fail.
Change 3068246 on 2016/07/28 by Ben.Marsh
UGS: Improvements to 'Clean Workspace' dialog - empty folders are now set to be deleted by default, and added a context menu to select all/none/empty/default for a subtree, as well as to open Windows explorer at that location.
Change 3068573 on 2016/07/28 by Ben.Marsh
Attempt to fix AppDomain unload errors; suspect caused by delay to terminate child processes when managed exception is thrown on child threads. Now waits for the currently running threads to finish executing before quitting.
Change 3068575 on 2016/07/28 by Ben.Marsh
Respect the -noxge command-line argument when compiling UHT.
Change 3068665 on 2016/07/28 by Ben.Marsh
Delete any DLLs in output folders which share names with build products. The Windows loader reads DLLs from the first location it finds a file with a matching name, so we need to ensure that it doesn't load stale DLLs when output directories are changed (moving a module into a plugin, for example).
Change 3073316 on 2016/08/02 by Ben.Marsh
CoreUObject: Replace header guards with #pragma once directives.
Change 3073325 on 2016/08/02 by Ben.Marsh
CoreUObject: Manually untangle a few circular includes around ObjectBase.h and Class.h to allow making them into IWYU-style headers.
Change 3074391 on 2016/08/02 by Ben.Marsh
GitHub #2646: Always allow programs to build as part of non-game solution configurations.
Change 3075123 on 2016/08/03 by Richard.Fawcett
Ensure that zip files created outside of Ionic Zip can be unzipped with CommandUtils.UnzipFiles
Zip files created with 7-zip, WinRAR, and Windows Explorer all contain entities for directories, not just the files in them. Code in CommandUtils.UnzipFiles made the assumption that all entities in the zip file were files, and an exception was being thrown on encountering a directory.
Change 3075848 on 2016/08/03 by Ben.Marsh
UBT: Fix a few cases where it's possible to construct a non-canonical DirectoryReference - root directories on Windows must always have a terminating slash, but any other directories must note. DirectoryInfo and Path.GetFullPath() do not enforce this requirement.
Change 3075850 on 2016/08/03 by Ben.Marsh
UBT: Fix UHT failures when running with -nopch.
Change 3077058 by Ben.Marsh
UHT: Remove the auto-generated ObjectBase.h include from generated header files. Was originally added to allow doxygen to parse headers more easily, but was switched to parsing the file only as part of parent files instead.
[CL 3077308 by Ben Marsh in Main branch]
2016-08-04 10:41:07 -04:00
/// Finds the line containing the same tokens as the given prefix, and change the suffix to be the given string
2014-03-14 14:13:41 -04:00
/// </summary>
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3075869)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3059740 on 2016/07/21 by Ben.Marsh
Format license violations on separate lines rather than as a single multi-line string, so they can be parsed out correctly by the EC log parser.
Change 3063115 on 2016/07/25 by Ben.Marsh
Add missing projects to Mono AutomationTool solution.
Change 3067125 on 2016/07/27 by Ben.Marsh
Clean up and document the engine versioning system.
* Version.h has a summary of all the different versioning concepts in UE4, as well as an explanation of what all the macros do.
* VersionLocked.h has been removed. ENGINE_NET_VERSION and ENGINE_REPLAY_VERSION can be overriden directly in Version.h if necessary.
* Added explicit macros for ENGINE_CURRENT_CL_VERSION And ENGINE_COMPATIBLE_CL_VERSION. The MODULE_API_VERSION macro is now defined to be the same as ENGINE_COMPATIBLE_CL_VERSION.
* Build/Build.version now includes the compatible CL version, so it can be determined without having to parse header files inside MacToolChain.cs.
* UpdateLocalVersion UAT command now exposes a -CompatibleCL=... argument to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* SetVersion BuildGraph task now has a CompatibleChange="" attribute to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* VersionFileUpdater now makes an effort to parse tokens matching the macros it's going to overwrite, rather than requiring exact matches in whitespace in Version.h.
* Running UpdateLocalVersion now syncs files to revision 0 before writing if P4 is enabled, similarly to UGS, or fails if they are not writable.
Change 3067242 on 2016/07/27 by Ben.Marsh
Fix UGS showing a build failure/warning dialog immediately if you submit while the build is yellow/red. Now ignores builds before your last submitted CL.
Change 3068116 on 2016/07/28 by Ben.Marsh
Add a small Windows utility to terminate all running processes under a given root directory, and run it before and after every sync. Mean to fix instances where zombie editor processes do not terminate correctly and cause subsequent syncs to fail.
Change 3068246 on 2016/07/28 by Ben.Marsh
UGS: Improvements to 'Clean Workspace' dialog - empty folders are now set to be deleted by default, and added a context menu to select all/none/empty/default for a subtree, as well as to open Windows explorer at that location.
Change 3068573 on 2016/07/28 by Ben.Marsh
Attempt to fix AppDomain unload errors; suspect caused by delay to terminate child processes when managed exception is thrown on child threads. Now waits for the currently running threads to finish executing before quitting.
Change 3068575 on 2016/07/28 by Ben.Marsh
Respect the -noxge command-line argument when compiling UHT.
Change 3068665 on 2016/07/28 by Ben.Marsh
Delete any DLLs in output folders which share names with build products. The Windows loader reads DLLs from the first location it finds a file with a matching name, so we need to ensure that it doesn't load stale DLLs when output directories are changed (moving a module into a plugin, for example).
Change 3073316 on 2016/08/02 by Ben.Marsh
CoreUObject: Replace header guards with #pragma once directives.
Change 3073325 on 2016/08/02 by Ben.Marsh
CoreUObject: Manually untangle a few circular includes around ObjectBase.h and Class.h to allow making them into IWYU-style headers.
Change 3074391 on 2016/08/02 by Ben.Marsh
GitHub #2646: Always allow programs to build as part of non-game solution configurations.
Change 3075123 on 2016/08/03 by Richard.Fawcett
Ensure that zip files created outside of Ionic Zip can be unzipped with CommandUtils.UnzipFiles
Zip files created with 7-zip, WinRAR, and Windows Explorer all contain entities for directories, not just the files in them. Code in CommandUtils.UnzipFiles made the assumption that all entities in the zip file were files, and an exception was being thrown on encountering a directory.
Change 3075848 on 2016/08/03 by Ben.Marsh
UBT: Fix a few cases where it's possible to construct a non-canonical DirectoryReference - root directories on Windows must always have a terminating slash, but any other directories must note. DirectoryInfo and Path.GetFullPath() do not enforce this requirement.
Change 3075850 on 2016/08/03 by Ben.Marsh
UBT: Fix UHT failures when running with -nopch.
Change 3077058 by Ben.Marsh
UHT: Remove the auto-generated ObjectBase.h include from generated header files. Was originally added to allow doxygen to parse headers more easily, but was switched to parsing the file only as part of parent files instead.
[CL 3077308 by Ben Marsh in Main branch]
2016-08-04 10:41:07 -04:00
/// <param name="Prefix">Prefix to search for</param>
/// <param name="Suffix">Suffix to replace the rest of the line with</param>
/// <param name="OccurenceIdx">Index of the matching occurrence to replace</param>
public void ReplaceLine ( string Prefix , string Suffix , int OccurenceIdx = 0 )
2014-03-14 14:13:41 -04:00
{
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3075869)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3059740 on 2016/07/21 by Ben.Marsh
Format license violations on separate lines rather than as a single multi-line string, so they can be parsed out correctly by the EC log parser.
Change 3063115 on 2016/07/25 by Ben.Marsh
Add missing projects to Mono AutomationTool solution.
Change 3067125 on 2016/07/27 by Ben.Marsh
Clean up and document the engine versioning system.
* Version.h has a summary of all the different versioning concepts in UE4, as well as an explanation of what all the macros do.
* VersionLocked.h has been removed. ENGINE_NET_VERSION and ENGINE_REPLAY_VERSION can be overriden directly in Version.h if necessary.
* Added explicit macros for ENGINE_CURRENT_CL_VERSION And ENGINE_COMPATIBLE_CL_VERSION. The MODULE_API_VERSION macro is now defined to be the same as ENGINE_COMPATIBLE_CL_VERSION.
* Build/Build.version now includes the compatible CL version, so it can be determined without having to parse header files inside MacToolChain.cs.
* UpdateLocalVersion UAT command now exposes a -CompatibleCL=... argument to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* SetVersion BuildGraph task now has a CompatibleChange="" attribute to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* VersionFileUpdater now makes an effort to parse tokens matching the macros it's going to overwrite, rather than requiring exact matches in whitespace in Version.h.
* Running UpdateLocalVersion now syncs files to revision 0 before writing if P4 is enabled, similarly to UGS, or fails if they are not writable.
Change 3067242 on 2016/07/27 by Ben.Marsh
Fix UGS showing a build failure/warning dialog immediately if you submit while the build is yellow/red. Now ignores builds before your last submitted CL.
Change 3068116 on 2016/07/28 by Ben.Marsh
Add a small Windows utility to terminate all running processes under a given root directory, and run it before and after every sync. Mean to fix instances where zombie editor processes do not terminate correctly and cause subsequent syncs to fail.
Change 3068246 on 2016/07/28 by Ben.Marsh
UGS: Improvements to 'Clean Workspace' dialog - empty folders are now set to be deleted by default, and added a context menu to select all/none/empty/default for a subtree, as well as to open Windows explorer at that location.
Change 3068573 on 2016/07/28 by Ben.Marsh
Attempt to fix AppDomain unload errors; suspect caused by delay to terminate child processes when managed exception is thrown on child threads. Now waits for the currently running threads to finish executing before quitting.
Change 3068575 on 2016/07/28 by Ben.Marsh
Respect the -noxge command-line argument when compiling UHT.
Change 3068665 on 2016/07/28 by Ben.Marsh
Delete any DLLs in output folders which share names with build products. The Windows loader reads DLLs from the first location it finds a file with a matching name, so we need to ensure that it doesn't load stale DLLs when output directories are changed (moving a module into a plugin, for example).
Change 3073316 on 2016/08/02 by Ben.Marsh
CoreUObject: Replace header guards with #pragma once directives.
Change 3073325 on 2016/08/02 by Ben.Marsh
CoreUObject: Manually untangle a few circular includes around ObjectBase.h and Class.h to allow making them into IWYU-style headers.
Change 3074391 on 2016/08/02 by Ben.Marsh
GitHub #2646: Always allow programs to build as part of non-game solution configurations.
Change 3075123 on 2016/08/03 by Richard.Fawcett
Ensure that zip files created outside of Ionic Zip can be unzipped with CommandUtils.UnzipFiles
Zip files created with 7-zip, WinRAR, and Windows Explorer all contain entities for directories, not just the files in them. Code in CommandUtils.UnzipFiles made the assumption that all entities in the zip file were files, and an exception was being thrown on encountering a directory.
Change 3075848 on 2016/08/03 by Ben.Marsh
UBT: Fix a few cases where it's possible to construct a non-canonical DirectoryReference - root directories on Windows must always have a terminating slash, but any other directories must note. DirectoryInfo and Path.GetFullPath() do not enforce this requirement.
Change 3075850 on 2016/08/03 by Ben.Marsh
UBT: Fix UHT failures when running with -nopch.
Change 3077058 by Ben.Marsh
UHT: Remove the auto-generated ObjectBase.h include from generated header files. Was originally added to allow doxygen to parse headers more easily, but was switched to parsing the file only as part of parent files instead.
[CL 3077308 by Ben Marsh in Main branch]
2016-08-04 10:41:07 -04:00
int MatchIdx = 0 ;
for ( int LineIdx = 0 ; LineIdx < Lines . Count ; LineIdx + + )
2014-03-14 14:13:41 -04:00
{
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3075869)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3059740 on 2016/07/21 by Ben.Marsh
Format license violations on separate lines rather than as a single multi-line string, so they can be parsed out correctly by the EC log parser.
Change 3063115 on 2016/07/25 by Ben.Marsh
Add missing projects to Mono AutomationTool solution.
Change 3067125 on 2016/07/27 by Ben.Marsh
Clean up and document the engine versioning system.
* Version.h has a summary of all the different versioning concepts in UE4, as well as an explanation of what all the macros do.
* VersionLocked.h has been removed. ENGINE_NET_VERSION and ENGINE_REPLAY_VERSION can be overriden directly in Version.h if necessary.
* Added explicit macros for ENGINE_CURRENT_CL_VERSION And ENGINE_COMPATIBLE_CL_VERSION. The MODULE_API_VERSION macro is now defined to be the same as ENGINE_COMPATIBLE_CL_VERSION.
* Build/Build.version now includes the compatible CL version, so it can be determined without having to parse header files inside MacToolChain.cs.
* UpdateLocalVersion UAT command now exposes a -CompatibleCL=... argument to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* SetVersion BuildGraph task now has a CompatibleChange="" attribute to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* VersionFileUpdater now makes an effort to parse tokens matching the macros it's going to overwrite, rather than requiring exact matches in whitespace in Version.h.
* Running UpdateLocalVersion now syncs files to revision 0 before writing if P4 is enabled, similarly to UGS, or fails if they are not writable.
Change 3067242 on 2016/07/27 by Ben.Marsh
Fix UGS showing a build failure/warning dialog immediately if you submit while the build is yellow/red. Now ignores builds before your last submitted CL.
Change 3068116 on 2016/07/28 by Ben.Marsh
Add a small Windows utility to terminate all running processes under a given root directory, and run it before and after every sync. Mean to fix instances where zombie editor processes do not terminate correctly and cause subsequent syncs to fail.
Change 3068246 on 2016/07/28 by Ben.Marsh
UGS: Improvements to 'Clean Workspace' dialog - empty folders are now set to be deleted by default, and added a context menu to select all/none/empty/default for a subtree, as well as to open Windows explorer at that location.
Change 3068573 on 2016/07/28 by Ben.Marsh
Attempt to fix AppDomain unload errors; suspect caused by delay to terminate child processes when managed exception is thrown on child threads. Now waits for the currently running threads to finish executing before quitting.
Change 3068575 on 2016/07/28 by Ben.Marsh
Respect the -noxge command-line argument when compiling UHT.
Change 3068665 on 2016/07/28 by Ben.Marsh
Delete any DLLs in output folders which share names with build products. The Windows loader reads DLLs from the first location it finds a file with a matching name, so we need to ensure that it doesn't load stale DLLs when output directories are changed (moving a module into a plugin, for example).
Change 3073316 on 2016/08/02 by Ben.Marsh
CoreUObject: Replace header guards with #pragma once directives.
Change 3073325 on 2016/08/02 by Ben.Marsh
CoreUObject: Manually untangle a few circular includes around ObjectBase.h and Class.h to allow making them into IWYU-style headers.
Change 3074391 on 2016/08/02 by Ben.Marsh
GitHub #2646: Always allow programs to build as part of non-game solution configurations.
Change 3075123 on 2016/08/03 by Richard.Fawcett
Ensure that zip files created outside of Ionic Zip can be unzipped with CommandUtils.UnzipFiles
Zip files created with 7-zip, WinRAR, and Windows Explorer all contain entities for directories, not just the files in them. Code in CommandUtils.UnzipFiles made the assumption that all entities in the zip file were files, and an exception was being thrown on encountering a directory.
Change 3075848 on 2016/08/03 by Ben.Marsh
UBT: Fix a few cases where it's possible to construct a non-canonical DirectoryReference - root directories on Windows must always have a terminating slash, but any other directories must note. DirectoryInfo and Path.GetFullPath() do not enforce this requirement.
Change 3075850 on 2016/08/03 by Ben.Marsh
UBT: Fix UHT failures when running with -nopch.
Change 3077058 by Ben.Marsh
UHT: Remove the auto-generated ObjectBase.h include from generated header files. Was originally added to allow doxygen to parse headers more easily, but was switched to parsing the file only as part of parent files instead.
[CL 3077308 by Ben Marsh in Main branch]
2016-08-04 10:41:07 -04:00
int LineOffset = 0 ;
if ( MatchCppTokens ( Lines [ LineIdx ] , ref LineOffset , Prefix ) )
2014-03-14 14:13:41 -04:00
{
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3075869)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3059740 on 2016/07/21 by Ben.Marsh
Format license violations on separate lines rather than as a single multi-line string, so they can be parsed out correctly by the EC log parser.
Change 3063115 on 2016/07/25 by Ben.Marsh
Add missing projects to Mono AutomationTool solution.
Change 3067125 on 2016/07/27 by Ben.Marsh
Clean up and document the engine versioning system.
* Version.h has a summary of all the different versioning concepts in UE4, as well as an explanation of what all the macros do.
* VersionLocked.h has been removed. ENGINE_NET_VERSION and ENGINE_REPLAY_VERSION can be overriden directly in Version.h if necessary.
* Added explicit macros for ENGINE_CURRENT_CL_VERSION And ENGINE_COMPATIBLE_CL_VERSION. The MODULE_API_VERSION macro is now defined to be the same as ENGINE_COMPATIBLE_CL_VERSION.
* Build/Build.version now includes the compatible CL version, so it can be determined without having to parse header files inside MacToolChain.cs.
* UpdateLocalVersion UAT command now exposes a -CompatibleCL=... argument to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* SetVersion BuildGraph task now has a CompatibleChange="" attribute to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* VersionFileUpdater now makes an effort to parse tokens matching the macros it's going to overwrite, rather than requiring exact matches in whitespace in Version.h.
* Running UpdateLocalVersion now syncs files to revision 0 before writing if P4 is enabled, similarly to UGS, or fails if they are not writable.
Change 3067242 on 2016/07/27 by Ben.Marsh
Fix UGS showing a build failure/warning dialog immediately if you submit while the build is yellow/red. Now ignores builds before your last submitted CL.
Change 3068116 on 2016/07/28 by Ben.Marsh
Add a small Windows utility to terminate all running processes under a given root directory, and run it before and after every sync. Mean to fix instances where zombie editor processes do not terminate correctly and cause subsequent syncs to fail.
Change 3068246 on 2016/07/28 by Ben.Marsh
UGS: Improvements to 'Clean Workspace' dialog - empty folders are now set to be deleted by default, and added a context menu to select all/none/empty/default for a subtree, as well as to open Windows explorer at that location.
Change 3068573 on 2016/07/28 by Ben.Marsh
Attempt to fix AppDomain unload errors; suspect caused by delay to terminate child processes when managed exception is thrown on child threads. Now waits for the currently running threads to finish executing before quitting.
Change 3068575 on 2016/07/28 by Ben.Marsh
Respect the -noxge command-line argument when compiling UHT.
Change 3068665 on 2016/07/28 by Ben.Marsh
Delete any DLLs in output folders which share names with build products. The Windows loader reads DLLs from the first location it finds a file with a matching name, so we need to ensure that it doesn't load stale DLLs when output directories are changed (moving a module into a plugin, for example).
Change 3073316 on 2016/08/02 by Ben.Marsh
CoreUObject: Replace header guards with #pragma once directives.
Change 3073325 on 2016/08/02 by Ben.Marsh
CoreUObject: Manually untangle a few circular includes around ObjectBase.h and Class.h to allow making them into IWYU-style headers.
Change 3074391 on 2016/08/02 by Ben.Marsh
GitHub #2646: Always allow programs to build as part of non-game solution configurations.
Change 3075123 on 2016/08/03 by Richard.Fawcett
Ensure that zip files created outside of Ionic Zip can be unzipped with CommandUtils.UnzipFiles
Zip files created with 7-zip, WinRAR, and Windows Explorer all contain entities for directories, not just the files in them. Code in CommandUtils.UnzipFiles made the assumption that all entities in the zip file were files, and an exception was being thrown on encountering a directory.
Change 3075848 on 2016/08/03 by Ben.Marsh
UBT: Fix a few cases where it's possible to construct a non-canonical DirectoryReference - root directories on Windows must always have a terminating slash, but any other directories must note. DirectoryInfo and Path.GetFullPath() do not enforce this requirement.
Change 3075850 on 2016/08/03 by Ben.Marsh
UBT: Fix UHT failures when running with -nopch.
Change 3077058 by Ben.Marsh
UHT: Remove the auto-generated ObjectBase.h include from generated header files. Was originally added to allow doxygen to parse headers more easily, but was switched to parsing the file only as part of parent files instead.
[CL 3077308 by Ben Marsh in Main branch]
2016-08-04 10:41:07 -04:00
if ( OccurenceIdx = = MatchIdx )
{
while ( LineOffset < Lines [ LineIdx ] . Length & & Char . IsWhiteSpace ( Lines [ LineIdx ] [ LineOffset ] ) )
{
LineOffset + + ;
}
Lines [ LineIdx ] = Lines [ LineIdx ] . Substring ( 0 , LineOffset ) + Suffix ;
return ;
}
MatchIdx + + ;
2014-03-14 14:13:41 -04:00
}
}
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3075869)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3059740 on 2016/07/21 by Ben.Marsh
Format license violations on separate lines rather than as a single multi-line string, so they can be parsed out correctly by the EC log parser.
Change 3063115 on 2016/07/25 by Ben.Marsh
Add missing projects to Mono AutomationTool solution.
Change 3067125 on 2016/07/27 by Ben.Marsh
Clean up and document the engine versioning system.
* Version.h has a summary of all the different versioning concepts in UE4, as well as an explanation of what all the macros do.
* VersionLocked.h has been removed. ENGINE_NET_VERSION and ENGINE_REPLAY_VERSION can be overriden directly in Version.h if necessary.
* Added explicit macros for ENGINE_CURRENT_CL_VERSION And ENGINE_COMPATIBLE_CL_VERSION. The MODULE_API_VERSION macro is now defined to be the same as ENGINE_COMPATIBLE_CL_VERSION.
* Build/Build.version now includes the compatible CL version, so it can be determined without having to parse header files inside MacToolChain.cs.
* UpdateLocalVersion UAT command now exposes a -CompatibleCL=... argument to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* SetVersion BuildGraph task now has a CompatibleChange="" attribute to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* VersionFileUpdater now makes an effort to parse tokens matching the macros it's going to overwrite, rather than requiring exact matches in whitespace in Version.h.
* Running UpdateLocalVersion now syncs files to revision 0 before writing if P4 is enabled, similarly to UGS, or fails if they are not writable.
Change 3067242 on 2016/07/27 by Ben.Marsh
Fix UGS showing a build failure/warning dialog immediately if you submit while the build is yellow/red. Now ignores builds before your last submitted CL.
Change 3068116 on 2016/07/28 by Ben.Marsh
Add a small Windows utility to terminate all running processes under a given root directory, and run it before and after every sync. Mean to fix instances where zombie editor processes do not terminate correctly and cause subsequent syncs to fail.
Change 3068246 on 2016/07/28 by Ben.Marsh
UGS: Improvements to 'Clean Workspace' dialog - empty folders are now set to be deleted by default, and added a context menu to select all/none/empty/default for a subtree, as well as to open Windows explorer at that location.
Change 3068573 on 2016/07/28 by Ben.Marsh
Attempt to fix AppDomain unload errors; suspect caused by delay to terminate child processes when managed exception is thrown on child threads. Now waits for the currently running threads to finish executing before quitting.
Change 3068575 on 2016/07/28 by Ben.Marsh
Respect the -noxge command-line argument when compiling UHT.
Change 3068665 on 2016/07/28 by Ben.Marsh
Delete any DLLs in output folders which share names with build products. The Windows loader reads DLLs from the first location it finds a file with a matching name, so we need to ensure that it doesn't load stale DLLs when output directories are changed (moving a module into a plugin, for example).
Change 3073316 on 2016/08/02 by Ben.Marsh
CoreUObject: Replace header guards with #pragma once directives.
Change 3073325 on 2016/08/02 by Ben.Marsh
CoreUObject: Manually untangle a few circular includes around ObjectBase.h and Class.h to allow making them into IWYU-style headers.
Change 3074391 on 2016/08/02 by Ben.Marsh
GitHub #2646: Always allow programs to build as part of non-game solution configurations.
Change 3075123 on 2016/08/03 by Richard.Fawcett
Ensure that zip files created outside of Ionic Zip can be unzipped with CommandUtils.UnzipFiles
Zip files created with 7-zip, WinRAR, and Windows Explorer all contain entities for directories, not just the files in them. Code in CommandUtils.UnzipFiles made the assumption that all entities in the zip file were files, and an exception was being thrown on encountering a directory.
Change 3075848 on 2016/08/03 by Ben.Marsh
UBT: Fix a few cases where it's possible to construct a non-canonical DirectoryReference - root directories on Windows must always have a terminating slash, but any other directories must note. DirectoryInfo and Path.GetFullPath() do not enforce this requirement.
Change 3075850 on 2016/08/03 by Ben.Marsh
UBT: Fix UHT failures when running with -nopch.
Change 3077058 by Ben.Marsh
UHT: Remove the auto-generated ObjectBase.h include from generated header files. Was originally added to allow doxygen to parse headers more easily, but was switched to parsing the file only as part of parent files instead.
[CL 3077308 by Ben Marsh in Main branch]
2016-08-04 10:41:07 -04:00
throw new AutomationException ( "Unable to find line {0} in {1}" , Prefix , MyFile . FullName ) ;
2014-03-14 14:13:41 -04:00
}
2014-04-30 07:58:10 -04:00
/// <summary>
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3075869)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3059740 on 2016/07/21 by Ben.Marsh
Format license violations on separate lines rather than as a single multi-line string, so they can be parsed out correctly by the EC log parser.
Change 3063115 on 2016/07/25 by Ben.Marsh
Add missing projects to Mono AutomationTool solution.
Change 3067125 on 2016/07/27 by Ben.Marsh
Clean up and document the engine versioning system.
* Version.h has a summary of all the different versioning concepts in UE4, as well as an explanation of what all the macros do.
* VersionLocked.h has been removed. ENGINE_NET_VERSION and ENGINE_REPLAY_VERSION can be overriden directly in Version.h if necessary.
* Added explicit macros for ENGINE_CURRENT_CL_VERSION And ENGINE_COMPATIBLE_CL_VERSION. The MODULE_API_VERSION macro is now defined to be the same as ENGINE_COMPATIBLE_CL_VERSION.
* Build/Build.version now includes the compatible CL version, so it can be determined without having to parse header files inside MacToolChain.cs.
* UpdateLocalVersion UAT command now exposes a -CompatibleCL=... argument to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* SetVersion BuildGraph task now has a CompatibleChange="" attribute to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* VersionFileUpdater now makes an effort to parse tokens matching the macros it's going to overwrite, rather than requiring exact matches in whitespace in Version.h.
* Running UpdateLocalVersion now syncs files to revision 0 before writing if P4 is enabled, similarly to UGS, or fails if they are not writable.
Change 3067242 on 2016/07/27 by Ben.Marsh
Fix UGS showing a build failure/warning dialog immediately if you submit while the build is yellow/red. Now ignores builds before your last submitted CL.
Change 3068116 on 2016/07/28 by Ben.Marsh
Add a small Windows utility to terminate all running processes under a given root directory, and run it before and after every sync. Mean to fix instances where zombie editor processes do not terminate correctly and cause subsequent syncs to fail.
Change 3068246 on 2016/07/28 by Ben.Marsh
UGS: Improvements to 'Clean Workspace' dialog - empty folders are now set to be deleted by default, and added a context menu to select all/none/empty/default for a subtree, as well as to open Windows explorer at that location.
Change 3068573 on 2016/07/28 by Ben.Marsh
Attempt to fix AppDomain unload errors; suspect caused by delay to terminate child processes when managed exception is thrown on child threads. Now waits for the currently running threads to finish executing before quitting.
Change 3068575 on 2016/07/28 by Ben.Marsh
Respect the -noxge command-line argument when compiling UHT.
Change 3068665 on 2016/07/28 by Ben.Marsh
Delete any DLLs in output folders which share names with build products. The Windows loader reads DLLs from the first location it finds a file with a matching name, so we need to ensure that it doesn't load stale DLLs when output directories are changed (moving a module into a plugin, for example).
Change 3073316 on 2016/08/02 by Ben.Marsh
CoreUObject: Replace header guards with #pragma once directives.
Change 3073325 on 2016/08/02 by Ben.Marsh
CoreUObject: Manually untangle a few circular includes around ObjectBase.h and Class.h to allow making them into IWYU-style headers.
Change 3074391 on 2016/08/02 by Ben.Marsh
GitHub #2646: Always allow programs to build as part of non-game solution configurations.
Change 3075123 on 2016/08/03 by Richard.Fawcett
Ensure that zip files created outside of Ionic Zip can be unzipped with CommandUtils.UnzipFiles
Zip files created with 7-zip, WinRAR, and Windows Explorer all contain entities for directories, not just the files in them. Code in CommandUtils.UnzipFiles made the assumption that all entities in the zip file were files, and an exception was being thrown on encountering a directory.
Change 3075848 on 2016/08/03 by Ben.Marsh
UBT: Fix a few cases where it's possible to construct a non-canonical DirectoryReference - root directories on Windows must always have a terminating slash, but any other directories must note. DirectoryInfo and Path.GetFullPath() do not enforce this requirement.
Change 3075850 on 2016/08/03 by Ben.Marsh
UBT: Fix UHT failures when running with -nopch.
Change 3077058 by Ben.Marsh
UHT: Remove the auto-generated ObjectBase.h include from generated header files. Was originally added to allow doxygen to parse headers more easily, but was switched to parsing the file only as part of parent files instead.
[CL 3077308 by Ben Marsh in Main branch]
2016-08-04 10:41:07 -04:00
/// Tries to read a sequence of tokens from the given line of text, updating a position within it.
2014-04-30 07:58:10 -04:00
/// </summary>
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3075869)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3059740 on 2016/07/21 by Ben.Marsh
Format license violations on separate lines rather than as a single multi-line string, so they can be parsed out correctly by the EC log parser.
Change 3063115 on 2016/07/25 by Ben.Marsh
Add missing projects to Mono AutomationTool solution.
Change 3067125 on 2016/07/27 by Ben.Marsh
Clean up and document the engine versioning system.
* Version.h has a summary of all the different versioning concepts in UE4, as well as an explanation of what all the macros do.
* VersionLocked.h has been removed. ENGINE_NET_VERSION and ENGINE_REPLAY_VERSION can be overriden directly in Version.h if necessary.
* Added explicit macros for ENGINE_CURRENT_CL_VERSION And ENGINE_COMPATIBLE_CL_VERSION. The MODULE_API_VERSION macro is now defined to be the same as ENGINE_COMPATIBLE_CL_VERSION.
* Build/Build.version now includes the compatible CL version, so it can be determined without having to parse header files inside MacToolChain.cs.
* UpdateLocalVersion UAT command now exposes a -CompatibleCL=... argument to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* SetVersion BuildGraph task now has a CompatibleChange="" attribute to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* VersionFileUpdater now makes an effort to parse tokens matching the macros it's going to overwrite, rather than requiring exact matches in whitespace in Version.h.
* Running UpdateLocalVersion now syncs files to revision 0 before writing if P4 is enabled, similarly to UGS, or fails if they are not writable.
Change 3067242 on 2016/07/27 by Ben.Marsh
Fix UGS showing a build failure/warning dialog immediately if you submit while the build is yellow/red. Now ignores builds before your last submitted CL.
Change 3068116 on 2016/07/28 by Ben.Marsh
Add a small Windows utility to terminate all running processes under a given root directory, and run it before and after every sync. Mean to fix instances where zombie editor processes do not terminate correctly and cause subsequent syncs to fail.
Change 3068246 on 2016/07/28 by Ben.Marsh
UGS: Improvements to 'Clean Workspace' dialog - empty folders are now set to be deleted by default, and added a context menu to select all/none/empty/default for a subtree, as well as to open Windows explorer at that location.
Change 3068573 on 2016/07/28 by Ben.Marsh
Attempt to fix AppDomain unload errors; suspect caused by delay to terminate child processes when managed exception is thrown on child threads. Now waits for the currently running threads to finish executing before quitting.
Change 3068575 on 2016/07/28 by Ben.Marsh
Respect the -noxge command-line argument when compiling UHT.
Change 3068665 on 2016/07/28 by Ben.Marsh
Delete any DLLs in output folders which share names with build products. The Windows loader reads DLLs from the first location it finds a file with a matching name, so we need to ensure that it doesn't load stale DLLs when output directories are changed (moving a module into a plugin, for example).
Change 3073316 on 2016/08/02 by Ben.Marsh
CoreUObject: Replace header guards with #pragma once directives.
Change 3073325 on 2016/08/02 by Ben.Marsh
CoreUObject: Manually untangle a few circular includes around ObjectBase.h and Class.h to allow making them into IWYU-style headers.
Change 3074391 on 2016/08/02 by Ben.Marsh
GitHub #2646: Always allow programs to build as part of non-game solution configurations.
Change 3075123 on 2016/08/03 by Richard.Fawcett
Ensure that zip files created outside of Ionic Zip can be unzipped with CommandUtils.UnzipFiles
Zip files created with 7-zip, WinRAR, and Windows Explorer all contain entities for directories, not just the files in them. Code in CommandUtils.UnzipFiles made the assumption that all entities in the zip file were files, and an exception was being thrown on encountering a directory.
Change 3075848 on 2016/08/03 by Ben.Marsh
UBT: Fix a few cases where it's possible to construct a non-canonical DirectoryReference - root directories on Windows must always have a terminating slash, but any other directories must note. DirectoryInfo and Path.GetFullPath() do not enforce this requirement.
Change 3075850 on 2016/08/03 by Ben.Marsh
UBT: Fix UHT failures when running with -nopch.
Change 3077058 by Ben.Marsh
UHT: Remove the auto-generated ObjectBase.h include from generated header files. Was originally added to allow doxygen to parse headers more easily, but was switched to parsing the file only as part of parent files instead.
[CL 3077308 by Ben Marsh in Main branch]
2016-08-04 10:41:07 -04:00
/// <param name="Line">Line to read tokens from</param>
/// <param name="LineOffset">Position within </param>
/// <param name="Other">The tokens to attempt to match</param>
/// <returns>True if the tokens are matched</returns>
static bool MatchCppTokens ( string Line , ref int LineOffset , string Other )
2014-04-30 07:58:10 -04:00
{
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3075869)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3059740 on 2016/07/21 by Ben.Marsh
Format license violations on separate lines rather than as a single multi-line string, so they can be parsed out correctly by the EC log parser.
Change 3063115 on 2016/07/25 by Ben.Marsh
Add missing projects to Mono AutomationTool solution.
Change 3067125 on 2016/07/27 by Ben.Marsh
Clean up and document the engine versioning system.
* Version.h has a summary of all the different versioning concepts in UE4, as well as an explanation of what all the macros do.
* VersionLocked.h has been removed. ENGINE_NET_VERSION and ENGINE_REPLAY_VERSION can be overriden directly in Version.h if necessary.
* Added explicit macros for ENGINE_CURRENT_CL_VERSION And ENGINE_COMPATIBLE_CL_VERSION. The MODULE_API_VERSION macro is now defined to be the same as ENGINE_COMPATIBLE_CL_VERSION.
* Build/Build.version now includes the compatible CL version, so it can be determined without having to parse header files inside MacToolChain.cs.
* UpdateLocalVersion UAT command now exposes a -CompatibleCL=... argument to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* SetVersion BuildGraph task now has a CompatibleChange="" attribute to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* VersionFileUpdater now makes an effort to parse tokens matching the macros it's going to overwrite, rather than requiring exact matches in whitespace in Version.h.
* Running UpdateLocalVersion now syncs files to revision 0 before writing if P4 is enabled, similarly to UGS, or fails if they are not writable.
Change 3067242 on 2016/07/27 by Ben.Marsh
Fix UGS showing a build failure/warning dialog immediately if you submit while the build is yellow/red. Now ignores builds before your last submitted CL.
Change 3068116 on 2016/07/28 by Ben.Marsh
Add a small Windows utility to terminate all running processes under a given root directory, and run it before and after every sync. Mean to fix instances where zombie editor processes do not terminate correctly and cause subsequent syncs to fail.
Change 3068246 on 2016/07/28 by Ben.Marsh
UGS: Improvements to 'Clean Workspace' dialog - empty folders are now set to be deleted by default, and added a context menu to select all/none/empty/default for a subtree, as well as to open Windows explorer at that location.
Change 3068573 on 2016/07/28 by Ben.Marsh
Attempt to fix AppDomain unload errors; suspect caused by delay to terminate child processes when managed exception is thrown on child threads. Now waits for the currently running threads to finish executing before quitting.
Change 3068575 on 2016/07/28 by Ben.Marsh
Respect the -noxge command-line argument when compiling UHT.
Change 3068665 on 2016/07/28 by Ben.Marsh
Delete any DLLs in output folders which share names with build products. The Windows loader reads DLLs from the first location it finds a file with a matching name, so we need to ensure that it doesn't load stale DLLs when output directories are changed (moving a module into a plugin, for example).
Change 3073316 on 2016/08/02 by Ben.Marsh
CoreUObject: Replace header guards with #pragma once directives.
Change 3073325 on 2016/08/02 by Ben.Marsh
CoreUObject: Manually untangle a few circular includes around ObjectBase.h and Class.h to allow making them into IWYU-style headers.
Change 3074391 on 2016/08/02 by Ben.Marsh
GitHub #2646: Always allow programs to build as part of non-game solution configurations.
Change 3075123 on 2016/08/03 by Richard.Fawcett
Ensure that zip files created outside of Ionic Zip can be unzipped with CommandUtils.UnzipFiles
Zip files created with 7-zip, WinRAR, and Windows Explorer all contain entities for directories, not just the files in them. Code in CommandUtils.UnzipFiles made the assumption that all entities in the zip file were files, and an exception was being thrown on encountering a directory.
Change 3075848 on 2016/08/03 by Ben.Marsh
UBT: Fix a few cases where it's possible to construct a non-canonical DirectoryReference - root directories on Windows must always have a terminating slash, but any other directories must note. DirectoryInfo and Path.GetFullPath() do not enforce this requirement.
Change 3075850 on 2016/08/03 by Ben.Marsh
UBT: Fix UHT failures when running with -nopch.
Change 3077058 by Ben.Marsh
UHT: Remove the auto-generated ObjectBase.h include from generated header files. Was originally added to allow doxygen to parse headers more easily, but was switched to parsing the file only as part of parent files instead.
[CL 3077308 by Ben Marsh in Main branch]
2016-08-04 10:41:07 -04:00
int OtherOffset = 0 ;
for ( ; ; )
2014-04-30 07:58:10 -04:00
{
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3075869)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3059740 on 2016/07/21 by Ben.Marsh
Format license violations on separate lines rather than as a single multi-line string, so they can be parsed out correctly by the EC log parser.
Change 3063115 on 2016/07/25 by Ben.Marsh
Add missing projects to Mono AutomationTool solution.
Change 3067125 on 2016/07/27 by Ben.Marsh
Clean up and document the engine versioning system.
* Version.h has a summary of all the different versioning concepts in UE4, as well as an explanation of what all the macros do.
* VersionLocked.h has been removed. ENGINE_NET_VERSION and ENGINE_REPLAY_VERSION can be overriden directly in Version.h if necessary.
* Added explicit macros for ENGINE_CURRENT_CL_VERSION And ENGINE_COMPATIBLE_CL_VERSION. The MODULE_API_VERSION macro is now defined to be the same as ENGINE_COMPATIBLE_CL_VERSION.
* Build/Build.version now includes the compatible CL version, so it can be determined without having to parse header files inside MacToolChain.cs.
* UpdateLocalVersion UAT command now exposes a -CompatibleCL=... argument to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* SetVersion BuildGraph task now has a CompatibleChange="" attribute to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* VersionFileUpdater now makes an effort to parse tokens matching the macros it's going to overwrite, rather than requiring exact matches in whitespace in Version.h.
* Running UpdateLocalVersion now syncs files to revision 0 before writing if P4 is enabled, similarly to UGS, or fails if they are not writable.
Change 3067242 on 2016/07/27 by Ben.Marsh
Fix UGS showing a build failure/warning dialog immediately if you submit while the build is yellow/red. Now ignores builds before your last submitted CL.
Change 3068116 on 2016/07/28 by Ben.Marsh
Add a small Windows utility to terminate all running processes under a given root directory, and run it before and after every sync. Mean to fix instances where zombie editor processes do not terminate correctly and cause subsequent syncs to fail.
Change 3068246 on 2016/07/28 by Ben.Marsh
UGS: Improvements to 'Clean Workspace' dialog - empty folders are now set to be deleted by default, and added a context menu to select all/none/empty/default for a subtree, as well as to open Windows explorer at that location.
Change 3068573 on 2016/07/28 by Ben.Marsh
Attempt to fix AppDomain unload errors; suspect caused by delay to terminate child processes when managed exception is thrown on child threads. Now waits for the currently running threads to finish executing before quitting.
Change 3068575 on 2016/07/28 by Ben.Marsh
Respect the -noxge command-line argument when compiling UHT.
Change 3068665 on 2016/07/28 by Ben.Marsh
Delete any DLLs in output folders which share names with build products. The Windows loader reads DLLs from the first location it finds a file with a matching name, so we need to ensure that it doesn't load stale DLLs when output directories are changed (moving a module into a plugin, for example).
Change 3073316 on 2016/08/02 by Ben.Marsh
CoreUObject: Replace header guards with #pragma once directives.
Change 3073325 on 2016/08/02 by Ben.Marsh
CoreUObject: Manually untangle a few circular includes around ObjectBase.h and Class.h to allow making them into IWYU-style headers.
Change 3074391 on 2016/08/02 by Ben.Marsh
GitHub #2646: Always allow programs to build as part of non-game solution configurations.
Change 3075123 on 2016/08/03 by Richard.Fawcett
Ensure that zip files created outside of Ionic Zip can be unzipped with CommandUtils.UnzipFiles
Zip files created with 7-zip, WinRAR, and Windows Explorer all contain entities for directories, not just the files in them. Code in CommandUtils.UnzipFiles made the assumption that all entities in the zip file were files, and an exception was being thrown on encountering a directory.
Change 3075848 on 2016/08/03 by Ben.Marsh
UBT: Fix a few cases where it's possible to construct a non-canonical DirectoryReference - root directories on Windows must always have a terminating slash, but any other directories must note. DirectoryInfo and Path.GetFullPath() do not enforce this requirement.
Change 3075850 on 2016/08/03 by Ben.Marsh
UBT: Fix UHT failures when running with -nopch.
Change 3077058 by Ben.Marsh
UHT: Remove the auto-generated ObjectBase.h include from generated header files. Was originally added to allow doxygen to parse headers more easily, but was switched to parsing the file only as part of parent files instead.
[CL 3077308 by Ben Marsh in Main branch]
2016-08-04 10:41:07 -04:00
// Read the next token from the prefix text. If we've reached the end, return that we've found a match.
string OtherToken = ReadCppToken ( Other , ref OtherOffset ) ;
if ( OtherToken = = null )
{
return true ;
}
// Otherwise read the next token from the line and check it matches
string LineToken = ReadCppToken ( Line , ref LineOffset ) ;
if ( LineToken ! = OtherToken )
{
return false ;
}
2014-04-30 07:58:10 -04:00
}
}
/// <summary>
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3075869)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3059740 on 2016/07/21 by Ben.Marsh
Format license violations on separate lines rather than as a single multi-line string, so they can be parsed out correctly by the EC log parser.
Change 3063115 on 2016/07/25 by Ben.Marsh
Add missing projects to Mono AutomationTool solution.
Change 3067125 on 2016/07/27 by Ben.Marsh
Clean up and document the engine versioning system.
* Version.h has a summary of all the different versioning concepts in UE4, as well as an explanation of what all the macros do.
* VersionLocked.h has been removed. ENGINE_NET_VERSION and ENGINE_REPLAY_VERSION can be overriden directly in Version.h if necessary.
* Added explicit macros for ENGINE_CURRENT_CL_VERSION And ENGINE_COMPATIBLE_CL_VERSION. The MODULE_API_VERSION macro is now defined to be the same as ENGINE_COMPATIBLE_CL_VERSION.
* Build/Build.version now includes the compatible CL version, so it can be determined without having to parse header files inside MacToolChain.cs.
* UpdateLocalVersion UAT command now exposes a -CompatibleCL=... argument to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* SetVersion BuildGraph task now has a CompatibleChange="" attribute to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* VersionFileUpdater now makes an effort to parse tokens matching the macros it's going to overwrite, rather than requiring exact matches in whitespace in Version.h.
* Running UpdateLocalVersion now syncs files to revision 0 before writing if P4 is enabled, similarly to UGS, or fails if they are not writable.
Change 3067242 on 2016/07/27 by Ben.Marsh
Fix UGS showing a build failure/warning dialog immediately if you submit while the build is yellow/red. Now ignores builds before your last submitted CL.
Change 3068116 on 2016/07/28 by Ben.Marsh
Add a small Windows utility to terminate all running processes under a given root directory, and run it before and after every sync. Mean to fix instances where zombie editor processes do not terminate correctly and cause subsequent syncs to fail.
Change 3068246 on 2016/07/28 by Ben.Marsh
UGS: Improvements to 'Clean Workspace' dialog - empty folders are now set to be deleted by default, and added a context menu to select all/none/empty/default for a subtree, as well as to open Windows explorer at that location.
Change 3068573 on 2016/07/28 by Ben.Marsh
Attempt to fix AppDomain unload errors; suspect caused by delay to terminate child processes when managed exception is thrown on child threads. Now waits for the currently running threads to finish executing before quitting.
Change 3068575 on 2016/07/28 by Ben.Marsh
Respect the -noxge command-line argument when compiling UHT.
Change 3068665 on 2016/07/28 by Ben.Marsh
Delete any DLLs in output folders which share names with build products. The Windows loader reads DLLs from the first location it finds a file with a matching name, so we need to ensure that it doesn't load stale DLLs when output directories are changed (moving a module into a plugin, for example).
Change 3073316 on 2016/08/02 by Ben.Marsh
CoreUObject: Replace header guards with #pragma once directives.
Change 3073325 on 2016/08/02 by Ben.Marsh
CoreUObject: Manually untangle a few circular includes around ObjectBase.h and Class.h to allow making them into IWYU-style headers.
Change 3074391 on 2016/08/02 by Ben.Marsh
GitHub #2646: Always allow programs to build as part of non-game solution configurations.
Change 3075123 on 2016/08/03 by Richard.Fawcett
Ensure that zip files created outside of Ionic Zip can be unzipped with CommandUtils.UnzipFiles
Zip files created with 7-zip, WinRAR, and Windows Explorer all contain entities for directories, not just the files in them. Code in CommandUtils.UnzipFiles made the assumption that all entities in the zip file were files, and an exception was being thrown on encountering a directory.
Change 3075848 on 2016/08/03 by Ben.Marsh
UBT: Fix a few cases where it's possible to construct a non-canonical DirectoryReference - root directories on Windows must always have a terminating slash, but any other directories must note. DirectoryInfo and Path.GetFullPath() do not enforce this requirement.
Change 3075850 on 2016/08/03 by Ben.Marsh
UBT: Fix UHT failures when running with -nopch.
Change 3077058 by Ben.Marsh
UHT: Remove the auto-generated ObjectBase.h include from generated header files. Was originally added to allow doxygen to parse headers more easily, but was switched to parsing the file only as part of parent files instead.
[CL 3077308 by Ben Marsh in Main branch]
2016-08-04 10:41:07 -04:00
/// Reads a single token (using a very rough approximation of a C++ token) from the given line
2014-04-30 07:58:10 -04:00
/// </summary>
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3075869)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3059740 on 2016/07/21 by Ben.Marsh
Format license violations on separate lines rather than as a single multi-line string, so they can be parsed out correctly by the EC log parser.
Change 3063115 on 2016/07/25 by Ben.Marsh
Add missing projects to Mono AutomationTool solution.
Change 3067125 on 2016/07/27 by Ben.Marsh
Clean up and document the engine versioning system.
* Version.h has a summary of all the different versioning concepts in UE4, as well as an explanation of what all the macros do.
* VersionLocked.h has been removed. ENGINE_NET_VERSION and ENGINE_REPLAY_VERSION can be overriden directly in Version.h if necessary.
* Added explicit macros for ENGINE_CURRENT_CL_VERSION And ENGINE_COMPATIBLE_CL_VERSION. The MODULE_API_VERSION macro is now defined to be the same as ENGINE_COMPATIBLE_CL_VERSION.
* Build/Build.version now includes the compatible CL version, so it can be determined without having to parse header files inside MacToolChain.cs.
* UpdateLocalVersion UAT command now exposes a -CompatibleCL=... argument to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* SetVersion BuildGraph task now has a CompatibleChange="" attribute to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* VersionFileUpdater now makes an effort to parse tokens matching the macros it's going to overwrite, rather than requiring exact matches in whitespace in Version.h.
* Running UpdateLocalVersion now syncs files to revision 0 before writing if P4 is enabled, similarly to UGS, or fails if they are not writable.
Change 3067242 on 2016/07/27 by Ben.Marsh
Fix UGS showing a build failure/warning dialog immediately if you submit while the build is yellow/red. Now ignores builds before your last submitted CL.
Change 3068116 on 2016/07/28 by Ben.Marsh
Add a small Windows utility to terminate all running processes under a given root directory, and run it before and after every sync. Mean to fix instances where zombie editor processes do not terminate correctly and cause subsequent syncs to fail.
Change 3068246 on 2016/07/28 by Ben.Marsh
UGS: Improvements to 'Clean Workspace' dialog - empty folders are now set to be deleted by default, and added a context menu to select all/none/empty/default for a subtree, as well as to open Windows explorer at that location.
Change 3068573 on 2016/07/28 by Ben.Marsh
Attempt to fix AppDomain unload errors; suspect caused by delay to terminate child processes when managed exception is thrown on child threads. Now waits for the currently running threads to finish executing before quitting.
Change 3068575 on 2016/07/28 by Ben.Marsh
Respect the -noxge command-line argument when compiling UHT.
Change 3068665 on 2016/07/28 by Ben.Marsh
Delete any DLLs in output folders which share names with build products. The Windows loader reads DLLs from the first location it finds a file with a matching name, so we need to ensure that it doesn't load stale DLLs when output directories are changed (moving a module into a plugin, for example).
Change 3073316 on 2016/08/02 by Ben.Marsh
CoreUObject: Replace header guards with #pragma once directives.
Change 3073325 on 2016/08/02 by Ben.Marsh
CoreUObject: Manually untangle a few circular includes around ObjectBase.h and Class.h to allow making them into IWYU-style headers.
Change 3074391 on 2016/08/02 by Ben.Marsh
GitHub #2646: Always allow programs to build as part of non-game solution configurations.
Change 3075123 on 2016/08/03 by Richard.Fawcett
Ensure that zip files created outside of Ionic Zip can be unzipped with CommandUtils.UnzipFiles
Zip files created with 7-zip, WinRAR, and Windows Explorer all contain entities for directories, not just the files in them. Code in CommandUtils.UnzipFiles made the assumption that all entities in the zip file were files, and an exception was being thrown on encountering a directory.
Change 3075848 on 2016/08/03 by Ben.Marsh
UBT: Fix a few cases where it's possible to construct a non-canonical DirectoryReference - root directories on Windows must always have a terminating slash, but any other directories must note. DirectoryInfo and Path.GetFullPath() do not enforce this requirement.
Change 3075850 on 2016/08/03 by Ben.Marsh
UBT: Fix UHT failures when running with -nopch.
Change 3077058 by Ben.Marsh
UHT: Remove the auto-generated ObjectBase.h include from generated header files. Was originally added to allow doxygen to parse headers more easily, but was switched to parsing the file only as part of parent files instead.
[CL 3077308 by Ben Marsh in Main branch]
2016-08-04 10:41:07 -04:00
/// <param name="Line">The line to read from</param>
/// <param name="Offset">Position within the line to start reading. Initial whitespace will be skipped.</param>
/// <returns>The token that was read, or null if the end of the string</returns>
static string ReadCppToken ( string Line , ref int Offset )
2014-04-30 07:58:10 -04:00
{
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3075869)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3059740 on 2016/07/21 by Ben.Marsh
Format license violations on separate lines rather than as a single multi-line string, so they can be parsed out correctly by the EC log parser.
Change 3063115 on 2016/07/25 by Ben.Marsh
Add missing projects to Mono AutomationTool solution.
Change 3067125 on 2016/07/27 by Ben.Marsh
Clean up and document the engine versioning system.
* Version.h has a summary of all the different versioning concepts in UE4, as well as an explanation of what all the macros do.
* VersionLocked.h has been removed. ENGINE_NET_VERSION and ENGINE_REPLAY_VERSION can be overriden directly in Version.h if necessary.
* Added explicit macros for ENGINE_CURRENT_CL_VERSION And ENGINE_COMPATIBLE_CL_VERSION. The MODULE_API_VERSION macro is now defined to be the same as ENGINE_COMPATIBLE_CL_VERSION.
* Build/Build.version now includes the compatible CL version, so it can be determined without having to parse header files inside MacToolChain.cs.
* UpdateLocalVersion UAT command now exposes a -CompatibleCL=... argument to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* SetVersion BuildGraph task now has a CompatibleChange="" attribute to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* VersionFileUpdater now makes an effort to parse tokens matching the macros it's going to overwrite, rather than requiring exact matches in whitespace in Version.h.
* Running UpdateLocalVersion now syncs files to revision 0 before writing if P4 is enabled, similarly to UGS, or fails if they are not writable.
Change 3067242 on 2016/07/27 by Ben.Marsh
Fix UGS showing a build failure/warning dialog immediately if you submit while the build is yellow/red. Now ignores builds before your last submitted CL.
Change 3068116 on 2016/07/28 by Ben.Marsh
Add a small Windows utility to terminate all running processes under a given root directory, and run it before and after every sync. Mean to fix instances where zombie editor processes do not terminate correctly and cause subsequent syncs to fail.
Change 3068246 on 2016/07/28 by Ben.Marsh
UGS: Improvements to 'Clean Workspace' dialog - empty folders are now set to be deleted by default, and added a context menu to select all/none/empty/default for a subtree, as well as to open Windows explorer at that location.
Change 3068573 on 2016/07/28 by Ben.Marsh
Attempt to fix AppDomain unload errors; suspect caused by delay to terminate child processes when managed exception is thrown on child threads. Now waits for the currently running threads to finish executing before quitting.
Change 3068575 on 2016/07/28 by Ben.Marsh
Respect the -noxge command-line argument when compiling UHT.
Change 3068665 on 2016/07/28 by Ben.Marsh
Delete any DLLs in output folders which share names with build products. The Windows loader reads DLLs from the first location it finds a file with a matching name, so we need to ensure that it doesn't load stale DLLs when output directories are changed (moving a module into a plugin, for example).
Change 3073316 on 2016/08/02 by Ben.Marsh
CoreUObject: Replace header guards with #pragma once directives.
Change 3073325 on 2016/08/02 by Ben.Marsh
CoreUObject: Manually untangle a few circular includes around ObjectBase.h and Class.h to allow making them into IWYU-style headers.
Change 3074391 on 2016/08/02 by Ben.Marsh
GitHub #2646: Always allow programs to build as part of non-game solution configurations.
Change 3075123 on 2016/08/03 by Richard.Fawcett
Ensure that zip files created outside of Ionic Zip can be unzipped with CommandUtils.UnzipFiles
Zip files created with 7-zip, WinRAR, and Windows Explorer all contain entities for directories, not just the files in them. Code in CommandUtils.UnzipFiles made the assumption that all entities in the zip file were files, and an exception was being thrown on encountering a directory.
Change 3075848 on 2016/08/03 by Ben.Marsh
UBT: Fix a few cases where it's possible to construct a non-canonical DirectoryReference - root directories on Windows must always have a terminating slash, but any other directories must note. DirectoryInfo and Path.GetFullPath() do not enforce this requirement.
Change 3075850 on 2016/08/03 by Ben.Marsh
UBT: Fix UHT failures when running with -nopch.
Change 3077058 by Ben.Marsh
UHT: Remove the auto-generated ObjectBase.h include from generated header files. Was originally added to allow doxygen to parse headers more easily, but was switched to parsing the file only as part of parent files instead.
[CL 3077308 by Ben Marsh in Main branch]
2016-08-04 10:41:07 -04:00
// Skip any leading whitespace
while ( Offset < Line . Length & & Char . IsWhiteSpace ( Line [ Offset ] ) )
{
Offset + + ;
}
if ( Offset = = Line . Length )
{
return null ;
}
// Find the length of the token
int StartOffset = Offset + + ;
if ( Char . IsLetterOrDigit ( Line [ StartOffset ] ) )
{
while ( Offset < Line . Length )
{
char Character = Line [ Offset ] ;
if ( ! Char . IsLetterOrDigit ( Character ) & & Character ! = '_' )
{
break ;
}
Offset + + ;
}
}
return Line . Substring ( StartOffset , Offset - StartOffset ) ;
2014-04-30 07:58:10 -04:00
}
2014-03-14 14:13:41 -04:00
/// <summary>
/// Doc
/// </summary>
public void Commit ( )
{
Copying //UE4/Orion-Staging to //UE4/Main (Origin: //Orion/Dev-General @ 2904087)
==========================
MAJOR FEATURES + CHANGES
==========================
#lockdown Nick.Penwarden
Change 2903938 on 2016/03/10 by Frank.Gigliotti
Added an instance ID to FAnimMontageInstance
#CodeReview Laurent.Delayen
#RB Laurent.Delayen
#Tests PIE
Change 2903745 on 2016/03/10 by Wes.Hunt
Update Oodle TPS
#rb none
#tests none
#codereview:john.pollard
Change 2903689 on 2016/03/10 by Uriel.Doyon
New "LogHeroMaterials" console command, displaying the current state of materials and textures on the character hero.
#rb marcus.wasmer
#codereview marcus.wassmer
#tests editor, playing PC games, trying the new command
Change 2903669 on 2016/03/10 by Aaron.McLeran
OR-17180 Make stat soundcues and stat soundwaves NOT display zero volume sounds
- Change only effects debug stat commands for audio guys
#rb none
#tests played paragon with new debug stat commands, confirms doesn't show zero-volume sounds
Change 2903625 on 2016/03/10 by John.Pollard
XB1 Oodle SDK
#rb none
#tests none
#codereview Jeff.Campeau
Change 2903577 on 2016/03/10 by Ben.Marsh
Remaking latest build scripts from //UE4/Main @ 2900980.
Change 2903560 on 2016/03/10 by Ben.Marsh
Initial version of BuildGraph scripts - used to create build processes in UE4 which can be run locally or in parallel across a build farm (assuming synchronization and resource allocation implemented by a separate system). Intended to supersede GUBP.
Build graphs are declared using an XML script using syntax similar to MSBuild, ANT or NAnt, and consist of the following components:
* Tasks: Building blocks which can be executed as part of the build process. Many predefined tasks are provided (<Cook>, <Compile>, <Copy>, <Stage>, <Log>, <PakFile>, etc...), and additional tasks may be added be declaring classes derived from AutomationTool.CustomTask in other UAT modules.
* Nodes: A named sequence of tasks which is executed to produce outputs. Nodes may have input dependencies on other nodes before they can be executed. Declared with the <Node> element in scripts.
* Agent Groups: A set of nodes nodes which is executed on the same machine if running as part of a build system. Has no effect when building locally. Declared with the <Group> element in scripts.
* Triggers: Container for groups which should only be executed when explicitly triggered (using the -Trigger=<Name> or -SkipTriggers command line argument). Declared with the <Trigger> element in scripts.
* Notifiers: Specifies email recipients for failures in one or more nodes, whether they should receive notifications on warnings, and so on.
Properties can be passed in to a script on the command line, or set procedurally with the <Property Name="Foo" Value="Bar"/> syntax. Properties referenced with the $(Property Name) notation are valid within all strings, and will be expanded as macros when the script is read. If a property name is not set explicitly, it defaults to the contents of an environment variable with the same name.
Local properties, which only affect the scope of the containing XML element (node, group, etc...) are declared with the <Local Name="Foo" Value="Bar"/> element, and will override a similarly named global property for the local property's scope.
Any elements can be conditionally defined via the "If" attribute, and are largely identical to MSBuild conditions. Literals in conditions may be quoted with single (') or double (") quotes, or an unquoted sequence of letters, digits and underscore characters. All literals are considered identical regardless of how they are declared, and are considered case-insensitive for comparisons (so true equals 'True', equals "TRUE"). Available operators are "==", "!=", "And", "Or", "!", "(...)", "Exists(...)" and "HasTrailingSlash(...)". A full grammar is written up in Condition.cs.
File manipulation is done using wildcards and tags. Any attribute that accepts a list of files may consist of: a Perforce-style wildcard (matching any number of "...", "*" and "?" patterns in any location), a full path name, or a reference to a tagged collection of files, denoted by prefixing with a '#' character. Files may be added to a tag set using the <Tag> Task, which also allows performing set union/difference style operations. Each node can declare multiple outputs in the form of a list of named tags, which other nodes can then depend on.
Build graphs may be executed in parallel as part build system. To do so, the initial graph configuration is generated by running with the -Export=<Filename> argument (producing a JSON file listing the nodes and dependencies to execute). Each participating agent should be synced to the same changelist, and UAT should be re-run with the appropriate -Node=<Name> argument. Outputs from different nodes are transferred between agents via shared storage, typically a network share, the path to which can be specified on the command line using the -SharedStorageDir=<Path> argument. Note that the allocation of machines, and coordination between them, is assumed to be managed by an external system.
A schema for the known set of tasks can be generated by running UAT with the "-Schema=<FileName>" option. Generating a schema and referencing it from a BuildGraph script allows Visual Studio to validate and auto-complete elements as you type.
#rb none
#codereview Marc.Audy, Wes.Hunt, Matthew.Griffin, Richard.Fawcett
#tests local only so far, but not part of any build process yet
Change 2903539 on 2016/03/10 by John.Pollard
Improve replay playback debugging of character movement
#rb none
#tests replays
Change 2903526 on 2016/03/10 by Ben.Marsh
Remake changes from //UE4/Main without integration history, to add support for BuildGraph tasks.
#rb none
#tests none
Change 2903512 on 2016/03/10 by Dan.Youhon
Modify minimum Duration values for JumpForce and MoveToForce ability tasks so that having minimum Duration values doesn't trigger check()s
#rb None
#tests Compiles
Change 2903474 on 2016/03/10 by Marc.Audy
Fix crash if ChildActor is null
#rb None
#tests None
Change 2903314 on 2016/03/10 by Marc.Audy
Fix ParentComponent not being persisted and fixup content that was saved in the window it was broken
#rb James.Golding
#tests Selection of child actors works as expected
#jira UE-28201
Change 2903298 on 2016/03/10 by Simon.Tovey
Disabling the trails optimization.
#tests none
#rb none
#codereview Olaf.Piesche
Change 2903124 on 2016/03/10 by Robert.Manuszewski
Small refactor to pak signing to help with exe protection
#rb none
#tests none
[CL 2907678 by Andrew Grant in Main branch]
2016-03-13 18:53:13 -04:00
bool bDifferent = Lines . Count ! = OriginalLines . Count ;
if ( ! bDifferent )
2014-03-14 14:13:41 -04:00
{
Copying //UE4/Orion-Staging to //UE4/Main (Origin: //Orion/Dev-General @ 2904087)
==========================
MAJOR FEATURES + CHANGES
==========================
#lockdown Nick.Penwarden
Change 2903938 on 2016/03/10 by Frank.Gigliotti
Added an instance ID to FAnimMontageInstance
#CodeReview Laurent.Delayen
#RB Laurent.Delayen
#Tests PIE
Change 2903745 on 2016/03/10 by Wes.Hunt
Update Oodle TPS
#rb none
#tests none
#codereview:john.pollard
Change 2903689 on 2016/03/10 by Uriel.Doyon
New "LogHeroMaterials" console command, displaying the current state of materials and textures on the character hero.
#rb marcus.wasmer
#codereview marcus.wassmer
#tests editor, playing PC games, trying the new command
Change 2903669 on 2016/03/10 by Aaron.McLeran
OR-17180 Make stat soundcues and stat soundwaves NOT display zero volume sounds
- Change only effects debug stat commands for audio guys
#rb none
#tests played paragon with new debug stat commands, confirms doesn't show zero-volume sounds
Change 2903625 on 2016/03/10 by John.Pollard
XB1 Oodle SDK
#rb none
#tests none
#codereview Jeff.Campeau
Change 2903577 on 2016/03/10 by Ben.Marsh
Remaking latest build scripts from //UE4/Main @ 2900980.
Change 2903560 on 2016/03/10 by Ben.Marsh
Initial version of BuildGraph scripts - used to create build processes in UE4 which can be run locally or in parallel across a build farm (assuming synchronization and resource allocation implemented by a separate system). Intended to supersede GUBP.
Build graphs are declared using an XML script using syntax similar to MSBuild, ANT or NAnt, and consist of the following components:
* Tasks: Building blocks which can be executed as part of the build process. Many predefined tasks are provided (<Cook>, <Compile>, <Copy>, <Stage>, <Log>, <PakFile>, etc...), and additional tasks may be added be declaring classes derived from AutomationTool.CustomTask in other UAT modules.
* Nodes: A named sequence of tasks which is executed to produce outputs. Nodes may have input dependencies on other nodes before they can be executed. Declared with the <Node> element in scripts.
* Agent Groups: A set of nodes nodes which is executed on the same machine if running as part of a build system. Has no effect when building locally. Declared with the <Group> element in scripts.
* Triggers: Container for groups which should only be executed when explicitly triggered (using the -Trigger=<Name> or -SkipTriggers command line argument). Declared with the <Trigger> element in scripts.
* Notifiers: Specifies email recipients for failures in one or more nodes, whether they should receive notifications on warnings, and so on.
Properties can be passed in to a script on the command line, or set procedurally with the <Property Name="Foo" Value="Bar"/> syntax. Properties referenced with the $(Property Name) notation are valid within all strings, and will be expanded as macros when the script is read. If a property name is not set explicitly, it defaults to the contents of an environment variable with the same name.
Local properties, which only affect the scope of the containing XML element (node, group, etc...) are declared with the <Local Name="Foo" Value="Bar"/> element, and will override a similarly named global property for the local property's scope.
Any elements can be conditionally defined via the "If" attribute, and are largely identical to MSBuild conditions. Literals in conditions may be quoted with single (') or double (") quotes, or an unquoted sequence of letters, digits and underscore characters. All literals are considered identical regardless of how they are declared, and are considered case-insensitive for comparisons (so true equals 'True', equals "TRUE"). Available operators are "==", "!=", "And", "Or", "!", "(...)", "Exists(...)" and "HasTrailingSlash(...)". A full grammar is written up in Condition.cs.
File manipulation is done using wildcards and tags. Any attribute that accepts a list of files may consist of: a Perforce-style wildcard (matching any number of "...", "*" and "?" patterns in any location), a full path name, or a reference to a tagged collection of files, denoted by prefixing with a '#' character. Files may be added to a tag set using the <Tag> Task, which also allows performing set union/difference style operations. Each node can declare multiple outputs in the form of a list of named tags, which other nodes can then depend on.
Build graphs may be executed in parallel as part build system. To do so, the initial graph configuration is generated by running with the -Export=<Filename> argument (producing a JSON file listing the nodes and dependencies to execute). Each participating agent should be synced to the same changelist, and UAT should be re-run with the appropriate -Node=<Name> argument. Outputs from different nodes are transferred between agents via shared storage, typically a network share, the path to which can be specified on the command line using the -SharedStorageDir=<Path> argument. Note that the allocation of machines, and coordination between them, is assumed to be managed by an external system.
A schema for the known set of tasks can be generated by running UAT with the "-Schema=<FileName>" option. Generating a schema and referencing it from a BuildGraph script allows Visual Studio to validate and auto-complete elements as you type.
#rb none
#codereview Marc.Audy, Wes.Hunt, Matthew.Griffin, Richard.Fawcett
#tests local only so far, but not part of any build process yet
Change 2903539 on 2016/03/10 by John.Pollard
Improve replay playback debugging of character movement
#rb none
#tests replays
Change 2903526 on 2016/03/10 by Ben.Marsh
Remake changes from //UE4/Main without integration history, to add support for BuildGraph tasks.
#rb none
#tests none
Change 2903512 on 2016/03/10 by Dan.Youhon
Modify minimum Duration values for JumpForce and MoveToForce ability tasks so that having minimum Duration values doesn't trigger check()s
#rb None
#tests Compiles
Change 2903474 on 2016/03/10 by Marc.Audy
Fix crash if ChildActor is null
#rb None
#tests None
Change 2903314 on 2016/03/10 by Marc.Audy
Fix ParentComponent not being persisted and fixup content that was saved in the window it was broken
#rb James.Golding
#tests Selection of child actors works as expected
#jira UE-28201
Change 2903298 on 2016/03/10 by Simon.Tovey
Disabling the trails optimization.
#tests none
#rb none
#codereview Olaf.Piesche
Change 2903124 on 2016/03/10 by Robert.Manuszewski
Small refactor to pak signing to help with exe protection
#rb none
#tests none
[CL 2907678 by Andrew Grant in Main branch]
2016-03-13 18:53:13 -04:00
for ( int i = 0 ; i < Lines . Count ; + + i )
{
if ( Lines [ i ] ! = OriginalLines [ i ] )
{
bDifferent = true ;
break ;
}
}
}
if ( bDifferent )
{
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3075869)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3059740 on 2016/07/21 by Ben.Marsh
Format license violations on separate lines rather than as a single multi-line string, so they can be parsed out correctly by the EC log parser.
Change 3063115 on 2016/07/25 by Ben.Marsh
Add missing projects to Mono AutomationTool solution.
Change 3067125 on 2016/07/27 by Ben.Marsh
Clean up and document the engine versioning system.
* Version.h has a summary of all the different versioning concepts in UE4, as well as an explanation of what all the macros do.
* VersionLocked.h has been removed. ENGINE_NET_VERSION and ENGINE_REPLAY_VERSION can be overriden directly in Version.h if necessary.
* Added explicit macros for ENGINE_CURRENT_CL_VERSION And ENGINE_COMPATIBLE_CL_VERSION. The MODULE_API_VERSION macro is now defined to be the same as ENGINE_COMPATIBLE_CL_VERSION.
* Build/Build.version now includes the compatible CL version, so it can be determined without having to parse header files inside MacToolChain.cs.
* UpdateLocalVersion UAT command now exposes a -CompatibleCL=... argument to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* SetVersion BuildGraph task now has a CompatibleChange="" attribute to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* VersionFileUpdater now makes an effort to parse tokens matching the macros it's going to overwrite, rather than requiring exact matches in whitespace in Version.h.
* Running UpdateLocalVersion now syncs files to revision 0 before writing if P4 is enabled, similarly to UGS, or fails if they are not writable.
Change 3067242 on 2016/07/27 by Ben.Marsh
Fix UGS showing a build failure/warning dialog immediately if you submit while the build is yellow/red. Now ignores builds before your last submitted CL.
Change 3068116 on 2016/07/28 by Ben.Marsh
Add a small Windows utility to terminate all running processes under a given root directory, and run it before and after every sync. Mean to fix instances where zombie editor processes do not terminate correctly and cause subsequent syncs to fail.
Change 3068246 on 2016/07/28 by Ben.Marsh
UGS: Improvements to 'Clean Workspace' dialog - empty folders are now set to be deleted by default, and added a context menu to select all/none/empty/default for a subtree, as well as to open Windows explorer at that location.
Change 3068573 on 2016/07/28 by Ben.Marsh
Attempt to fix AppDomain unload errors; suspect caused by delay to terminate child processes when managed exception is thrown on child threads. Now waits for the currently running threads to finish executing before quitting.
Change 3068575 on 2016/07/28 by Ben.Marsh
Respect the -noxge command-line argument when compiling UHT.
Change 3068665 on 2016/07/28 by Ben.Marsh
Delete any DLLs in output folders which share names with build products. The Windows loader reads DLLs from the first location it finds a file with a matching name, so we need to ensure that it doesn't load stale DLLs when output directories are changed (moving a module into a plugin, for example).
Change 3073316 on 2016/08/02 by Ben.Marsh
CoreUObject: Replace header guards with #pragma once directives.
Change 3073325 on 2016/08/02 by Ben.Marsh
CoreUObject: Manually untangle a few circular includes around ObjectBase.h and Class.h to allow making them into IWYU-style headers.
Change 3074391 on 2016/08/02 by Ben.Marsh
GitHub #2646: Always allow programs to build as part of non-game solution configurations.
Change 3075123 on 2016/08/03 by Richard.Fawcett
Ensure that zip files created outside of Ionic Zip can be unzipped with CommandUtils.UnzipFiles
Zip files created with 7-zip, WinRAR, and Windows Explorer all contain entities for directories, not just the files in them. Code in CommandUtils.UnzipFiles made the assumption that all entities in the zip file were files, and an exception was being thrown on encountering a directory.
Change 3075848 on 2016/08/03 by Ben.Marsh
UBT: Fix a few cases where it's possible to construct a non-canonical DirectoryReference - root directories on Windows must always have a terminating slash, but any other directories must note. DirectoryInfo and Path.GetFullPath() do not enforce this requirement.
Change 3075850 on 2016/08/03 by Ben.Marsh
UBT: Fix UHT failures when running with -nopch.
Change 3077058 by Ben.Marsh
UHT: Remove the auto-generated ObjectBase.h include from generated header files. Was originally added to allow doxygen to parse headers more easily, but was switched to parsing the file only as part of parent files instead.
[CL 3077308 by Ben Marsh in Main branch]
2016-08-04 10:41:07 -04:00
MakeFileWriteable ( MyFile . FullName ) ;
Copying //UE4/Orion-Staging to //UE4/Main (Origin: //Orion/Dev-General @ 2904087)
==========================
MAJOR FEATURES + CHANGES
==========================
#lockdown Nick.Penwarden
Change 2903938 on 2016/03/10 by Frank.Gigliotti
Added an instance ID to FAnimMontageInstance
#CodeReview Laurent.Delayen
#RB Laurent.Delayen
#Tests PIE
Change 2903745 on 2016/03/10 by Wes.Hunt
Update Oodle TPS
#rb none
#tests none
#codereview:john.pollard
Change 2903689 on 2016/03/10 by Uriel.Doyon
New "LogHeroMaterials" console command, displaying the current state of materials and textures on the character hero.
#rb marcus.wasmer
#codereview marcus.wassmer
#tests editor, playing PC games, trying the new command
Change 2903669 on 2016/03/10 by Aaron.McLeran
OR-17180 Make stat soundcues and stat soundwaves NOT display zero volume sounds
- Change only effects debug stat commands for audio guys
#rb none
#tests played paragon with new debug stat commands, confirms doesn't show zero-volume sounds
Change 2903625 on 2016/03/10 by John.Pollard
XB1 Oodle SDK
#rb none
#tests none
#codereview Jeff.Campeau
Change 2903577 on 2016/03/10 by Ben.Marsh
Remaking latest build scripts from //UE4/Main @ 2900980.
Change 2903560 on 2016/03/10 by Ben.Marsh
Initial version of BuildGraph scripts - used to create build processes in UE4 which can be run locally or in parallel across a build farm (assuming synchronization and resource allocation implemented by a separate system). Intended to supersede GUBP.
Build graphs are declared using an XML script using syntax similar to MSBuild, ANT or NAnt, and consist of the following components:
* Tasks: Building blocks which can be executed as part of the build process. Many predefined tasks are provided (<Cook>, <Compile>, <Copy>, <Stage>, <Log>, <PakFile>, etc...), and additional tasks may be added be declaring classes derived from AutomationTool.CustomTask in other UAT modules.
* Nodes: A named sequence of tasks which is executed to produce outputs. Nodes may have input dependencies on other nodes before they can be executed. Declared with the <Node> element in scripts.
* Agent Groups: A set of nodes nodes which is executed on the same machine if running as part of a build system. Has no effect when building locally. Declared with the <Group> element in scripts.
* Triggers: Container for groups which should only be executed when explicitly triggered (using the -Trigger=<Name> or -SkipTriggers command line argument). Declared with the <Trigger> element in scripts.
* Notifiers: Specifies email recipients for failures in one or more nodes, whether they should receive notifications on warnings, and so on.
Properties can be passed in to a script on the command line, or set procedurally with the <Property Name="Foo" Value="Bar"/> syntax. Properties referenced with the $(Property Name) notation are valid within all strings, and will be expanded as macros when the script is read. If a property name is not set explicitly, it defaults to the contents of an environment variable with the same name.
Local properties, which only affect the scope of the containing XML element (node, group, etc...) are declared with the <Local Name="Foo" Value="Bar"/> element, and will override a similarly named global property for the local property's scope.
Any elements can be conditionally defined via the "If" attribute, and are largely identical to MSBuild conditions. Literals in conditions may be quoted with single (') or double (") quotes, or an unquoted sequence of letters, digits and underscore characters. All literals are considered identical regardless of how they are declared, and are considered case-insensitive for comparisons (so true equals 'True', equals "TRUE"). Available operators are "==", "!=", "And", "Or", "!", "(...)", "Exists(...)" and "HasTrailingSlash(...)". A full grammar is written up in Condition.cs.
File manipulation is done using wildcards and tags. Any attribute that accepts a list of files may consist of: a Perforce-style wildcard (matching any number of "...", "*" and "?" patterns in any location), a full path name, or a reference to a tagged collection of files, denoted by prefixing with a '#' character. Files may be added to a tag set using the <Tag> Task, which also allows performing set union/difference style operations. Each node can declare multiple outputs in the form of a list of named tags, which other nodes can then depend on.
Build graphs may be executed in parallel as part build system. To do so, the initial graph configuration is generated by running with the -Export=<Filename> argument (producing a JSON file listing the nodes and dependencies to execute). Each participating agent should be synced to the same changelist, and UAT should be re-run with the appropriate -Node=<Name> argument. Outputs from different nodes are transferred between agents via shared storage, typically a network share, the path to which can be specified on the command line using the -SharedStorageDir=<Path> argument. Note that the allocation of machines, and coordination between them, is assumed to be managed by an external system.
A schema for the known set of tasks can be generated by running UAT with the "-Schema=<FileName>" option. Generating a schema and referencing it from a BuildGraph script allows Visual Studio to validate and auto-complete elements as you type.
#rb none
#codereview Marc.Audy, Wes.Hunt, Matthew.Griffin, Richard.Fawcett
#tests local only so far, but not part of any build process yet
Change 2903539 on 2016/03/10 by John.Pollard
Improve replay playback debugging of character movement
#rb none
#tests replays
Change 2903526 on 2016/03/10 by Ben.Marsh
Remake changes from //UE4/Main without integration history, to add support for BuildGraph tasks.
#rb none
#tests none
Change 2903512 on 2016/03/10 by Dan.Youhon
Modify minimum Duration values for JumpForce and MoveToForce ability tasks so that having minimum Duration values doesn't trigger check()s
#rb None
#tests Compiles
Change 2903474 on 2016/03/10 by Marc.Audy
Fix crash if ChildActor is null
#rb None
#tests None
Change 2903314 on 2016/03/10 by Marc.Audy
Fix ParentComponent not being persisted and fixup content that was saved in the window it was broken
#rb James.Golding
#tests Selection of child actors works as expected
#jira UE-28201
Change 2903298 on 2016/03/10 by Simon.Tovey
Disabling the trails optimization.
#tests none
#rb none
#codereview Olaf.Piesche
Change 2903124 on 2016/03/10 by Robert.Manuszewski
Small refactor to pak signing to help with exe protection
#rb none
#tests none
[CL 2907678 by Andrew Grant in Main branch]
2016-03-13 18:53:13 -04:00
if ( ! InternalUtils . SafeWriteAllLines ( MyFile . FullName , Lines . ToArray ( ) ) )
{
throw new AutomationException ( "Unable to update version info in {0}" , MyFile . FullName ) ;
}
2016-03-24 13:53:55 -04:00
OriginalLines = Lines ;
2014-03-14 14:13:41 -04:00
}
}
/// <summary>
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3075869)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3059740 on 2016/07/21 by Ben.Marsh
Format license violations on separate lines rather than as a single multi-line string, so they can be parsed out correctly by the EC log parser.
Change 3063115 on 2016/07/25 by Ben.Marsh
Add missing projects to Mono AutomationTool solution.
Change 3067125 on 2016/07/27 by Ben.Marsh
Clean up and document the engine versioning system.
* Version.h has a summary of all the different versioning concepts in UE4, as well as an explanation of what all the macros do.
* VersionLocked.h has been removed. ENGINE_NET_VERSION and ENGINE_REPLAY_VERSION can be overriden directly in Version.h if necessary.
* Added explicit macros for ENGINE_CURRENT_CL_VERSION And ENGINE_COMPATIBLE_CL_VERSION. The MODULE_API_VERSION macro is now defined to be the same as ENGINE_COMPATIBLE_CL_VERSION.
* Build/Build.version now includes the compatible CL version, so it can be determined without having to parse header files inside MacToolChain.cs.
* UpdateLocalVersion UAT command now exposes a -CompatibleCL=... argument to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* SetVersion BuildGraph task now has a CompatibleChange="" attribute to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* VersionFileUpdater now makes an effort to parse tokens matching the macros it's going to overwrite, rather than requiring exact matches in whitespace in Version.h.
* Running UpdateLocalVersion now syncs files to revision 0 before writing if P4 is enabled, similarly to UGS, or fails if they are not writable.
Change 3067242 on 2016/07/27 by Ben.Marsh
Fix UGS showing a build failure/warning dialog immediately if you submit while the build is yellow/red. Now ignores builds before your last submitted CL.
Change 3068116 on 2016/07/28 by Ben.Marsh
Add a small Windows utility to terminate all running processes under a given root directory, and run it before and after every sync. Mean to fix instances where zombie editor processes do not terminate correctly and cause subsequent syncs to fail.
Change 3068246 on 2016/07/28 by Ben.Marsh
UGS: Improvements to 'Clean Workspace' dialog - empty folders are now set to be deleted by default, and added a context menu to select all/none/empty/default for a subtree, as well as to open Windows explorer at that location.
Change 3068573 on 2016/07/28 by Ben.Marsh
Attempt to fix AppDomain unload errors; suspect caused by delay to terminate child processes when managed exception is thrown on child threads. Now waits for the currently running threads to finish executing before quitting.
Change 3068575 on 2016/07/28 by Ben.Marsh
Respect the -noxge command-line argument when compiling UHT.
Change 3068665 on 2016/07/28 by Ben.Marsh
Delete any DLLs in output folders which share names with build products. The Windows loader reads DLLs from the first location it finds a file with a matching name, so we need to ensure that it doesn't load stale DLLs when output directories are changed (moving a module into a plugin, for example).
Change 3073316 on 2016/08/02 by Ben.Marsh
CoreUObject: Replace header guards with #pragma once directives.
Change 3073325 on 2016/08/02 by Ben.Marsh
CoreUObject: Manually untangle a few circular includes around ObjectBase.h and Class.h to allow making them into IWYU-style headers.
Change 3074391 on 2016/08/02 by Ben.Marsh
GitHub #2646: Always allow programs to build as part of non-game solution configurations.
Change 3075123 on 2016/08/03 by Richard.Fawcett
Ensure that zip files created outside of Ionic Zip can be unzipped with CommandUtils.UnzipFiles
Zip files created with 7-zip, WinRAR, and Windows Explorer all contain entities for directories, not just the files in them. Code in CommandUtils.UnzipFiles made the assumption that all entities in the zip file were files, and an exception was being thrown on encountering a directory.
Change 3075848 on 2016/08/03 by Ben.Marsh
UBT: Fix a few cases where it's possible to construct a non-canonical DirectoryReference - root directories on Windows must always have a terminating slash, but any other directories must note. DirectoryInfo and Path.GetFullPath() do not enforce this requirement.
Change 3075850 on 2016/08/03 by Ben.Marsh
UBT: Fix UHT failures when running with -nopch.
Change 3077058 by Ben.Marsh
UHT: Remove the auto-generated ObjectBase.h include from generated header files. Was originally added to allow doxygen to parse headers more easily, but was switched to parsing the file only as part of parent files instead.
[CL 3077308 by Ben Marsh in Main branch]
2016-08-04 10:41:07 -04:00
/// Makes a version file writeable. If P4 is enabled, syncs it to revision 0 to prevent conflicts with the P4 have table rather than checking it out, since we never intend to
/// submit it to Perforce. For existing writeable files, P4V prompts the user to overwrite the next time they sync.
2014-03-14 14:13:41 -04:00
/// </summary>
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3075869)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3059740 on 2016/07/21 by Ben.Marsh
Format license violations on separate lines rather than as a single multi-line string, so they can be parsed out correctly by the EC log parser.
Change 3063115 on 2016/07/25 by Ben.Marsh
Add missing projects to Mono AutomationTool solution.
Change 3067125 on 2016/07/27 by Ben.Marsh
Clean up and document the engine versioning system.
* Version.h has a summary of all the different versioning concepts in UE4, as well as an explanation of what all the macros do.
* VersionLocked.h has been removed. ENGINE_NET_VERSION and ENGINE_REPLAY_VERSION can be overriden directly in Version.h if necessary.
* Added explicit macros for ENGINE_CURRENT_CL_VERSION And ENGINE_COMPATIBLE_CL_VERSION. The MODULE_API_VERSION macro is now defined to be the same as ENGINE_COMPATIBLE_CL_VERSION.
* Build/Build.version now includes the compatible CL version, so it can be determined without having to parse header files inside MacToolChain.cs.
* UpdateLocalVersion UAT command now exposes a -CompatibleCL=... argument to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* SetVersion BuildGraph task now has a CompatibleChange="" attribute to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* VersionFileUpdater now makes an effort to parse tokens matching the macros it's going to overwrite, rather than requiring exact matches in whitespace in Version.h.
* Running UpdateLocalVersion now syncs files to revision 0 before writing if P4 is enabled, similarly to UGS, or fails if they are not writable.
Change 3067242 on 2016/07/27 by Ben.Marsh
Fix UGS showing a build failure/warning dialog immediately if you submit while the build is yellow/red. Now ignores builds before your last submitted CL.
Change 3068116 on 2016/07/28 by Ben.Marsh
Add a small Windows utility to terminate all running processes under a given root directory, and run it before and after every sync. Mean to fix instances where zombie editor processes do not terminate correctly and cause subsequent syncs to fail.
Change 3068246 on 2016/07/28 by Ben.Marsh
UGS: Improvements to 'Clean Workspace' dialog - empty folders are now set to be deleted by default, and added a context menu to select all/none/empty/default for a subtree, as well as to open Windows explorer at that location.
Change 3068573 on 2016/07/28 by Ben.Marsh
Attempt to fix AppDomain unload errors; suspect caused by delay to terminate child processes when managed exception is thrown on child threads. Now waits for the currently running threads to finish executing before quitting.
Change 3068575 on 2016/07/28 by Ben.Marsh
Respect the -noxge command-line argument when compiling UHT.
Change 3068665 on 2016/07/28 by Ben.Marsh
Delete any DLLs in output folders which share names with build products. The Windows loader reads DLLs from the first location it finds a file with a matching name, so we need to ensure that it doesn't load stale DLLs when output directories are changed (moving a module into a plugin, for example).
Change 3073316 on 2016/08/02 by Ben.Marsh
CoreUObject: Replace header guards with #pragma once directives.
Change 3073325 on 2016/08/02 by Ben.Marsh
CoreUObject: Manually untangle a few circular includes around ObjectBase.h and Class.h to allow making them into IWYU-style headers.
Change 3074391 on 2016/08/02 by Ben.Marsh
GitHub #2646: Always allow programs to build as part of non-game solution configurations.
Change 3075123 on 2016/08/03 by Richard.Fawcett
Ensure that zip files created outside of Ionic Zip can be unzipped with CommandUtils.UnzipFiles
Zip files created with 7-zip, WinRAR, and Windows Explorer all contain entities for directories, not just the files in them. Code in CommandUtils.UnzipFiles made the assumption that all entities in the zip file were files, and an exception was being thrown on encountering a directory.
Change 3075848 on 2016/08/03 by Ben.Marsh
UBT: Fix a few cases where it's possible to construct a non-canonical DirectoryReference - root directories on Windows must always have a terminating slash, but any other directories must note. DirectoryInfo and Path.GetFullPath() do not enforce this requirement.
Change 3075850 on 2016/08/03 by Ben.Marsh
UBT: Fix UHT failures when running with -nopch.
Change 3077058 by Ben.Marsh
UHT: Remove the auto-generated ObjectBase.h include from generated header files. Was originally added to allow doxygen to parse headers more easily, but was switched to parsing the file only as part of parent files instead.
[CL 3077308 by Ben Marsh in Main branch]
2016-08-04 10:41:07 -04:00
/// <param name="FileName">The file to make writeable</param>
2023-02-16 13:11:29 -05:00
/// <param name="bForce">Whether to force the writeable flag if P4 cannot clear it</param>
public static void MakeFileWriteable ( string FileName , bool bForce = false )
2014-03-14 14:13:41 -04:00
{
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3075869)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3059740 on 2016/07/21 by Ben.Marsh
Format license violations on separate lines rather than as a single multi-line string, so they can be parsed out correctly by the EC log parser.
Change 3063115 on 2016/07/25 by Ben.Marsh
Add missing projects to Mono AutomationTool solution.
Change 3067125 on 2016/07/27 by Ben.Marsh
Clean up and document the engine versioning system.
* Version.h has a summary of all the different versioning concepts in UE4, as well as an explanation of what all the macros do.
* VersionLocked.h has been removed. ENGINE_NET_VERSION and ENGINE_REPLAY_VERSION can be overriden directly in Version.h if necessary.
* Added explicit macros for ENGINE_CURRENT_CL_VERSION And ENGINE_COMPATIBLE_CL_VERSION. The MODULE_API_VERSION macro is now defined to be the same as ENGINE_COMPATIBLE_CL_VERSION.
* Build/Build.version now includes the compatible CL version, so it can be determined without having to parse header files inside MacToolChain.cs.
* UpdateLocalVersion UAT command now exposes a -CompatibleCL=... argument to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* SetVersion BuildGraph task now has a CompatibleChange="" attribute to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* VersionFileUpdater now makes an effort to parse tokens matching the macros it's going to overwrite, rather than requiring exact matches in whitespace in Version.h.
* Running UpdateLocalVersion now syncs files to revision 0 before writing if P4 is enabled, similarly to UGS, or fails if they are not writable.
Change 3067242 on 2016/07/27 by Ben.Marsh
Fix UGS showing a build failure/warning dialog immediately if you submit while the build is yellow/red. Now ignores builds before your last submitted CL.
Change 3068116 on 2016/07/28 by Ben.Marsh
Add a small Windows utility to terminate all running processes under a given root directory, and run it before and after every sync. Mean to fix instances where zombie editor processes do not terminate correctly and cause subsequent syncs to fail.
Change 3068246 on 2016/07/28 by Ben.Marsh
UGS: Improvements to 'Clean Workspace' dialog - empty folders are now set to be deleted by default, and added a context menu to select all/none/empty/default for a subtree, as well as to open Windows explorer at that location.
Change 3068573 on 2016/07/28 by Ben.Marsh
Attempt to fix AppDomain unload errors; suspect caused by delay to terminate child processes when managed exception is thrown on child threads. Now waits for the currently running threads to finish executing before quitting.
Change 3068575 on 2016/07/28 by Ben.Marsh
Respect the -noxge command-line argument when compiling UHT.
Change 3068665 on 2016/07/28 by Ben.Marsh
Delete any DLLs in output folders which share names with build products. The Windows loader reads DLLs from the first location it finds a file with a matching name, so we need to ensure that it doesn't load stale DLLs when output directories are changed (moving a module into a plugin, for example).
Change 3073316 on 2016/08/02 by Ben.Marsh
CoreUObject: Replace header guards with #pragma once directives.
Change 3073325 on 2016/08/02 by Ben.Marsh
CoreUObject: Manually untangle a few circular includes around ObjectBase.h and Class.h to allow making them into IWYU-style headers.
Change 3074391 on 2016/08/02 by Ben.Marsh
GitHub #2646: Always allow programs to build as part of non-game solution configurations.
Change 3075123 on 2016/08/03 by Richard.Fawcett
Ensure that zip files created outside of Ionic Zip can be unzipped with CommandUtils.UnzipFiles
Zip files created with 7-zip, WinRAR, and Windows Explorer all contain entities for directories, not just the files in them. Code in CommandUtils.UnzipFiles made the assumption that all entities in the zip file were files, and an exception was being thrown on encountering a directory.
Change 3075848 on 2016/08/03 by Ben.Marsh
UBT: Fix a few cases where it's possible to construct a non-canonical DirectoryReference - root directories on Windows must always have a terminating slash, but any other directories must note. DirectoryInfo and Path.GetFullPath() do not enforce this requirement.
Change 3075850 on 2016/08/03 by Ben.Marsh
UBT: Fix UHT failures when running with -nopch.
Change 3077058 by Ben.Marsh
UHT: Remove the auto-generated ObjectBase.h include from generated header files. Was originally added to allow doxygen to parse headers more easily, but was switched to parsing the file only as part of parent files instead.
[CL 3077308 by Ben Marsh in Main branch]
2016-08-04 10:41:07 -04:00
if ( CommandUtils . IsReadOnly ( FileName ) )
2014-03-14 14:13:41 -04:00
{
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3075869)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3059740 on 2016/07/21 by Ben.Marsh
Format license violations on separate lines rather than as a single multi-line string, so they can be parsed out correctly by the EC log parser.
Change 3063115 on 2016/07/25 by Ben.Marsh
Add missing projects to Mono AutomationTool solution.
Change 3067125 on 2016/07/27 by Ben.Marsh
Clean up and document the engine versioning system.
* Version.h has a summary of all the different versioning concepts in UE4, as well as an explanation of what all the macros do.
* VersionLocked.h has been removed. ENGINE_NET_VERSION and ENGINE_REPLAY_VERSION can be overriden directly in Version.h if necessary.
* Added explicit macros for ENGINE_CURRENT_CL_VERSION And ENGINE_COMPATIBLE_CL_VERSION. The MODULE_API_VERSION macro is now defined to be the same as ENGINE_COMPATIBLE_CL_VERSION.
* Build/Build.version now includes the compatible CL version, so it can be determined without having to parse header files inside MacToolChain.cs.
* UpdateLocalVersion UAT command now exposes a -CompatibleCL=... argument to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* SetVersion BuildGraph task now has a CompatibleChange="" attribute to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* VersionFileUpdater now makes an effort to parse tokens matching the macros it's going to overwrite, rather than requiring exact matches in whitespace in Version.h.
* Running UpdateLocalVersion now syncs files to revision 0 before writing if P4 is enabled, similarly to UGS, or fails if they are not writable.
Change 3067242 on 2016/07/27 by Ben.Marsh
Fix UGS showing a build failure/warning dialog immediately if you submit while the build is yellow/red. Now ignores builds before your last submitted CL.
Change 3068116 on 2016/07/28 by Ben.Marsh
Add a small Windows utility to terminate all running processes under a given root directory, and run it before and after every sync. Mean to fix instances where zombie editor processes do not terminate correctly and cause subsequent syncs to fail.
Change 3068246 on 2016/07/28 by Ben.Marsh
UGS: Improvements to 'Clean Workspace' dialog - empty folders are now set to be deleted by default, and added a context menu to select all/none/empty/default for a subtree, as well as to open Windows explorer at that location.
Change 3068573 on 2016/07/28 by Ben.Marsh
Attempt to fix AppDomain unload errors; suspect caused by delay to terminate child processes when managed exception is thrown on child threads. Now waits for the currently running threads to finish executing before quitting.
Change 3068575 on 2016/07/28 by Ben.Marsh
Respect the -noxge command-line argument when compiling UHT.
Change 3068665 on 2016/07/28 by Ben.Marsh
Delete any DLLs in output folders which share names with build products. The Windows loader reads DLLs from the first location it finds a file with a matching name, so we need to ensure that it doesn't load stale DLLs when output directories are changed (moving a module into a plugin, for example).
Change 3073316 on 2016/08/02 by Ben.Marsh
CoreUObject: Replace header guards with #pragma once directives.
Change 3073325 on 2016/08/02 by Ben.Marsh
CoreUObject: Manually untangle a few circular includes around ObjectBase.h and Class.h to allow making them into IWYU-style headers.
Change 3074391 on 2016/08/02 by Ben.Marsh
GitHub #2646: Always allow programs to build as part of non-game solution configurations.
Change 3075123 on 2016/08/03 by Richard.Fawcett
Ensure that zip files created outside of Ionic Zip can be unzipped with CommandUtils.UnzipFiles
Zip files created with 7-zip, WinRAR, and Windows Explorer all contain entities for directories, not just the files in them. Code in CommandUtils.UnzipFiles made the assumption that all entities in the zip file were files, and an exception was being thrown on encountering a directory.
Change 3075848 on 2016/08/03 by Ben.Marsh
UBT: Fix a few cases where it's possible to construct a non-canonical DirectoryReference - root directories on Windows must always have a terminating slash, but any other directories must note. DirectoryInfo and Path.GetFullPath() do not enforce this requirement.
Change 3075850 on 2016/08/03 by Ben.Marsh
UBT: Fix UHT failures when running with -nopch.
Change 3077058 by Ben.Marsh
UHT: Remove the auto-generated ObjectBase.h include from generated header files. Was originally added to allow doxygen to parse headers more easily, but was switched to parsing the file only as part of parent files instead.
[CL 3077308 by Ben Marsh in Main branch]
2016-08-04 10:41:07 -04:00
if ( CommandUtils . P4Enabled )
2014-03-14 14:13:41 -04:00
{
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3075869)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3059740 on 2016/07/21 by Ben.Marsh
Format license violations on separate lines rather than as a single multi-line string, so they can be parsed out correctly by the EC log parser.
Change 3063115 on 2016/07/25 by Ben.Marsh
Add missing projects to Mono AutomationTool solution.
Change 3067125 on 2016/07/27 by Ben.Marsh
Clean up and document the engine versioning system.
* Version.h has a summary of all the different versioning concepts in UE4, as well as an explanation of what all the macros do.
* VersionLocked.h has been removed. ENGINE_NET_VERSION and ENGINE_REPLAY_VERSION can be overriden directly in Version.h if necessary.
* Added explicit macros for ENGINE_CURRENT_CL_VERSION And ENGINE_COMPATIBLE_CL_VERSION. The MODULE_API_VERSION macro is now defined to be the same as ENGINE_COMPATIBLE_CL_VERSION.
* Build/Build.version now includes the compatible CL version, so it can be determined without having to parse header files inside MacToolChain.cs.
* UpdateLocalVersion UAT command now exposes a -CompatibleCL=... argument to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* SetVersion BuildGraph task now has a CompatibleChange="" attribute to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* VersionFileUpdater now makes an effort to parse tokens matching the macros it's going to overwrite, rather than requiring exact matches in whitespace in Version.h.
* Running UpdateLocalVersion now syncs files to revision 0 before writing if P4 is enabled, similarly to UGS, or fails if they are not writable.
Change 3067242 on 2016/07/27 by Ben.Marsh
Fix UGS showing a build failure/warning dialog immediately if you submit while the build is yellow/red. Now ignores builds before your last submitted CL.
Change 3068116 on 2016/07/28 by Ben.Marsh
Add a small Windows utility to terminate all running processes under a given root directory, and run it before and after every sync. Mean to fix instances where zombie editor processes do not terminate correctly and cause subsequent syncs to fail.
Change 3068246 on 2016/07/28 by Ben.Marsh
UGS: Improvements to 'Clean Workspace' dialog - empty folders are now set to be deleted by default, and added a context menu to select all/none/empty/default for a subtree, as well as to open Windows explorer at that location.
Change 3068573 on 2016/07/28 by Ben.Marsh
Attempt to fix AppDomain unload errors; suspect caused by delay to terminate child processes when managed exception is thrown on child threads. Now waits for the currently running threads to finish executing before quitting.
Change 3068575 on 2016/07/28 by Ben.Marsh
Respect the -noxge command-line argument when compiling UHT.
Change 3068665 on 2016/07/28 by Ben.Marsh
Delete any DLLs in output folders which share names with build products. The Windows loader reads DLLs from the first location it finds a file with a matching name, so we need to ensure that it doesn't load stale DLLs when output directories are changed (moving a module into a plugin, for example).
Change 3073316 on 2016/08/02 by Ben.Marsh
CoreUObject: Replace header guards with #pragma once directives.
Change 3073325 on 2016/08/02 by Ben.Marsh
CoreUObject: Manually untangle a few circular includes around ObjectBase.h and Class.h to allow making them into IWYU-style headers.
Change 3074391 on 2016/08/02 by Ben.Marsh
GitHub #2646: Always allow programs to build as part of non-game solution configurations.
Change 3075123 on 2016/08/03 by Richard.Fawcett
Ensure that zip files created outside of Ionic Zip can be unzipped with CommandUtils.UnzipFiles
Zip files created with 7-zip, WinRAR, and Windows Explorer all contain entities for directories, not just the files in them. Code in CommandUtils.UnzipFiles made the assumption that all entities in the zip file were files, and an exception was being thrown on encountering a directory.
Change 3075848 on 2016/08/03 by Ben.Marsh
UBT: Fix a few cases where it's possible to construct a non-canonical DirectoryReference - root directories on Windows must always have a terminating slash, but any other directories must note. DirectoryInfo and Path.GetFullPath() do not enforce this requirement.
Change 3075850 on 2016/08/03 by Ben.Marsh
UBT: Fix UHT failures when running with -nopch.
Change 3077058 by Ben.Marsh
UHT: Remove the auto-generated ObjectBase.h include from generated header files. Was originally added to allow doxygen to parse headers more easily, but was switched to parsing the file only as part of parent files instead.
[CL 3077308 by Ben Marsh in Main branch]
2016-08-04 10:41:07 -04:00
CommandUtils . P4 . Sync ( String . Format ( "\"{0}#0\"" , FileName ) , false , false ) ;
}
2023-02-16 13:11:29 -05:00
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3075869)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3059740 on 2016/07/21 by Ben.Marsh
Format license violations on separate lines rather than as a single multi-line string, so they can be parsed out correctly by the EC log parser.
Change 3063115 on 2016/07/25 by Ben.Marsh
Add missing projects to Mono AutomationTool solution.
Change 3067125 on 2016/07/27 by Ben.Marsh
Clean up and document the engine versioning system.
* Version.h has a summary of all the different versioning concepts in UE4, as well as an explanation of what all the macros do.
* VersionLocked.h has been removed. ENGINE_NET_VERSION and ENGINE_REPLAY_VERSION can be overriden directly in Version.h if necessary.
* Added explicit macros for ENGINE_CURRENT_CL_VERSION And ENGINE_COMPATIBLE_CL_VERSION. The MODULE_API_VERSION macro is now defined to be the same as ENGINE_COMPATIBLE_CL_VERSION.
* Build/Build.version now includes the compatible CL version, so it can be determined without having to parse header files inside MacToolChain.cs.
* UpdateLocalVersion UAT command now exposes a -CompatibleCL=... argument to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* SetVersion BuildGraph task now has a CompatibleChange="" attribute to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* VersionFileUpdater now makes an effort to parse tokens matching the macros it's going to overwrite, rather than requiring exact matches in whitespace in Version.h.
* Running UpdateLocalVersion now syncs files to revision 0 before writing if P4 is enabled, similarly to UGS, or fails if they are not writable.
Change 3067242 on 2016/07/27 by Ben.Marsh
Fix UGS showing a build failure/warning dialog immediately if you submit while the build is yellow/red. Now ignores builds before your last submitted CL.
Change 3068116 on 2016/07/28 by Ben.Marsh
Add a small Windows utility to terminate all running processes under a given root directory, and run it before and after every sync. Mean to fix instances where zombie editor processes do not terminate correctly and cause subsequent syncs to fail.
Change 3068246 on 2016/07/28 by Ben.Marsh
UGS: Improvements to 'Clean Workspace' dialog - empty folders are now set to be deleted by default, and added a context menu to select all/none/empty/default for a subtree, as well as to open Windows explorer at that location.
Change 3068573 on 2016/07/28 by Ben.Marsh
Attempt to fix AppDomain unload errors; suspect caused by delay to terminate child processes when managed exception is thrown on child threads. Now waits for the currently running threads to finish executing before quitting.
Change 3068575 on 2016/07/28 by Ben.Marsh
Respect the -noxge command-line argument when compiling UHT.
Change 3068665 on 2016/07/28 by Ben.Marsh
Delete any DLLs in output folders which share names with build products. The Windows loader reads DLLs from the first location it finds a file with a matching name, so we need to ensure that it doesn't load stale DLLs when output directories are changed (moving a module into a plugin, for example).
Change 3073316 on 2016/08/02 by Ben.Marsh
CoreUObject: Replace header guards with #pragma once directives.
Change 3073325 on 2016/08/02 by Ben.Marsh
CoreUObject: Manually untangle a few circular includes around ObjectBase.h and Class.h to allow making them into IWYU-style headers.
Change 3074391 on 2016/08/02 by Ben.Marsh
GitHub #2646: Always allow programs to build as part of non-game solution configurations.
Change 3075123 on 2016/08/03 by Richard.Fawcett
Ensure that zip files created outside of Ionic Zip can be unzipped with CommandUtils.UnzipFiles
Zip files created with 7-zip, WinRAR, and Windows Explorer all contain entities for directories, not just the files in them. Code in CommandUtils.UnzipFiles made the assumption that all entities in the zip file were files, and an exception was being thrown on encountering a directory.
Change 3075848 on 2016/08/03 by Ben.Marsh
UBT: Fix a few cases where it's possible to construct a non-canonical DirectoryReference - root directories on Windows must always have a terminating slash, but any other directories must note. DirectoryInfo and Path.GetFullPath() do not enforce this requirement.
Change 3075850 on 2016/08/03 by Ben.Marsh
UBT: Fix UHT failures when running with -nopch.
Change 3077058 by Ben.Marsh
UHT: Remove the auto-generated ObjectBase.h include from generated header files. Was originally added to allow doxygen to parse headers more easily, but was switched to parsing the file only as part of parent files instead.
[CL 3077308 by Ben Marsh in Main branch]
2016-08-04 10:41:07 -04:00
if ( CommandUtils . FileExists_NoExceptions ( FileName ) & & CommandUtils . IsReadOnly ( FileName ) )
{
2023-02-16 13:11:29 -05:00
if ( bForce )
{
CommandUtils . SetFileAttributes ( FileName , ReadOnly : false ) ;
}
else
{
throw new AutomationException ( "Cannot write to {0}; file is read-only" , FileName ) ;
}
2014-03-14 14:13:41 -04:00
}
}
}
/// <summary>
/// Doc
/// </summary>
protected FileInfo MyFile ;
/// <summary>
/// Doc
/// </summary>
2014-04-30 07:58:10 -04:00
protected List < string > Lines ;
Copying //UE4/Orion-Staging to //UE4/Main (Origin: //Orion/Dev-General @ 2904087)
==========================
MAJOR FEATURES + CHANGES
==========================
#lockdown Nick.Penwarden
Change 2903938 on 2016/03/10 by Frank.Gigliotti
Added an instance ID to FAnimMontageInstance
#CodeReview Laurent.Delayen
#RB Laurent.Delayen
#Tests PIE
Change 2903745 on 2016/03/10 by Wes.Hunt
Update Oodle TPS
#rb none
#tests none
#codereview:john.pollard
Change 2903689 on 2016/03/10 by Uriel.Doyon
New "LogHeroMaterials" console command, displaying the current state of materials and textures on the character hero.
#rb marcus.wasmer
#codereview marcus.wassmer
#tests editor, playing PC games, trying the new command
Change 2903669 on 2016/03/10 by Aaron.McLeran
OR-17180 Make stat soundcues and stat soundwaves NOT display zero volume sounds
- Change only effects debug stat commands for audio guys
#rb none
#tests played paragon with new debug stat commands, confirms doesn't show zero-volume sounds
Change 2903625 on 2016/03/10 by John.Pollard
XB1 Oodle SDK
#rb none
#tests none
#codereview Jeff.Campeau
Change 2903577 on 2016/03/10 by Ben.Marsh
Remaking latest build scripts from //UE4/Main @ 2900980.
Change 2903560 on 2016/03/10 by Ben.Marsh
Initial version of BuildGraph scripts - used to create build processes in UE4 which can be run locally or in parallel across a build farm (assuming synchronization and resource allocation implemented by a separate system). Intended to supersede GUBP.
Build graphs are declared using an XML script using syntax similar to MSBuild, ANT or NAnt, and consist of the following components:
* Tasks: Building blocks which can be executed as part of the build process. Many predefined tasks are provided (<Cook>, <Compile>, <Copy>, <Stage>, <Log>, <PakFile>, etc...), and additional tasks may be added be declaring classes derived from AutomationTool.CustomTask in other UAT modules.
* Nodes: A named sequence of tasks which is executed to produce outputs. Nodes may have input dependencies on other nodes before they can be executed. Declared with the <Node> element in scripts.
* Agent Groups: A set of nodes nodes which is executed on the same machine if running as part of a build system. Has no effect when building locally. Declared with the <Group> element in scripts.
* Triggers: Container for groups which should only be executed when explicitly triggered (using the -Trigger=<Name> or -SkipTriggers command line argument). Declared with the <Trigger> element in scripts.
* Notifiers: Specifies email recipients for failures in one or more nodes, whether they should receive notifications on warnings, and so on.
Properties can be passed in to a script on the command line, or set procedurally with the <Property Name="Foo" Value="Bar"/> syntax. Properties referenced with the $(Property Name) notation are valid within all strings, and will be expanded as macros when the script is read. If a property name is not set explicitly, it defaults to the contents of an environment variable with the same name.
Local properties, which only affect the scope of the containing XML element (node, group, etc...) are declared with the <Local Name="Foo" Value="Bar"/> element, and will override a similarly named global property for the local property's scope.
Any elements can be conditionally defined via the "If" attribute, and are largely identical to MSBuild conditions. Literals in conditions may be quoted with single (') or double (") quotes, or an unquoted sequence of letters, digits and underscore characters. All literals are considered identical regardless of how they are declared, and are considered case-insensitive for comparisons (so true equals 'True', equals "TRUE"). Available operators are "==", "!=", "And", "Or", "!", "(...)", "Exists(...)" and "HasTrailingSlash(...)". A full grammar is written up in Condition.cs.
File manipulation is done using wildcards and tags. Any attribute that accepts a list of files may consist of: a Perforce-style wildcard (matching any number of "...", "*" and "?" patterns in any location), a full path name, or a reference to a tagged collection of files, denoted by prefixing with a '#' character. Files may be added to a tag set using the <Tag> Task, which also allows performing set union/difference style operations. Each node can declare multiple outputs in the form of a list of named tags, which other nodes can then depend on.
Build graphs may be executed in parallel as part build system. To do so, the initial graph configuration is generated by running with the -Export=<Filename> argument (producing a JSON file listing the nodes and dependencies to execute). Each participating agent should be synced to the same changelist, and UAT should be re-run with the appropriate -Node=<Name> argument. Outputs from different nodes are transferred between agents via shared storage, typically a network share, the path to which can be specified on the command line using the -SharedStorageDir=<Path> argument. Note that the allocation of machines, and coordination between them, is assumed to be managed by an external system.
A schema for the known set of tasks can be generated by running UAT with the "-Schema=<FileName>" option. Generating a schema and referencing it from a BuildGraph script allows Visual Studio to validate and auto-complete elements as you type.
#rb none
#codereview Marc.Audy, Wes.Hunt, Matthew.Griffin, Richard.Fawcett
#tests local only so far, but not part of any build process yet
Change 2903539 on 2016/03/10 by John.Pollard
Improve replay playback debugging of character movement
#rb none
#tests replays
Change 2903526 on 2016/03/10 by Ben.Marsh
Remake changes from //UE4/Main without integration history, to add support for BuildGraph tasks.
#rb none
#tests none
Change 2903512 on 2016/03/10 by Dan.Youhon
Modify minimum Duration values for JumpForce and MoveToForce ability tasks so that having minimum Duration values doesn't trigger check()s
#rb None
#tests Compiles
Change 2903474 on 2016/03/10 by Marc.Audy
Fix crash if ChildActor is null
#rb None
#tests None
Change 2903314 on 2016/03/10 by Marc.Audy
Fix ParentComponent not being persisted and fixup content that was saved in the window it was broken
#rb James.Golding
#tests Selection of child actors works as expected
#jira UE-28201
Change 2903298 on 2016/03/10 by Simon.Tovey
Disabling the trails optimization.
#tests none
#rb none
#codereview Olaf.Piesche
Change 2903124 on 2016/03/10 by Robert.Manuszewski
Small refactor to pak signing to help with exe protection
#rb none
#tests none
[CL 2907678 by Andrew Grant in Main branch]
2016-03-13 18:53:13 -04:00
/// <summary>
/// Doc
/// </summary>
protected List < string > OriginalLines ;
2014-03-14 14:13:41 -04:00
}
}