diff options
Diffstat (limited to 'src/nix-env')
-rw-r--r-- | src/nix-env/nix-env.cc | 92 | ||||
-rw-r--r-- | src/nix-env/profiles.cc | 5 | ||||
-rw-r--r-- | src/nix-env/user-env.cc | 21 |
3 files changed, 58 insertions, 60 deletions
diff --git a/src/nix-env/nix-env.cc b/src/nix-env/nix-env.cc index c980116b2056..dda725606560 100644 --- a/src/nix-env/nix-env.cc +++ b/src/nix-env/nix-env.cc @@ -115,13 +115,13 @@ static void getAllExprs(EvalState & state, necessary to prevent it from showing up in channels (which are implemented using profiles). */ if (*i == "manifest.nix") continue; - + Path path2 = path + "/" + *i; - + struct stat st; if (stat(path2.c_str(), &st) == -1) continue; // ignore dangling symlinks in ~/.nix-defexpr - + if (isNixExpr(path2)) { /* Strip off the `.nix' filename suffix (if applicable), otherwise the attribute cannot be selected with the @@ -165,7 +165,7 @@ static void loadDerivations(EvalState & state, Path nixExprPath, { Value v; findAlongAttrPath(state, pathPrefix, autoArgs, loadSourceExpr(state, nixExprPath), v); - + getDerivations(state, v, pathPrefix, autoArgs, elems, true); /* Filter out all derivations not applicable to the current @@ -266,7 +266,7 @@ static DrvInfos filterBySelector(EvalState & state, const DrvInfos & allElems, int d = 1; Newest::iterator k = newest.find(drvName.name); - + if (k != newest.end()) { d = j->first.system == k->second.first.system ? 0 : j->first.system == settings.thisSystem ? 1 : @@ -303,7 +303,7 @@ static DrvInfos filterBySelector(EvalState & state, const DrvInfos & allElems, elems.push_back(j->first); } } - + /* Check that all selectors have been used. */ for (DrvNames::iterator i = selectors.begin(); i != selectors.end(); ++i) @@ -328,7 +328,7 @@ static void queryInstSources(EvalState & state, InstallSourceType type = instSource.type; if (type == srcUnknown && args.size() > 0 && isPath(args.front())) type = srcStorePaths; - + switch (type) { /* Get the available user environment elements from the @@ -344,7 +344,7 @@ static void queryInstSources(EvalState & state, instSource.systemFilter, instSource.autoArgs, "", allElems); elems = filterBySelector(state, allElems, args, newestOnly); - + break; } @@ -355,7 +355,7 @@ static void queryInstSources(EvalState & state, argument `x: x.bar' is equivalent to `(x: x.bar) (import ./foo.nix)' = `(import ./foo.nix).bar'. */ case srcNixExprs: { - + Expr * e1 = loadSourceExpr(state, instSource.nixExprPath); foreach (Strings::const_iterator, i, args) { @@ -364,10 +364,10 @@ static void queryInstSources(EvalState & state, Value v; state.eval(call, v); getDerivations(state, v, "", instSource.autoArgs, elems, true); } - + break; } - + /* The available user environment elements are specified as a list of store paths (which may or may not be derivations). */ @@ -398,10 +398,10 @@ static void queryInstSources(EvalState & state, elems.push_back(elem); } - + break; } - + /* Get the available user environment elements from another user environment. These are then filtered as in the `srcNixExprDrvs' case. */ @@ -477,9 +477,9 @@ static void installDerivations(Globals & globals, while (true) { string lockToken = optimisticLockProfile(profile); - + DrvInfos installedElems = queryInstalled(globals.state, profile); - + DrvInfos allElems(newElems); foreach (DrvInfos::iterator, i, installedElems) { DrvName drvName(i->name); @@ -495,9 +495,9 @@ static void installDerivations(Globals & globals, foreach (DrvInfos::iterator, i, newElems) printMsg(lvlInfo, format("installing `%1%'") % i->name); - + printMissing(globals.state, newElems); - + if (globals.dryRun) return; if (createUserEnv(globals.state, allElems, @@ -536,7 +536,7 @@ static void upgradeDerivations(Globals & globals, while (true) { string lockToken = optimisticLockProfile(globals.profile); - + DrvInfos installedElems = queryInstalled(globals.state, globals.profile); /* Fetch all derivations from the input file. */ @@ -586,7 +586,7 @@ static void upgradeDerivations(Globals & globals, } } } - + if (bestElem != availElems.end() && i->queryOutPath(globals.state) != bestElem->queryOutPath(globals.state)) @@ -602,9 +602,9 @@ static void upgradeDerivations(Globals & globals, throw; } } - + printMissing(globals.state, newElems); - + if (globals.dryRun) return; if (createUserEnv(globals.state, newElems, @@ -694,7 +694,7 @@ static void opSet(Globals & globals, if (elems.size() != 1) throw Error("--set requires exactly one derivation"); - + DrvInfo & drv(elems.front()); if (drv.queryDrvPath(globals.state) != "") { @@ -777,10 +777,10 @@ typedef list<Strings> Table; void printTable(Table & table) { unsigned int nrColumns = table.size() > 0 ? table.front().size() : 0; - + vector<unsigned int> widths; widths.resize(nrColumns); - + foreach (Table::iterator, i, table) { assert(i->size() == nrColumns); Strings::iterator j; @@ -789,7 +789,7 @@ void printTable(Table & table) if (j->size() > widths[column]) widths[column] = j->size(); } - foreach (Table::iterator, i, table) { + foreach (Table::iterator, i, table) { Strings::iterator j; unsigned int column; for (j = i->begin(), column = 0; j != i->end(); ++j, ++column) { @@ -817,10 +817,10 @@ static VersionDiff compareVersionAgainstSet( const DrvInfo & elem, const DrvInfos & elems, string & version) { DrvName name(elem.name); - + VersionDiff diff = cvUnavail; version = "?"; - + for (DrvInfos::const_iterator i = elems.begin(); i != elems.end(); ++i) { DrvName name2(i->name); if (name.name == name2.name) { @@ -858,7 +858,7 @@ static void opQuery(Globals & globals, typedef vector< map<string, string> > ResultSet; Strings remaining; string attrPath; - + bool printStatus = false; bool printName = true; bool printAttrPath = false; @@ -898,7 +898,7 @@ static void opQuery(Globals & globals, if (remaining.size() == 0) printMsg(lvlInfo, "warning: you probably meant to specify the argument '*' to show all packages"); - + /* Obtain derivation information from the specified source. */ DrvInfos availElems, installedElems; @@ -916,7 +916,7 @@ static void opQuery(Globals & globals, DrvInfos & otherElems(source == sInstalled ? availElems : installedElems); - + /* Sort them by name. */ /* !!! */ vector<DrvInfo> elems2; @@ -924,11 +924,11 @@ static void opQuery(Globals & globals, elems2.push_back(*i); sort(elems2.begin(), elems2.end(), cmpElemByName); - + /* We only need to know the installed paths when we are querying the status of the derivation. */ PathSet installed; /* installed paths */ - + if (printStatus) { for (DrvInfos::iterator i = installedElems.begin(); i != installedElems.end(); ++i) @@ -951,17 +951,17 @@ static void opQuery(Globals & globals, substitutablePaths = store->querySubstitutablePaths(paths); } - + /* Print the desired columns, or XML output. */ Table table; std::ostringstream dummy; XMLWriter xml(true, *(xmlOutput ? &cout : &dummy)); XMLOpenElement xmlRoot(xml, "items"); - + foreach (vector<DrvInfo>::iterator, i, elems2) { try { if (i->hasFailed()) continue; - + startNest(nest, lvlDebug, format("outputting query result `%1%'") % i->attrPath); if (globals.prebuiltOnly && !isPrebuilt(globals.state, *i)) continue; @@ -1090,7 +1090,7 @@ static void opQuery(Globals & globals, } else if (j->second.type == MetaValue::tpStrings) { attrs2["type"] = "strings"; XMLOpenElement m(xml, "meta", attrs2); - foreach (Strings::iterator, k, j->second.stringValues) { + foreach (Strings::iterator, k, j->second.stringValues) { XMLAttrs attrs3; attrs3["value"] = *k; xml.writeEmptyElement("string", attrs3); @@ -1136,7 +1136,7 @@ static void switchGeneration(Globals & globals, int dstGen) { PathLocks lock; lockProfile(lock, globals.profile); - + int curGen; Generations gens = findGenerations(globals.profile, curGen); @@ -1156,9 +1156,9 @@ static void switchGeneration(Globals & globals, int dstGen) printMsg(lvlInfo, format("switching from generation %1% to %2%") % curGen % dst.number); - + if (globals.dryRun) return; - + switchLink(globals.profile, dst.path); } @@ -1201,7 +1201,7 @@ static void opListGenerations(Globals & globals, PathLocks lock; lockProfile(lock, globals.profile); - + int curGen; Generations gens = findGenerations(globals.profile, curGen); @@ -1225,7 +1225,7 @@ static void deleteGeneration2(Globals & globals, unsigned int gen) printMsg(lvlInfo, format("removing generation %1%") % gen); deleteGeneration(globals.profile, gen); } - + } @@ -1237,7 +1237,7 @@ static void opDeleteGenerations(Globals & globals, PathLocks lock; lockProfile(lock, globals.profile); - + int curGen; Generations gens = findGenerations(globals.profile, curGen); @@ -1272,13 +1272,13 @@ void run(Strings args) { Strings opFlags, opArgs, remaining; Operation op = 0; - + Globals globals; - + globals.instSource.type = srcUnknown; globals.instSource.nixExprPath = getDefNixExprPath(); globals.instSource.systemFilter = "*"; - + globals.dryRun = false; globals.preserveInstalled = false; globals.prebuiltOnly = false; @@ -1353,7 +1353,7 @@ void run(Strings args) ? absPath(readLink(profileLink), dirOf(profileLink)) : canonPath(settings.nixStateDir + "/profiles/default"); } - + store = openStore(); op(globals, remaining, opFlags, opArgs); diff --git a/src/nix-env/profiles.cc b/src/nix-env/profiles.cc index 5cc0d9a1cd42..c327993594e8 100644 --- a/src/nix-env/profiles.cc +++ b/src/nix-env/profiles.cc @@ -41,7 +41,7 @@ Generations findGenerations(Path profile, int & curGen) Path profileDir = dirOf(profile); string profileName = baseNameOf(profile); - + Strings names = readDirectory(profileDir); for (Strings::iterator i = names.begin(); i != names.end(); ++i) { int n; @@ -116,7 +116,7 @@ void switchLink(Path link, Path target) { /* Hacky. */ if (dirOf(target) == dirOf(link)) target = baseNameOf(target); - + Path tmp = canonPath(dirOf(link) + "/.new_" + baseNameOf(link)); if (symlink(target.c_str(), tmp.c_str()) != 0) throw SysError(format("creating symlink `%1%'") % tmp); @@ -146,4 +146,3 @@ string optimisticLockProfile(const Path & profile) } - diff --git a/src/nix-env/user-env.cc b/src/nix-env/user-env.cc index 5b754bc8ca5f..0a50493fd153 100644 --- a/src/nix-env/user-env.cc +++ b/src/nix-env/user-env.cc @@ -91,15 +91,15 @@ bool createUserEnv(EvalState & state, DrvInfos & elems, default: abort(); } } - + vMeta.attrs->sort(); v.attrs->sort(); - + /* This is only necessary when installing store paths, e.g., `nix-env -i /nix/store/abcd...-foo'. */ store->addTempRoot(i->queryOutPath(state)); store->ensurePath(i->queryOutPath(state)); - + references.insert(i->queryOutPath(state)); if (drvPath != "") references.insert(drvPath); } @@ -123,13 +123,13 @@ bool createUserEnv(EvalState & state, DrvInfos & elems, args.attrs->push_back(Attr(state.symbols.create("derivations"), &manifest)); args.attrs->sort(); mkApp(topLevel, envBuilder, args); - + /* Evaluate it. */ debug("evaluating user environment builder"); DrvInfo topLevelDrv; if (!getDerivation(state, topLevel, topLevelDrv, false)) abort(); - + /* Realise the resulting store expression. */ debug("building user environment"); store->buildPaths(singleton<PathSet>(topLevelDrv.queryDrvPath(state)), state.repair); @@ -143,7 +143,7 @@ bool createUserEnv(EvalState & state, DrvInfos & elems, printMsg(lvlError, format("profile `%1%' changed while we were busy; restarting") % profile); return false; } - + debug(format("switching to new user environment")); Path generation = createGeneration(profile, topLevelDrv.queryOutPath(state)); switchLink(profile, generation); @@ -181,7 +181,7 @@ static MetaInfo parseMeta(std::istream & str) expect(str, "Bind("); MetaValue value; - + string name = parseString(str); expect(str, ","); @@ -207,7 +207,7 @@ static MetaInfo parseMeta(std::istream & str) expect(str, ",NoPos)"); meta[name] = value; } - + expect(str, ")"); return meta; @@ -221,7 +221,7 @@ static void readLegacyManifest(const Path & path, DrvInfos & elems) expect(str, "List(["); unsigned int n = 0; - + while (!endOfList(str)) { DrvInfo elem; expect(str, "Attrs(["); @@ -230,7 +230,7 @@ static void readLegacyManifest(const Path & path, DrvInfos & elems) expect(str, "Bind("); string name = parseString(str); expect(str, ","); - + if (name == "meta") elem.setMetaInfo(parseMeta(str)); else { string value = parseStr(str); @@ -256,4 +256,3 @@ static void readLegacyManifest(const Path & path, DrvInfos & elems) } - |