From: Zooko O'Whielacronx <zooko@zooko.com>
Date: Wed, 17 Nov 2010 08:08:28 +0000 (-0800)
Subject: bundled zetuptoolz: choose a binary dist in preference to a source dist, even if... 
X-Git-Url: https://git.rkrishnan.org/%5B/frontends/CLI.txt?a=commitdiff_plain;h=a44330dfeef23757f4068936c6c1614862ab7a0b;p=tahoe-lafs%2Ftahoe-lafs.git

bundled zetuptoolz: choose a binary dist in preference to a source dist, even if the latter is newer, as long as the former satisfies the requirement
patch by David-Sarah, tiny bugfix to patch by Zooko
ref: #1233
---

diff --git a/setuptools-0.6c16dev2.egg/setuptools/package_index.py b/setuptools-0.6c16dev2.egg/setuptools/package_index.py
index 32498d0f..1cfdccc5 100644
--- a/setuptools-0.6c16dev2.egg/setuptools/package_index.py
+++ b/setuptools-0.6c16dev2.egg/setuptools/package_index.py
@@ -436,18 +436,18 @@ class PackageIndex(Environment):
         def find(env, req):
             # Find a matching distribution; may be called more than once
 
-            for dist in env[req.key]:
-
-                if dist.precedence==DEVELOP_DIST and not develop_ok:
-                    if dist not in skipped:
-                        self.warn("Skipping development or system egg: %s",dist)
-                        skipped[dist] = 1
-                    continue
-
-                if dist in req and (dist.precedence<=SOURCE_DIST or not source):
-                    return dist
-
-
+            # first try to find a platform-dependent dist
+            for allow_platform_independent in (False, True):
+                for dist in env[req.key]:
+                    if dist.precedence==DEVELOP_DIST and not develop_ok:
+                        if dist not in skipped:
+                            self.warn("Skipping development or system egg: %s",dist)
+                            skipped[dist] = 1
+                        continue
+
+                    if (dist in req and (allow_platform_independent or dist.platform is not None) and
+                        (dist.precedence<=SOURCE_DIST or not source)):
+                        return dist
 
         if force_scan:
             self.prescan()