diff options
Diffstat (limited to 'llvm/lib/CAS/BuiltinUnifiedCASDatabases.cpp')
| -rw-r--r-- | llvm/lib/CAS/BuiltinUnifiedCASDatabases.cpp | 38 | 
1 files changed, 38 insertions, 0 deletions
diff --git a/llvm/lib/CAS/BuiltinUnifiedCASDatabases.cpp b/llvm/lib/CAS/BuiltinUnifiedCASDatabases.cpp new file mode 100644 index 0000000..f3f6fa0 --- /dev/null +++ b/llvm/lib/CAS/BuiltinUnifiedCASDatabases.cpp @@ -0,0 +1,38 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "llvm/CAS/BuiltinUnifiedCASDatabases.h" +#include "BuiltinCAS.h" +#include "llvm/CAS/ActionCache.h" +#include "llvm/CAS/UnifiedOnDiskCache.h" + +using namespace llvm; +using namespace llvm::cas; + +Expected<std::pair<std::unique_ptr<ObjectStore>, std::unique_ptr<ActionCache>>> +cas::createOnDiskUnifiedCASDatabases(StringRef Path) { +  std::shared_ptr<ondisk::UnifiedOnDiskCache> UniDB; +  if (Error E = builtin::createBuiltinUnifiedOnDiskCache(Path).moveInto(UniDB)) +    return std::move(E); +  auto CAS = builtin::createObjectStoreFromUnifiedOnDiskCache(UniDB); +  auto AC = builtin::createActionCacheFromUnifiedOnDiskCache(std::move(UniDB)); +  return std::make_pair(std::move(CAS), std::move(AC)); +} + +Expected<ValidationResult> cas::validateOnDiskUnifiedCASDatabasesIfNeeded( +    StringRef Path, bool CheckHash, bool AllowRecovery, bool ForceValidation, +    std::optional<StringRef> LLVMCasBinary) { +#if LLVM_ENABLE_ONDISK_CAS +  return ondisk::UnifiedOnDiskCache::validateIfNeeded( +      Path, builtin::BuiltinCASContext::getHashName(), +      sizeof(builtin::HashType), CheckHash, AllowRecovery, ForceValidation, +      LLVMCasBinary); +#else +  return createStringError(inconvertibleErrorCode(), "OnDiskCache is disabled"); +#endif +}  | 
