diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2007-04-26 14:20:31 +0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2007-04-26 14:20:31 +0000 |
commit | b7f0f65c1934851b038826b2ab78c0378a36143a (patch) | |
tree | 3712f11db4838e8ba0ce898d71244982b60b028d /src | |
parent | 5dc05b76ab88a332521a777d6a42974b3f432f02 (diff) |
* nix-env -q now has a flag --prebuilt-only (-b<) that causes nix-env
to show only those derivations whose output is already in the Nix
store or that can be substituted (i.e., downloaded from somewhere).
In other words, it shows the packages that can be installed “quickly”,
i.e., don’t need to be built from source.
Diffstat (limited to 'src')
-rw-r--r-- | src/nix-env/help.txt | 14 | ||||
-rw-r--r-- | src/nix-env/nix-env.cc | 8 |
2 files changed, 16 insertions, 6 deletions
diff --git a/src/nix-env/help.txt b/src/nix-env/help.txt index 534d16ad3..16e47a73e 100644 --- a/src/nix-env/help.txt +++ b/src/nix-env/help.txt @@ -45,7 +45,12 @@ Upgrade flags: --eq: "upgrade" if the current version is equal --always: upgrade regardless of current version -Query types: +Query sources: + + --installed: use installed derivations (default) + --available / -a: use derivations available in Nix expression + +Query flags: --status / -s: print installed/present status --no-name: hide derivation names @@ -55,11 +60,8 @@ Query types: --compare-versions / -c: compare version to available or installed --drv-path: print path of derivation --out-path: print path of derivation output - -Query sources: - - --installed: use installed derivations (default) - --available / -a: use derivations available in Nix expression + --prebuilt-only: only show derivations whose prebuilt binaries are + available on this machine or are downloadable Options: diff --git a/src/nix-env/nix-env.cc b/src/nix-env/nix-env.cc index 5dab2e60b..77b788171 100644 --- a/src/nix-env/nix-env.cc +++ b/src/nix-env/nix-env.cc @@ -831,6 +831,7 @@ static void opQuery(Globals & globals, bool printDrvPath = false; bool printOutPath = false; bool printDescription = false; + bool prebuiltOnly = false; bool compareVersions = false; bool xmlOutput = false; @@ -849,6 +850,7 @@ static void opQuery(Globals & globals, else if (*i == "--out-path") printOutPath = true; else if (*i == "--installed") source = sInstalled; else if (*i == "--available" || *i == "-a") source = sAvailable; + else if (*i == "--prebuilt-only" || *i == "-b") prebuiltOnly = true; else if (*i == "--xml") xmlOutput = true; else throw UsageError(format("unknown flag `%1%'") % *i); @@ -914,6 +916,12 @@ static void opQuery(Globals & globals, /* For XML output. */ XMLAttrs attrs; + + if (prebuiltOnly) { + if (!store->isValidPath(i->queryOutPath(globals.state)) && + !store->hasSubstitutes(i->queryOutPath(globals.state))) + continue; + } if (printStatus) { bool hasSubs = store->hasSubstitutes(i->queryOutPath(globals.state)); |