diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/buildtool/computed_roots/TARGETS | 2 | ||||
-rw-r--r-- | src/buildtool/computed_roots/evaluate.cpp | 4 | ||||
-rw-r--r-- | src/buildtool/tree_structure/TARGETS | 8 | ||||
-rw-r--r-- | src/buildtool/tree_structure/compute_tree_structure.hpp | 41 | ||||
-rw-r--r-- | src/buildtool/tree_structure/tree_structure_utils.cpp (renamed from src/buildtool/tree_structure/compute_tree_structure.cpp) | 11 | ||||
-rw-r--r-- | src/buildtool/tree_structure/tree_structure_utils.hpp | 44 |
6 files changed, 56 insertions, 54 deletions
diff --git a/src/buildtool/computed_roots/TARGETS b/src/buildtool/computed_roots/TARGETS index d15c4b8c..fde38693 100644 --- a/src/buildtool/computed_roots/TARGETS +++ b/src/buildtool/computed_roots/TARGETS @@ -97,8 +97,8 @@ , ["src/buildtool/progress_reporting", "base_progress_reporter"] , ["src/buildtool/progress_reporting", "progress"] , ["src/buildtool/storage", "storage"] - , ["src/buildtool/tree_structure", "compute_tree_structure"] , ["src/buildtool/tree_structure", "tree_structure_cache"] + , ["src/buildtool/tree_structure", "tree_structure_utils"] , ["src/utils/cpp", "expected"] , ["src/utils/cpp", "tmp_dir"] , ["src/utils/cpp", "vector"] diff --git a/src/buildtool/computed_roots/evaluate.cpp b/src/buildtool/computed_roots/evaluate.cpp index f53e7a44..332b079e 100644 --- a/src/buildtool/computed_roots/evaluate.cpp +++ b/src/buildtool/computed_roots/evaluate.cpp @@ -70,8 +70,8 @@ #include "src/buildtool/progress_reporting/base_progress_reporter.hpp" #include "src/buildtool/progress_reporting/progress.hpp" #include "src/buildtool/storage/storage.hpp" -#include "src/buildtool/tree_structure/compute_tree_structure.hpp" #include "src/buildtool/tree_structure/tree_structure_cache.hpp" +#include "src/buildtool/tree_structure/tree_structure_utils.hpp" #include "src/utils/cpp/expected.hpp" #include "src/utils/cpp/tmp_dir.hpp" #include "src/utils/cpp/vector.hpp" @@ -457,7 +457,7 @@ void ComputeTreeStructureAndFill( // Compute tree structure and add it to the cache: auto const tree_structure = - ComputeTreeStructure(*digest, storage, tree_structure_cache); + TreeStructureUtils::Compute(*digest, storage, tree_structure_cache); if (not tree_structure) { std::invoke(*logger, tree_structure.error(), /*fatal=*/true); return; diff --git a/src/buildtool/tree_structure/TARGETS b/src/buildtool/tree_structure/TARGETS index 0e8d232a..8f8ec9c2 100644 --- a/src/buildtool/tree_structure/TARGETS +++ b/src/buildtool/tree_structure/TARGETS @@ -20,11 +20,11 @@ , ["src/utils/cpp", "expected"] ] } -, "compute_tree_structure": +, "tree_structure_utils": { "type": ["@", "rules", "CC", "library"] - , "name": ["compute_tree_structure"] - , "hdrs": ["compute_tree_structure.hpp"] - , "srcs": ["compute_tree_structure.cpp"] + , "name": ["tree_structure_utils"] + , "hdrs": ["tree_structure_utils.hpp"] + , "srcs": ["tree_structure_utils.cpp"] , "deps": [ "tree_structure_cache" , ["src/buildtool/common", "common"] diff --git a/src/buildtool/tree_structure/compute_tree_structure.hpp b/src/buildtool/tree_structure/compute_tree_structure.hpp deleted file mode 100644 index dc31d814..00000000 --- a/src/buildtool/tree_structure/compute_tree_structure.hpp +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2024 Huawei Cloud Computing Technology Co., Ltd. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef INCLUDED_SRC_BUILDTOOL_TREE_STRUCTURE_COMPUTE_TREE_STRUCTURE_HPP -#define INCLUDED_SRC_BUILDTOOL_TREE_STRUCTURE_COMPUTE_TREE_STRUCTURE_HPP - -#include <string> - -#include "src/buildtool/common/artifact_digest.hpp" -#include "src/buildtool/storage/storage.hpp" -#include "src/buildtool/tree_structure/tree_structure_cache.hpp" -#include "src/utils/cpp/expected.hpp" - -/// \brief Compute the tree structure of a git tree and add corresponding -/// coupling to the cache. Tree structure is a directory, where all blobs and -/// symlinks are replaced with empty blobs. Every subtree gets written to the -/// cache as well. Expects tree is present in the storage. -/// \param tree Git tree to be analyzed. Must be present in the storage. -/// \param storage Storage (GitSHA1) to be used for adding new tree -/// structure artifacts -/// \param cache Cache for storing key-value dependencies. -/// \return Digest of the tree structure that is present in the storage on -/// success, or an error message on failure. -[[nodiscard]] auto ComputeTreeStructure( - ArtifactDigest const& tree, - Storage const& storage, - TreeStructureCache const& cache) noexcept - -> expected<ArtifactDigest, std::string>; - -#endif // INCLUDED_SRC_BUILDTOOL_TREE_STRUCTURE_COMPUTE_TREE_STRUCTURE_HPP diff --git a/src/buildtool/tree_structure/compute_tree_structure.cpp b/src/buildtool/tree_structure/tree_structure_utils.cpp index 1e1265cd..fd897672 100644 --- a/src/buildtool/tree_structure/compute_tree_structure.cpp +++ b/src/buildtool/tree_structure/tree_structure_utils.cpp @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "src/buildtool/tree_structure/compute_tree_structure.hpp" +#include "src/buildtool/tree_structure/tree_structure_utils.hpp" #include <algorithm> #include <functional> @@ -31,9 +31,9 @@ #include "src/utils/cpp/hex_string.hpp" #include "src/utils/cpp/path.hpp" -auto ComputeTreeStructure(ArtifactDigest const& tree, - Storage const& storage, - TreeStructureCache const& cache) noexcept +auto TreeStructureUtils::Compute(ArtifactDigest const& tree, + Storage const& storage, + TreeStructureCache const& cache) noexcept -> expected<ArtifactDigest, std::string> { if (not tree.IsTree() or not ProtocolTraits::IsNative(tree.GetHashType())) { return unexpected{fmt::format("Not a git tree: {}", tree.hash())}; @@ -89,8 +89,7 @@ auto ComputeTreeStructure(ArtifactDigest const& tree, if (not git_digest) { return unexpected{git_digest.error()}; } - auto sub_tree = - ComputeTreeStructure(*git_digest, storage, cache); + auto sub_tree = Compute(*git_digest, storage, cache); if (not sub_tree) { return sub_tree; } diff --git a/src/buildtool/tree_structure/tree_structure_utils.hpp b/src/buildtool/tree_structure/tree_structure_utils.hpp new file mode 100644 index 00000000..56dd1249 --- /dev/null +++ b/src/buildtool/tree_structure/tree_structure_utils.hpp @@ -0,0 +1,44 @@ +// Copyright 2024 Huawei Cloud Computing Technology Co., Ltd. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef INCLUDED_SRC_BUILDTOOL_TREE_STRUCTURE_TREE_STRUCTURE_UTILS_HPP +#define INCLUDED_SRC_BUILDTOOL_TREE_STRUCTURE_TREE_STRUCTURE_UTILS_HPP + +#include <string> + +#include "src/buildtool/common/artifact_digest.hpp" +#include "src/buildtool/storage/storage.hpp" +#include "src/buildtool/tree_structure/tree_structure_cache.hpp" +#include "src/utils/cpp/expected.hpp" + +class TreeStructureUtils final { + public: + /// \brief Compute the tree structure of a git tree and add corresponding + /// coupling to the cache. Tree structure is a directory, where all blobs + /// and symlinks are replaced with empty blobs. Every subtree gets written + /// to the cache as well. Expects tree is present in the storage. + /// \param tree Git tree to be analyzed. Must be present in the + /// storage. + /// \param storage Storage (GitSHA1) to be used for adding new tree + /// structure artifacts + /// \param cache Cache for storing key-value dependencies. + /// \return Digest of the tree structure that is present in the storage on + /// success, or an error message on failure. + [[nodiscard]] static auto Compute(ArtifactDigest const& tree, + Storage const& storage, + TreeStructureCache const& cache) noexcept + -> expected<ArtifactDigest, std::string>; +}; + +#endif // INCLUDED_SRC_BUILDTOOL_TREE_STRUCTURE_TREE_STRUCTURE_UTILS_HPP |