Commit Graph

347 Commits

Author SHA1 Message Date
dan thompson
32ef1ba307 Updating RCD logging to segregate optional containers.
[CL 32286270 by dan thompson in ue5-main branch]
2024-03-15 18:35:50 -04:00
pj kack
4161e66f68 Move all IoStoreWriter code (writing of .utoc/.ucas containers) out from Core into IoStoreUtilities.
Break cyclic dependency on DerivedDataCache module to utilize DDC2 API to cache compressed chunks.
The declarations moved from the public header are considered private and are not really usable outside of the IoStoreUtilities/UnrealPak context.

#rb per.larsson
#rnx
#tests BuildCookRun Lyra with pak/container files

[CL 31986007 by pj kack in ue5-main branch]
2024-03-04 07:47:44 -05:00
dan thompson
897cd0a5f4 Prevent partial initialization of the reference chunk database on failures.
#rb fabian.giesen

[CL 31820385 by dan thompson in ue5-main branch]
2024-02-26 18:02:39 -05:00
dan thompson
7c183a3178 Removing AssetRegistryWritebackAfterStage. This has evolved such that it needs to be run during stage and is not really useful afterwards. Was deprecated in 5.4 after being release in I think 5.3, highly unlikely anyone was using it.
#jira UE-195225
#rb charles.bloom

[CL 31817274 by dan thompson in ue5-main branch]
2024-02-26 16:35:32 -05:00
dan thompson
033ec352b1 Since package names are usually FNames, added a helper to avoid any extraneous allocations when grabbing the root.
#jira UE-195217
#rb Matt.Peters

[CL 31690907 by dan thompson in ue5-main branch]
2024-02-21 13:50:00 -05:00
martin ridgers
dea833b91e Removed IAS upload from UnrealPak. It is now exposed via the IasTool program.
#rb per.larsson
#rnx

[CL 31676621 by martin ridgers in ue5-main branch]
2024-02-21 03:39:50 -05:00
dan thompson
15fd28a21e Reference Chunk Database:
* Optionally output a CSV of changed/new packages.
* Add an additional directory input if containers get separated off during a build process
* Catch optional segment containers and patch up the container id per the id fix in a separate CL.
bunch of different preflights due to CIS issues.
#rb fabian.giesen
#jira UE-172130

[CL 31576665 by dan thompson in ue5-main branch]
2024-02-16 15:10:30 -05:00
dan thompson
ef9ccefa8f Updating optional segment iostore containers to have a unique container id instead of reusing their base container's id. This time to verify I removed the FIoContainerId struct _entirely_ from the codebase to make sure I caught all use cases, and kicked the relevant build that failed.
#rb Per.Larsson

[CL 31541486 by dan thompson in ue5-main branch]
2024-02-15 18:04:47 -05:00
thanasis vogiannou
a95164a9b5 UnrealPak: Replace check with warning for missing import Script Object in IoStore describe
#rb Per.Larsson, PJ.Kack

[CL 31516929 by thanasis vogiannou in ue5-main branch]
2024-02-15 08:15:56 -05:00
graeme thornton
8e2da03811 [Backout] - CL31362445
[FYI] dan.thompson
Original CL Desc
-----------------------------------------------------------------
Updating optional segment iostore containers to have a unique container id instead of reusing their base container's id. The container ID is only used to load the container's header chunk and otherwise is only used for informative purposes (and the ref cache db.._ and so this will not affect the ability to load optional segment containers in a cooked editor.
#rb Francis.Hurteau

[CL 31379180 by graeme thornton in ue5-main branch]
2024-02-12 08:12:49 -05:00
dan thompson
3dccd63435 Updating optional segment iostore containers to have a unique container id instead of reusing their base container's id. The container ID is only used to load the container's header chunk and otherwise is only used for informative purposes (and the ref cache db.._ and so this will not affect the ability to load optional segment containers in a cooked editor.
#rb Francis.Hurteau

[CL 31368093 by dan thompson in ue5-main branch]
2024-02-10 12:47:35 -05:00
martin ridgers
edf615ef53 Lifted IAS' TOC downloading out from UnrealPak
#rb paul.chipchase
#rnx

[CL 31167977 by martin ridgers in ue5-main branch]
2024-02-05 04:51:45 -05:00
pj kack
9e9bb35f97 ZenFileSystemManifest fixes for missing plugins on target platforms (relax optimizations in 25794520).
When adding plugin directories also add any valid plugin extension directories (inspired by cl 24072232).
Don't filter out plugins disabled in the editor/cooker, they may still be enabled on the target platform.

todo: Reintroduce more accurate plugin filtering logic.
#rb dan.engelbrecht, Zousar.Shaker

[CL 31167561 by pj kack in ue5-main branch]
2024-02-05 04:07:35 -05:00
martin ridgers
f2c6bc31dd Moved ListTocs IAS command from UnrealPak to IasTool
#rb paul.chipchase
#rnx

[CL 31081020 by martin ridgers in ue5-main branch]
2024-02-01 04:13:35 -05:00
zousar shaker
9f1b48b917 Change naming of .projectstore to ue.projectstore to avoid having hidden by default status on Mac/Linux.
#rb dan.engelbrecht

[CL 31054932 by zousar shaker in ue5-main branch]
2024-01-31 13:01:29 -05:00
martin ridgers
8c31cf082f Moved IAS config file writing code into IAS module
#rb paul.chipchase
#rnx

[CL 30879299 by martin ridgers in ue5-main branch]
2024-01-25 02:34:40 -05:00
martin ridgers
b342d2b79a Container upload takes a KeyChain object instead of a bespoke map.
This is a strategic changing. There have been many ways to load keys, all except FKeyChain are deprecated. As IAS is modern it only needs to support the latest, eliminating parsing and handling code for various historical permutations of command line arguments and formats.

#rb per.larsson
#rnx

[CL 30839389 by martin ridgers in ue5-main branch]
2024-01-24 07:22:41 -05:00
martin ridgers
32307e2643 Key name for replays as an upload object parameter
#rb per.larsson
#rnx

[CL 30837171 by martin ridgers in ue5-main branch]
2024-01-24 04:17:34 -05:00
martin ridgers
fba41a19e1 Get Distribution and Fallback URLs in the same fashion as the Service one
#rb per.larsson
#rnx

[CL 30835896 by martin ridgers in ue5-main branch]
2024-01-24 02:44:31 -05:00
steve robb
6d5b974842 Fixed up a lot of bool-taking container resize functions to take EAllowShrinking instead.
[CL 30735396 by steve robb in ue5-main branch]
2024-01-19 19:41:56 -05:00
paul chipchase
dd52744c0a Add option (disabled by default) for IAS to write out one toc per container rather than a single all encompassing toc.
#rb Per.Larsson
#jira UE-189912
#rnx

### IAS
- The previous version of this system worked by appending IAS data to the end of .utoc files and using that data to generate the FOnDemandTocContainerEntry data that we needed, however we don't want to do this long term as we want to remove the IAS code from IoStoreUtilities. So instead we want to store a FOnDemandToc for each .utoc that would contain on demand data, where the FOnDemandToc contains a single FOnDemandTocContainerEntry detailing the chunks that it has access to. Then when we mount a .pak we can mount this new file (currently called .uondemandtoc) if it exists for that .pak file, in the exact same way that we would mount a .utoc.
- Note that for now we will continue to produce and use the single large .iochunktoc file as before. This new code path does work for basic games but will need more testing and work before it will function correctly in all cases.
-- Both the old format (.iochunktoc) and the new format (.uondemandtoc) are only produced if the cmdline arg '-WriteTocToDisk' is passed to UnrealPak.
- Added a new global string 'GIasOnDemandTocExt' to allow us to change the extension easily in the future. Currently set to .uondemandtoc.
- There are a number of places that require us to calculate paths based on the provided service url and other server configuration options. This code has been moved to it's own function 'ResolvePaths' so that it can be reused.
-- Previously this code was in IoStoreUtilities where it was used to write out the .ini file. As it has been moved to the IoStoreOnDemandModule we now return the paths as part of FIoStoreUploadResult so that the ini file can continue to use the info.
- Removed the cvar 's.IasGenerateOnDemandToc' and 'ias.LoadOnDemandToc and replaced it with a new cvar 'ias.TocMode which is an int rather than a bool and allows us to select the type of toc loading that we want to do (load from .iochunktoc, download a .iochunktoc or use the new .uondemandtoc files).
-- Using enums as cvars is discouraged so instead of using the cvar directly we use an accessor function ::GetTocMode which converts the cvar to an enum (ETocMode) and gives errors if the cvar is invalid.
- FOnDemandIoStore::AddToc has been extended to work with the traditional toc methods (where TocPath is a path to a file) and the new method (where TocPath is just the filename).
-- The old method needs to parse the prefix, but the new method will store the path as "ChunksDirectory".
- All code for generating toc info from .utoc files has been removed as well as the code to verify that a generated FOnDemandToc is the same as the version downloaded from the network. Code that was working on both loaded and generated tocs has been renamed to reflect that we only load tocs now.
- When mounting FOnDemandIoBackend and using the new method we first hook into the newly added GetPakMountOperationDelegate in the PakFile system so that we are notified about new pak files being mounted followed by an attempt to find the pakfiles that have already been mounted and catch up by mounting any corresponding .uondemandtoc files.

## IAS Misc
- Minor Optimization: Changed some const FString& parameters to FStringView in places that were commonly being called with a TCHAR* string to avoid the implicit FString conversion.
- Minor Optimization: Presize some arrays during UploadContainerFiles to avoid unnecessary resizing and copying.
- Fixed some typos.
- Removed any remaining reference to the pakfile module as all communicate is via core delegates.
- When uploading we no longer log the containers that we are skipping.
- Changed the logging of uploaded chunks from Display to Log to reduce output spam.

[CL 30680833 by paul chipchase in ue5-main branch]
2024-01-18 06:43:29 -05:00
dan thompson
f7613bf59d Deprecate asset registry writeback after stage as we're running in to too many things that need information we no longer have after stage.
#jira UE-195225

[CL 30605504 by dan thompson in ue5-main branch]
2024-01-12 17:21:41 -05:00
dan thompson
34f5b735ad Reference Chunk logging improvement.
#rb fabian.giesen

[CL 30602121 by dan thompson in ue5-main branch]
2024-01-12 15:28:24 -05:00
dan engelbrecht
8b90143974 Improve error handling in FZenStoreHttpClient::AppendOp
#rb Per.Larsson

[CL 30389972 by dan engelbrecht in ue5-main branch]
2023-12-19 04:54:33 -05:00
zousar shaker
10d5ca23ce Make use of ability to get all chunk data in batch from zenserver 0.2.36 release.
#rb Dan.Thompson

[CL 30311719 by zousar shaker in ue5-main branch]
2023-12-13 19:59:22 -05:00