aboutsummaryrefslogtreecommitdiff
path: root/src/libstore
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstore')
-rw-r--r--src/libstore/build.cc5
-rw-r--r--src/libstore/globals.cc1
-rw-r--r--src/libstore/globals.hh3
-rw-r--r--src/libstore/local-fs-store.cc35
-rw-r--r--src/libstore/local-store.hh3
-rw-r--r--src/libstore/store-api.hh8
6 files changed, 44 insertions, 11 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index fd1f5dc3a..2b0f8e592 100644
--- a/src/libstore/build.cc
+++ b/src/libstore/build.cc
@@ -3048,9 +3048,6 @@ void DerivationGoal::registerOutputs()
}
-string drvsLogDir = "drvs";
-
-
Path DerivationGoal::openLogFile()
{
logSize = 0;
@@ -3060,7 +3057,7 @@ Path DerivationGoal::openLogFile()
string baseName = baseNameOf(drvPath);
/* Create a log file. */
- Path dir = (format("%1%/%2%/%3%/") % worker.store.logDir % drvsLogDir % string(baseName, 0, 2)).str();
+ Path dir = (format("%1%/%2%/%3%/") % worker.store.logDir % worker.store.drvsLogDir % string(baseName, 0, 2)).str();
createDirs(dir);
Path logFileName = (format("%1%/%2%%3%")
diff --git a/src/libstore/globals.cc b/src/libstore/globals.cc
index df537a512..012b3d5b8 100644
--- a/src/libstore/globals.cc
+++ b/src/libstore/globals.cc
@@ -179,7 +179,6 @@ void Settings::update()
_get(envKeepDerivations, "env-keep-derivations");
_get(sshSubstituterHosts, "ssh-substituter-hosts");
_get(useSshSubstituter, "use-ssh-substituter");
- _get(logServers, "log-servers");
_get(enableImportNative, "allow-unsafe-native-code-during-evaluation");
_get(useCaseHack, "use-case-hack");
_get(preBuildHook, "pre-build-hook");
diff --git a/src/libstore/globals.hh b/src/libstore/globals.hh
index 7a9a9f6c0..462721681 100644
--- a/src/libstore/globals.hh
+++ b/src/libstore/globals.hh
@@ -181,9 +181,6 @@ struct Settings {
/* Whether to show a stack trace if Nix evaluation fails. */
bool showTrace;
- /* A list of URL prefixes that can return Nix build logs. */
- Strings logServers;
-
/* Whether the importNative primop should be enabled */
bool enableImportNative;
diff --git a/src/libstore/local-fs-store.cc b/src/libstore/local-fs-store.cc
index 4571a2211..c5da73dba 100644
--- a/src/libstore/local-fs-store.cc
+++ b/src/libstore/local-fs-store.cc
@@ -2,6 +2,8 @@
#include "fs-accessor.hh"
#include "store-api.hh"
#include "globals.hh"
+#include "compression.hh"
+#include "derivations.hh"
namespace nix {
@@ -84,4 +86,37 @@ void LocalFSStore::narFromPath(const Path & path, Sink & sink)
dumpPath(getRealStoreDir() + std::string(path, storeDir.size()), sink);
}
+const string LocalFSStore::drvsLogDir = "drvs";
+
+std::shared_ptr<std::string> LocalFSStore::getBuildLog(const Path & path_)
+{
+ auto path(path_);
+
+ assertStorePath(path);
+
+ if (!isDerivation(path)) {
+ path = queryPathInfo(path)->deriver;
+ if (path == "") return nullptr;
+ }
+
+ string baseName = baseNameOf(path);
+
+ for (int j = 0; j < 2; j++) {
+
+ Path logPath =
+ j == 0
+ ? (format("%1%/%2%/%3%/%4%") % logDir % drvsLogDir % string(baseName, 0, 2) % string(baseName, 2)).str()
+ : (format("%1%/%2%/%3%") % logDir % drvsLogDir % baseName).str();
+ Path logBz2Path = logPath + ".bz2";
+
+ if (pathExists(logPath))
+ return std::make_shared<std::string>(readFile(logPath));
+
+ else if (pathExists(logBz2Path))
+ return decompress("bzip2", readFile(logBz2Path));
+ }
+
+ return nullptr;
+}
+
}
diff --git a/src/libstore/local-store.hh b/src/libstore/local-store.hh
index 511209d84..49a0d7e0d 100644
--- a/src/libstore/local-store.hh
+++ b/src/libstore/local-store.hh
@@ -21,9 +21,6 @@ namespace nix {
const int nixSchemaVersion = 10;
-extern string drvsLogDir;
-
-
struct Derivation;
diff --git a/src/libstore/store-api.hh b/src/libstore/store-api.hh
index 481d0b799..3aea30c28 100644
--- a/src/libstore/store-api.hh
+++ b/src/libstore/store-api.hh
@@ -566,6 +566,11 @@ public:
if they lack a signature. */
virtual bool isTrusted() { return false; }
+ /* Return the build log of the specified store path, if available,
+ or null otherwise. */
+ virtual std::shared_ptr<std::string> getBuildLog(const Path & path)
+ { return nullptr; }
+
protected:
Stats stats;
@@ -579,6 +584,7 @@ public:
const Path rootDir;
const Path stateDir;
const Path logDir;
+ const static string drvsLogDir;
LocalFSStore(const Params & params);
@@ -595,6 +601,8 @@ public:
{
return getRealStoreDir() + "/" + baseNameOf(storePath);
}
+
+ std::shared_ptr<std::string> getBuildLog(const Path & path) override;
};