mirror of
https://github.com/NixOS/nix.git
synced 2025-11-26 04:00:59 +01:00
Fixed recursive build error
This commit is contained in:
parent
0ee803935e
commit
60a32fcbf3
3 changed files with 13 additions and 7 deletions
|
|
@ -2828,6 +2828,8 @@ void ensurePathTxn(const Transaction & txn, const Path & path)
|
||||||
if (isValidPathTxn(txn, path))
|
if (isValidPathTxn(txn, path))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
printMsg(lvlError, format("ensurePathTxn(%1%)") % path);
|
||||||
|
|
||||||
Worker worker;
|
Worker worker;
|
||||||
GoalPtr goal = worker.makeSubstitutionGoal(path);
|
GoalPtr goal = worker.makeSubstitutionGoal(path);
|
||||||
Goals goals = singleton<Goals>(goal);
|
Goals goals = singleton<Goals>(goal);
|
||||||
|
|
|
||||||
|
|
@ -626,6 +626,9 @@ void LocalStore::queryStateReferrers(const Path & storePath, PathSet & stateRefe
|
||||||
nix::queryStateReferrersTxn(noTxn, storePath, stateReferrers, revision);
|
nix::queryStateReferrersTxn(noTxn, storePath, stateReferrers, revision);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* You can substitute a path withouth substituting the deriver!!!!!
|
||||||
|
*/
|
||||||
void setDeriver(const Transaction & txn, const Path & storePath, const Path & deriver)
|
void setDeriver(const Transaction & txn, const Path & storePath, const Path & deriver)
|
||||||
{
|
{
|
||||||
assertStorePath(storePath);
|
assertStorePath(storePath);
|
||||||
|
|
@ -635,7 +638,11 @@ void setDeriver(const Transaction & txn, const Path & storePath, const Path & de
|
||||||
if (!isValidPathTxn(txn, storePath))
|
if (!isValidPathTxn(txn, storePath))
|
||||||
throw Error(format("path `%1%' is not valid") % storePath);
|
throw Error(format("path `%1%' is not valid") % storePath);
|
||||||
|
|
||||||
if (isStateDrvPathTxn(txn, deriver)){ //Redirect if its a state component
|
if (isStateComponentTxn(txn, storePath)){ //Redirect if its a state component
|
||||||
|
|
||||||
|
if (!isValidPathTxn(txn, deriver))
|
||||||
|
throw Error(format("Derivers `%1%' is not valid so we dont have the info for a store-state path") % storePath);
|
||||||
|
|
||||||
addStateDeriver(txn, storePath, deriver);
|
addStateDeriver(txn, storePath, deriver);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
||||||
|
|
@ -12,14 +12,11 @@ namespace nix {
|
||||||
Derivation derivationFromPathPrivate(const bool dotxn, const Transaction & txn, const Path & drvPath)
|
Derivation derivationFromPathPrivate(const bool dotxn, const Transaction & txn, const Path & drvPath)
|
||||||
{
|
{
|
||||||
assertStorePath(drvPath);
|
assertStorePath(drvPath);
|
||||||
if(dotxn){
|
if(dotxn)
|
||||||
printMsg(lvlError, format("ensurePathTxn(txn,%1%)") % drvPath);
|
|
||||||
ensurePathTxn(txn, drvPath);
|
ensurePathTxn(txn, drvPath);
|
||||||
}
|
else
|
||||||
else{
|
|
||||||
printMsg(lvlError, format("store->ensurePathTxn(%1%)") % drvPath);
|
|
||||||
store->ensurePath(drvPath);
|
store->ensurePath(drvPath);
|
||||||
}
|
|
||||||
ATerm t = ATreadFromNamedFile(drvPath.c_str());
|
ATerm t = ATreadFromNamedFile(drvPath.c_str());
|
||||||
if (!t)
|
if (!t)
|
||||||
throw Error(format("cannot read aterm from `%1%'") % drvPath);
|
throw Error(format("cannot read aterm from `%1%'") % drvPath);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue