From 24286e15c9822833c39d268e521522b9933db28e Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 28 Jun 2004 13:37:05 +0000 Subject: * `nix-env -u' now allows a specific version to be specified when upgrading. This fixes a bug reported by Martin: $ nix-env -i foo-1.0 $ nix-env -u foo-1.0 upgrading foo-1.0 to foo-1.1 --- src/nix-env/main.cc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src/nix-env/main.cc') diff --git a/src/nix-env/main.cc b/src/nix-env/main.cc index c57f03cce007..1f16e72ae0f1 100644 --- a/src/nix-env/main.cc +++ b/src/nix-env/main.cc @@ -310,14 +310,16 @@ static void upgradeDerivations(EvalState & state, i != installedDrvs.end(); ++i) { DrvName drvName(i->second.name); + DrvName selector; /* Do we want to upgrade this derivation? */ bool upgrade = false; for (DrvNames::iterator j = selectors.begin(); j != selectors.end(); ++j) { - if (j->matches(drvName)) { + if (j->name == "*" || j->name == drvName.name) { j->hits++; + selector = *j; upgrade = true; break; } @@ -344,9 +346,10 @@ static void upgradeDerivations(EvalState & state, upgradeType == utLeq && d <= 0 || upgradeType == utAlways) { - if (bestDrv == availDrvs.end() || - compareVersions( - bestName.version, newName.version) < 0) + if (selector.matches(newName) && + (bestDrv == availDrvs.end() || + compareVersions( + bestName.version, newName.version) < 0)) { bestDrv = j; bestName = newName; -- cgit 1.4.1