aboutsummaryrefslogtreecommitdiff
path: root/src/zenremotestore/include
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2026-01-27 14:53:37 +0100
committerGitHub Enterprise <[email protected]>2026-01-27 14:53:37 +0100
commit16a4ce30ef1a4461ea39f1b821974ed01b80cd1f (patch)
tree8305ea81771c3e7793bd0f84f7bb3cd5a68be66a /src/zenremotestore/include
parentavoid big ioworker backlog (#733) (diff)
downloadzen-16a4ce30ef1a4461ea39f1b821974ed01b80cd1f.tar.xz
zen-16a4ce30ef1a4461ea39f1b821974ed01b80cd1f.zip
allow download specification for zen builds download (#734)
- Feature: `zen builds download` now supports `--download-spec-path` to determine what content to download from a build - The unstructured format expects one line per file relative to the root with '/' as a path delimiter - The structured format uses JSon format and the `--download-spec-path` must have extension `.json` to enable structured input { "parts": { "default" : { "files": [ "foo/bar", "baz.exe" ] }, "symbols": { "files": [ "baz.pdb" ] } } }
Diffstat (limited to 'src/zenremotestore/include')
-rw-r--r--src/zenremotestore/include/zenremotestore/builds/buildmanifest.h27
-rw-r--r--src/zenremotestore/include/zenremotestore/builds/buildstorageoperations.h16
2 files changed, 30 insertions, 13 deletions
diff --git a/src/zenremotestore/include/zenremotestore/builds/buildmanifest.h b/src/zenremotestore/include/zenremotestore/builds/buildmanifest.h
new file mode 100644
index 000000000..a0d9a7691
--- /dev/null
+++ b/src/zenremotestore/include/zenremotestore/builds/buildmanifest.h
@@ -0,0 +1,27 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#pragma once
+
+#include <zencore/filesystem.h>
+#include <zencore/uid.h>
+
+namespace zen {
+
+struct BuildManifest
+{
+ struct Part
+ {
+ Oid PartId = Oid::Zero;
+ std::string PartName;
+ std::vector<std::filesystem::path> Files;
+ };
+ std::vector<Part> Parts;
+};
+
+BuildManifest ParseBuildManifest(const std::filesystem::path& ManifestPath);
+
+#if ZEN_WITH_TESTS
+void buildmanifest_forcelink();
+#endif // ZEN_WITH_TESTS
+
+} // namespace zen
diff --git a/src/zenremotestore/include/zenremotestore/builds/buildstorageoperations.h b/src/zenremotestore/include/zenremotestore/builds/buildstorageoperations.h
index 9f7d93398..47f402e15 100644
--- a/src/zenremotestore/include/zenremotestore/builds/buildstorageoperations.h
+++ b/src/zenremotestore/include/zenremotestore/builds/buildstorageoperations.h
@@ -577,17 +577,6 @@ private:
PrepareBuildResult PrepareBuild();
- struct PartManifest
- {
- struct Part
- {
- Oid PartId;
- std::string PartName;
- std::vector<std::filesystem::path> Files;
- };
- std::vector<Part> Parts;
- };
-
struct UploadPart
{
Oid PartId = Oid::Zero;
@@ -600,8 +589,6 @@ private:
std::vector<BuildsOperationUploadFolder::UploadPart> ReadFolder();
std::vector<UploadPart> ReadManifestParts(const std::filesystem::path& ManifestPath);
- PartManifest ParseManifest(const std::filesystem::path& Path, const std::filesystem::path& ManifestPath);
-
bool IsAcceptedFolder(const std::string_view& RelativePath) const;
bool IsAcceptedFile(const std::string_view& RelativePath) const;
@@ -811,10 +798,13 @@ std::vector<std::pair<Oid, std::string>> ResolveBuildPartNames(CbObjectView
std::span<const std::string> BuildPartNames,
std::uint64_t& OutPreferredMultipartChunkSize);
+struct BuildManifest;
+
ChunkedFolderContent GetRemoteContent(OperationLogOutput& Output,
StorageInstance& Storage,
const Oid& BuildId,
const std::vector<std::pair<Oid, std::string>>& BuildParts,
+ const BuildManifest& Manifest,
std::span<const std::string> IncludeWildcards,
std::span<const std::string> ExcludeWildcards,
std::unique_ptr<ChunkingController>& OutChunkController,