Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master' into new-store-settings
Browse files Browse the repository at this point in the history
  • Loading branch information
Ericson2314 committed Jul 18, 2024
2 parents de1ec5a + 8ce4287 commit 9b30c20
Show file tree
Hide file tree
Showing 7 changed files with 26 additions and 8 deletions.
2 changes: 1 addition & 1 deletion src/libcmd/installable-value.hh
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ struct ExtraPathInfoValue : ExtraPathInfo
};

/**
* An Installable which corresponds a Nix langauge value, in addition to
* An Installable which corresponds a Nix language value, in addition to
* a collection of \ref DerivedPath "derived paths".
*/
struct InstallableValue : Installable
Expand Down
2 changes: 1 addition & 1 deletion src/libexpr/eval-cache.cc
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ struct AttrDb
{
try {
auto state(_state->lock());
if (!failed)
if (!failed && state->txn->active)
state->txn->commit();
state->txn.reset();
} catch (...) {
Expand Down
6 changes: 5 additions & 1 deletion src/nix/develop.cc
Original file line number Diff line number Diff line change
Expand Up @@ -699,7 +699,11 @@ struct CmdDevelop : Common, MixEnvironment
}
}

runProgramInStore(store, UseLookupPath::Use, shell, args, buildEnvironment.getSystem());
// Release our references to eval caches to ensure they are persisted to disk, because
// we are about to exec out of this process without running C++ destructors.
getEvalState()->evalCaches.clear();

execProgramInStore(store, UseLookupPath::Use, shell, args, buildEnvironment.getSystem());
#endif
}
};
Expand Down
7 changes: 6 additions & 1 deletion src/nix/env.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#include <queue>

#include "command.hh"
#include "eval.hh"
#include "run.hh"
#include "strings.hh"

Expand Down Expand Up @@ -103,7 +104,11 @@ struct CmdShell : InstallablesCommand, MixEnvironment
for (auto & arg : command)
args.push_back(arg);

runProgramInStore(store, UseLookupPath::Use, *command.begin(), args);
// Release our references to eval caches to ensure they are persisted to disk, because
// we are about to exec out of this process without running C++ destructors.
getEvalState()->evalCaches.clear();

execProgramInStore(store, UseLookupPath::Use, *command.begin(), args);
}
};

Expand Down
7 changes: 6 additions & 1 deletion src/nix/fmt.cc
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#include "command.hh"
#include "installable-value.hh"
#include "eval.hh"
#include "run.hh"

using namespace nix;
Expand Down Expand Up @@ -49,7 +50,11 @@ struct CmdFmt : SourceExprCommand {
}
}

runProgramInStore(store, UseLookupPath::DontUse, app.program, programArgs);
// Release our references to eval caches to ensure they are persisted to disk, because
// we are about to exec out of this process without running C++ destructors.
evalState->evalCaches.clear();

execProgramInStore(store, UseLookupPath::DontUse, app.program, programArgs);
};
};

Expand Down
8 changes: 6 additions & 2 deletions src/nix/run.cc
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ std::string chrootHelperName = "__run_in_chroot";

namespace nix {

void runProgramInStore(ref<Store> store,
void execProgramInStore(ref<Store> store,
UseLookupPath useLookupPath,
const std::string & program,
const Strings & args,
Expand Down Expand Up @@ -128,7 +128,11 @@ struct CmdRun : InstallableValueCommand
Strings allArgs{app.program};
for (auto & i : args) allArgs.push_back(i);

runProgramInStore(store, UseLookupPath::DontUse, app.program, allArgs);
// Release our references to eval caches to ensure they are persisted to disk, because
// we are about to exec out of this process without running C++ destructors.
state->evalCaches.clear();

execProgramInStore(store, UseLookupPath::DontUse, app.program, allArgs);
}
};

Expand Down
2 changes: 1 addition & 1 deletion src/nix/run.hh
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ enum struct UseLookupPath {
DontUse
};

void runProgramInStore(ref<Store> store,
void execProgramInStore(ref<Store> store,
UseLookupPath useLookupPath,
const std::string & program,
const Strings & args,
Expand Down

0 comments on commit 9b30c20

Please sign in to comment.