diff options
Diffstat (limited to 'src/libstore')
-rw-r--r-- | src/libstore/build.cc | 53 | ||||
-rw-r--r-- | src/libstore/build.hh | 9 | ||||
-rw-r--r-- | src/libstore/db.cc | 18 | ||||
-rw-r--r-- | src/libstore/db.hh | 16 | ||||
-rw-r--r-- | src/libstore/derivations.cc | 7 | ||||
-rw-r--r-- | src/libstore/derivations.hh | 16 | ||||
-rw-r--r-- | src/libstore/gc.cc | 13 | ||||
-rw-r--r-- | src/libstore/gc.hh | 8 | ||||
-rw-r--r-- | src/libstore/globals.cc | 11 | ||||
-rw-r--r-- | src/libstore/globals.hh | 11 | ||||
-rw-r--r-- | src/libstore/misc.cc | 9 | ||||
-rw-r--r-- | src/libstore/misc.hh | 6 | ||||
-rw-r--r-- | src/libstore/pathlocks.cc | 11 | ||||
-rw-r--r-- | src/libstore/pathlocks.hh | 10 | ||||
-rw-r--r-- | src/libstore/references.cc | 15 | ||||
-rw-r--r-- | src/libstore/references.hh | 6 | ||||
-rw-r--r-- | src/libstore/store.cc | 46 | ||||
-rw-r--r-- | src/libstore/store.hh | 10 |
18 files changed, 193 insertions, 82 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc index c953707a5..647671036 100644 --- a/src/libstore/build.cc +++ b/src/libstore/build.cc @@ -1,3 +1,13 @@ +#include "build.hh" +#include "references.hh" +#include "pathlocks.hh" +#include "misc.hh" +#include "globals.hh" +#include "gc.hh" +#include "store.hh" +#include "db.hh" +#include "util.hh" + #include <map> #include <iostream> #include <sstream> @@ -15,13 +25,11 @@ #include <pwd.h> #include <grp.h> -#include "build.hh" -#include "references.hh" -#include "pathlocks.hh" -#include "misc.hh" -#include "globals.hh" -#include "gc.hh" +namespace nix { + +using std::map; + /* !!! TODO derivationFromPath shouldn't be used here */ @@ -38,8 +46,8 @@ class Worker; /* A pointer to a goal. */ class Goal; -typedef shared_ptr<Goal> GoalPtr; -typedef weak_ptr<Goal> WeakGoalPtr; +typedef boost::shared_ptr<Goal> GoalPtr; +typedef boost::weak_ptr<Goal> WeakGoalPtr; /* Set of goals. */ typedef set<GoalPtr> Goals; @@ -50,7 +58,7 @@ typedef map<Path, WeakGoalPtr> WeakGoalMap; -class Goal : public enable_shared_from_this<Goal> +class Goal : public boost::enable_shared_from_this<Goal> { public: typedef enum {ecBusy, ecSuccess, ecFailed} ExitCode; @@ -447,8 +455,8 @@ static void killUser(uid_t uid) if (kill(-1, SIGKILL) == -1) throw SysError(format("cannot kill processes for UID `%1%'") % uid); - } catch (exception & e) { - cerr << format("build error: %1%\n") % e.what(); + } catch (std::exception & e) { + std::cerr << format("build error: %1%\n") % e.what(); quickExit(1); } quickExit(0); @@ -930,8 +938,8 @@ DerivationGoal::HookReply DerivationGoal::tryBuildHook() throw SysError(format("executing `%1%'") % buildHook); - } catch (exception & e) { - cerr << format("build error: %1%\n") % e.what(); + } catch (std::exception & e) { + std::cerr << format("build error: %1%\n") % e.what(); } quickExit(1); } @@ -1326,8 +1334,8 @@ void DerivationGoal::startBuilder() throw SysError(format("executing `%1%'") % drv.builder); - } catch (exception & e) { - cerr << format("build error: %1%\n") % e.what(); + } catch (std::exception & e) { + std::cerr << format("build error: %1%\n") % e.what(); } quickExit(1); } @@ -1593,7 +1601,7 @@ private: Pid pid; /* Lock on the store path. */ - shared_ptr<PathLocks> outputLock; + boost::shared_ptr<PathLocks> outputLock; typedef void (SubstitutionGoal::*GoalState)(); GoalState state; @@ -1719,7 +1727,7 @@ void SubstitutionGoal::tryToRun() } /* Acquire a lock on the output path. */ - outputLock = shared_ptr<PathLocks>(new PathLocks); + outputLock = boost::shared_ptr<PathLocks>(new PathLocks); outputLock->lockPaths(singleton<PathSet>(storePath), (format("waiting for lock on `%1%'") % storePath).str()); @@ -1767,8 +1775,8 @@ void SubstitutionGoal::tryToRun() throw SysError(format("executing `%1%'") % sub.program); - } catch (exception & e) { - cerr << format("substitute error: %1%\n") % e.what(); + } catch (std::exception & e) { + std::cerr << format("substitute error: %1%\n") % e.what(); } quickExit(1); } @@ -1930,8 +1938,8 @@ static void removeGoal(GoalPtr goal, WeakGoalMap & goalMap) void Worker::removeGoal(GoalPtr goal) { - ::removeGoal(goal, derivationGoals); - ::removeGoal(goal, substitutionGoals); + nix::removeGoal(goal, derivationGoals); + nix::removeGoal(goal, substitutionGoals); if (topGoals.find(goal) != topGoals.end()) { topGoals.erase(goal); /* If a top-level goal failed, then kill all other goals @@ -2160,3 +2168,6 @@ void ensurePath(const Path & path) if (goal->getExitCode() != Goal::ecSuccess) throw Error(format("path `%1%' does not exist and cannot be created") % path); } + + +} diff --git a/src/libstore/build.hh b/src/libstore/build.hh index 489a6cabc..c90c12676 100644 --- a/src/libstore/build.hh +++ b/src/libstore/build.hh @@ -1,8 +1,13 @@ #ifndef __BUILD_H #define __BUILD_H -#include "derivations.hh" +#include "types.hh" + + +namespace nix { + + /* Ensure that the output paths of the derivation are valid. If they are already valid, this is a no-op. Otherwise, validity can be reached in two ways. First, if the output paths have @@ -16,5 +21,7 @@ void buildDerivations(const PathSet & drvPaths); void ensurePath(const Path & storePath); +} + #endif /* !__BUILD_H */ diff --git a/src/libstore/db.cc b/src/libstore/db.cc index 7f428dc48..ca5d0582a 100644 --- a/src/libstore/db.cc +++ b/src/libstore/db.cc @@ -1,3 +1,7 @@ +#include "db.hh" +#include "util.hh" +#include "pathlocks.hh" + #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> @@ -7,9 +11,8 @@ #include <db_cxx.h> -#include "db.hh" -#include "util.hh" -#include "pathlocks.hh" + +namespace nix { /* Wrapper class to ensure proper destruction. */ @@ -112,7 +115,7 @@ Db * Database::getDb(TableId table) if (table == 0) throw Error("database table is not open " "(maybe you don't have sufficient permission?)"); - map<TableId, Db *>::iterator i = tables.find(table); + std::map<TableId, Db *>::iterator i = tables.find(table); if (i == tables.end()) throw Error("unknown table id"); return i->second; @@ -263,10 +266,10 @@ void Database::close() try { - for (map<TableId, Db *>::iterator i = tables.begin(); + for (std::map<TableId, Db *>::iterator i = tables.begin(); i != tables.end(); ) { - map<TableId, Db *>::iterator j = i; + std::map<TableId, Db *>::iterator j = i; ++j; closeTable(i->first); i = j; @@ -433,3 +436,6 @@ void Database::enumTable(const Transaction & txn, TableId table, } catch (DbException e) { rethrow(e); } } + + +} diff --git a/src/libstore/db.hh b/src/libstore/db.hh index 0315728de..54f490f88 100644 --- a/src/libstore/db.hh +++ b/src/libstore/db.hh @@ -1,13 +1,9 @@ #ifndef __DB_H #define __DB_H -#include <string> -#include <list> -#include <map> - -#include "util.hh" +#include "types.hh" -using namespace std; +#include <map> /* Defined externally. */ @@ -16,6 +12,9 @@ class DbEnv; class Db; +namespace nix { + + class Database; @@ -53,7 +52,7 @@ private: DbEnv * env; TableId nextId; - map<TableId, Db *> tables; + std::map<TableId, Db *> tables; void requireEnv(); @@ -99,5 +98,8 @@ public: DbNoPermission(const format & f) : Error(f) { }; }; + +} + #endif /* !__DB_H */ diff --git a/src/libstore/derivations.cc b/src/libstore/derivations.cc index e2d81bda8..d6291cd45 100644 --- a/src/libstore/derivations.cc +++ b/src/libstore/derivations.cc @@ -1,11 +1,13 @@ #include "derivations.hh" -#include "globals.hh" #include "store.hh" #include "derivations-ast.hh" #include "derivations-ast.cc" +namespace nix { + + Hash hashTerm(ATerm t) { return hashString(htSHA256, atPrint(t)); @@ -170,3 +172,6 @@ bool isDerivation(const string & fileName) fileName.size() >= drvExtension.size() && string(fileName, fileName.size() - drvExtension.size()) == drvExtension; } + + +} diff --git a/src/libstore/derivations.hh b/src/libstore/derivations.hh index 9358db2ed..d1c9db508 100644 --- a/src/libstore/derivations.hh +++ b/src/libstore/derivations.hh @@ -2,7 +2,12 @@ #define __DERIVATIONS_H #include "aterm.hh" -#include "store.hh" +#include "hash.hh" + +#include <map> + + +namespace nix { /* Extension of derivations in the Nix store. */ @@ -27,13 +32,13 @@ struct DerivationOutput } }; -typedef map<string, DerivationOutput> DerivationOutputs; +typedef std::map<string, DerivationOutput> DerivationOutputs; /* For inputs that are sub-derivations, we specify exactly which output IDs we are interested in. */ -typedef map<Path, StringSet> DerivationInputs; +typedef std::map<Path, StringSet> DerivationInputs; -typedef map<string, string> StringPairs; +typedef std::map<string, string> StringPairs; struct Derivation { @@ -63,5 +68,8 @@ ATerm unparseDerivation(const Derivation & drv); derivations. */ bool isDerivation(const string & fileName); + +} + #endif /* !__DERIVATIONS_H */ diff --git a/src/libstore/gc.cc b/src/libstore/gc.cc index 37fde29ca..59e71daa0 100644 --- a/src/libstore/gc.cc +++ b/src/libstore/gc.cc @@ -1,7 +1,10 @@ -#include "globals.hh" #include "gc.hh" +#include "globals.hh" #include "misc.hh" #include "pathlocks.hh" +#include "store.hh" +#include "db.hh" +#include "util.hh" #include <boost/shared_ptr.hpp> @@ -17,6 +20,9 @@ #endif +namespace nix { + + static string gcLockName = "gc.lock"; static string tempRootsDir = "temproots"; static string gcRootsDir = "gcroots"; @@ -192,7 +198,7 @@ void removeTempRoots() } -typedef shared_ptr<AutoCloseFD> FDPtr; +typedef boost::shared_ptr<AutoCloseFD> FDPtr; typedef list<FDPtr> FDs; @@ -558,3 +564,6 @@ void collectGarbage(GCAction action, const PathSet & pathsToDelete, } } } + + +} diff --git a/src/libstore/gc.hh b/src/libstore/gc.hh index c6b13bc47..54fc4dec4 100644 --- a/src/libstore/gc.hh +++ b/src/libstore/gc.hh @@ -1,7 +1,10 @@ #ifndef __GC_H #define __GC_H -#include "util.hh" +#include "types.hh" + + +namespace nix { /* Garbage collector operation. */ @@ -39,4 +42,7 @@ Path addPermRoot(const Path & storePath, const Path & gcRoot, bool indirect); +} + + #endif /* !__GC_H */ diff --git a/src/libstore/globals.cc b/src/libstore/globals.cc index f61fe167d..466d0e0b2 100644 --- a/src/libstore/globals.cc +++ b/src/libstore/globals.cc @@ -1,9 +1,13 @@ #include "globals.hh" +#include "util.hh" #include <map> #include <algorithm> +namespace nix { + + string nixStore = "/UNINIT"; string nixDataDir = "/UNINIT"; string nixLogDir = "/UNINIT"; @@ -23,7 +27,7 @@ string thisSystem = "unset"; static bool settingsRead = false; -static map<string, Strings> settings; +static std::map<string, Strings> settings; string & at(Strings & ss, unsigned int n) @@ -72,7 +76,7 @@ static void readSettings() Strings querySetting(const string & name, const Strings & def) { if (!settingsRead) readSettings(); - map<string, Strings>::iterator i = settings.find(name); + std::map<string, Strings>::iterator i = settings.find(name); return i == settings.end() ? def : i->second; } @@ -98,3 +102,6 @@ bool queryBoolSetting(const string & name, bool def) else throw Error(format("configuration option `%1%' should be either `true' or `false', not `%2%'") % name % v); } + + +} diff --git a/src/libstore/globals.hh b/src/libstore/globals.hh index 03aaa13d8..9441dc344 100644 --- a/src/libstore/globals.hh +++ b/src/libstore/globals.hh @@ -1,11 +1,11 @@ #ifndef __GLOBALS_H #define __GLOBALS_H -#include <string> -#include <set> -#include "util.hh" +#include "types.hh" + + +namespace nix { -using namespace std; /* Path names. */ @@ -67,5 +67,8 @@ string querySetting(const string & name, const string & def); bool queryBoolSetting(const string & name, bool def); + +} + #endif /* !__GLOBALS_H */ diff --git a/src/libstore/misc.cc b/src/libstore/misc.cc index 91cf25f27..156d059b6 100644 --- a/src/libstore/misc.cc +++ b/src/libstore/misc.cc @@ -1,4 +1,10 @@ +#include "misc.hh" +#include "store.hh" #include "build.hh" +#include "db.hh" + + +namespace nix { Derivation derivationFromPath(const Path & drvPath) @@ -81,3 +87,6 @@ void queryMissing(const PathSet & targets, } } } + + +} diff --git a/src/libstore/misc.hh b/src/libstore/misc.hh index f758f5bfd..ad1ad80eb 100644 --- a/src/libstore/misc.hh +++ b/src/libstore/misc.hh @@ -4,6 +4,9 @@ #include "derivations.hh" +namespace nix { + + /* Read a derivation, after ensuring its existence through ensurePath(). */ Derivation derivationFromPath(const Path & drvPath); @@ -29,4 +32,7 @@ void queryMissing(const PathSet & targets, PathSet & willBuild, PathSet & willSubstitute); +} + + #endif /* !__MISC_H */ diff --git a/src/libstore/pathlocks.cc b/src/libstore/pathlocks.cc index 8d0e6c329..03ba4f212 100644 --- a/src/libstore/pathlocks.cc +++ b/src/libstore/pathlocks.cc @@ -1,17 +1,21 @@ +#include "pathlocks.hh" +#include "util.hh" + #include <cerrno> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> -#include "pathlocks.hh" - #ifdef __CYGWIN__ #include <windows.h> #include <sys/cygwin.h> #endif +namespace nix { + + int openLockFile(const Path & path, bool create) { AutoCloseFD fd; @@ -220,3 +224,6 @@ void PathLocks::setDeletion(bool deletePaths) { this->deletePaths = deletePaths; } + + +} diff --git a/src/libstore/pathlocks.hh b/src/libstore/pathlocks.hh index 911fe4579..87bb7bf3e 100644 --- a/src/libstore/pathlocks.hh +++ b/src/libstore/pathlocks.hh @@ -1,7 +1,10 @@ #ifndef __PATHLOCKS_H #define __PATHLOCKS_H -#include "util.hh" +#include "types.hh" + + +namespace nix { /* Open (possibly create) a lock file and return the file descriptor. @@ -22,7 +25,7 @@ bool lockFile(int fd, LockType lockType, bool wait); class PathLocks { private: - typedef pair<int, Path> FDPair; + typedef std::pair<int, Path> FDPair; list<FDPair> fds; bool deletePaths; @@ -37,4 +40,7 @@ public: }; +} + + #endif /* !__PATHLOCKS_H */ diff --git a/src/libstore/references.cc b/src/libstore/references.cc index d67e5b9dc..aba4ef010 100644 --- a/src/libstore/references.cc +++ b/src/libstore/references.cc @@ -1,3 +1,7 @@ +#include "references.hh" +#include "hash.hh" +#include "util.hh" + #include <cerrno> #include <map> @@ -7,8 +11,8 @@ #include <dirent.h> #include <fcntl.h> -#include "references.hh" -#include "hash.hh" + +namespace nix { static unsigned int refLength = 32; /* characters */ @@ -90,7 +94,7 @@ void checkPath(const string & path, PathSet scanForReferences(const string & path, const PathSet & paths) { - map<string, Path> backMap; + std::map<string, Path> backMap; StringSet ids; StringSet seen; @@ -114,10 +118,13 @@ PathSet scanForReferences(const string & path, const PathSet & paths) PathSet found; for (StringSet::iterator i = seen.begin(); i != seen.end(); i++) { - map<string, Path>::iterator j; + std::map<string, Path>::iterator j; if ((j = backMap.find(*i)) == backMap.end()) abort(); found.insert(j->second); } return found; } + + +} diff --git a/src/libstore/references.hh b/src/libstore/references.hh index 4b1299e7a..76a7ee166 100644 --- a/src/libstore/references.hh +++ b/src/libstore/references.hh @@ -1,10 +1,12 @@ #ifndef __REFERENCES_H #define __REFERENCES_H -#include "util.hh" +#include "types.hh" +namespace nix { PathSet scanForReferences(const Path & path, const PathSet & refs); - + +} #endif /* !__REFERENCES_H */ diff --git a/src/libstore/store.cc b/src/libstore/store.cc index 2f9193749..f8441af9c 100644 --- a/src/libstore/store.cc +++ b/src/libstore/store.cc @@ -1,3 +1,13 @@ +#include "store.hh" +#include "util.hh" +#include "globals.hh" +#include "db.hh" +#include "archive.hh" +#include "pathlocks.hh" +#include "gc.hh" +#include "aterm.hh" +#include "derivations-ast.hh" + #include <iostream> #include <algorithm> @@ -6,14 +16,9 @@ #include <unistd.h> #include <utime.h> -#include "store.hh" -#include "globals.hh" -#include "db.hh" -#include "archive.hh" -#include "pathlocks.hh" -#include "gc.hh" - +namespace nix { + /* Nix database. */ static Database nixDB; @@ -956,10 +961,6 @@ void verifyStore(bool checkContents) } -#include "aterm.hh" -#include "derivations-ast.hh" - - /* Upgrade from schema 1 (Nix <= 0.7) to schema 2 (Nix >= 0.8). */ static void upgradeStore07() { @@ -971,7 +972,7 @@ static void upgradeStore07() nixDB.enumTable(txn, dbValidPaths, validPaths2); PathSet validPaths(validPaths2.begin(), validPaths2.end()); - cerr << "hashing paths..."; + std::cerr << "hashing paths..."; int n = 0; for (PathSet::iterator i = validPaths.begin(); i != validPaths.end(); ++i) { checkInterrupt(); @@ -980,20 +981,20 @@ static void upgradeStore07() if (s == "") { Hash hash = hashPath(htSHA256, *i); setHash(txn, *i, hash); - cerr << "."; + std::cerr << "."; if (++n % 1000 == 0) { txn.commit(); txn.begin(nixDB); } } } - cerr << "\n"; + std::cerr << std::endl; txn.commit(); txn.begin(nixDB); - cerr << "processing closures..."; + std::cerr << "processing closures..."; for (PathSet::iterator i = validPaths.begin(); i != validPaths.end(); ++i) { checkInterrupt(); if (i->size() > 6 && string(*i, i->size() - 6) == ".store") { @@ -1037,10 +1038,10 @@ static void upgradeStore07() setReferences(txn, path, references); } - cerr << "."; + std::cerr << "."; } } - cerr << "\n"; + std::cerr << std::endl; /* !!! maybe this transaction is way too big */ txn.commit(); @@ -1061,7 +1062,7 @@ static void upgradeStore09() Transaction txn(nixDB); - cerr << "converting referers to referrers..."; + std::cerr << "converting referers to referrers..."; TableId dbReferers = nixDB.openTable("referers"); /* sic! */ @@ -1080,16 +1081,19 @@ static void upgradeStore09() if (++n % 1000 == 0) { txn.commit(); txn.begin(nixDB); - cerr << "|"; + std::cerr << "|"; } - cerr << "."; + std::cerr << "."; } txn.commit(); - cerr << "\n"; + std::cerr << std::endl; nixDB.closeTable(dbReferers); nixDB.deleteTable("referers"); } + + +} diff --git a/src/libstore/store.hh b/src/libstore/store.hh index a170c69e7..7b18871e4 100644 --- a/src/libstore/store.hh +++ b/src/libstore/store.hh @@ -4,9 +4,12 @@ #include <string> #include "hash.hh" -#include "db.hh" -using namespace std; + +namespace nix { + + +class Transaction; /* Nix store and database schema version. Version 1 (or 0) was Nix <= @@ -168,5 +171,8 @@ void deleteFromStore(const Path & path, unsigned long long & bytesFreed); void verifyStore(bool checkContents); + +} + #endif /* !__STORE_H */ |