From a44330dfeef23757f4068936c6c1614862ab7a0b Mon Sep 17 00:00:00 2001
From: Zooko O'Whielacronx <zooko@zooko.com>
Date: Wed, 17 Nov 2010 00:08:28 -0800
Subject: [PATCH] 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

---
 .../setuptools/package_index.py               | 24 +++++++++----------
 1 file changed, 12 insertions(+), 12 deletions(-)

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()
-- 
2.45.2