aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nix-env/help.txt3
-rw-r--r--src/nix-env/main.cc4
2 files changed, 5 insertions, 2 deletions
diff --git a/src/nix-env/help.txt b/src/nix-env/help.txt
index d20c366cb..e83194774 100644
--- a/src/nix-env/help.txt
+++ b/src/nix-env/help.txt
@@ -31,7 +31,8 @@ Install / upgrade / uninstall flags:
Upgrade flags:
--lt: upgrade if the current version is older (default)
- --leq: upgrade if the current version is older or current
+ --leq: upgrade if the current version is older or equal
+ --eq: "upgrade" if the current version is equal
--always: upgrade regardless of current version
Query types:
diff --git a/src/nix-env/main.cc b/src/nix-env/main.cc
index 0198aed57..400bb0d87 100644
--- a/src/nix-env/main.cc
+++ b/src/nix-env/main.cc
@@ -476,7 +476,7 @@ static void opInstall(Globals & globals,
}
-typedef enum { utLt, utLeq, utAlways } UpgradeType;
+typedef enum { utLt, utLeq, utEq, utAlways } UpgradeType;
static void upgradeDerivations(Globals & globals,
@@ -520,6 +520,7 @@ static void upgradeDerivations(Globals & globals,
int d = compareVersions(drvName.version, newName.version);
if (upgradeType == utLt && d < 0 ||
upgradeType == utLeq && d <= 0 ||
+ upgradeType == utEq && d == 0 ||
upgradeType == utAlways)
{
if ((bestElem == availElems.end() ||
@@ -562,6 +563,7 @@ static void opUpgrade(Globals & globals,
i != opFlags.end(); ++i)
if (*i == "--lt") upgradeType = utLt;
else if (*i == "--leq") upgradeType = utLeq;
+ else if (*i == "--eq") upgradeType = utEq;
else if (*i == "--always") upgradeType = utAlways;
else throw UsageError(format("unknown flag `%1%'") % *i);