aboutsummaryrefslogtreecommitdiff
path: root/src/libstore
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2019-11-22 16:06:44 +0100
committerEelco Dolstra <edolstra@gmail.com>2019-11-22 16:18:13 +0100
commitba87b08f8529e4d9f8c58d8c625152058ceadb75 (patch)
treec78196cbeb52273c3d5b99ff8dee314108940b9a /src/libstore
parentfd900c45b5ff9c6dc7f3ec814eca4ad603720899 (diff)
getEnv(): Return std::optional
This allows distinguishing between an empty value and no value.
Diffstat (limited to 'src/libstore')
-rw-r--r--src/libstore/build.cc4
-rw-r--r--src/libstore/gc.cc6
-rw-r--r--src/libstore/globals.cc22
-rw-r--r--src/libstore/globals.hh2
-rw-r--r--src/libstore/local-store.hh2
-rw-r--r--src/libstore/ssh.cc2
6 files changed, 19 insertions, 19 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index 35a5388c6..67ccfcee0 100644
--- a/src/libstore/build.cc
+++ b/src/libstore/build.cc
@@ -2503,7 +2503,7 @@ void DerivationGoal::initEnv()
already know the cryptographic hash of the output). */
if (fixedOutput) {
for (auto & i : parsedDrv->getStringsAttr("impureEnvVars").value_or(Strings()))
- env[i] = getEnv(i);
+ env[i] = getEnv(i).value_or("");
}
/* Currently structured log messages piggyback on stderr, but we
@@ -3075,7 +3075,7 @@ void DerivationGoal::runChild()
/* The tmpDir in scope points at the temporary build directory for our derivation. Some packages try different mechanisms
to find temporary directories, so we want to open up a broader place for them to dump their files, if needed. */
- Path globalTmpDir = canonPath(getEnv("TMPDIR", "/tmp"), true);
+ Path globalTmpDir = canonPath(getEnv("TMPDIR").value_or("/tmp"), true);
/* They don't like trailing slashes on subpath directives */
if (globalTmpDir.back() == '/') globalTmpDir.pop_back();
diff --git a/src/libstore/gc.cc b/src/libstore/gc.cc
index 7d3da1cc8..842980fb7 100644
--- a/src/libstore/gc.cc
+++ b/src/libstore/gc.cc
@@ -870,11 +870,11 @@ void LocalStore::collectGarbage(const GCOptions & options, GCResults & results)
void LocalStore::autoGC(bool sync)
{
- static auto fakeFreeSpaceFile = getEnv("_NIX_TEST_FREE_SPACE_FILE", "");
+ static auto fakeFreeSpaceFile = getEnv("_NIX_TEST_FREE_SPACE_FILE");
auto getAvail = [this]() -> uint64_t {
- if (!fakeFreeSpaceFile.empty())
- return std::stoll(readFile(fakeFreeSpaceFile));
+ if (fakeFreeSpaceFile)
+ return std::stoll(readFile(*fakeFreeSpaceFile));
struct statvfs st;
if (statvfs(realStoreDir.c_str(), &st))
diff --git a/src/libstore/globals.cc b/src/libstore/globals.cc
index 249c36673..aa0823f41 100644
--- a/src/libstore/globals.cc
+++ b/src/libstore/globals.cc
@@ -32,20 +32,20 @@ static GlobalConfig::Register r1(&settings);
Settings::Settings()
: nixPrefix(NIX_PREFIX)
- , nixStore(canonPath(getEnv("NIX_STORE_DIR", getEnv("NIX_STORE", NIX_STORE_DIR))))
- , nixDataDir(canonPath(getEnv("NIX_DATA_DIR", NIX_DATA_DIR)))
- , nixLogDir(canonPath(getEnv("NIX_LOG_DIR", NIX_LOG_DIR)))
- , nixStateDir(canonPath(getEnv("NIX_STATE_DIR", NIX_STATE_DIR)))
- , nixConfDir(canonPath(getEnv("NIX_CONF_DIR", NIX_CONF_DIR)))
- , nixLibexecDir(canonPath(getEnv("NIX_LIBEXEC_DIR", NIX_LIBEXEC_DIR)))
- , nixBinDir(canonPath(getEnv("NIX_BIN_DIR", NIX_BIN_DIR)))
+ , nixStore(canonPath(getEnv("NIX_STORE_DIR").value_or(getEnv("NIX_STORE").value_or(NIX_STORE_DIR))))
+ , nixDataDir(canonPath(getEnv("NIX_DATA_DIR").value_or(NIX_DATA_DIR)))
+ , nixLogDir(canonPath(getEnv("NIX_LOG_DIR").value_or(NIX_LOG_DIR)))
+ , nixStateDir(canonPath(getEnv("NIX_STATE_DIR").value_or(NIX_STATE_DIR)))
+ , nixConfDir(canonPath(getEnv("NIX_CONF_DIR").value_or(NIX_CONF_DIR)))
+ , nixLibexecDir(canonPath(getEnv("NIX_LIBEXEC_DIR").value_or(NIX_LIBEXEC_DIR)))
+ , nixBinDir(canonPath(getEnv("NIX_BIN_DIR").value_or(NIX_BIN_DIR)))
, nixManDir(canonPath(NIX_MAN_DIR))
, nixDaemonSocketFile(canonPath(nixStateDir + DEFAULT_SOCKET_PATH))
{
buildUsersGroup = getuid() == 0 ? "nixbld" : "";
- lockCPU = getEnv("NIX_AFFINITY_HACK", "1") == "1";
+ lockCPU = getEnv("NIX_AFFINITY_HACK") == "1";
- caFile = getEnv("NIX_SSL_CERT_FILE", getEnv("SSL_CERT_FILE", ""));
+ caFile = getEnv("NIX_SSL_CERT_FILE").value_or(getEnv("SSL_CERT_FILE").value_or(""));
if (caFile == "") {
for (auto & fn : {"/etc/ssl/certs/ca-certificates.crt", "/nix/var/nix/profiles/default/etc/ssl/certs/ca-bundle.crt"})
if (pathExists(fn)) {
@@ -56,9 +56,9 @@ Settings::Settings()
/* Backwards compatibility. */
auto s = getEnv("NIX_REMOTE_SYSTEMS");
- if (s != "") {
+ if (s) {
Strings ss;
- for (auto & p : tokenizeString<Strings>(s, ":"))
+ for (auto & p : tokenizeString<Strings>(*s, ":"))
ss.push_back("@" + p);
builders = concatStringsSep(" ", ss);
}
diff --git a/src/libstore/globals.hh b/src/libstore/globals.hh
index 1221e4db7..3eb2f698c 100644
--- a/src/libstore/globals.hh
+++ b/src/libstore/globals.hh
@@ -66,7 +66,7 @@ public:
/* File name of the socket the daemon listens to. */
Path nixDaemonSocketFile;
- Setting<std::string> storeUri{this, getEnv("NIX_REMOTE", "auto"), "store",
+ Setting<std::string> storeUri{this, getEnv("NIX_REMOTE").value_or("auto"), "store",
"The default Nix store to use."};
Setting<bool> keepFailed{this, false, "keep-failed",
diff --git a/src/libstore/local-store.hh b/src/libstore/local-store.hh
index 5aa6b0519..1d4b88898 100644
--- a/src/libstore/local-store.hh
+++ b/src/libstore/local-store.hh
@@ -107,7 +107,7 @@ private:
public:
// Hack for build-remote.cc.
- PathSet locksHeld = tokenizeString<PathSet>(getEnv("NIX_HELD_LOCKS"));
+ PathSet locksHeld;
/* Initialise the local store, upgrading the schema if
necessary. */
diff --git a/src/libstore/ssh.cc b/src/libstore/ssh.cc
index 5e0e44935..ac3ccd63d 100644
--- a/src/libstore/ssh.cc
+++ b/src/libstore/ssh.cc
@@ -16,7 +16,7 @@ SSHMaster::SSHMaster(const std::string & host, const std::string & keyFile, bool
void SSHMaster::addCommonSSHOpts(Strings & args)
{
- for (auto & i : tokenizeString<Strings>(getEnv("NIX_SSHOPTS")))
+ for (auto & i : tokenizeString<Strings>(getEnv("NIX_SSHOPTS").value_or("")))
args.push_back(i);
if (!keyFile.empty())
args.insert(args.end(), {"-i", keyFile});