2019-01-02 14:54:39 -05:00
|
|
|
// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.
|
2016-06-29 18:00:01 -04:00
|
|
|
|
|
|
|
|
#include "BuildPatchTool.h"
|
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3209340)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3209340 on 2016/11/23 by Ben.Marsh
Convert UE4 codebase to an "include what you use" model - where every header just includes the dependencies it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h.
Measured full rebuild times around 2x faster using XGE on Windows, and improvements of 25% or more for incremental builds and full rebuilds on most other platforms.
* Every header now includes everything it needs to compile.
* There's a CoreMinimal.h header that gets you a set of ubiquitous types from Core (eg. FString, FName, TArray, FVector, etc...). Most headers now include this first.
* There's a CoreTypes.h header that sets up primitive UE4 types and build macros (int32, PLATFORM_WIN64, etc...). All headers in Core include this first, as does CoreMinimal.h.
* Every .cpp file includes its matching .h file first.
* This helps validate that each header is including everything it needs to compile.
* No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more.
* You will get a warning if you try to include one of these from the engine. They still exist for compatibility with game projects and do not produce warnings when included there.
* There have only been minor changes to our internal games down to accommodate these changes. The intent is for this to be as seamless as possible.
* No engine code explicitly includes a precompiled header any more.
* We still use PCHs, but they're force-included on the compiler command line by UnrealBuildTool instead. This lets us tune what they contain without breaking any existing include dependencies.
* PCHs are generated by a tool to get a statistical amount of coverage for the source files using it, and I've seeded the new shared PCHs to contain any header included by > 15% of source files.
Tool used to generate this transform is at Engine\Source\Programs\IncludeTool.
[CL 3209342 by Ben Marsh in Main branch]
2016-11-23 15:48:37 -05:00
|
|
|
#include "UObject/Object.h"
|
|
|
|
|
#include "RequiredProgramMainCPPInclude.h"
|
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 3847469)
#lockdown Nick.Penwarden
#rb none
============================
MAJOR FEATURES & CHANGES
============================
Change 3805828 by Gil.Gribb
UE4 - Fixed a bug in the lock free stalling task queue and adjusted a comment. The code is not current used, so this is not actually change the way the code works.
Change 3806784 by Ben.Marsh
UAT: Remove code to compile UBT when using UE4Build. It should already be compiled as a dependency of UAT.
Change 3807549 by Graeme.Thornton
Add a cook timer around VerifyCanCookPackage. A licensee reports this taking a lot of time so it'll be good to account for it.
Change 3807727 by Graeme.Thornton
Unhide the text asset format experimental editor option
Change 3807746 by Josh.Engebretson
Remove WER from iOS platform
Change 3807928 by Robert.Manuszewski
When async loading, GC Clusters will be created after packages have been processed to avoid situations where some of the objects that are being added to a cluster haven't been fully loaded yet
Change 3808221 by Steve.Robb
GitHub #4307 - Made GetModulePtr() thread safe by not using GetModule()
^ I'm not convinced by how much thread-safer this is really, but it's tidier anyway.
Change 3809233 by Graeme.Thornton
TBA: Misc changes to text asset commandlet
- Rename mode to "loadsave"
- Add -outputFormat option which can be assigned "text" or "binary"
- When saving binary, use a differentiated filename so that source assets aren't overwritten
Change 3809518 by Ben.Marsh
Remove the outdated UnrealSync automation script.
Change 3809643 by Steve.Robb
GitHub #4277 : fix bug; FMath::FormatIntToHumanReadable 3rd comma and negative value
#jira UE-53037
Change 3809862 by Steve.Robb
GitHub #3342 : [FRotator.h] Fix to DecompressAxisFromByte to be more efficient and reflect its intent accurately
#jira UE-42593
Change 3811190 by Graeme.Thornton
Add support for writing specific log channels to their own files
Change 3811197 by Graeme.Thornton
Minor updates to output formatting and timing for the text asset commandlet
Change 3811257 by Robert.Manuszewski
Cluster creation will now be time-sliced
Change 3811565 by Steve.Robb
Define out non-monolithic module functions.
Change 3812561 by Steve.Robb
GitHub #3886 : Enable Brace-Initialization for Declaring Variables
Incorrect semi-colon search removed after discussion with author.
Test added.
#jira UE-48242
Change 3812864 by Steve.Robb
Removal of some unproven code which was supposed to fix hot reloading BP class functions in plugins.
See: https://udn.unrealengine.com/questions/376978/aitask-blueprint-nodes-disappear-when-their-module.html
#jira UE-53089
Change 3820358 by Ben.Marsh
PR #4358: Incredibuild use ShowAgent by default (Contributed by projectgheist)
Change 3822594 by Ben.Marsh
UAT: Improvements to log file handling.
- Always create log files in the final location, rather than writing to a temp directory and copying in later.
- Now supports -Verbose and -VeryVerbose for increasing log verbosity, rather than -Verbose=XXX.
- Keep a backlog of log output before the log system is initialized, and flush it to the log file once it is.
- Allow buildmachines to specify the uebp_FinalLogFolder environment variable, which is used to form paths for display. When build machines copy log files elsewhere after UAT finishes (eg. a network share), this allows error messages to display the right location.
Change 3823695 by Ben.Marsh
UGS: Fix issue where precompiled binaries would not be shown as available for a change until scrolling the last submitted code change into the buffer (other symptoms, like de-focussing the main window would cause it to go back to an unavailable state, since the changes buffer was shrunk).
Now always queries changes up to the last change for which zipped binaries are available.
Change 3823845 by Ben.Marsh
UBT: Exclude C# projects for unsupported platforms when generating project files.
Change 3824180 by Ben.Marsh
UGS: Add an option to show changes by build machines, and move the "only show reviewed" option in there too (Options > Show Changes).
#jira
Change 3825777 by Steve.Robb
Fix to return value of StringToBytes.
Change 3825810 by Ben.Marsh
UBT: Reduce length of include paths for MSVC toolchain.
Change 3825822 by Robert.Manuszewski
Optimized PIE lazy pointer fixup. Should be up to 8x faster now.
Change 3826734 by Ben.Marsh
Remove code to disable TextureFormatAndroid on Linux. It seems to be an editor dependency.
Change 3827730 by Steve.Robb
Try to avoid decltype(auto) if it's not supported.
See: https://udn.unrealengine.com/questions/395644/build-417-with-c11-on-linux-ttuple-errors.html
Change 3827745 by Steve.Robb
Initializer list support for TMap.
Change 3827770 by Steve.Robb
GitHub #4399 : Added a CONSTEXPR qualifiers to FVariant::GetType()
#jira UE-53813
Change 3829189 by Ben.Marsh
UBT: Now always writes a minimal log file. By default, just contains the regular console output and any reasons why actions are outdated and needed to be executed. UAT directs child UBT instances to output logs into its own log folder, so that build machines can save them off.
Change 3830444 by Steve.Robb
BuildVersion and ModuleManifest moved to Core, and parsing of these files reimplemented to avoid a JSON library.
This should be revisited when Core has its own JSON library.
Change 3830718 by Ben.Marsh
Fix incorrect group name being returned by FStatNameAndInfo::GetGroupName() for stat groups.
The editor populates the viewport stats list by calling this for every registered stat and stat group (via FLevelViewportCommands::HandleNewStatGroup). The menu entry attempts to show the stat name with STAT_XXX stripped from the start as the menu item label, with the free-form text description as a tooltip.
For stat groups, the it would previously just return the stat group name as "Groups" (due to the raw naming convention of "//Groups//STATGROUP_Foo//..."). Since this didn't match the expected naming convention in FLevelViewportCommands::HandleNewStat (ie. STAT_XXX or STATGROUP_XXX), it would fail to add it.
When the first actual stat belonging to that group is added, it would add a menu entry for the group based on that, but the stat description no longer makes sense as a tooltip for the group. As a result, all the editor tooltips were junk.
#jira UE-53845
Change 3831064 by Ben.Marsh
Fix log file contention when spawning UBT recursively.
Change 3832654 by Ben.Marsh
UGS: Fix error panel not being selected when opened, and weird alignment/color issues on it.
Change 3832680 by Ben.Marsh
UGS: Fix failing to detect workspace if synced to a different stream. Seems to be a regression caused by recent P4D upgrade.
Change 3832695 by Ben.Marsh
UGS: Invert the options in the 'Show Changes' submenu for simplicity.
Change 3833528 by Ben.Marsh
UAT: Script to rewrite source files with public include paths relative to the 'Public' folder. Usage is: RebasePublicIncludePaths -UpdateDir=<Dir> [-Project=<Dir>] [-Write].
Change 3833543 by Ben.Marsh
UBT: Allow targets to opt-out of having public include paths added for every dependent module. This reduces the command line length when building a target, which has recently become a problem with larger games (due to Microsoft's compiler embedding the command line into each object file, with a maximum length of 64kb). All engine modules are compiled with this enabled; games may opt into it by setting bLegacyPublicIncludePaths = false; from their .target.cs, as may individual modules.
Change 3834354 by Robert.Manuszewski
Archetype pointer will now be cached to avoid locking the object tables when acquiring its info. It should also be faster this way regardless of any locks.
#jira UE-52035
Change 3834400 by Robert.Manuszewski
Fixing crash on exit caused by cached archetypes not being cleaned up before static exit cleanup.
#jira UE-52035
Change 3834947 by Steve.Robb
USE_FORMAT_STRING_TYPE_CHECKING removed from FMsg::Logf and FMsg::Logf_Internal.
Change 3835004 by Ben.Marsh
Fix code that relies on dubious behavior of requiring referenced "include path only" modules having their _API macros set to be empty, even if the module is actually implemented in a separate DLL.
Change 3835340 by Ben.Marsh
Fix errors making installed build from directories with spaces in the name.
Change 3835972 by Ben.Marsh
UBT: Improved diagnostic message for targets which don't need a version file.
Change 3836019 by Ben.Marsh
UBT: Fix warnings caused by defining linkage macros for third party libraries.
Change 3836269 by Ben.Marsh
Fix message box larger than the screen height being created when a large number of modules are incompatible on startup.
Change 3836543 by Ben.Marsh
Enable SoundMod plugin on Linux, since it's already supported through the editor.
Change 3836546 by Ben.Marsh
PR #4412: fix type mismatch (Contributed by nakapon)
Change 3836805 by Ben.Marsh
Fix commandlet to compile marketplace plugins.
Change 3836829 by Ben.Marsh
UBT: Fix ability to precompile plugins from installed engine builds.
Change 3837036 by Ben.Marsh
UBT: Write the previous and new contents of intermediate files to the log if they change. Makes it easier to debug unexpected rebuilds.
Change 3837037 by Ben.Marsh
UBT: Fix engine modules having inconsistent definitions depending on whether modules are only referenced for their include paths vs being linked into a binary (due to different _API macro).
Change 3837040 by Ben.Marsh
UBT: Remove code that initializes members in ModuleRules and TargetRules objects before the constructor is run. This is no longer necessary, now that the backwards-compatible default constructors have been removed.
Change 3837247 by Ben.Marsh
UBT: Remove UELinkerFixups module, now that plugins and precompiled modules do not require hacks to force initialization (since they're linked in as object files).
Encryption and signing keys are now set via macros expanded from the IMPLEMENT_PRIMARY_GAME_MODULE macro, via project-specific macros added in the TargetRules constructor.
Change 3837262 by Ben.Marsh
UBT: Set whether a module is an engine module or not via a default value for the rules assembly. All non-program engine and enterprise modules are created with this flag set to true; program targets and modules are now created from a different assembly that sets it to false. This removes hacks from UEBuildModule needed to adjust behavior for different module types based on the directory containing the module.
Also add a bUseBackwardsCompatibleDefaults flag to the TargetRules class, also initialized to a default value from a setting passed to the RulesAssembly constructor. This controls whether modules created for the target should be configured to allow breaking changes to default settings, and is set to false for all engine targets, and true for all project targets.
Change 3837343 by Ben.Marsh
UBT: Remove the OverrideExecutableFileExtension target property. Change the only current use for this (the MayaLiveLinkPlugin target) to use a post build step to copy the file instead.
Change 3837356 by Ben.Marsh
Fix invalid character encodings.
Change 3837727 by Graeme.Thornton
UnrealPak: KeyGenerator: Only generate prime table when required, not all the time
Change 3837823 by Ben.Marsh
UBT: Output warnings and errors when compiling module rules assembly in a way that allows them to be double-clicked in the Visual Studio output window.
Change 3837831 by Graeme.Thornton
UBT: When parsing crypto settings, always load legacy data first, then allow the new system to override it. Provides the same key backwards compatibility that the editor settings class gives
Change 3837857 by Robert.Manuszewski
PR #4404: Make FGCArrayPool singleton global instead of per-CU (Contributed by mhutch)
Change 3837943 by Robert.Manuszewski
PR #4405: Fix FGarbageCollectionTracer (Contributed by mhutch)
Change 3838451 by Ben.Marsh
UBT: Fix exceptions thrown on a background thread while caching C++ includes not being caught and logged correctly. Now captures exceptions and re-throws on the main thread.
#jira UE-53996
Change 3839519 by Ben.Marsh
UBT: Simplify configuring bPrecompile and bUsePrecompile settings for modules. Each rules assembly can now be configured as installed, which defaults the module rules it creates to use precompiled data.
Change 3843790 by Graeme.Thornton
UnrealPak: Log the size of all encrypted data
Change 3844258 by Ben.Marsh
Fix plugin compile failure when created via new plugin wizard. Passing -plugin on the command line is unnecessary, and is now reserved for packaging external plugins for the marketplace.
Also extend the length of time that the error toast stays visible, and don't delete the plugin on failure.
#jira UE-54157
Change 3845796 by Ben.Marsh
Workaround for slow performance of String.EndsWith() on Mono.
Change 3845823 by Ben.Marsh
Fix case sensitive matching of platform names in -TargetPlatform=X argument to BuildCookRun.
#jira UE-54123
Change 3845901 by Arciel.Rekman
Linux: fix crash due to lambda lifetime issues (UE-54040).
- The lambda goes out of scope in FBufferVisualizationMenuCommands::CreateVisualizationCommands, crashing the editor if compiled with a recent clang (5.0+).
(Edigrating 3819174 to Dev-Core)
Change 3846439 by Ben.Marsh
Revert CL 3822742 to always call Process.WaitForExit(). The Android target platform module in the editor spawns ADB.EXE, which inherits the editor's stdout/stderr handles and forks itself. Process.WaitForExit() waits for EOF on those pipes, which never occurs because the forked process never terminates.
Proper fix is probably to have the engine explicitly duplicate stdout/stderr handles for new pipes to output process, but too risky before copying up to Main.
Change 3816608 by Ben.Marsh
UBT: Use DirectoryReference objects for all include paths.
Change 3816954 by Ben.Marsh
UBT: Remove bIncludeDependentLibrariesInLibrary option. This is not widely supported by platform toolchains, and is not used anywhere.
Change 3816986 by Ben.Marsh
UBT: Remove UEBuildBinaryConfig; UEBuildBinary objects are now just created directly.
Change 3816991 by Ben.Marsh
UBT: Deprecate PlatformSpecificDynamicallyLoadedModules. We no longer have any special behavior for these modules.
Change 3823090 by Ben.Marsh
UAT: Improve logging for child UAT instances.
- Calling RunUAT now requires an identifier for prefixing into the parent log, which is also used to determine the name of the log folder.
- Stdout is no longer written to its own output file, since it's written to the parent stdout, the parent log file, and the child log file anyway.
- Log folders for child UAT instances are left intact, rather than being copied to the parent folder. The derived names for the copied names were confusing and hard to read.
- Output from UAT is no longer returned as a string. It should not be parsed anyway (but may be huge!). ProcessResult now supports running without capturing output.
Change 3826082 by Ben.Marsh
UBT: Add a check to make sure that all modules that are precompiled are correctly marked to enable it, even if they are part of the build target.
Change 3827025 by Ben.Marsh
UBT: Move the compile output directory into a property on the module, and explicitly pass it to the toolchain when compiling.
Change 3829927 by James.Hopkin
Made HTTP interface const correct
Change 3833533 by Ben.Marsh
Rewrite engine source files to base include paths relative to the "Public" directory. This allows reducing the number of public include paths that have to be added for engine modules.
Change 3835826 by Ben.Marsh
UBT: Precompiled targets now generate a separate manifest for each precompiled module, rather than adding object files to a library. This fixes issues where object files from static libraries would not be linked into a target if a symbol in them was not referenced.
Change 3835969 by Ben.Marsh
UBT: Fix cases where text is being written directly to the console rather than via logging functions.
Change 3837777 by Steve.Robb
Format string type checking added to FOutputDevice::Logf.
Fixes for those.
Change 3838569 by Steve.Robb
Algo moved up a folder.
[CL 3847482 by Ben Marsh in Main branch]
2018-01-20 11:19:29 -05:00
|
|
|
#include "Interfaces/ToolMode.h"
|
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3209340)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3209340 on 2016/11/23 by Ben.Marsh
Convert UE4 codebase to an "include what you use" model - where every header just includes the dependencies it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h.
Measured full rebuild times around 2x faster using XGE on Windows, and improvements of 25% or more for incremental builds and full rebuilds on most other platforms.
* Every header now includes everything it needs to compile.
* There's a CoreMinimal.h header that gets you a set of ubiquitous types from Core (eg. FString, FName, TArray, FVector, etc...). Most headers now include this first.
* There's a CoreTypes.h header that sets up primitive UE4 types and build macros (int32, PLATFORM_WIN64, etc...). All headers in Core include this first, as does CoreMinimal.h.
* Every .cpp file includes its matching .h file first.
* This helps validate that each header is including everything it needs to compile.
* No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more.
* You will get a warning if you try to include one of these from the engine. They still exist for compatibility with game projects and do not produce warnings when included there.
* There have only been minor changes to our internal games down to accommodate these changes. The intent is for this to be as seamless as possible.
* No engine code explicitly includes a precompiled header any more.
* We still use PCHs, but they're force-included on the compiler command line by UnrealBuildTool instead. This lets us tune what they contain without breaking any existing include dependencies.
* PCHs are generated by a tool to get a statistical amount of coverage for the source files using it, and I've seeded the new shared PCHs to contain any header included by > 15% of source files.
Tool used to generate this transform is at Engine\Source\Programs\IncludeTool.
[CL 3209342 by Ben Marsh in Main branch]
2016-11-23 15:48:37 -05:00
|
|
|
#include "Misc/OutputDeviceError.h"
|
2016-06-29 18:00:01 -04:00
|
|
|
|
|
|
|
|
using namespace BuildPatchTool;
|
|
|
|
|
|
|
|
|
|
IMPLEMENT_APPLICATION(BuildPatchTool, "BuildPatchTool");
|
|
|
|
|
DEFINE_LOG_CATEGORY(LogBuildPatchTool);
|
|
|
|
|
|
|
|
|
|
class FBuildPatchOutputDevice : public FOutputDevice
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-01-14 16:55:55 -05:00
|
|
|
virtual void Serialize(const TCHAR* V, ELogVerbosity::Type Verbosity, const class FName& Category) override
|
2016-06-29 18:00:01 -04:00
|
|
|
{
|
Copying //UE4/Dev-Main to //UE4/Main (Source: //Portal/Main/Engine @ 4247640)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4247640 by Daniel.Lamb
BuildPatchTool: PackageChunks: Fixed issue with filenames not being set for chunkdbs in particular cases where the chunkdbs were small.
Change 4247246 by Leigh.Swift
BuildPatchTool: Adding support to BPT PackageChunks to filter by tagsets, and also split chunkdb output by them too.
Change 4173518 by Wes.Fudala
WebBrowser: Adding support to enable allowing net security expirations.
Change 4102451 by Leigh.Swift
BuildPatchTool: PackageChunks: Adding tool mode JSON output for listing created chunkdb files.
Change 4099951 by Leigh.Swift
BuildPatchTool: PackageChunks: Adding PrevManifestFile commandline support to BPT PackageChunks mode, allowing us to generate chunkdbs that only cover data required to perform an update.
Change 4051406 by Leigh.Swift
BuildPatchServices: Update default number of simultaneous downloads for an installer to 16 which is now well proven in the wild.
Change 4036807 by Leigh.Swift
BuildPatchServices: Added new message type for receiving updates about which files have been touched by the installation.
BuildPatchServices: Cloud enumeration is now threaded to improve speed.
Change 4036477 by Richard.Fawcett
Thirdparty: AWSSDK: Update AWS SDK to version 3.3 as speculative fix for object is used after being disposed error.
Confirmed this exception is being raised from within the AWS SDK, and _not_ in Epic code.
Advice by Amazon on AWS forums for people experiencing this exception is always to update to the latest version of the SDK in the first instance.
Change 3922493 by Justin.Sargent
Runtime: Added shortcircuit support to the ExpressionParser. More documentation to come.
AgreementExpressionEvaluator has been updated to use the shortcircuit logic so it now processes expressions lef to right as expected in all cases.
AgreementExpressionEvaluator was also updated to perform evaluation as a two pass system. The tow pass solution prevents over prompting eulas in certain scenarios where the expression would ultimately resolve true without them.
Change 3983713 by Barnabas.McManners
BuildPatchServices: Fix for verification logging error counts for unique runs. Solved the issue by using an external cache of the errors encountered each run to deduct from the total. Reporting only the delta.
Change 3966915 by Wes.Fudala
WebBrowser: CEF: Potential fix for a rare issue encountered when we attempting to release resources outside of the game thread.
Change 3955168 by Justin.Sargent
BuildPatchServices: Updated primary messaging of overall install status to now display Updating when patching an existing installation rather than Installing.
Change 3954610 by Leigh.Swift
BuildPatchServices: Fixing issue with Cloud Chunk Source which would erroneously conclude that it needed to re-download a chunk due to external system failure.
There is now an explicit concept of 'lost chunk' which is tracked and bubbled up by the system errors that cause the loss in the first place, so that each source knows exactly when it should be required to retrieve a chunk that it had already retrieved previously. Being explicit, these lost chunks can also now contribute to the total download required stat.
Also fixing some tracking that was missing to update the total download required stat if a local Install Chunk Source failed to load data from the files on disk and so these chunks needed to be additionally downloaded.
Change 3947928 by Chad.Garyet
UAT: Changing commandutils to attempt to find the Win8.1sdk signtool before the win10 one. There's currently a bug related to vs2017/server2012r2/win10sdk signtool that causes it to exit with an undefined error when signing from a service account. Using the win8.1sdk circumvents this issue.
Change 3942776 by Rob.Cannaday
Http: Fix for Mac sending up duplicate header strings
Change 3940306 by Leigh.Swift
BuildPatchServices: Refactor to isolate CoreUObject dependency and be able to compile out usage.
Change 3936655 by Justin.Sargent
Slate: Changed the invalid fontcache ensure in ShapedTextCache from always to only once to reduce ensure spamChange 3917840 by Leigh.Swift
BuildPatchTool: DiffManifests mode now also saves info for New, Removed, Changed, and Unchanged file to the output json file.
Change 3911756 by Justin.Sargent
WebBrowser: SWebBrowserView now ensures that it has a valid pointer to it's parent window in it's onpaint to avoid issues with the first frame being scaled incorrectly due to not being able to access the parent windows dpi scaling.
Change 3906670 by Justin.Sargent
Slate: Change the ShapedTextCache to hold a weakptr to the Slate FontCache instead of a reference. This will allow it to detect if the FontCache has become invalid since it was linked with the ShapedTextCache, thus making it able to avoid crashing.
Change 3889008 by Justin.Sargent
StandaloneRenderer: Made the SlateD3DRenderingPolicy more resilient to graphics device errors.
Change 3886969 by Justin.Sargent
StandaloneRenderer:Changed SlateD3DConstantBuffer to no longer check on a D3DDevice failure and instead soft fail, so the application can go through the process of attempting to re-establish the D3DDevice.
Change 3886960 by Justin.Sargent
WebBrowser: Made CEFWebBrowserWindow more resilient to issues with creating textures.
Change 3855821 by Barnabas.McManners
BuildPatchServices: Added logging of the configuration to the start of all installs.
Change 3839245 by Wes.Fudala
WebBrowser: Adding support for web browser drag regions. These are areas of a page tagged with -webkit-app-region: drag or -webkit-app-region: no-drag. The application can now pass a handler function to the browser to handle window drag events. This handler will be called if the browser detects mouse drag events inside of a tagged drag region.
Change 3835225 by Jacob.Hedges
Slate: Fix for SScrollBarTrack size issue
Change 3824320 by Wes.Fudala
WebBrowser: Fix for reported deadlock in WebBrowserSingleton. Associated with github pull request #4303.
#jira UE-53420 GitHub 4330 : Fixed deadlock in FWebBrowserSingleton
#4303
Change 3811191 by Barnabas.McManners
BuildPatchServices: Expanded MF01-X into MF01-X-X and MF02-X where X is the os error codes
Change 3807662 by Barnabas.McManners
BuildPatchServices: Broke down build verification errors into 4 new cases.
Change 3805698 by Leigh.Swift
BuildPatchServices: Speculative fixes for Unit test crashes / failures.
Change 3804175 by Wes.Fudala
ThirdParty: CEF: Adding browser locale pak files for es-MX, and es-ES as the typical mapping/fallback does not seem functional on mac browser. They are copies of es_419 and es respectively.
Change 3786628 by Leigh.Swift
WebBrowser: Exposing ability to customise tool tip widgets produced from SWebBrowserView.
Change 3775678 by Richard.Fawcett
BuildPatchServices: Allow a Prerequisite install only mode.
Change 3774365 by Justin.Sargent
BuildPatchServices: Updated Build Stat report that is logged after every installation to use FText::AsMemory instead of the UnitConversion logic, and now it outputs multiple unit types for convenience.
Change 3774361 by Justin.Sargent
Http: Remove Pragma: no-cache header from libcurl requests
Change 3774258 by Leigh.Swift
BuildPatchServices: Fix for destructive patch destroy files that contain useful data.
Change 3766156 by Barnabas.McManners
Http: Various lower changes to enable Hardware testing and to enable proxy configuration.
Change 3756723 by Leigh.Swift
BuildPatchServices: Hooking up disk chunk store operation states to the installer statistics.
BuildPatchServices: Memory chunk store statistics fix for booted chunks that have been reloaded.
Change 3756320 by Rob.Cannaday
Http: Add default headers added to every HTTP request.
Change 3741274 by Wes.Fudala
WebBrowser: Release CEF related references prior to CEF shutdown.
Change 3738003 by Leigh.Swift
BuildPatchServices: Fix-ups for install stats when failures are occurring
NumFilesOutdated now only set on first run, so it is not set to the number of files that are retried.
Total downloaded data and total download requirement stats fixed up for runtime as well as final values.
Initial chunk counters now only set for first run.
Moving the GetBytesDownloaded api from cloud source to download service so that it correctly accumulates.
InstallSource was multiply attempting, and counting, recycle failures, throwing that stat out of proportion.
Change 3729851 by Barnabas.McManners
BuildPatchServices: Changed the installer's MoveFile method to default to not retry. We currently only have uses of move file which already handle retry.
Change 3725611 by Leigh.Swift
Core: FText::AsMemory - Fix for numerical edges.
Added unit tests to check all edges up to full uint64 range.
Change 3725127 by Leigh.Swift
BuildPatchServices: ManifestDiff: Correcting string format padding for new data size output uints.
Change 3725126 by Leigh.Swift
Core: FText::AsMemory fix. Shifting (equivalent of divide 2 per shift) does not work for calculating SI units which are base 10.
Change 3721926 by Justin.Sargent
ThirdParty: LibCurl update performed by Simon Tourangeau.
We now have 100MB/sec download speed with libcurl on Win64, compared to 3MB/sec originally
Change 3700670 by Michael.Trepka
SlateReflector: Fixed mouse click highlighting in Widget Reflector's Demo Mode in high DPI
Change 3697526 by Leigh.Swift
BuildPatchServices: Exposing a suite of runtime statistics for BuildPatchInstallers.
Change 3686439 by Leigh.Swift
BuildPatchServices: Stop installers from always logging a shutdown error on destruction. This should only occur if the installer is actually running.
Change 3684747 by Leigh.Swift
BuildPatchTool: Fix file ignore list to parse using platform agnostic method.
Change 3643038 by Michael.Trepka
Core: Don't defer Cocoa calls in FMacWindow Show and Hide to make sure both actions complete before we exit these functions. This solves the problem with the blocks being called after window was destroyed.
Change 3639692 by Michael.Trepka
Fixes for a couple of issues found by address sanitizer
Change 3625568 by Leigh.Swift
BuildPatchServices: Fixing numerical limits problem with double -> uint64 in FStatsCollector::SecondsToCycles().
Change 3617948 by Leigh.Swift
BuildPatchServices: Disk space requirement can now be lower when patching if destructive patch mode is enabled. This mode will delete existing old files once they are not needed.
BuildPatchServices: Adding new installation mode setting on installer config.
BuildPatchServices: If destructive installation mode is enabled, the file constructor will delete old existing files after completing the new one.
BuildPatchServices: Adding missing file path length check for install location to cover situation where staging directory is outside the install directory.
Change 3593632 by Leigh.Swift
BuildPatchServices: Adding additional installation tracking to BuildPatchServices. See Engine/Source/Runtime/Online/BuildPatchServices/Public/Interfaces/IBuildInstaller.h
[CL 4273704 by Leigh Swift in Main branch]
2018-08-09 17:55:56 -04:00
|
|
|
// Only forward verbosities higher than Display as they will already be sent to stdout.
|
2018-09-25 10:11:35 -04:00
|
|
|
// For EC to get any logging, we have to forward all.
|
2016-06-29 18:00:01 -04:00
|
|
|
#if PLATFORM_USE_LS_SPEC_FOR_WIDECHAR
|
2019-01-14 16:55:55 -05:00
|
|
|
printf("\n%ls", *FOutputDeviceHelper::FormatLogLine(Verbosity, Category, V, GPrintLogTimes));
|
2016-06-29 18:00:01 -04:00
|
|
|
#else
|
2019-01-14 16:55:55 -05:00
|
|
|
wprintf(TEXT("\n%s"), *FOutputDeviceHelper::FormatLogLine(Verbosity, Category, V, GPrintLogTimes));
|
2016-06-29 18:00:01 -04:00
|
|
|
#endif
|
2019-01-14 16:55:55 -05:00
|
|
|
fflush(stdout);
|
2016-06-29 18:00:01 -04:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const TCHAR* HandleLegacyCommandline(const TCHAR* CommandLine)
|
|
|
|
|
{
|
|
|
|
|
static FString CommandLineString;
|
|
|
|
|
CommandLineString = CommandLine;
|
|
|
|
|
|
|
|
|
|
#if UE_BUILD_DEBUG
|
|
|
|
|
// Run smoke tests in debug
|
|
|
|
|
CommandLineString += TEXT(" -bForceSmokeTests ");
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// No longer supported options
|
|
|
|
|
if (CommandLineString.Contains(TEXT("-nochunks")))
|
|
|
|
|
{
|
|
|
|
|
UE_LOG(LogBuildPatchTool, Error, TEXT("NoChunks is no longer a supported mode. Remove this commandline option."));
|
|
|
|
|
return nullptr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Check for legacy tool mode switching, if we don't have a mode and this was not a -help request, add the correct mode
|
|
|
|
|
if (!CommandLineString.Contains(TEXT("-mode=")) && !CommandLineString.Contains(TEXT("-help")))
|
|
|
|
|
{
|
|
|
|
|
if (CommandLineString.Contains(TEXT("-compactify")))
|
|
|
|
|
{
|
|
|
|
|
CommandLineString = CommandLineString.Replace(TEXT("-compactify"), TEXT("-mode=compactify"));
|
|
|
|
|
}
|
|
|
|
|
else if (CommandLineString.Contains(TEXT("-dataenumerate")))
|
|
|
|
|
{
|
|
|
|
|
CommandLineString = CommandLineString.Replace(TEXT("-dataenumerate"), TEXT("-mode=enumeration"));
|
|
|
|
|
}
|
|
|
|
|
// Patch generation did not have a mode flag, but does have some unique and required params
|
|
|
|
|
else if (CommandLineString.Contains(TEXT("-BuildRoot=")) && CommandLineString.Contains(TEXT("-BuildVersion=")))
|
|
|
|
|
{
|
|
|
|
|
FString NewCommandline(TEXT("-mode=patchgeneration "), CommandLineString.Len());
|
|
|
|
|
NewCommandline += CommandLineString;
|
|
|
|
|
CommandLineString = MoveTemp(NewCommandline);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return *CommandLineString;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EReturnCode RunBuildPatchTool()
|
|
|
|
|
{
|
Copying //UE4/Dev-Main to //UE4/Main (Source: //Portal/Main/Engine @ 4247640)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4247640 by Daniel.Lamb
BuildPatchTool: PackageChunks: Fixed issue with filenames not being set for chunkdbs in particular cases where the chunkdbs were small.
Change 4247246 by Leigh.Swift
BuildPatchTool: Adding support to BPT PackageChunks to filter by tagsets, and also split chunkdb output by them too.
Change 4173518 by Wes.Fudala
WebBrowser: Adding support to enable allowing net security expirations.
Change 4102451 by Leigh.Swift
BuildPatchTool: PackageChunks: Adding tool mode JSON output for listing created chunkdb files.
Change 4099951 by Leigh.Swift
BuildPatchTool: PackageChunks: Adding PrevManifestFile commandline support to BPT PackageChunks mode, allowing us to generate chunkdbs that only cover data required to perform an update.
Change 4051406 by Leigh.Swift
BuildPatchServices: Update default number of simultaneous downloads for an installer to 16 which is now well proven in the wild.
Change 4036807 by Leigh.Swift
BuildPatchServices: Added new message type for receiving updates about which files have been touched by the installation.
BuildPatchServices: Cloud enumeration is now threaded to improve speed.
Change 4036477 by Richard.Fawcett
Thirdparty: AWSSDK: Update AWS SDK to version 3.3 as speculative fix for object is used after being disposed error.
Confirmed this exception is being raised from within the AWS SDK, and _not_ in Epic code.
Advice by Amazon on AWS forums for people experiencing this exception is always to update to the latest version of the SDK in the first instance.
Change 3922493 by Justin.Sargent
Runtime: Added shortcircuit support to the ExpressionParser. More documentation to come.
AgreementExpressionEvaluator has been updated to use the shortcircuit logic so it now processes expressions lef to right as expected in all cases.
AgreementExpressionEvaluator was also updated to perform evaluation as a two pass system. The tow pass solution prevents over prompting eulas in certain scenarios where the expression would ultimately resolve true without them.
Change 3983713 by Barnabas.McManners
BuildPatchServices: Fix for verification logging error counts for unique runs. Solved the issue by using an external cache of the errors encountered each run to deduct from the total. Reporting only the delta.
Change 3966915 by Wes.Fudala
WebBrowser: CEF: Potential fix for a rare issue encountered when we attempting to release resources outside of the game thread.
Change 3955168 by Justin.Sargent
BuildPatchServices: Updated primary messaging of overall install status to now display Updating when patching an existing installation rather than Installing.
Change 3954610 by Leigh.Swift
BuildPatchServices: Fixing issue with Cloud Chunk Source which would erroneously conclude that it needed to re-download a chunk due to external system failure.
There is now an explicit concept of 'lost chunk' which is tracked and bubbled up by the system errors that cause the loss in the first place, so that each source knows exactly when it should be required to retrieve a chunk that it had already retrieved previously. Being explicit, these lost chunks can also now contribute to the total download required stat.
Also fixing some tracking that was missing to update the total download required stat if a local Install Chunk Source failed to load data from the files on disk and so these chunks needed to be additionally downloaded.
Change 3947928 by Chad.Garyet
UAT: Changing commandutils to attempt to find the Win8.1sdk signtool before the win10 one. There's currently a bug related to vs2017/server2012r2/win10sdk signtool that causes it to exit with an undefined error when signing from a service account. Using the win8.1sdk circumvents this issue.
Change 3942776 by Rob.Cannaday
Http: Fix for Mac sending up duplicate header strings
Change 3940306 by Leigh.Swift
BuildPatchServices: Refactor to isolate CoreUObject dependency and be able to compile out usage.
Change 3936655 by Justin.Sargent
Slate: Changed the invalid fontcache ensure in ShapedTextCache from always to only once to reduce ensure spamChange 3917840 by Leigh.Swift
BuildPatchTool: DiffManifests mode now also saves info for New, Removed, Changed, and Unchanged file to the output json file.
Change 3911756 by Justin.Sargent
WebBrowser: SWebBrowserView now ensures that it has a valid pointer to it's parent window in it's onpaint to avoid issues with the first frame being scaled incorrectly due to not being able to access the parent windows dpi scaling.
Change 3906670 by Justin.Sargent
Slate: Change the ShapedTextCache to hold a weakptr to the Slate FontCache instead of a reference. This will allow it to detect if the FontCache has become invalid since it was linked with the ShapedTextCache, thus making it able to avoid crashing.
Change 3889008 by Justin.Sargent
StandaloneRenderer: Made the SlateD3DRenderingPolicy more resilient to graphics device errors.
Change 3886969 by Justin.Sargent
StandaloneRenderer:Changed SlateD3DConstantBuffer to no longer check on a D3DDevice failure and instead soft fail, so the application can go through the process of attempting to re-establish the D3DDevice.
Change 3886960 by Justin.Sargent
WebBrowser: Made CEFWebBrowserWindow more resilient to issues with creating textures.
Change 3855821 by Barnabas.McManners
BuildPatchServices: Added logging of the configuration to the start of all installs.
Change 3839245 by Wes.Fudala
WebBrowser: Adding support for web browser drag regions. These are areas of a page tagged with -webkit-app-region: drag or -webkit-app-region: no-drag. The application can now pass a handler function to the browser to handle window drag events. This handler will be called if the browser detects mouse drag events inside of a tagged drag region.
Change 3835225 by Jacob.Hedges
Slate: Fix for SScrollBarTrack size issue
Change 3824320 by Wes.Fudala
WebBrowser: Fix for reported deadlock in WebBrowserSingleton. Associated with github pull request #4303.
#jira UE-53420 GitHub 4330 : Fixed deadlock in FWebBrowserSingleton
#4303
Change 3811191 by Barnabas.McManners
BuildPatchServices: Expanded MF01-X into MF01-X-X and MF02-X where X is the os error codes
Change 3807662 by Barnabas.McManners
BuildPatchServices: Broke down build verification errors into 4 new cases.
Change 3805698 by Leigh.Swift
BuildPatchServices: Speculative fixes for Unit test crashes / failures.
Change 3804175 by Wes.Fudala
ThirdParty: CEF: Adding browser locale pak files for es-MX, and es-ES as the typical mapping/fallback does not seem functional on mac browser. They are copies of es_419 and es respectively.
Change 3786628 by Leigh.Swift
WebBrowser: Exposing ability to customise tool tip widgets produced from SWebBrowserView.
Change 3775678 by Richard.Fawcett
BuildPatchServices: Allow a Prerequisite install only mode.
Change 3774365 by Justin.Sargent
BuildPatchServices: Updated Build Stat report that is logged after every installation to use FText::AsMemory instead of the UnitConversion logic, and now it outputs multiple unit types for convenience.
Change 3774361 by Justin.Sargent
Http: Remove Pragma: no-cache header from libcurl requests
Change 3774258 by Leigh.Swift
BuildPatchServices: Fix for destructive patch destroy files that contain useful data.
Change 3766156 by Barnabas.McManners
Http: Various lower changes to enable Hardware testing and to enable proxy configuration.
Change 3756723 by Leigh.Swift
BuildPatchServices: Hooking up disk chunk store operation states to the installer statistics.
BuildPatchServices: Memory chunk store statistics fix for booted chunks that have been reloaded.
Change 3756320 by Rob.Cannaday
Http: Add default headers added to every HTTP request.
Change 3741274 by Wes.Fudala
WebBrowser: Release CEF related references prior to CEF shutdown.
Change 3738003 by Leigh.Swift
BuildPatchServices: Fix-ups for install stats when failures are occurring
NumFilesOutdated now only set on first run, so it is not set to the number of files that are retried.
Total downloaded data and total download requirement stats fixed up for runtime as well as final values.
Initial chunk counters now only set for first run.
Moving the GetBytesDownloaded api from cloud source to download service so that it correctly accumulates.
InstallSource was multiply attempting, and counting, recycle failures, throwing that stat out of proportion.
Change 3729851 by Barnabas.McManners
BuildPatchServices: Changed the installer's MoveFile method to default to not retry. We currently only have uses of move file which already handle retry.
Change 3725611 by Leigh.Swift
Core: FText::AsMemory - Fix for numerical edges.
Added unit tests to check all edges up to full uint64 range.
Change 3725127 by Leigh.Swift
BuildPatchServices: ManifestDiff: Correcting string format padding for new data size output uints.
Change 3725126 by Leigh.Swift
Core: FText::AsMemory fix. Shifting (equivalent of divide 2 per shift) does not work for calculating SI units which are base 10.
Change 3721926 by Justin.Sargent
ThirdParty: LibCurl update performed by Simon Tourangeau.
We now have 100MB/sec download speed with libcurl on Win64, compared to 3MB/sec originally
Change 3700670 by Michael.Trepka
SlateReflector: Fixed mouse click highlighting in Widget Reflector's Demo Mode in high DPI
Change 3697526 by Leigh.Swift
BuildPatchServices: Exposing a suite of runtime statistics for BuildPatchInstallers.
Change 3686439 by Leigh.Swift
BuildPatchServices: Stop installers from always logging a shutdown error on destruction. This should only occur if the installer is actually running.
Change 3684747 by Leigh.Swift
BuildPatchTool: Fix file ignore list to parse using platform agnostic method.
Change 3643038 by Michael.Trepka
Core: Don't defer Cocoa calls in FMacWindow Show and Hide to make sure both actions complete before we exit these functions. This solves the problem with the blocks being called after window was destroyed.
Change 3639692 by Michael.Trepka
Fixes for a couple of issues found by address sanitizer
Change 3625568 by Leigh.Swift
BuildPatchServices: Fixing numerical limits problem with double -> uint64 in FStatsCollector::SecondsToCycles().
Change 3617948 by Leigh.Swift
BuildPatchServices: Disk space requirement can now be lower when patching if destructive patch mode is enabled. This mode will delete existing old files once they are not needed.
BuildPatchServices: Adding new installation mode setting on installer config.
BuildPatchServices: If destructive installation mode is enabled, the file constructor will delete old existing files after completing the new one.
BuildPatchServices: Adding missing file path length check for install location to cover situation where staging directory is outside the install directory.
Change 3593632 by Leigh.Swift
BuildPatchServices: Adding additional installation tracking to BuildPatchServices. See Engine/Source/Runtime/Online/BuildPatchServices/Public/Interfaces/IBuildInstaller.h
[CL 4273704 by Leigh Swift in Main branch]
2018-08-09 17:55:56 -04:00
|
|
|
// Initialise the UObject module.
|
2016-06-29 18:00:01 -04:00
|
|
|
FModuleManager::Get().LoadModule(TEXT("CoreUObject"));
|
|
|
|
|
FCoreDelegates::OnInit.Broadcast();
|
Copying //UE4/Dev-Main to //UE4/Main (Source: //Portal/Main/Engine @ 4247640)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4247640 by Daniel.Lamb
BuildPatchTool: PackageChunks: Fixed issue with filenames not being set for chunkdbs in particular cases where the chunkdbs were small.
Change 4247246 by Leigh.Swift
BuildPatchTool: Adding support to BPT PackageChunks to filter by tagsets, and also split chunkdb output by them too.
Change 4173518 by Wes.Fudala
WebBrowser: Adding support to enable allowing net security expirations.
Change 4102451 by Leigh.Swift
BuildPatchTool: PackageChunks: Adding tool mode JSON output for listing created chunkdb files.
Change 4099951 by Leigh.Swift
BuildPatchTool: PackageChunks: Adding PrevManifestFile commandline support to BPT PackageChunks mode, allowing us to generate chunkdbs that only cover data required to perform an update.
Change 4051406 by Leigh.Swift
BuildPatchServices: Update default number of simultaneous downloads for an installer to 16 which is now well proven in the wild.
Change 4036807 by Leigh.Swift
BuildPatchServices: Added new message type for receiving updates about which files have been touched by the installation.
BuildPatchServices: Cloud enumeration is now threaded to improve speed.
Change 4036477 by Richard.Fawcett
Thirdparty: AWSSDK: Update AWS SDK to version 3.3 as speculative fix for object is used after being disposed error.
Confirmed this exception is being raised from within the AWS SDK, and _not_ in Epic code.
Advice by Amazon on AWS forums for people experiencing this exception is always to update to the latest version of the SDK in the first instance.
Change 3922493 by Justin.Sargent
Runtime: Added shortcircuit support to the ExpressionParser. More documentation to come.
AgreementExpressionEvaluator has been updated to use the shortcircuit logic so it now processes expressions lef to right as expected in all cases.
AgreementExpressionEvaluator was also updated to perform evaluation as a two pass system. The tow pass solution prevents over prompting eulas in certain scenarios where the expression would ultimately resolve true without them.
Change 3983713 by Barnabas.McManners
BuildPatchServices: Fix for verification logging error counts for unique runs. Solved the issue by using an external cache of the errors encountered each run to deduct from the total. Reporting only the delta.
Change 3966915 by Wes.Fudala
WebBrowser: CEF: Potential fix for a rare issue encountered when we attempting to release resources outside of the game thread.
Change 3955168 by Justin.Sargent
BuildPatchServices: Updated primary messaging of overall install status to now display Updating when patching an existing installation rather than Installing.
Change 3954610 by Leigh.Swift
BuildPatchServices: Fixing issue with Cloud Chunk Source which would erroneously conclude that it needed to re-download a chunk due to external system failure.
There is now an explicit concept of 'lost chunk' which is tracked and bubbled up by the system errors that cause the loss in the first place, so that each source knows exactly when it should be required to retrieve a chunk that it had already retrieved previously. Being explicit, these lost chunks can also now contribute to the total download required stat.
Also fixing some tracking that was missing to update the total download required stat if a local Install Chunk Source failed to load data from the files on disk and so these chunks needed to be additionally downloaded.
Change 3947928 by Chad.Garyet
UAT: Changing commandutils to attempt to find the Win8.1sdk signtool before the win10 one. There's currently a bug related to vs2017/server2012r2/win10sdk signtool that causes it to exit with an undefined error when signing from a service account. Using the win8.1sdk circumvents this issue.
Change 3942776 by Rob.Cannaday
Http: Fix for Mac sending up duplicate header strings
Change 3940306 by Leigh.Swift
BuildPatchServices: Refactor to isolate CoreUObject dependency and be able to compile out usage.
Change 3936655 by Justin.Sargent
Slate: Changed the invalid fontcache ensure in ShapedTextCache from always to only once to reduce ensure spamChange 3917840 by Leigh.Swift
BuildPatchTool: DiffManifests mode now also saves info for New, Removed, Changed, and Unchanged file to the output json file.
Change 3911756 by Justin.Sargent
WebBrowser: SWebBrowserView now ensures that it has a valid pointer to it's parent window in it's onpaint to avoid issues with the first frame being scaled incorrectly due to not being able to access the parent windows dpi scaling.
Change 3906670 by Justin.Sargent
Slate: Change the ShapedTextCache to hold a weakptr to the Slate FontCache instead of a reference. This will allow it to detect if the FontCache has become invalid since it was linked with the ShapedTextCache, thus making it able to avoid crashing.
Change 3889008 by Justin.Sargent
StandaloneRenderer: Made the SlateD3DRenderingPolicy more resilient to graphics device errors.
Change 3886969 by Justin.Sargent
StandaloneRenderer:Changed SlateD3DConstantBuffer to no longer check on a D3DDevice failure and instead soft fail, so the application can go through the process of attempting to re-establish the D3DDevice.
Change 3886960 by Justin.Sargent
WebBrowser: Made CEFWebBrowserWindow more resilient to issues with creating textures.
Change 3855821 by Barnabas.McManners
BuildPatchServices: Added logging of the configuration to the start of all installs.
Change 3839245 by Wes.Fudala
WebBrowser: Adding support for web browser drag regions. These are areas of a page tagged with -webkit-app-region: drag or -webkit-app-region: no-drag. The application can now pass a handler function to the browser to handle window drag events. This handler will be called if the browser detects mouse drag events inside of a tagged drag region.
Change 3835225 by Jacob.Hedges
Slate: Fix for SScrollBarTrack size issue
Change 3824320 by Wes.Fudala
WebBrowser: Fix for reported deadlock in WebBrowserSingleton. Associated with github pull request #4303.
#jira UE-53420 GitHub 4330 : Fixed deadlock in FWebBrowserSingleton
#4303
Change 3811191 by Barnabas.McManners
BuildPatchServices: Expanded MF01-X into MF01-X-X and MF02-X where X is the os error codes
Change 3807662 by Barnabas.McManners
BuildPatchServices: Broke down build verification errors into 4 new cases.
Change 3805698 by Leigh.Swift
BuildPatchServices: Speculative fixes for Unit test crashes / failures.
Change 3804175 by Wes.Fudala
ThirdParty: CEF: Adding browser locale pak files for es-MX, and es-ES as the typical mapping/fallback does not seem functional on mac browser. They are copies of es_419 and es respectively.
Change 3786628 by Leigh.Swift
WebBrowser: Exposing ability to customise tool tip widgets produced from SWebBrowserView.
Change 3775678 by Richard.Fawcett
BuildPatchServices: Allow a Prerequisite install only mode.
Change 3774365 by Justin.Sargent
BuildPatchServices: Updated Build Stat report that is logged after every installation to use FText::AsMemory instead of the UnitConversion logic, and now it outputs multiple unit types for convenience.
Change 3774361 by Justin.Sargent
Http: Remove Pragma: no-cache header from libcurl requests
Change 3774258 by Leigh.Swift
BuildPatchServices: Fix for destructive patch destroy files that contain useful data.
Change 3766156 by Barnabas.McManners
Http: Various lower changes to enable Hardware testing and to enable proxy configuration.
Change 3756723 by Leigh.Swift
BuildPatchServices: Hooking up disk chunk store operation states to the installer statistics.
BuildPatchServices: Memory chunk store statistics fix for booted chunks that have been reloaded.
Change 3756320 by Rob.Cannaday
Http: Add default headers added to every HTTP request.
Change 3741274 by Wes.Fudala
WebBrowser: Release CEF related references prior to CEF shutdown.
Change 3738003 by Leigh.Swift
BuildPatchServices: Fix-ups for install stats when failures are occurring
NumFilesOutdated now only set on first run, so it is not set to the number of files that are retried.
Total downloaded data and total download requirement stats fixed up for runtime as well as final values.
Initial chunk counters now only set for first run.
Moving the GetBytesDownloaded api from cloud source to download service so that it correctly accumulates.
InstallSource was multiply attempting, and counting, recycle failures, throwing that stat out of proportion.
Change 3729851 by Barnabas.McManners
BuildPatchServices: Changed the installer's MoveFile method to default to not retry. We currently only have uses of move file which already handle retry.
Change 3725611 by Leigh.Swift
Core: FText::AsMemory - Fix for numerical edges.
Added unit tests to check all edges up to full uint64 range.
Change 3725127 by Leigh.Swift
BuildPatchServices: ManifestDiff: Correcting string format padding for new data size output uints.
Change 3725126 by Leigh.Swift
Core: FText::AsMemory fix. Shifting (equivalent of divide 2 per shift) does not work for calculating SI units which are base 10.
Change 3721926 by Justin.Sargent
ThirdParty: LibCurl update performed by Simon Tourangeau.
We now have 100MB/sec download speed with libcurl on Win64, compared to 3MB/sec originally
Change 3700670 by Michael.Trepka
SlateReflector: Fixed mouse click highlighting in Widget Reflector's Demo Mode in high DPI
Change 3697526 by Leigh.Swift
BuildPatchServices: Exposing a suite of runtime statistics for BuildPatchInstallers.
Change 3686439 by Leigh.Swift
BuildPatchServices: Stop installers from always logging a shutdown error on destruction. This should only occur if the installer is actually running.
Change 3684747 by Leigh.Swift
BuildPatchTool: Fix file ignore list to parse using platform agnostic method.
Change 3643038 by Michael.Trepka
Core: Don't defer Cocoa calls in FMacWindow Show and Hide to make sure both actions complete before we exit these functions. This solves the problem with the blocks being called after window was destroyed.
Change 3639692 by Michael.Trepka
Fixes for a couple of issues found by address sanitizer
Change 3625568 by Leigh.Swift
BuildPatchServices: Fixing numerical limits problem with double -> uint64 in FStatsCollector::SecondsToCycles().
Change 3617948 by Leigh.Swift
BuildPatchServices: Disk space requirement can now be lower when patching if destructive patch mode is enabled. This mode will delete existing old files once they are not needed.
BuildPatchServices: Adding new installation mode setting on installer config.
BuildPatchServices: If destructive installation mode is enabled, the file constructor will delete old existing files after completing the new one.
BuildPatchServices: Adding missing file path length check for install location to cover situation where staging directory is outside the install directory.
Change 3593632 by Leigh.Swift
BuildPatchServices: Adding additional installation tracking to BuildPatchServices. See Engine/Source/Runtime/Online/BuildPatchServices/Public/Interfaces/IBuildInstaller.h
[CL 4273704 by Leigh Swift in Main branch]
2018-08-09 17:55:56 -04:00
|
|
|
|
|
|
|
|
// Load the BuildPatchServices Module.
|
|
|
|
|
IBuildPatchServicesModule& BuildPatchServicesModule = FModuleManager::LoadModuleChecked<IBuildPatchServicesModule>(TEXT("BuildPatchServices"));
|
|
|
|
|
|
|
|
|
|
// Make sure we have processed UObjects from BPS.
|
2016-06-29 18:00:01 -04:00
|
|
|
ProcessNewlyLoadedUObjects();
|
|
|
|
|
|
Copying //UE4/Dev-Main to //UE4/Main (Source: //Portal/Main/Engine @ 4247640)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4247640 by Daniel.Lamb
BuildPatchTool: PackageChunks: Fixed issue with filenames not being set for chunkdbs in particular cases where the chunkdbs were small.
Change 4247246 by Leigh.Swift
BuildPatchTool: Adding support to BPT PackageChunks to filter by tagsets, and also split chunkdb output by them too.
Change 4173518 by Wes.Fudala
WebBrowser: Adding support to enable allowing net security expirations.
Change 4102451 by Leigh.Swift
BuildPatchTool: PackageChunks: Adding tool mode JSON output for listing created chunkdb files.
Change 4099951 by Leigh.Swift
BuildPatchTool: PackageChunks: Adding PrevManifestFile commandline support to BPT PackageChunks mode, allowing us to generate chunkdbs that only cover data required to perform an update.
Change 4051406 by Leigh.Swift
BuildPatchServices: Update default number of simultaneous downloads for an installer to 16 which is now well proven in the wild.
Change 4036807 by Leigh.Swift
BuildPatchServices: Added new message type for receiving updates about which files have been touched by the installation.
BuildPatchServices: Cloud enumeration is now threaded to improve speed.
Change 4036477 by Richard.Fawcett
Thirdparty: AWSSDK: Update AWS SDK to version 3.3 as speculative fix for object is used after being disposed error.
Confirmed this exception is being raised from within the AWS SDK, and _not_ in Epic code.
Advice by Amazon on AWS forums for people experiencing this exception is always to update to the latest version of the SDK in the first instance.
Change 3922493 by Justin.Sargent
Runtime: Added shortcircuit support to the ExpressionParser. More documentation to come.
AgreementExpressionEvaluator has been updated to use the shortcircuit logic so it now processes expressions lef to right as expected in all cases.
AgreementExpressionEvaluator was also updated to perform evaluation as a two pass system. The tow pass solution prevents over prompting eulas in certain scenarios where the expression would ultimately resolve true without them.
Change 3983713 by Barnabas.McManners
BuildPatchServices: Fix for verification logging error counts for unique runs. Solved the issue by using an external cache of the errors encountered each run to deduct from the total. Reporting only the delta.
Change 3966915 by Wes.Fudala
WebBrowser: CEF: Potential fix for a rare issue encountered when we attempting to release resources outside of the game thread.
Change 3955168 by Justin.Sargent
BuildPatchServices: Updated primary messaging of overall install status to now display Updating when patching an existing installation rather than Installing.
Change 3954610 by Leigh.Swift
BuildPatchServices: Fixing issue with Cloud Chunk Source which would erroneously conclude that it needed to re-download a chunk due to external system failure.
There is now an explicit concept of 'lost chunk' which is tracked and bubbled up by the system errors that cause the loss in the first place, so that each source knows exactly when it should be required to retrieve a chunk that it had already retrieved previously. Being explicit, these lost chunks can also now contribute to the total download required stat.
Also fixing some tracking that was missing to update the total download required stat if a local Install Chunk Source failed to load data from the files on disk and so these chunks needed to be additionally downloaded.
Change 3947928 by Chad.Garyet
UAT: Changing commandutils to attempt to find the Win8.1sdk signtool before the win10 one. There's currently a bug related to vs2017/server2012r2/win10sdk signtool that causes it to exit with an undefined error when signing from a service account. Using the win8.1sdk circumvents this issue.
Change 3942776 by Rob.Cannaday
Http: Fix for Mac sending up duplicate header strings
Change 3940306 by Leigh.Swift
BuildPatchServices: Refactor to isolate CoreUObject dependency and be able to compile out usage.
Change 3936655 by Justin.Sargent
Slate: Changed the invalid fontcache ensure in ShapedTextCache from always to only once to reduce ensure spamChange 3917840 by Leigh.Swift
BuildPatchTool: DiffManifests mode now also saves info for New, Removed, Changed, and Unchanged file to the output json file.
Change 3911756 by Justin.Sargent
WebBrowser: SWebBrowserView now ensures that it has a valid pointer to it's parent window in it's onpaint to avoid issues with the first frame being scaled incorrectly due to not being able to access the parent windows dpi scaling.
Change 3906670 by Justin.Sargent
Slate: Change the ShapedTextCache to hold a weakptr to the Slate FontCache instead of a reference. This will allow it to detect if the FontCache has become invalid since it was linked with the ShapedTextCache, thus making it able to avoid crashing.
Change 3889008 by Justin.Sargent
StandaloneRenderer: Made the SlateD3DRenderingPolicy more resilient to graphics device errors.
Change 3886969 by Justin.Sargent
StandaloneRenderer:Changed SlateD3DConstantBuffer to no longer check on a D3DDevice failure and instead soft fail, so the application can go through the process of attempting to re-establish the D3DDevice.
Change 3886960 by Justin.Sargent
WebBrowser: Made CEFWebBrowserWindow more resilient to issues with creating textures.
Change 3855821 by Barnabas.McManners
BuildPatchServices: Added logging of the configuration to the start of all installs.
Change 3839245 by Wes.Fudala
WebBrowser: Adding support for web browser drag regions. These are areas of a page tagged with -webkit-app-region: drag or -webkit-app-region: no-drag. The application can now pass a handler function to the browser to handle window drag events. This handler will be called if the browser detects mouse drag events inside of a tagged drag region.
Change 3835225 by Jacob.Hedges
Slate: Fix for SScrollBarTrack size issue
Change 3824320 by Wes.Fudala
WebBrowser: Fix for reported deadlock in WebBrowserSingleton. Associated with github pull request #4303.
#jira UE-53420 GitHub 4330 : Fixed deadlock in FWebBrowserSingleton
#4303
Change 3811191 by Barnabas.McManners
BuildPatchServices: Expanded MF01-X into MF01-X-X and MF02-X where X is the os error codes
Change 3807662 by Barnabas.McManners
BuildPatchServices: Broke down build verification errors into 4 new cases.
Change 3805698 by Leigh.Swift
BuildPatchServices: Speculative fixes for Unit test crashes / failures.
Change 3804175 by Wes.Fudala
ThirdParty: CEF: Adding browser locale pak files for es-MX, and es-ES as the typical mapping/fallback does not seem functional on mac browser. They are copies of es_419 and es respectively.
Change 3786628 by Leigh.Swift
WebBrowser: Exposing ability to customise tool tip widgets produced from SWebBrowserView.
Change 3775678 by Richard.Fawcett
BuildPatchServices: Allow a Prerequisite install only mode.
Change 3774365 by Justin.Sargent
BuildPatchServices: Updated Build Stat report that is logged after every installation to use FText::AsMemory instead of the UnitConversion logic, and now it outputs multiple unit types for convenience.
Change 3774361 by Justin.Sargent
Http: Remove Pragma: no-cache header from libcurl requests
Change 3774258 by Leigh.Swift
BuildPatchServices: Fix for destructive patch destroy files that contain useful data.
Change 3766156 by Barnabas.McManners
Http: Various lower changes to enable Hardware testing and to enable proxy configuration.
Change 3756723 by Leigh.Swift
BuildPatchServices: Hooking up disk chunk store operation states to the installer statistics.
BuildPatchServices: Memory chunk store statistics fix for booted chunks that have been reloaded.
Change 3756320 by Rob.Cannaday
Http: Add default headers added to every HTTP request.
Change 3741274 by Wes.Fudala
WebBrowser: Release CEF related references prior to CEF shutdown.
Change 3738003 by Leigh.Swift
BuildPatchServices: Fix-ups for install stats when failures are occurring
NumFilesOutdated now only set on first run, so it is not set to the number of files that are retried.
Total downloaded data and total download requirement stats fixed up for runtime as well as final values.
Initial chunk counters now only set for first run.
Moving the GetBytesDownloaded api from cloud source to download service so that it correctly accumulates.
InstallSource was multiply attempting, and counting, recycle failures, throwing that stat out of proportion.
Change 3729851 by Barnabas.McManners
BuildPatchServices: Changed the installer's MoveFile method to default to not retry. We currently only have uses of move file which already handle retry.
Change 3725611 by Leigh.Swift
Core: FText::AsMemory - Fix for numerical edges.
Added unit tests to check all edges up to full uint64 range.
Change 3725127 by Leigh.Swift
BuildPatchServices: ManifestDiff: Correcting string format padding for new data size output uints.
Change 3725126 by Leigh.Swift
Core: FText::AsMemory fix. Shifting (equivalent of divide 2 per shift) does not work for calculating SI units which are base 10.
Change 3721926 by Justin.Sargent
ThirdParty: LibCurl update performed by Simon Tourangeau.
We now have 100MB/sec download speed with libcurl on Win64, compared to 3MB/sec originally
Change 3700670 by Michael.Trepka
SlateReflector: Fixed mouse click highlighting in Widget Reflector's Demo Mode in high DPI
Change 3697526 by Leigh.Swift
BuildPatchServices: Exposing a suite of runtime statistics for BuildPatchInstallers.
Change 3686439 by Leigh.Swift
BuildPatchServices: Stop installers from always logging a shutdown error on destruction. This should only occur if the installer is actually running.
Change 3684747 by Leigh.Swift
BuildPatchTool: Fix file ignore list to parse using platform agnostic method.
Change 3643038 by Michael.Trepka
Core: Don't defer Cocoa calls in FMacWindow Show and Hide to make sure both actions complete before we exit these functions. This solves the problem with the blocks being called after window was destroyed.
Change 3639692 by Michael.Trepka
Fixes for a couple of issues found by address sanitizer
Change 3625568 by Leigh.Swift
BuildPatchServices: Fixing numerical limits problem with double -> uint64 in FStatsCollector::SecondsToCycles().
Change 3617948 by Leigh.Swift
BuildPatchServices: Disk space requirement can now be lower when patching if destructive patch mode is enabled. This mode will delete existing old files once they are not needed.
BuildPatchServices: Adding new installation mode setting on installer config.
BuildPatchServices: If destructive installation mode is enabled, the file constructor will delete old existing files after completing the new one.
BuildPatchServices: Adding missing file path length check for install location to cover situation where staging directory is outside the install directory.
Change 3593632 by Leigh.Swift
BuildPatchServices: Adding additional installation tracking to BuildPatchServices. See Engine/Source/Runtime/Online/BuildPatchServices/Public/Interfaces/IBuildInstaller.h
[CL 4273704 by Leigh Swift in Main branch]
2018-08-09 17:55:56 -04:00
|
|
|
// Instantiate and execute the tool.
|
2016-06-29 18:00:01 -04:00
|
|
|
TSharedRef<IToolMode> ToolMode = FToolModeFactory::Create(BuildPatchServicesModule);
|
|
|
|
|
return ToolMode->Execute();
|
|
|
|
|
}
|
|
|
|
|
|
2018-09-25 10:11:35 -04:00
|
|
|
int32 NumberOfWorkerThreadsDesired()
|
|
|
|
|
{
|
|
|
|
|
const int32 MaxThreads = 64;
|
|
|
|
|
const int32 NumberOfCores = FPlatformMisc::NumberOfCores();
|
|
|
|
|
// need to spawn at least one worker thread (see FTaskGraphImplementation)
|
|
|
|
|
return FMath::Max(FMath::Min(NumberOfCores - 1, MaxThreads), 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CheckAndReallocThreadPool()
|
|
|
|
|
{
|
|
|
|
|
if (FPlatformProcess::SupportsMultithreading())
|
|
|
|
|
{
|
|
|
|
|
const int32 ThreadsSpawned = GThreadPool->GetNumThreads();
|
|
|
|
|
const int32 DesiredThreadCount = NumberOfWorkerThreadsDesired();
|
|
|
|
|
if (ThreadsSpawned < DesiredThreadCount)
|
|
|
|
|
{
|
|
|
|
|
UE_LOG(LogBuildPatchTool, Log, TEXT("Engine only spawned %d worker threads, bumping up to %d!"), ThreadsSpawned, DesiredThreadCount);
|
|
|
|
|
GThreadPool->Destroy();
|
|
|
|
|
GThreadPool = FQueuedThreadPool::Allocate();
|
|
|
|
|
verify(GThreadPool->Create(DesiredThreadCount, 128 * 1024));
|
|
|
|
|
}
|
2019-01-14 16:55:55 -05:00
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
UE_LOG(LogBuildPatchTool, Log, TEXT("Continuing with %d spawned worker threads."), ThreadsSpawned);
|
|
|
|
|
}
|
2018-09-25 10:11:35 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2016-06-29 18:00:01 -04:00
|
|
|
EReturnCode BuildPatchToolMain(const TCHAR* CommandLine)
|
|
|
|
|
{
|
|
|
|
|
// Add log device for stdout
|
Copying //UE4/Dev-Main to //UE4/Main (Source: //Portal/Main/Engine @ 4247640)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 4247640 by Daniel.Lamb
BuildPatchTool: PackageChunks: Fixed issue with filenames not being set for chunkdbs in particular cases where the chunkdbs were small.
Change 4247246 by Leigh.Swift
BuildPatchTool: Adding support to BPT PackageChunks to filter by tagsets, and also split chunkdb output by them too.
Change 4173518 by Wes.Fudala
WebBrowser: Adding support to enable allowing net security expirations.
Change 4102451 by Leigh.Swift
BuildPatchTool: PackageChunks: Adding tool mode JSON output for listing created chunkdb files.
Change 4099951 by Leigh.Swift
BuildPatchTool: PackageChunks: Adding PrevManifestFile commandline support to BPT PackageChunks mode, allowing us to generate chunkdbs that only cover data required to perform an update.
Change 4051406 by Leigh.Swift
BuildPatchServices: Update default number of simultaneous downloads for an installer to 16 which is now well proven in the wild.
Change 4036807 by Leigh.Swift
BuildPatchServices: Added new message type for receiving updates about which files have been touched by the installation.
BuildPatchServices: Cloud enumeration is now threaded to improve speed.
Change 4036477 by Richard.Fawcett
Thirdparty: AWSSDK: Update AWS SDK to version 3.3 as speculative fix for object is used after being disposed error.
Confirmed this exception is being raised from within the AWS SDK, and _not_ in Epic code.
Advice by Amazon on AWS forums for people experiencing this exception is always to update to the latest version of the SDK in the first instance.
Change 3922493 by Justin.Sargent
Runtime: Added shortcircuit support to the ExpressionParser. More documentation to come.
AgreementExpressionEvaluator has been updated to use the shortcircuit logic so it now processes expressions lef to right as expected in all cases.
AgreementExpressionEvaluator was also updated to perform evaluation as a two pass system. The tow pass solution prevents over prompting eulas in certain scenarios where the expression would ultimately resolve true without them.
Change 3983713 by Barnabas.McManners
BuildPatchServices: Fix for verification logging error counts for unique runs. Solved the issue by using an external cache of the errors encountered each run to deduct from the total. Reporting only the delta.
Change 3966915 by Wes.Fudala
WebBrowser: CEF: Potential fix for a rare issue encountered when we attempting to release resources outside of the game thread.
Change 3955168 by Justin.Sargent
BuildPatchServices: Updated primary messaging of overall install status to now display Updating when patching an existing installation rather than Installing.
Change 3954610 by Leigh.Swift
BuildPatchServices: Fixing issue with Cloud Chunk Source which would erroneously conclude that it needed to re-download a chunk due to external system failure.
There is now an explicit concept of 'lost chunk' which is tracked and bubbled up by the system errors that cause the loss in the first place, so that each source knows exactly when it should be required to retrieve a chunk that it had already retrieved previously. Being explicit, these lost chunks can also now contribute to the total download required stat.
Also fixing some tracking that was missing to update the total download required stat if a local Install Chunk Source failed to load data from the files on disk and so these chunks needed to be additionally downloaded.
Change 3947928 by Chad.Garyet
UAT: Changing commandutils to attempt to find the Win8.1sdk signtool before the win10 one. There's currently a bug related to vs2017/server2012r2/win10sdk signtool that causes it to exit with an undefined error when signing from a service account. Using the win8.1sdk circumvents this issue.
Change 3942776 by Rob.Cannaday
Http: Fix for Mac sending up duplicate header strings
Change 3940306 by Leigh.Swift
BuildPatchServices: Refactor to isolate CoreUObject dependency and be able to compile out usage.
Change 3936655 by Justin.Sargent
Slate: Changed the invalid fontcache ensure in ShapedTextCache from always to only once to reduce ensure spamChange 3917840 by Leigh.Swift
BuildPatchTool: DiffManifests mode now also saves info for New, Removed, Changed, and Unchanged file to the output json file.
Change 3911756 by Justin.Sargent
WebBrowser: SWebBrowserView now ensures that it has a valid pointer to it's parent window in it's onpaint to avoid issues with the first frame being scaled incorrectly due to not being able to access the parent windows dpi scaling.
Change 3906670 by Justin.Sargent
Slate: Change the ShapedTextCache to hold a weakptr to the Slate FontCache instead of a reference. This will allow it to detect if the FontCache has become invalid since it was linked with the ShapedTextCache, thus making it able to avoid crashing.
Change 3889008 by Justin.Sargent
StandaloneRenderer: Made the SlateD3DRenderingPolicy more resilient to graphics device errors.
Change 3886969 by Justin.Sargent
StandaloneRenderer:Changed SlateD3DConstantBuffer to no longer check on a D3DDevice failure and instead soft fail, so the application can go through the process of attempting to re-establish the D3DDevice.
Change 3886960 by Justin.Sargent
WebBrowser: Made CEFWebBrowserWindow more resilient to issues with creating textures.
Change 3855821 by Barnabas.McManners
BuildPatchServices: Added logging of the configuration to the start of all installs.
Change 3839245 by Wes.Fudala
WebBrowser: Adding support for web browser drag regions. These are areas of a page tagged with -webkit-app-region: drag or -webkit-app-region: no-drag. The application can now pass a handler function to the browser to handle window drag events. This handler will be called if the browser detects mouse drag events inside of a tagged drag region.
Change 3835225 by Jacob.Hedges
Slate: Fix for SScrollBarTrack size issue
Change 3824320 by Wes.Fudala
WebBrowser: Fix for reported deadlock in WebBrowserSingleton. Associated with github pull request #4303.
#jira UE-53420 GitHub 4330 : Fixed deadlock in FWebBrowserSingleton
#4303
Change 3811191 by Barnabas.McManners
BuildPatchServices: Expanded MF01-X into MF01-X-X and MF02-X where X is the os error codes
Change 3807662 by Barnabas.McManners
BuildPatchServices: Broke down build verification errors into 4 new cases.
Change 3805698 by Leigh.Swift
BuildPatchServices: Speculative fixes for Unit test crashes / failures.
Change 3804175 by Wes.Fudala
ThirdParty: CEF: Adding browser locale pak files for es-MX, and es-ES as the typical mapping/fallback does not seem functional on mac browser. They are copies of es_419 and es respectively.
Change 3786628 by Leigh.Swift
WebBrowser: Exposing ability to customise tool tip widgets produced from SWebBrowserView.
Change 3775678 by Richard.Fawcett
BuildPatchServices: Allow a Prerequisite install only mode.
Change 3774365 by Justin.Sargent
BuildPatchServices: Updated Build Stat report that is logged after every installation to use FText::AsMemory instead of the UnitConversion logic, and now it outputs multiple unit types for convenience.
Change 3774361 by Justin.Sargent
Http: Remove Pragma: no-cache header from libcurl requests
Change 3774258 by Leigh.Swift
BuildPatchServices: Fix for destructive patch destroy files that contain useful data.
Change 3766156 by Barnabas.McManners
Http: Various lower changes to enable Hardware testing and to enable proxy configuration.
Change 3756723 by Leigh.Swift
BuildPatchServices: Hooking up disk chunk store operation states to the installer statistics.
BuildPatchServices: Memory chunk store statistics fix for booted chunks that have been reloaded.
Change 3756320 by Rob.Cannaday
Http: Add default headers added to every HTTP request.
Change 3741274 by Wes.Fudala
WebBrowser: Release CEF related references prior to CEF shutdown.
Change 3738003 by Leigh.Swift
BuildPatchServices: Fix-ups for install stats when failures are occurring
NumFilesOutdated now only set on first run, so it is not set to the number of files that are retried.
Total downloaded data and total download requirement stats fixed up for runtime as well as final values.
Initial chunk counters now only set for first run.
Moving the GetBytesDownloaded api from cloud source to download service so that it correctly accumulates.
InstallSource was multiply attempting, and counting, recycle failures, throwing that stat out of proportion.
Change 3729851 by Barnabas.McManners
BuildPatchServices: Changed the installer's MoveFile method to default to not retry. We currently only have uses of move file which already handle retry.
Change 3725611 by Leigh.Swift
Core: FText::AsMemory - Fix for numerical edges.
Added unit tests to check all edges up to full uint64 range.
Change 3725127 by Leigh.Swift
BuildPatchServices: ManifestDiff: Correcting string format padding for new data size output uints.
Change 3725126 by Leigh.Swift
Core: FText::AsMemory fix. Shifting (equivalent of divide 2 per shift) does not work for calculating SI units which are base 10.
Change 3721926 by Justin.Sargent
ThirdParty: LibCurl update performed by Simon Tourangeau.
We now have 100MB/sec download speed with libcurl on Win64, compared to 3MB/sec originally
Change 3700670 by Michael.Trepka
SlateReflector: Fixed mouse click highlighting in Widget Reflector's Demo Mode in high DPI
Change 3697526 by Leigh.Swift
BuildPatchServices: Exposing a suite of runtime statistics for BuildPatchInstallers.
Change 3686439 by Leigh.Swift
BuildPatchServices: Stop installers from always logging a shutdown error on destruction. This should only occur if the installer is actually running.
Change 3684747 by Leigh.Swift
BuildPatchTool: Fix file ignore list to parse using platform agnostic method.
Change 3643038 by Michael.Trepka
Core: Don't defer Cocoa calls in FMacWindow Show and Hide to make sure both actions complete before we exit these functions. This solves the problem with the blocks being called after window was destroyed.
Change 3639692 by Michael.Trepka
Fixes for a couple of issues found by address sanitizer
Change 3625568 by Leigh.Swift
BuildPatchServices: Fixing numerical limits problem with double -> uint64 in FStatsCollector::SecondsToCycles().
Change 3617948 by Leigh.Swift
BuildPatchServices: Disk space requirement can now be lower when patching if destructive patch mode is enabled. This mode will delete existing old files once they are not needed.
BuildPatchServices: Adding new installation mode setting on installer config.
BuildPatchServices: If destructive installation mode is enabled, the file constructor will delete old existing files after completing the new one.
BuildPatchServices: Adding missing file path length check for install location to cover situation where staging directory is outside the install directory.
Change 3593632 by Leigh.Swift
BuildPatchServices: Adding additional installation tracking to BuildPatchServices. See Engine/Source/Runtime/Online/BuildPatchServices/Public/Interfaces/IBuildInstaller.h
[CL 4273704 by Leigh Swift in Main branch]
2018-08-09 17:55:56 -04:00
|
|
|
if (FParse::Param(CommandLine, TEXT("stdout")))
|
|
|
|
|
{
|
|
|
|
|
GLog->AddOutputDevice(new FBuildPatchOutputDevice());
|
|
|
|
|
}
|
2016-06-29 18:00:01 -04:00
|
|
|
|
|
|
|
|
// Handle legacy commandlines
|
|
|
|
|
CommandLine = HandleLegacyCommandline(CommandLine);
|
|
|
|
|
if (CommandLine == nullptr)
|
|
|
|
|
{
|
|
|
|
|
return EReturnCode::ArgumentProcessingError;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Initialise application
|
|
|
|
|
GEngineLoop.PreInit(CommandLine);
|
|
|
|
|
UE_LOG(LogBuildPatchTool, Log, TEXT("Executed with commandline: %s"), CommandLine);
|
|
|
|
|
|
2018-09-25 10:11:35 -04:00
|
|
|
// Check whether as a program, we should bump up the number of threads in GThreadPool.
|
|
|
|
|
CheckAndReallocThreadPool();
|
|
|
|
|
|
2016-06-29 18:00:01 -04:00
|
|
|
// Run the application
|
|
|
|
|
EReturnCode ReturnCode = RunBuildPatchTool();
|
Copying //UE4/Portal-Staging to //UE4/Dev-Main (Source: //UE4/Portal-Staging @ 3592606)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 3520569 by Leigh.Swift
Adding chunkdb support to BPS installer as a chunk source for installations.
Chunk db filenames are provided on the installer configuration struct, and will be used to load chunks needed for the installation.
Chunk db source shares a chunk store with the cloud source.
Adding message pump implementation for installer which can be used to surface events or messages to handlers added to the installer. Currently just takes chunk source events for losing access to the chunkdb files.
Adding concept of new runtime requirements and callback for unavailable chunks to chunk source base API. Chained chunk source cascades broadcasted unavailable chunks down to other sources as new requirements.
#jira OPP-7191: Add chunkdb source support to BPS
Adding support for passing chunkdb files to created installers.
Storing chunkdb filenames used for installation in pending manifest so they can be re-used when resuming.
Exposing chunkdb source events to UI as warning triangle.
#jira OPP-7191: Add chunkdb source support to BPS
Change 3508964 by Wes.Fudala
CL# 3431076 - Upgrade Win32, Win64, and Mac to latest CEF branch 3071.
Adds browser support for foreign language character input via IME.
#jira OPP-4400 Non-Roman characters from an IME cannot be typed into CEF based views
Change 3506884 by Leigh.Swift
#jira OPP-6981: Make sign-in screen a web page
WebBrowser: Adding support to WebBrowser module for implementing custom protocol/scheme handlers. Currently works for CEF integration only.
WebBrowser: Adding support to override the user-agent version string when initialising the web browser module.
PortalBuild: Additionally shipping the contents of /Portal/Content/Web with full launchers.
Portal: Adding web content for sign in, background, and web test pages.
Portal: Added a high version number setup for WebBrowser when running debug so that latest code always gets latest websites.
Portal: Removing old slate sign in screens, and associated code.
Portal: Adding bIsThirdParty bool to some AccountService functions to allow to handle not yet having information about account types returned from the backend to deside if an account can be used with a password sign in.
Portal: Removing unnecessary use of email in the AccountService::AutoSignIn API.
Portal: Replacing old logging in overlay with a 'ShowLongProcessOverlay' API for systems that still use that (e.g. vault cach location select, waiting room).
Portal: UI: Adding a null state to sign in router so resources can be cleaned up.
Portal: UI: Adding web states for all screens on sign in router.
Portal: DebugTools: Adding a web developer section, with a refresh all browsers button to help with web iteration.
Portal: DebugTools: Fixing all test JS to use lowercased api calls.
Portal: Implementing new client:// scheme handler for WebBrowser which local pages will use.
Portal: RememberMe: Exposing additional user info, LastName and whether the account can auth with a password.
Portal: Temporary dynamic background image implementation and javascript bridge.
Portal: Sign in screen is now driven by a web page, and javascript API.
Portal: UIRouter: Improved handling of redirects and tracking of state changes via redirects.
Change 3471216 by Leigh.Swift
Extending BPT VerifyChunks mode to check manifests are loadable and do not reference broken data, and also to output bad files to a text file passed in on commandline.
Change 3469441 by Richard.Fawcett
Add support for disc icon to packaging game ISO
#jira OPP-7311: Implement icon file for disc
Change 3468243 by Wes.Fudala
Adds support for branding windows installers.
#jira OPP-7190: Create game bootstrap msi (Windows)
Change 3456485 by Richard.Fawcett
Create new C# wrapper around BuildPatchTool to call the (as yet unimplemented) PackageChunks mode.
Implement new tool mode in PortalPublishingTool which takes game name and build version, finds manifest files, and executes BuildPatchTool for each platform, with the option to restrict to a single platform via the commandline.
Build script changes to allow the Package Chunks job to be called from Electric Commander. This includes refactoring the setup of PortalPublishingTool to a new node which the package chunks job, and the existing build diff job depend on.
#jira OPP-7193: Create 'package chunks' job
Change 3446665 by Jacob.Hedges
CL# 3430618 - Added App Installation, Engine Installation, and Plugin Installation test suites. Create Social gadget for interacting with the social panel. Added Portal Automation Helper that exposes the UIRouter, and changed existing tests and Screens to utilize URI navigation. Added various metadata tags.
#jira OPP-7155
#jira QAENG-1075
#jira QAENG-1076
#jira QAENG-1079
#jira QAENG-1080
Change 3420598 by Richard.Fawcett
Use Prerequisite Ids to track which prerequisistes have been installed on a user's system.
#jira OPP-6007: Upgrade prereq installer so that it checks versions instead of file hashes - Part 1
Change 3410773 by Richard.Fawcett
Implement project-specific retention periods for automated cleanup routines.
Additional changes:
* Remove VerifyManifestFilenames as it makes no sense for manifest filenames to have to conform to a specific pattern now that we have randomized manifest filenames.
* Add support for detecting build versions from Win32 manifest files by tweaking regex.
* DeleteUnreferencedManifestsFromCDN: Avoid parsing version strings when we're not in SimulateCDN mode as we're only interested in the result if we're filtering "old" manifests by CL (i.e. simulating) rather than having the date of real files from the folder.
* Add -SkipProd flag to periodic rocket cleanup to enable us to run operations that only touch gamedev. This aids debugging as prod environment is firewalled from developer workstations.
Change 3377027 by Leigh.Swift
#jira OPP-6911: Launcher.Install.Stats Changes
Adding specific process timers for each stage that we want to time, replacing any individual logic.
Verifier no longer needs to provide the TimeSpentPaused output, since it is now given knowledge of pause state via external dependancy, it doesn't need to be responsible for providing the pause timer.
Rearranging Launcher.Build.Stats analytics events according to new spec and desires.
Also cleaning up some GLog->UE_LOG.
Change 3374573 by Jacob.Hedges
Copying //Tasks/Portal/Dev-UIAutomation to Dev-Main (//Portal/Dev-Main)
Added new functional testsuite for the launcher, including metadata tags for relevant elements
Added new functionality to ID and Path searches for the automation driver to start the search from a specified element
Changed selective download components to utilize SCheckBox instead of SButton
#jira OPP-6973
[CL 3592632 by Antony Carter in Main branch]
2017-08-17 06:28:58 -04:00
|
|
|
if (ReturnCode != EReturnCode::OK)
|
|
|
|
|
{
|
|
|
|
|
UE_LOG(LogBuildPatchTool, Error, TEXT("Tool exited with: %d"), (int32)ReturnCode);
|
|
|
|
|
}
|
2016-06-29 18:00:01 -04:00
|
|
|
|
|
|
|
|
// Shutdown
|
|
|
|
|
FCoreDelegates::OnExit.Broadcast();
|
|
|
|
|
|
|
|
|
|
return ReturnCode;
|
|
|
|
|
}
|
|
|
|
|
|
2016-09-23 17:31:51 -04:00
|
|
|
const TCHAR* ProcessApplicationCommandline(int32 ArgC, TCHAR* ArgV[])
|
2016-06-29 18:00:01 -04:00
|
|
|
{
|
Copying //UE4/Portal-Staging to //UE4/Dev-Main (Source: //UE4/Portal-Staging @ 3592606)
#rb none
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 3520569 by Leigh.Swift
Adding chunkdb support to BPS installer as a chunk source for installations.
Chunk db filenames are provided on the installer configuration struct, and will be used to load chunks needed for the installation.
Chunk db source shares a chunk store with the cloud source.
Adding message pump implementation for installer which can be used to surface events or messages to handlers added to the installer. Currently just takes chunk source events for losing access to the chunkdb files.
Adding concept of new runtime requirements and callback for unavailable chunks to chunk source base API. Chained chunk source cascades broadcasted unavailable chunks down to other sources as new requirements.
#jira OPP-7191: Add chunkdb source support to BPS
Adding support for passing chunkdb files to created installers.
Storing chunkdb filenames used for installation in pending manifest so they can be re-used when resuming.
Exposing chunkdb source events to UI as warning triangle.
#jira OPP-7191: Add chunkdb source support to BPS
Change 3508964 by Wes.Fudala
CL# 3431076 - Upgrade Win32, Win64, and Mac to latest CEF branch 3071.
Adds browser support for foreign language character input via IME.
#jira OPP-4400 Non-Roman characters from an IME cannot be typed into CEF based views
Change 3506884 by Leigh.Swift
#jira OPP-6981: Make sign-in screen a web page
WebBrowser: Adding support to WebBrowser module for implementing custom protocol/scheme handlers. Currently works for CEF integration only.
WebBrowser: Adding support to override the user-agent version string when initialising the web browser module.
PortalBuild: Additionally shipping the contents of /Portal/Content/Web with full launchers.
Portal: Adding web content for sign in, background, and web test pages.
Portal: Added a high version number setup for WebBrowser when running debug so that latest code always gets latest websites.
Portal: Removing old slate sign in screens, and associated code.
Portal: Adding bIsThirdParty bool to some AccountService functions to allow to handle not yet having information about account types returned from the backend to deside if an account can be used with a password sign in.
Portal: Removing unnecessary use of email in the AccountService::AutoSignIn API.
Portal: Replacing old logging in overlay with a 'ShowLongProcessOverlay' API for systems that still use that (e.g. vault cach location select, waiting room).
Portal: UI: Adding a null state to sign in router so resources can be cleaned up.
Portal: UI: Adding web states for all screens on sign in router.
Portal: DebugTools: Adding a web developer section, with a refresh all browsers button to help with web iteration.
Portal: DebugTools: Fixing all test JS to use lowercased api calls.
Portal: Implementing new client:// scheme handler for WebBrowser which local pages will use.
Portal: RememberMe: Exposing additional user info, LastName and whether the account can auth with a password.
Portal: Temporary dynamic background image implementation and javascript bridge.
Portal: Sign in screen is now driven by a web page, and javascript API.
Portal: UIRouter: Improved handling of redirects and tracking of state changes via redirects.
Change 3471216 by Leigh.Swift
Extending BPT VerifyChunks mode to check manifests are loadable and do not reference broken data, and also to output bad files to a text file passed in on commandline.
Change 3469441 by Richard.Fawcett
Add support for disc icon to packaging game ISO
#jira OPP-7311: Implement icon file for disc
Change 3468243 by Wes.Fudala
Adds support for branding windows installers.
#jira OPP-7190: Create game bootstrap msi (Windows)
Change 3456485 by Richard.Fawcett
Create new C# wrapper around BuildPatchTool to call the (as yet unimplemented) PackageChunks mode.
Implement new tool mode in PortalPublishingTool which takes game name and build version, finds manifest files, and executes BuildPatchTool for each platform, with the option to restrict to a single platform via the commandline.
Build script changes to allow the Package Chunks job to be called from Electric Commander. This includes refactoring the setup of PortalPublishingTool to a new node which the package chunks job, and the existing build diff job depend on.
#jira OPP-7193: Create 'package chunks' job
Change 3446665 by Jacob.Hedges
CL# 3430618 - Added App Installation, Engine Installation, and Plugin Installation test suites. Create Social gadget for interacting with the social panel. Added Portal Automation Helper that exposes the UIRouter, and changed existing tests and Screens to utilize URI navigation. Added various metadata tags.
#jira OPP-7155
#jira QAENG-1075
#jira QAENG-1076
#jira QAENG-1079
#jira QAENG-1080
Change 3420598 by Richard.Fawcett
Use Prerequisite Ids to track which prerequisistes have been installed on a user's system.
#jira OPP-6007: Upgrade prereq installer so that it checks versions instead of file hashes - Part 1
Change 3410773 by Richard.Fawcett
Implement project-specific retention periods for automated cleanup routines.
Additional changes:
* Remove VerifyManifestFilenames as it makes no sense for manifest filenames to have to conform to a specific pattern now that we have randomized manifest filenames.
* Add support for detecting build versions from Win32 manifest files by tweaking regex.
* DeleteUnreferencedManifestsFromCDN: Avoid parsing version strings when we're not in SimulateCDN mode as we're only interested in the result if we're filtering "old" manifests by CL (i.e. simulating) rather than having the date of real files from the folder.
* Add -SkipProd flag to periodic rocket cleanup to enable us to run operations that only touch gamedev. This aids debugging as prod environment is firewalled from developer workstations.
Change 3377027 by Leigh.Swift
#jira OPP-6911: Launcher.Install.Stats Changes
Adding specific process timers for each stage that we want to time, replacing any individual logic.
Verifier no longer needs to provide the TimeSpentPaused output, since it is now given knowledge of pause state via external dependancy, it doesn't need to be responsible for providing the pause timer.
Rearranging Launcher.Build.Stats analytics events according to new spec and desires.
Also cleaning up some GLog->UE_LOG.
Change 3374573 by Jacob.Hedges
Copying //Tasks/Portal/Dev-UIAutomation to Dev-Main (//Portal/Dev-Main)
Added new functional testsuite for the launcher, including metadata tags for relevant elements
Added new functionality to ID and Path searches for the automation driver to start the search from a specified element
Changed selective download components to utilize SCheckBox instead of SButton
#jira OPP-6973
[CL 3592632 by Antony Carter in Main branch]
2017-08-17 06:28:58 -04:00
|
|
|
static FString CommandLine = TEXT("-usehyperthreading -UNATTENDED");
|
2016-06-29 18:00:01 -04:00
|
|
|
for (int32 Option = 1; Option < ArgC; Option++)
|
|
|
|
|
{
|
|
|
|
|
CommandLine += TEXT(" ");
|
|
|
|
|
FString Argument(ArgV[Option]);
|
|
|
|
|
if (Argument.Contains(TEXT(" ")))
|
|
|
|
|
{
|
|
|
|
|
if (Argument.Contains(TEXT("=")))
|
|
|
|
|
{
|
|
|
|
|
FString ArgName;
|
|
|
|
|
FString ArgValue;
|
|
|
|
|
Argument.Split(TEXT("="), &ArgName, &ArgValue);
|
|
|
|
|
Argument = FString::Printf(TEXT("%s=\"%s\""), *ArgName, *ArgValue);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Argument = FString::Printf(TEXT("\"%s\""), *Argument);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
CommandLine += Argument;
|
|
|
|
|
}
|
2016-09-23 17:31:51 -04:00
|
|
|
return *CommandLine;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
INT32_MAIN_INT32_ARGC_TCHAR_ARGV()
|
|
|
|
|
{
|
|
|
|
|
EReturnCode ReturnCode;
|
|
|
|
|
// Using try&catch is the windows-specific method of interfacing with CrashReportClient
|
|
|
|
|
#if PLATFORM_WINDOWS && !PLATFORM_SEH_EXCEPTIONS_DISABLED
|
|
|
|
|
__try
|
|
|
|
|
#endif
|
|
|
|
|
{
|
|
|
|
|
// SetCrashHandler(nullptr) sets up default behavior for Linux and Mac interfacing with CrashReportClient
|
|
|
|
|
FPlatformMisc::SetCrashHandler(nullptr);
|
|
|
|
|
GIsGuarded = 1;
|
|
|
|
|
ReturnCode = BuildPatchToolMain(ProcessApplicationCommandline(ArgC, ArgV));
|
|
|
|
|
GIsGuarded = 0;
|
|
|
|
|
}
|
|
|
|
|
#if PLATFORM_WINDOWS && !PLATFORM_SEH_EXCEPTIONS_DISABLED
|
|
|
|
|
__except (ReportCrash(GetExceptionInformation()))
|
|
|
|
|
{
|
|
|
|
|
ReturnCode = EReturnCode::Crash;
|
|
|
|
|
GError->HandleError();
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
return static_cast<int32>(ReturnCode);
|
2016-06-29 18:00:01 -04:00
|
|
|
}
|