* Set the default system filter to "*". This ensures that (for
instance) "nix-env -i wine" works on x86_64-linux, even though Wine is built on i686-linux. In the event that there are multiple matching derivations, prefer those built for the current system.
This commit is contained in:
parent
6d6200f37a
commit
315d8fbd75
1 changed files with 13 additions and 7 deletions
|
@ -247,11 +247,12 @@ static DrvInfos filterBySelector(EvalState & state, const DrvInfos & allElems,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If `newestOnly', if a selector matches multiple derivations
|
/* If `newestOnly', if a selector matches multiple derivations
|
||||||
with the same name, pick the one with the highest priority.
|
with the same name, pick the one matching the current
|
||||||
If there are multiple derivations with the same priority,
|
system. If there are still multiple derivations, pick the
|
||||||
pick the one with the highest version. If there are
|
one with the highest priority. If there are still multiple
|
||||||
multiple derivations with the same priority and name and
|
derivations, pick the one with the highest version.
|
||||||
version, then pick the first one. */
|
Finally, if there are still multiple derivations,
|
||||||
|
arbitrarily pick the first one. */
|
||||||
if (newestOnly) {
|
if (newestOnly) {
|
||||||
|
|
||||||
/* Map from package names to derivations. */
|
/* Map from package names to derivations. */
|
||||||
|
@ -266,6 +267,11 @@ static DrvInfos filterBySelector(EvalState & state, const DrvInfos & allElems,
|
||||||
Newest::iterator k = newest.find(drvName.name);
|
Newest::iterator k = newest.find(drvName.name);
|
||||||
|
|
||||||
if (k != newest.end()) {
|
if (k != newest.end()) {
|
||||||
|
d = j->first.system == k->second.first.system ? 0 :
|
||||||
|
j->first.system == thisSystem ? 1 :
|
||||||
|
k->second.first.system == thisSystem ? -1 : 0;
|
||||||
|
printMsg(lvlError, format("%1% %2% %3% %4%") % j->first.system % k->second.first.system % thisSystem % d);
|
||||||
|
if (d == 0)
|
||||||
d = comparePriorities(state, j->first, k->second.first);
|
d = comparePriorities(state, j->first, k->second.first);
|
||||||
if (d == 0)
|
if (d == 0)
|
||||||
d = compareVersions(drvName.version, DrvName(k->second.first.name).version);
|
d = compareVersions(drvName.version, DrvName(k->second.first.name).version);
|
||||||
|
@ -1230,7 +1236,7 @@ void run(Strings args)
|
||||||
|
|
||||||
globals.instSource.type = srcUnknown;
|
globals.instSource.type = srcUnknown;
|
||||||
globals.instSource.nixExprPath = getDefNixExprPath();
|
globals.instSource.nixExprPath = getDefNixExprPath();
|
||||||
globals.instSource.systemFilter = thisSystem;
|
globals.instSource.systemFilter = "*";
|
||||||
|
|
||||||
globals.dryRun = false;
|
globals.dryRun = false;
|
||||||
globals.preserveInstalled = false;
|
globals.preserveInstalled = false;
|
||||||
|
|
Loading…
Reference in a new issue