From 55e11bc0d3e3c440503ee71d21c3ef5e34431cbb Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 15 Jan 2004 14:43:00 +0000 Subject: [PATCH] * In `nix-env --query --status', determine the `I' bit by looking at the output path of a derivation, not the path of its store expression. This ensures that changes that affect the path of the store expression but not the output path, do not affect the `installed' state of a derivation. --- src/nix-env/main.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/nix-env/main.cc b/src/nix-env/main.cc index f0877b058..5c27a89fc 100644 --- a/src/nix-env/main.cc +++ b/src/nix-env/main.cc @@ -600,9 +600,15 @@ static void opQuery(Globals & globals, DrvInfos installed; queryInstalled(globals.state, installed, globals.linkPath); + PathSet installedPaths; /* output paths of installed drvs */ + for (DrvInfos::iterator i = installed.begin(); + i != installed.end(); ++i) + installedPaths.insert(i->second.outPath); + for (DrvInfos::iterator i = drvs.begin(); i != drvs.end(); ++i) { cout << format("%1%%2% %3%\n") - % (installed.find(i->first) != installed.end() ? 'I' : '-') + % (installedPaths.find(i->second.outPath) + != installedPaths.end() ? 'I' : '-') % (isValidPath(i->second.outPath) ? 'P' : '-') % i->second.name; }