* Change extension .store' to .drv'.
				
					
				
			* Re-enable `nix-store --query --requisites'.
This commit is contained in:
		
							parent
							
								
									863dcff6c5
								
							
						
					
					
						commit
						06c77bf7a8
					
				
					 12 changed files with 120 additions and 139 deletions
				
			
		|  | @ -270,6 +270,9 @@ static Expr primDerivation(EvalState & state, const ATermVector & _args) | ||||||
|                 % *i % drvName); |                 % *i % drvName); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |     /* !!! the name should not end in the derivation extension (.drv).
 | ||||||
|  |        Likewise for sources. */ | ||||||
|  | 
 | ||||||
|     /* Construct the "masked" derivation store expression, which is
 |     /* Construct the "masked" derivation store expression, which is
 | ||||||
|        the final one except that in the list of outputs, the output |        the final one except that in the list of outputs, the output | ||||||
|        paths are empty, and the corresponding environment variables |        paths are empty, and the corresponding environment variables | ||||||
|  | @ -290,7 +293,7 @@ static Expr primDerivation(EvalState & state, const ATermVector & _args) | ||||||
|         DerivationOutput(outPath, outputHashAlgo, outputHash); |         DerivationOutput(outPath, outputHashAlgo, outputHash); | ||||||
| 
 | 
 | ||||||
|     /* Write the resulting term into the Nix store directory. */ |     /* Write the resulting term into the Nix store directory. */ | ||||||
|     Path drvPath = writeTerm(unparseDerivation(drv), "d-" + drvName); |     Path drvPath = writeDerivation(drv, drvName); | ||||||
| 
 | 
 | ||||||
|     printMsg(lvlChatty, format("instantiated `%1%' -> `%2%'") |     printMsg(lvlChatty, format("instantiated `%1%' -> `%2%'") | ||||||
|         % drvName % drvPath); |         % drvName % drvPath); | ||||||
|  |  | ||||||
|  | @ -26,65 +26,39 @@ void computeFSClosure(const Path & storePath, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| #if 0 | void storePathRequisites(const Path & storePath, | ||||||
| PathSet storeExprRoots(const Path & nePath) |     bool includeOutputs, PathSet & paths) | ||||||
| { |  | ||||||
|     PathSet paths; |  | ||||||
| 
 |  | ||||||
|     StoreExpr ne = storeExprFromPath(nePath); |  | ||||||
| 
 |  | ||||||
|     if (ne.type == StoreExpr::neClosure) |  | ||||||
|         paths.insert(ne.closure.roots.begin(), ne.closure.roots.end()); |  | ||||||
|     else if (ne.type == StoreExpr::neDerivation) |  | ||||||
|         for (DerivationOutputs::iterator i = ne.derivation.outputs.begin(); |  | ||||||
|              i != ne.derivation.outputs.end(); ++i) |  | ||||||
|             paths.insert(i->second.path); |  | ||||||
|     else abort(); |  | ||||||
| 
 |  | ||||||
|     return paths; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| static void requisitesWorker(const Path & nePath, |  | ||||||
|     bool includeExprs, bool includeSuccessors, |  | ||||||
|     PathSet & paths, PathSet & doneSet) |  | ||||||
| { | { | ||||||
|     checkInterrupt(); |     checkInterrupt(); | ||||||
|      |      | ||||||
|     if (doneSet.find(nePath) != doneSet.end()) return; |     if (paths.find(storePath) != paths.end()) return; | ||||||
|     doneSet.insert(nePath); |  | ||||||
| 
 | 
 | ||||||
|     StoreExpr ne = storeExprFromPath(nePath); |     if (isDerivation(storePath)) { | ||||||
| 
 | 
 | ||||||
|     if (ne.type == StoreExpr::neClosure) |         paths.insert(storePath); | ||||||
|         for (ClosureElems::iterator i = ne.closure.elems.begin(); |          | ||||||
|              i != ne.closure.elems.end(); ++i) |         Derivation drv = derivationFromPath(storePath); | ||||||
|             paths.insert(i->first); |  | ||||||
|      |  | ||||||
|     else if (ne.type == StoreExpr::neDerivation) |  | ||||||
|         for (PathSet::iterator i = ne.derivation.inputs.begin(); |  | ||||||
|              i != ne.derivation.inputs.end(); ++i) |  | ||||||
|             requisitesWorker(*i, |  | ||||||
|                 includeExprs, includeSuccessors, paths, doneSet); |  | ||||||
| 
 | 
 | ||||||
|     else abort(); |         for (PathSet::iterator i = drv.inputDrvs.begin(); | ||||||
|  |              i != drv.inputDrvs.end(); ++i) | ||||||
|  |             storePathRequisites(*i, includeOutputs, paths); | ||||||
| 
 | 
 | ||||||
|     if (includeExprs) paths.insert(nePath); |         for (PathSet::iterator i = drv.inputSrcs.begin(); | ||||||
|  |              i != drv.inputSrcs.end(); ++i) | ||||||
|  |             storePathRequisites(*i, includeOutputs, paths); | ||||||
| 
 | 
 | ||||||
|     Path nfPath; |         if (includeOutputs) { | ||||||
|     if (includeSuccessors && querySuccessor(nePath, nfPath)) | 
 | ||||||
|         requisitesWorker(nfPath, includeExprs, includeSuccessors, |             for (DerivationOutputs::iterator i = drv.outputs.begin(); | ||||||
|             paths, doneSet); |                  i != drv.outputs.end(); ++i) | ||||||
|  |                 if (isValidPath(i->second.path)) | ||||||
|  |                     storePathRequisites(i->second.path, includeOutputs, paths); | ||||||
|  | 
 | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     else { | ||||||
|  |         computeFSClosure(storePath, paths); | ||||||
|  |     } | ||||||
| } | } | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| PathSet storeExprRequisites(const Path & nePath, |  | ||||||
|     bool includeExprs, bool includeSuccessors) |  | ||||||
| { |  | ||||||
|     PathSet paths; |  | ||||||
|     PathSet doneSet; |  | ||||||
|     requisitesWorker(nePath, includeExprs, includeSuccessors, |  | ||||||
|         paths, doneSet); |  | ||||||
|     return paths; |  | ||||||
| } |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|  | @ -1307,6 +1307,9 @@ void SubstitutionGoal::init() | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /* !!! build the outgoing references of this path first to
 | ||||||
|  |        maintain the closure invariant! */ | ||||||
|  | 
 | ||||||
|     /* Otherwise, get the substitutes. */ |     /* Otherwise, get the substitutes. */ | ||||||
|     subs = querySubstitutes(storePath); |     subs = querySubstitutes(storePath); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -3,7 +3,6 @@ | ||||||
| 
 | 
 | ||||||
| #include "storeexpr.hh" | #include "storeexpr.hh" | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| /* Perform the specified derivation, if necessary.  That is, do
 | /* Perform the specified derivation, if necessary.  That is, do
 | ||||||
|    whatever is necessary to create the output paths of the |    whatever is necessary to create the output paths of the | ||||||
|    derivation.  If the output paths already exists, we're done.  If |    derivation.  If the output paths already exists, we're done.  If | ||||||
|  | @ -20,29 +19,29 @@ void ensurePath(const Path & storePath); | ||||||
|    through ensurePath(). */ |    through ensurePath(). */ | ||||||
| Derivation derivationFromPath(const Path & drvPath); | Derivation derivationFromPath(const Path & drvPath); | ||||||
| 
 | 
 | ||||||
| 
 | /* Place in `paths' the set of all store paths in the file system
 | ||||||
| /* Places in `paths' the set of all store paths in the file system
 |  | ||||||
|    closure of `storePath'; that is, all paths than can be directly or |    closure of `storePath'; that is, all paths than can be directly or | ||||||
|    indirectly reached from it.  `paths' is not cleared. */ |    indirectly reached from it.  `paths' is not cleared. */ | ||||||
| void computeFSClosure(const Path & storePath, | void computeFSClosure(const Path & storePath, | ||||||
|     PathSet & paths); |     PathSet & paths); | ||||||
| 
 | 
 | ||||||
|  | /* Place in `paths' the set of paths that are required to `realise'
 | ||||||
|  |    the given store path, i.e., all paths necessary for valid | ||||||
|  |    deployment of the path.  For a derivation, this is the union of | ||||||
|  |    requisites of the inputs, plus the derivation; for other store | ||||||
|  |    paths, it is the set of paths in the FS closure of the path.  If | ||||||
|  |    `includeOutputs' is true, include the requisites of the output | ||||||
|  |    paths of derivations as well. | ||||||
| 
 | 
 | ||||||
| #if 0 |    Note that this function can be used to implement three different | ||||||
| /* Get the list of root (output) paths of the given store
 |    deployment policies: | ||||||
|    expression. */ |  | ||||||
| PathSet storeExprRoots(const Path & nePath); |  | ||||||
| 
 |  | ||||||
| /* Get the list of paths that are required to realise the given store
 |  | ||||||
|    expression.  For a derive expression, this is the union of |  | ||||||
|    requisites of the inputs; for a closure expression, it is the path |  | ||||||
|    of each element in the closure.  If `includeExprs' is true, include |  | ||||||
|    the paths of the store expressions themselves.  If |  | ||||||
|    `includeSuccessors' is true, include the requisites of |  | ||||||
|    successors. */ |  | ||||||
| PathSet storeExprRequisites(const Path & nePath, |  | ||||||
|     bool includeExprs, bool includeSuccessors); |  | ||||||
| #endif |  | ||||||
| 
 | 
 | ||||||
|  |    - Source deployment (when called on a derivation). | ||||||
|  |    - Binary deployment (when called on an output path). | ||||||
|  |    - Source/binary deployment (when called on a derivation with | ||||||
|  |      `includeOutputs' set to true). | ||||||
|  | */ | ||||||
|  | void storePathRequisites(const Path & storePath, | ||||||
|  |     bool includeOutputs, PathSet & paths); | ||||||
| 
 | 
 | ||||||
| #endif /* !__NORMALISE_H */ | #endif /* !__NORMALISE_H */ | ||||||
|  |  | ||||||
|  | @ -217,6 +217,8 @@ void setReferences(const Transaction & txn, const Path & storePath, | ||||||
| void queryReferences(const Path & storePath, PathSet & references) | void queryReferences(const Path & storePath, PathSet & references) | ||||||
| { | { | ||||||
|     Paths references2; |     Paths references2; | ||||||
|  |     if (!isValidPath(storePath)) | ||||||
|  |         throw Error(format("path `%1%' is not valid") % storePath); | ||||||
|     nixDB.queryStrings(noTxn, dbReferences, storePath, references2); |     nixDB.queryStrings(noTxn, dbReferences, storePath, references2); | ||||||
|     references.insert(references2.begin(), references2.end()); |     references.insert(references2.begin(), references2.end()); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -12,11 +12,10 @@ Hash hashTerm(ATerm t) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| Path writeTerm(ATerm t, const string & suffix) | Path writeDerivation(const Derivation & drv, const string & name) | ||||||
| { | { | ||||||
|     char * s = ATwriteToString(t); |     return addTextToStore(name + drvExtension, | ||||||
|     if (!s) throw Error("cannot print aterm"); |         atPrint(unparseDerivation(drv))); | ||||||
|     return addTextToStore(suffix + ".store", string(s)); |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -133,3 +132,11 @@ ATerm unparseDerivation(const Derivation & drv) | ||||||
|         ATreverse(args), |         ATreverse(args), | ||||||
|         ATreverse(env)); |         ATreverse(env)); | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | bool isDerivation(const string & fileName) | ||||||
|  | { | ||||||
|  |     return | ||||||
|  |         fileName.size() >= drvExtension.size() && | ||||||
|  |         string(fileName, fileName.size() - drvExtension.size()) == drvExtension; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -5,23 +5,11 @@ | ||||||
| #include "store.hh" | #include "store.hh" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /* Abstract syntax of store expressions. */ | /* Extension of derivations in the Nix store. */ | ||||||
|  | const string drvExtension = ".drv"; | ||||||
| 
 | 
 | ||||||
| struct ClosureElem |  | ||||||
| { |  | ||||||
|     PathSet refs; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| typedef map<Path, ClosureElem> ClosureElems; |  | ||||||
| 
 |  | ||||||
| /*
 |  | ||||||
| struct Closure |  | ||||||
| { |  | ||||||
|     PathSet roots; |  | ||||||
|     ClosureElems elems; |  | ||||||
| }; |  | ||||||
| */ |  | ||||||
| 
 | 
 | ||||||
|  | /* Abstract syntax of derivations. */ | ||||||
| 
 | 
 | ||||||
| struct DerivationOutput | struct DerivationOutput | ||||||
| { | { | ||||||
|  | @ -57,14 +45,18 @@ struct Derivation | ||||||
| /* Hash an aterm. */ | /* Hash an aterm. */ | ||||||
| Hash hashTerm(ATerm t); | Hash hashTerm(ATerm t); | ||||||
| 
 | 
 | ||||||
| /* Write an aterm to the Nix store directory, and return its path. */ | /* Write a derivation to the Nix store, and return its path. */ | ||||||
| Path writeTerm(ATerm t, const string & suffix); | Path writeDerivation(const Derivation & drv, const string & name); | ||||||
| 
 | 
 | ||||||
| /* Parse a store expression. */ | /* Parse a derivation. */ | ||||||
| Derivation parseDerivation(ATerm t); | Derivation parseDerivation(ATerm t); | ||||||
| 
 | 
 | ||||||
| /* Parse a store expression. */ | /* Parse a derivation. */ | ||||||
| ATerm unparseDerivation(const Derivation & drv); | ATerm unparseDerivation(const Derivation & drv); | ||||||
| 
 | 
 | ||||||
|  | /* Check whether a file name ends with the extensions for
 | ||||||
|  |    derivations. */ | ||||||
|  | bool isDerivation(const string & fileName); | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| #endif /* !__STOREEXPR_H */ | #endif /* !__STOREEXPR_H */ | ||||||
|  |  | ||||||
|  | @ -205,7 +205,7 @@ void createUserEnv(EvalState & state, const DrvInfos & drvs, | ||||||
| 
 | 
 | ||||||
|     /* Also write a copy of the list of inputs to the store; we need
 |     /* Also write a copy of the list of inputs to the store; we need
 | ||||||
|        it for future modifications of the environment. */ |        it for future modifications of the environment. */ | ||||||
|     Path inputsFile = writeTerm(inputs2, "env-inputs"); |     Path inputsFile = addTextToStore("env-inputs", atPrint(inputs2)); | ||||||
| 
 | 
 | ||||||
|     Expr topLevel = makeCall(envBuilder, makeAttrs(ATmakeList3( |     Expr topLevel = makeCall(envBuilder, makeAttrs(ATmakeList3( | ||||||
|         makeBind(toATerm("system"), |         makeBind(toATerm("system"), | ||||||
|  |  | ||||||
|  | @ -4,14 +4,12 @@ nix-store [OPTIONS...] [ARGUMENTS...] | ||||||
| 
 | 
 | ||||||
| Operations: | Operations: | ||||||
| 
 | 
 | ||||||
|   --realise / -r: realise a Nix expression |   --build / -b: build a Nix derivation | ||||||
|   --delete / -d: delete paths from the Nix store |  | ||||||
|   --add / -A: copy a path to the Nix store |   --add / -A: copy a path to the Nix store | ||||||
|   --query / -q: query information |   --query / -q: query information | ||||||
| 
 | 
 | ||||||
|   --successor: register a successor expression (dangerous!) |  | ||||||
|   --substitute: register a substitute expression (dangerous!) |   --substitute: register a substitute expression (dangerous!) | ||||||
|   --clear-substitute: clear all substitutes |   --clear-substitutes: clear all substitutes | ||||||
|   --validpath: register path validity (dangerous!) |   --validpath: register path validity (dangerous!) | ||||||
|   --isvalid: check path validity |   --isvalid: check path validity | ||||||
| 
 | 
 | ||||||
|  | @ -26,9 +24,10 @@ Operations: | ||||||
| 
 | 
 | ||||||
| Query flags: | Query flags: | ||||||
| 
 | 
 | ||||||
|   --list / -l: query the output paths (roots) of a Nix expression (default) |   --outputs: query the output paths of a Nix derivation (default) | ||||||
|   --requisites / -R: print all paths necessary to realise expression |   --requisites / -R: print all paths necessary to realise a path | ||||||
|   --predecessors: print predecessors of a Nix expression |   --references: print all paths referenced by the given path | ||||||
|  |   --referers: print all paths refering to the given path | ||||||
|   --graph: print a dot graph rooted at given ids |   --graph: print a dot graph rooted at given ids | ||||||
| 
 | 
 | ||||||
| Options: | Options: | ||||||
|  |  | ||||||
|  | @ -18,6 +18,15 @@ void printHelp() | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | static Path findOutput(const Derivation & drv, string id) | ||||||
|  | { | ||||||
|  |     for (DerivationOutputs::const_iterator i = drv.outputs.begin(); | ||||||
|  |          i != drv.outputs.end(); ++i) | ||||||
|  |         if (i->first == id) return i->second.path; | ||||||
|  |     throw Error(format("derivation has no output `%1%'") % id); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| /* Build the given derivations. */ | /* Build the given derivations. */ | ||||||
| static void opBuild(Strings opFlags, Strings opArgs) | static void opBuild(Strings opFlags, Strings opArgs) | ||||||
| { | { | ||||||
|  | @ -25,7 +34,11 @@ static void opBuild(Strings opFlags, Strings opArgs) | ||||||
| 
 | 
 | ||||||
|     for (Strings::iterator i = opArgs.begin(); |     for (Strings::iterator i = opArgs.begin(); | ||||||
|          i != opArgs.end(); i++) |          i != opArgs.end(); i++) | ||||||
|  |     { | ||||||
|         buildDerivation(*i); |         buildDerivation(*i); | ||||||
|  |         Derivation drv = derivationFromPath(*i); | ||||||
|  |         cout << format("%1%\n") % findOutput(drv, "out"); | ||||||
|  |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -40,70 +53,59 @@ static void opAdd(Strings opFlags, Strings opArgs) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| #if 0 | static Path maybeUseOutput(const Path & storePath, bool useOutput) | ||||||
| Path maybeNormalise(const Path & ne, bool normalise, bool realise) |  | ||||||
| { | { | ||||||
|     if (realise) { |     if (useOutput && isDerivation(storePath)) { | ||||||
|         Path ne2 = realiseStoreExpr(ne); |         Derivation drv = derivationFromPath(storePath); | ||||||
|         return normalise ? ne2 : ne; |         return findOutput(drv, "out"); | ||||||
|     } else |     } | ||||||
|         return normalise ? normaliseStoreExpr(ne) : ne; |     else return storePath; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /* Perform various sorts of queries. */ | /* Perform various sorts of queries. */ | ||||||
| static void opQuery(Strings opFlags, Strings opArgs) | static void opQuery(Strings opFlags, Strings opArgs) | ||||||
| { | { | ||||||
|     enum { qList, qRequisites, qPredecessors, qGraph  |     enum { qOutputs, qRequisites, qPredecessors, qGraph } query = qOutputs; | ||||||
|     } query = qList; |     bool useOutput = false; | ||||||
|     bool normalise = false; |     bool includeOutputs = false; | ||||||
|     bool realise = false; |  | ||||||
|     bool includeExprs = true; |  | ||||||
|     bool includeSuccessors = false; |  | ||||||
| 
 | 
 | ||||||
|     for (Strings::iterator i = opFlags.begin(); |     for (Strings::iterator i = opFlags.begin(); | ||||||
|          i != opFlags.end(); i++) |          i != opFlags.end(); i++) | ||||||
|         if (*i == "--list" || *i == "-l") query = qList; |         if (*i == "--outputs") query = qOutputs; | ||||||
|         else if (*i == "--requisites" || *i == "-R") query = qRequisites; |         else if (*i == "--requisites" || *i == "-R") query = qRequisites; | ||||||
|         else if (*i == "--predecessors") query = qPredecessors; |  | ||||||
|         else if (*i == "--graph") query = qGraph; |         else if (*i == "--graph") query = qGraph; | ||||||
|         else if (*i == "--normalise" || *i == "-n") normalise = true; |         else if (*i == "--use-output" || *i == "-u") useOutput = true; | ||||||
|         else if (*i == "--force-realise" || *i == "-f") realise = true; |         else if (*i == "--include-outputs") includeOutputs = true; | ||||||
|         else if (*i == "--exclude-exprs") includeExprs = false; |  | ||||||
|         else if (*i == "--include-successors") includeSuccessors = true; |  | ||||||
|         else throw UsageError(format("unknown flag `%1%'") % *i); |         else throw UsageError(format("unknown flag `%1%'") % *i); | ||||||
| 
 | 
 | ||||||
|     switch (query) { |     switch (query) { | ||||||
|          |          | ||||||
|         case qList: { |         case qOutputs: { | ||||||
|             for (Strings::iterator i = opArgs.begin(); |             for (Strings::iterator i = opArgs.begin(); | ||||||
|                  i != opArgs.end(); i++) |                  i != opArgs.end(); i++) | ||||||
|             { |             { | ||||||
|                 StringSet paths = storeExprRoots( |                 Derivation drv = derivationFromPath(*i); | ||||||
|                     maybeNormalise(*i, normalise, realise)); |                 cout << format("%1%\n") % findOutput(drv, "out"); | ||||||
|                 for (StringSet::iterator j = paths.begin();  |  | ||||||
|                      j != paths.end(); j++) |  | ||||||
|                     cout << format("%s\n") % *j; |  | ||||||
|             } |             } | ||||||
|             break; |             break; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         case qRequisites: { |         case qRequisites: { | ||||||
|             StringSet paths; |             PathSet paths; | ||||||
|             for (Strings::iterator i = opArgs.begin(); |             for (Strings::iterator i = opArgs.begin(); | ||||||
|                  i != opArgs.end(); i++) |                  i != opArgs.end(); i++) | ||||||
|             { |             { | ||||||
|                 StringSet paths2 = storeExprRequisites( |                 Path path = maybeUseOutput(*i, useOutput); | ||||||
|                     maybeNormalise(*i, normalise, realise), |                 storePathRequisites(path, includeOutputs, paths); | ||||||
|                     includeExprs, includeSuccessors); |  | ||||||
|                 paths.insert(paths2.begin(), paths2.end()); |  | ||||||
|             } |             } | ||||||
|             for (StringSet::iterator i = paths.begin();  |             for (PathSet::iterator i = paths.begin();  | ||||||
|                  i != paths.end(); i++) |                  i != paths.end(); i++) | ||||||
|                 cout << format("%s\n") % *i; |                 cout << format("%s\n") % *i; | ||||||
|             break; |             break; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  | #if 0            
 | ||||||
|         case qPredecessors: { |         case qPredecessors: { | ||||||
|             for (Strings::iterator i = opArgs.begin(); |             for (Strings::iterator i = opArgs.begin(); | ||||||
|                  i != opArgs.end(); i++) |                  i != opArgs.end(); i++) | ||||||
|  | @ -124,12 +126,12 @@ static void opQuery(Strings opFlags, Strings opArgs) | ||||||
| 	    printDotGraph(roots); | 	    printDotGraph(roots); | ||||||
|             break; |             break; | ||||||
|         } |         } | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|         default: |         default: | ||||||
|             abort(); |             abort(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| #endif |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| static void opSubstitute(Strings opFlags, Strings opArgs) | static void opSubstitute(Strings opFlags, Strings opArgs) | ||||||
|  | @ -340,8 +342,8 @@ void run(Strings args) | ||||||
|             op = opBuild; |             op = opBuild; | ||||||
|         else if (arg == "--add" || arg == "-A") |         else if (arg == "--add" || arg == "-A") | ||||||
|             op = opAdd; |             op = opAdd; | ||||||
|         //        else if (arg == "--query" || arg == "-q")
 |         else if (arg == "--query" || arg == "-q") | ||||||
|         //            op = opQuery;
 |             op = opQuery; | ||||||
|         else if (arg == "--substitute") |         else if (arg == "--substitute") | ||||||
|             op = opSubstitute; |             op = opSubstitute; | ||||||
|         else if (arg == "--clear-substitutes") |         else if (arg == "--clear-substitutes") | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ storeExpr=$($TOP/src/nix-instantiate/nix-instantiate dependencies.nix) | ||||||
| 
 | 
 | ||||||
| echo "store expr is $storeExpr" | echo "store expr is $storeExpr" | ||||||
| 
 | 
 | ||||||
| outPath=$($TOP/src/nix-store/nix-store -qnfvvvvv "$storeExpr") | outPath=$($TOP/src/nix-store/nix-store -bvv "$storeExpr") | ||||||
| 
 | 
 | ||||||
| echo "output path is $outPath" | echo "output path is $outPath" | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ storeExpr=$($TOP/src/nix-instantiate/nix-instantiate simple.nix) | ||||||
| 
 | 
 | ||||||
| echo "store expr is $storeExpr" | echo "store expr is $storeExpr" | ||||||
| 
 | 
 | ||||||
| outPath=$($TOP/src/nix-store/nix-store -qnfvvvvv "$storeExpr") | outPath=$($TOP/src/nix-store/nix-store -bvv "$storeExpr") | ||||||
| 
 | 
 | ||||||
| echo "output path is $outPath" | echo "output path is $outPath" | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue