forked from lix-project/lix
2fde7e0108
Cgroups are now only used for derivations that require the uid-range range feature. This allows auto UID allocation even on systems that don't have cgroups (like macOS). Also, make things work on modern systems that use cgroups v2 (where there is a single hierarchy and no "systemd" controller).
49 lines
1.1 KiB
C++
49 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include "derivations.hh"
|
|
#include "store-api.hh"
|
|
|
|
#include <nlohmann/json_fwd.hpp>
|
|
|
|
namespace nix {
|
|
|
|
class ParsedDerivation
|
|
{
|
|
StorePath drvPath;
|
|
BasicDerivation & drv;
|
|
std::unique_ptr<nlohmann::json> structuredAttrs;
|
|
|
|
public:
|
|
|
|
ParsedDerivation(const StorePath & drvPath, BasicDerivation & drv);
|
|
|
|
~ParsedDerivation();
|
|
|
|
const nlohmann::json * getStructuredAttrs() const
|
|
{
|
|
return structuredAttrs.get();
|
|
}
|
|
|
|
std::optional<std::string> getStringAttr(const std::string & name) const;
|
|
|
|
bool getBoolAttr(const std::string & name, bool def = false) const;
|
|
|
|
std::optional<Strings> getStringsAttr(const std::string & name) const;
|
|
|
|
StringSet getRequiredSystemFeatures() const;
|
|
|
|
bool canBuildLocally(Store & localStore) const;
|
|
|
|
bool willBuildLocally(Store & localStore) const;
|
|
|
|
bool substitutesAllowed() const;
|
|
|
|
bool useUidRange() const;
|
|
|
|
std::optional<nlohmann::json> prepareStructuredAttrs(Store & store, const StorePathSet & inputPaths);
|
|
};
|
|
|
|
std::string writeStructuredAttrsShell(const nlohmann::json & json);
|
|
|
|
}
|