Nix 2.93.3
Lix: A modern, delicious implementation of the Nix package manager; unstable internal interfaces
Loading...
Searching...
No Matches
nix::BinaryCacheStore Class Referenceabstract

#include <binary-cache-store.hh>

Inheritance diagram for nix::BinaryCacheStore:
nix::Store nix::LogStore nix::Store nix::HttpBinaryCacheStore nix::LocalBinaryCacheStore nix::S3BinaryCacheStore

Public Member Functions

BinaryCacheStoreConfigconfig () override=0
const BinaryCacheStoreConfigconfig () const override=0
virtual bool fileExists (const std::string &path)=0
virtual void upsertFile (const std::string &path, std::shared_ptr< std::basic_iostream< char > > istream, const std::string &mimeType)=0
void upsertFile (const std::string &path, std::string &&data, const std::string &mimeType)
virtual box_ptr< SourcegetFile (const std::string &path)=0
virtual std::optional< std::string > getFileContents (const std::string &path)
virtual kj::Promise< Result< void > > init () override
kj::Promise< Result< bool > > isValidPathUncached (const StorePath &path) override
kj::Promise< Result< std::shared_ptr< const ValidPathInfo > > > queryPathInfoUncached (const StorePath &path) override
kj::Promise< Result< std::optional< StorePath > > > queryPathFromHashPart (const std::string &hashPart) override
kj::Promise< Result< void > > addToStore (const ValidPathInfo &info, AsyncInputStream &narSource, RepairFlag repair, CheckSigsFlag checkSigs) override
kj::Promise< Result< StorePath > > addToStoreFromDump (AsyncInputStream &dump, std::string_view name, FileIngestionMethod method, HashType hashAlgo, RepairFlag repair, const StorePathSet &references) override
kj::Promise< Result< StorePath > > addToStoreRecursive (std::string_view name, const PreparedDump &source, HashType hashAlgo, RepairFlag repair) override
kj::Promise< Result< StorePath > > addToStoreFlat (std::string_view name, const Path &srcPath, HashType hashAlgo, RepairFlag repair) override
kj::Promise< Result< StorePath > > addTextToStore (std::string_view name, std::string_view s, const StorePathSet &references, RepairFlag repair) override
kj::Promise< Result< void > > registerDrvOutput (const Realisation &info) override
kj::Promise< Result< std::shared_ptr< const Realisation > > > queryRealisationUncached (const DrvOutput &) override
kj::Promise< Result< box_ptr< Source > > > narFromPath (const StorePath &path) override
ref< FSAccessorgetFSAccessor () override
kj::Promise< Result< void > > addSignatures (const StorePath &storePath, const StringSet &sigs) override
kj::Promise< Result< std::optional< std::string > > > getBuildLogExact (const StorePath &path) override
kj::Promise< Result< void > > addBuildLog (const StorePath &drvPath, std::string_view log) override
Public Member Functions inherited from nix::Store
virtual std::optional< AssociatedCredentialsassociatedCredentials () const
virtual std::string getUri ()=0
StorePath parseStorePath (std::string_view path) const
std::optional< StorePathmaybeParseStorePath (std::string_view path) const
std::string printStorePath (const StorePath &path) const
StorePathSet parseStorePathSet (const PathSet &paths) const
PathSet printStorePathSet (const StorePathSet &path) const
std::string showPaths (const StorePathSet &paths)
bool isInStore (PathView path) const
bool isStorePath (std::string_view path) const
std::pair< StorePath, PathtoStorePath (PathView path) const
Path followLinksToStore (std::string_view path) const
StorePath followLinksToStorePath (std::string_view path) const
StorePath makeStorePath (std::string_view type, std::string_view hash, std::string_view name) const
StorePath makeStorePath (std::string_view type, const Hash &hash, std::string_view name) const
StorePath makeOutputPath (std::string_view id, const Hash &hash, std::string_view name) const
StorePath makeFixedOutputPath (std::string_view name, const FixedOutputInfo &info) const
StorePath makeTextPath (std::string_view name, const TextInfo &info) const
StorePath makeFixedOutputPathFromCA (std::string_view name, const ContentAddressWithReferences &ca) const
StorePath computeStorePathForPathRecursive (std::string_view name, const PreparedDump &source) const
StorePath computeStorePathForPathFlat (std::string_view name, const Path &srcPath) const
StorePath computeStorePathForText (std::string_view name, std::string_view s, const StorePathSet &references) const
kj::Promise< Result< bool > > isValidPath (const StorePath &path)
kj::Promise< Result< void > > substitutePaths (const StorePathSet &paths)
virtual kj::Promise< Result< StorePathSet > > queryValidPaths (const StorePathSet &paths, SubstituteFlag maybeSubstitute=NoSubstitute)
virtual kj::Promise< Result< StorePathSet > > queryAllValidPaths ()
kj::Promise< Result< ref< const ValidPathInfo > > > queryPathInfo (const StorePath &path)
kj::Promise< Result< std::shared_ptr< const Realisation > > > queryRealisation (const DrvOutput &)
virtual bool pathInfoIsUntrusted (const ValidPathInfo &)
virtual bool realisationIsUntrusted (const Realisation &)
virtual kj::Promise< Result< void > > queryReferrers (const StorePath &path, StorePathSet &referrers)
virtual kj::Promise< Result< StorePathSet > > queryValidDerivers (const StorePath &path)
virtual kj::Promise< Result< StorePathSet > > queryDerivationOutputs (const StorePath &path)
virtual kj::Promise< Result< std::map< std::string, std::optional< StorePath > > > > queryPartialDerivationOutputMap (const StorePath &path, Store *evalStore=nullptr)
virtual kj::Promise< Result< std::map< std::string, std::optional< StorePath > > > > queryStaticPartialDerivationOutputMap (const StorePath &path)
kj::Promise< Result< OutputPathMap > > queryDerivationOutputMap (const StorePath &path, Store *evalStore=nullptr)
virtual kj::Promise< Result< StorePathSet > > querySubstitutablePaths (const StorePathSet &paths)
virtual kj::Promise< Result< void > > querySubstitutablePathInfos (const StorePathCAMap &paths, SubstitutablePathInfos &infos)
virtual kj::Promise< Result< void > > addMultipleToStore (PathsSource &pathsToCopy, Activity &act, RepairFlag repair=NoRepair, CheckSigsFlag checkSigs=CheckSigs)
kj::Promise< Result< ValidPathInfo > > addToStoreSlow (std::string_view name, const Path &srcPath, FileIngestionMethod method=FileIngestionMethod::Recursive, HashType hashAlgo=HashType::SHA256, std::optional< Hash > expectedCAHash={})
virtual kj::Promise< Result< void > > registerDrvOutput (const Realisation &output, CheckSigsFlag checkSigs)
virtual kj::Promise< Result< void > > buildPaths (const std::vector< DerivedPath > &paths, BuildMode buildMode=bmNormal, std::shared_ptr< Store > evalStore=nullptr)
virtual kj::Promise< Result< std::vector< KeyedBuildResult > > > buildPathsWithResults (const std::vector< DerivedPath > &paths, BuildMode buildMode=bmNormal, std::shared_ptr< Store > evalStore=nullptr)
virtual kj::Promise< Result< BuildResult > > buildDerivation (const StorePath &drvPath, const BasicDerivation &drv, BuildMode buildMode=bmNormal)
virtual kj::Promise< Result< void > > ensurePath (const StorePath &path)
virtual kj::Promise< Result< void > > addTempRoot (const StorePath &path)
kj::Promise< Result< std::string > > makeValidityRegistration (const StorePathSet &paths, bool showDerivers, bool showHash)
kj::Promise< Result< JSON > > pathInfoToJSON (const StorePathSet &storePaths, bool includeImpureInfo, bool showClosureSize, Base hashBase=Base::Base32, AllowInvalidFlag allowInvalid=DisallowInvalid)
kj::Promise< Result< std::pair< uint64_t, uint64_t > > > getClosureSize (const StorePath &storePath)
virtual kj::Promise< Result< void > > optimiseStore ()
virtual kj::Promise< Result< bool > > verifyStore (bool checkContents, RepairFlag repair=NoRepair)
virtual kj::Promise< Result< void > > repairPath (const StorePath &path)
kj::Promise< Result< Derivation > > derivationFromPath (const StorePath &drvPath)
kj::Promise< Result< Derivation > > readDerivation (const StorePath &drvPath)
kj::Promise< Result< Derivation > > readInvalidDerivation (const StorePath &drvPath)
virtual kj::Promise< Result< void > > computeFSClosure (const StorePathSet &paths, StorePathSet &out, bool flipDirection=false, bool includeOutputs=false, bool includeDerivers=false)
kj::Promise< Result< void > > computeFSClosure (const StorePath &path, StorePathSet &out, bool flipDirection=false, bool includeOutputs=false, bool includeDerivers=false)
virtual kj::Promise< Result< void > > queryMissing (const std::vector< DerivedPath > &targets, StorePathSet &willBuild, StorePathSet &willSubstitute, StorePathSet &unknown, uint64_t &downloadSize, uint64_t &narSize)
kj::Promise< Result< StorePaths > > topoSortPaths (const StorePathSet &paths)
kj::Promise< Result< void > > exportPaths (const StorePathSet &paths, Sink &sink)
kj::Promise< Result< void > > exportPath (const StorePath &path, Sink &sink)
kj::Promise< Result< StorePaths > > importPaths (Source &source, CheckSigsFlag checkSigs=CheckSigs)
kj::Promise< Result< Stats<> > > getStats ()
kj::Promise< Result< StorePathSet > > exportReferences (const StorePathSet &storePaths, const StorePathSet &inputPaths)
kj::Promise< Result< std::optional< StorePath > > > getBuildDerivationPath (const StorePath &)
kj::Promise< void > clearPathInfoCache ()
virtual kj::Promise< Result< void > > connect ()
virtual kj::Promise< Result< unsigned int > > getProtocol ()
virtual kj::Promise< Result< std::optional< TrustedFlag > > > isTrustedClient ()=0
virtual Path toRealPath (const Path &storePath)
Path toRealPath (const StorePath &storePath)
virtual kj::Promise< Result< void > > setOptions ()
virtual kj::Promise< Result< std::optional< std::string > > > getVersion ()
Public Member Functions inherited from nix::LogStore
kj::Promise< Result< std::optional< std::string > > > getBuildLog (const StorePath &path)

Protected Member Functions

 BinaryCacheStore (const BinaryCacheStoreConfig &config)
Protected Member Functions inherited from nix::Store
 Store (const StoreConfig &config)
void unsupported (const std::string &op)

Protected Attributes

const std::string realisationsPrefix = "realisations"
Protected Attributes inherited from nix::Store
Sync< State, AsyncMutex > state
std::shared_ptr< NarInfoDiskCachediskCache
Stats< std::atomic > stats

Additional Inherited Members

Public Types inherited from nix::Store
using PathsSource
Static Public Member Functions inherited from nix::LogStore
static LogStorerequire (Store &store)
Static Public Attributes inherited from nix::Store
static constexpr const char * MissingName = "x"
Static Public Attributes inherited from nix::LogStore
static std::string operationName = "Build log storage and retrieval"

Detailed Description

Note
subclasses must implement at least one of the two virtual getFile() methods.

Member Function Documentation

◆ addBuildLog()

kj::Promise< Result< void > > nix::BinaryCacheStore::addBuildLog ( const StorePath & drvPath,
std::string_view log )
overridevirtual

Implements nix::LogStore.

◆ addSignatures()

kj::Promise< Result< void > > nix::BinaryCacheStore::addSignatures ( const StorePath & storePath,
const StringSet & sigs )
overridevirtual

Add signatures to the specified store path. The signatures are not verified.

Reimplemented from nix::Store.

◆ addTextToStore()

kj::Promise< Result< StorePath > > nix::BinaryCacheStore::addTextToStore ( std::string_view name,
std::string_view s,
const StorePathSet & references,
RepairFlag repair )
overridevirtual

Like addToStore, but the contents written to the output path is a regular file containing the given string.

Implements nix::Store.

◆ addToStore()

kj::Promise< Result< void > > nix::BinaryCacheStore::addToStore ( const ValidPathInfo & info,
AsyncInputStream & narSource,
RepairFlag repair,
CheckSigsFlag checkSigs )
overridevirtual

Import a path into the store.

Implements nix::Store.

◆ addToStoreFlat()

kj::Promise< Result< StorePath > > nix::BinaryCacheStore::addToStoreFlat ( std::string_view name,
const Path & srcPath,
HashType hashAlgo,
RepairFlag repair )
overridevirtual

Reimplemented from nix::Store.

◆ addToStoreFromDump()

kj::Promise< Result< StorePath > > nix::BinaryCacheStore::addToStoreFromDump ( AsyncInputStream & dump,
std::string_view name,
FileIngestionMethod method,
HashType hashAlgo,
RepairFlag repair,
const StorePathSet & references )
overridevirtual

Like addToStore(), but the contents of the path are contained in dump, which is either a NAR serialisation (if recursive == true) or simply the contents of a regular file (if recursive == false). dump may be drained

Todo
remove?

Reimplemented from nix::Store.

◆ addToStoreRecursive()

kj::Promise< Result< StorePath > > nix::BinaryCacheStore::addToStoreRecursive ( std::string_view name,
const PreparedDump & source,
HashType hashAlgo,
RepairFlag repair )
overridevirtual

Copy the contents of a path to the store and register the validity the resulting path.

Returns
The resulting path is returned.
Parameters
filterThis function can be used to exclude files (see libutil/archive.hh).

Reimplemented from nix::Store.

◆ config() [1/2]

const BinaryCacheStoreConfig & nix::BinaryCacheStore::config ( ) const
overridepure virtual

Implements nix::Store.

◆ config() [2/2]

BinaryCacheStoreConfig & nix::BinaryCacheStore::config ( )
overridepure virtual

Implements nix::Store.

◆ getBuildLogExact()

kj::Promise< Result< std::optional< std::string > > > nix::BinaryCacheStore::getBuildLogExact ( const StorePath & path)
overridevirtual

Implements nix::LogStore.

◆ getFile()

virtual box_ptr< Source > nix::BinaryCacheStore::getFile ( const std::string & path)
pure virtual

Dump the contents of the specified file to a sink.

Implemented in nix::HttpBinaryCacheStore, and nix::LocalBinaryCacheStore.

◆ getFSAccessor()

ref< FSAccessor > nix::BinaryCacheStore::getFSAccessor ( )
overridevirtual
Returns
An object to access files in the Nix store.

Implements nix::Store.

◆ init()

kj::Promise< Result< void > > nix::BinaryCacheStore::init ( )
overridevirtual

Perform any necessary effectful operation to make the store up and running

Reimplemented from nix::Store.

Reimplemented in nix::HttpBinaryCacheStore, and nix::LocalBinaryCacheStore.

◆ isValidPathUncached()

kj::Promise< Result< bool > > nix::BinaryCacheStore::isValidPathUncached ( const StorePath & path)
overridevirtual

Reimplemented from nix::Store.

◆ narFromPath()

kj::Promise< Result< box_ptr< Source > > > nix::BinaryCacheStore::narFromPath ( const StorePath & path)
overridevirtual

Generate a NAR dump of a store path.

Implements nix::Store.

◆ queryPathFromHashPart()

kj::Promise< Result< std::optional< StorePath > > > nix::BinaryCacheStore::queryPathFromHashPart ( const std::string & hashPart)
overridevirtual

Query the full store path given the hash part of a valid store path, or empty if the path doesn't exist.

Implements nix::Store.

◆ queryPathInfoUncached()

kj::Promise< Result< std::shared_ptr< const ValidPathInfo > > > nix::BinaryCacheStore::queryPathInfoUncached ( const StorePath & path)
overridevirtual

Queries the path info without caching. Note to implementors: should return nullptr when the path is not found.

Implements nix::Store.

◆ queryRealisationUncached()

kj::Promise< Result< std::shared_ptr< const Realisation > > > nix::BinaryCacheStore::queryRealisationUncached ( const DrvOutput & id)
overridevirtual

Implements nix::Store.

◆ registerDrvOutput()

kj::Promise< Result< void > > nix::BinaryCacheStore::registerDrvOutput ( const Realisation & output)
overridevirtual

Add a mapping indicating that deriver!outputName maps to the output path output.

This is redundant for known-input-addressed and fixed-output derivations as this information is already present in the drv file, but necessary for floating-ca derivations and their dependencies as there's no way to retrieve this information otherwise.

Reimplemented from nix::Store.


The documentation for this class was generated from the following files: