aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2011-11-22 17:28:41 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2011-11-22 17:28:41 +0000
commit993fa94fb489f46e127ef760bea8c65ef281ef7f (patch)
treeaa9072bc840449143362be8657a81092d2384dfa /src
parent4e1ea17052b4cc2445bc2ece2136f248112b4e45 (diff)
* Move initialisation of variables like nixConfDir from libmain to
libstore so that the Perl bindings can use it as well. It's vital that the Perl bindings use the configuration file, because otherwise nix-copy-closure will fail with a ‘database locked’ message if the value of ‘use-sqlite-wal’ is changed from the default.
Diffstat (limited to 'src')
-rw-r--r--src/libmain/Makefile.am7
-rw-r--r--src/libmain/shared.cc26
-rw-r--r--src/libstore/Makefile.am11
-rw-r--r--src/libstore/globals.cc30
-rw-r--r--src/libstore/globals.hh4
5 files changed, 45 insertions, 33 deletions
diff --git a/src/libmain/Makefile.am b/src/libmain/Makefile.am
index ababc3595..404353c62 100644
--- a/src/libmain/Makefile.am
+++ b/src/libmain/Makefile.am
@@ -7,13 +7,6 @@ libmain_la_LIBADD = ../libstore/libstore.la @BDW_GC_LIBS@
pkginclude_HEADERS = shared.hh
AM_CXXFLAGS = \
- -DNIX_STORE_DIR=\"$(storedir)\" \
- -DNIX_DATA_DIR=\"$(datadir)\" \
- -DNIX_STATE_DIR=\"$(localstatedir)/nix\" \
- -DNIX_LOG_DIR=\"$(localstatedir)/log/nix\" \
- -DNIX_CONF_DIR=\"$(sysconfdir)/nix\" \
- -DNIX_LIBEXEC_DIR=\"$(libexecdir)\" \
- -DNIX_BIN_DIR=\"$(bindir)\" \
-DNIX_VERSION=\"$(VERSION)\" \
-I$(srcdir)/.. -I$(srcdir)/../libutil \
-I$(srcdir)/../libstore
diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc
index 8532cdaad..f7c11ed05 100644
--- a/src/libmain/shared.cc
+++ b/src/libmain/shared.cc
@@ -120,30 +120,8 @@ static bool showTrace = false;
processor. */
static void initAndRun(int argc, char * * argv)
{
- /* Setup Nix paths. */
- 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));
- nixDBPath = getEnv("NIX_DB_DIR", nixStateDir + "/db");
- 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));
-
- string subs = getEnv("NIX_SUBSTITUTERS", "default");
- if (subs == "default") {
- substituters.push_back(nixLibexecDir + "/nix/substituters/copy-from-other-stores.pl");
- substituters.push_back(nixLibexecDir + "/nix/substituters/download-using-manifests.pl");
- } else
- substituters = tokenizeString(subs, ":");
-
- /* Get some settings from the configuration file. */
- thisSystem = querySetting("system", SYSTEM);
- maxBuildJobs = queryIntSetting("build-max-jobs", 1);
- buildCores = queryIntSetting("build-cores", 1);
- maxSilentTime = queryIntSetting("build-max-silent-time", 0);
- buildTimeout = queryIntSetting("build-timeout", 0);
-
+ setDefaultsFromEnvironment();
+
/* Catch SIGINT. */
struct sigaction act;
act.sa_handler = sigintHandler;
diff --git a/src/libstore/Makefile.am b/src/libstore/Makefile.am
index e19256b92..39a61233b 100644
--- a/src/libstore/Makefile.am
+++ b/src/libstore/Makefile.am
@@ -15,7 +15,16 @@ libstore_la_LIBADD = ../libutil/libutil.la ../boost/format/libformat.la ${aterm_
EXTRA_DIST = schema.sql
AM_CXXFLAGS = -Wall \
- ${sqlite_include} -I$(srcdir)/.. -I$(srcdir)/../libutil
+ ${sqlite_include} -I$(srcdir)/.. -I$(srcdir)/../libutil \
+ -DNIX_STORE_DIR=\"$(storedir)\" \
+ -DNIX_DATA_DIR=\"$(datadir)\" \
+ -DNIX_STATE_DIR=\"$(localstatedir)/nix\" \
+ -DNIX_LOG_DIR=\"$(localstatedir)/log/nix\" \
+ -DNIX_CONF_DIR=\"$(sysconfdir)/nix\" \
+ -DNIX_LIBEXEC_DIR=\"$(libexecdir)\" \
+ -DNIX_BIN_DIR=\"$(bindir)\" \
+ -I$(srcdir)/.. -I$(srcdir)/../libutil \
+ -I$(srcdir)/../libstore
local-store.lo: schema.sql.hh
diff --git a/src/libstore/globals.cc b/src/libstore/globals.cc
index 2e9dc8823..5c22f1406 100644
--- a/src/libstore/globals.cc
+++ b/src/libstore/globals.cc
@@ -1,3 +1,5 @@
+#include "config.h"
+
#include "globals.hh"
#include "util.hh"
@@ -138,5 +140,33 @@ void reloadSettings()
settings.clear();
}
+
+void setDefaultsFromEnvironment()
+{
+ /* Setup Nix paths. */
+ 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));
+ nixDBPath = getEnv("NIX_DB_DIR", nixStateDir + "/db");
+ 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));
+
+ string subs = getEnv("NIX_SUBSTITUTERS", "default");
+ if (subs == "default") {
+ substituters.push_back(nixLibexecDir + "/nix/substituters/copy-from-other-stores.pl");
+ substituters.push_back(nixLibexecDir + "/nix/substituters/download-using-manifests.pl");
+ } else
+ substituters = tokenizeString(subs, ":");
+
+ /* Get some settings from the configuration file. */
+ thisSystem = querySetting("system", SYSTEM);
+ maxBuildJobs = queryIntSetting("build-max-jobs", 1);
+ buildCores = queryIntSetting("build-cores", 1);
+ maxSilentTime = queryIntSetting("build-max-silent-time", 0);
+ buildTimeout = queryIntSetting("build-timeout", 0);
+}
+
}
diff --git a/src/libstore/globals.hh b/src/libstore/globals.hh
index 231c1f850..12a9b9ca1 100644
--- a/src/libstore/globals.hh
+++ b/src/libstore/globals.hh
@@ -114,7 +114,9 @@ void overrideSetting(const string & name, const Strings & value);
void reloadSettings();
-
+void setDefaultsFromEnvironment();
+
+
}