From c64524729fbd21cf5ad430acad82bf399b6f723d Mon Sep 17 00:00:00 2001 From: Marc Abramowitz Date: Mon, 13 Oct 2014 10:37:00 -0700 Subject: Cache eggs required for building in .eggs dir This makes it so that these eggs don't prevent `install_requires` from installing these packages. Fixes ticket #80; workaround for ticket #209 --HG-- branch : put_setup_requires_egg_in_cache_dir_4 --- setuptools/dist.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'setuptools/dist.py') diff --git a/setuptools/dist.py b/setuptools/dist.py index 8b36f67c..2d9da8c4 100644 --- a/setuptools/dist.py +++ b/setuptools/dist.py @@ -14,7 +14,8 @@ from distutils.errors import (DistutilsOptionError, DistutilsPlatformError, DistutilsSetupError) from setuptools.depends import Require -from setuptools.compat import basestring, PY2 +from setuptools.compat import basestring, PY2, unicode +from setuptools import win32 import pkg_resources def _get_unpatched(cls): @@ -305,6 +306,21 @@ class Distribution(_Distribution): else: self.convert_2to3_doctests = [] + def get_egg_cache_dir(self): + egg_cache_dir = os.path.join(os.curdir, '.eggs') + if not os.path.exists(egg_cache_dir): + os.mkdir(egg_cache_dir) + win32.hide_file(unicode(egg_cache_dir)) + readme_txt_filename = os.path.join(egg_cache_dir, 'README.txt') + with open(readme_txt_filename, 'w') as f: + f.write('This directory contains eggs that were downloaded ' + 'by setuptools to build, test, and run plug-ins.\n\n') + f.write('This directory caches those eggs to prevent ' + 'repeated downloads.\n\n') + f.write('However, it is safe to delete this directory.\n\n') + + return egg_cache_dir + def fetch_build_egg(self, req): """Fetch an egg needed for building""" @@ -328,8 +344,9 @@ class Distribution(_Distribution): if 'find_links' in opts: links = opts['find_links'][1].split() + links opts['find_links'] = ('setup', links) + install_dir = self.get_egg_cache_dir() cmd = easy_install( - dist, args=["x"], install_dir=os.curdir, exclude_scripts=True, + dist, args=["x"], install_dir=install_dir, exclude_scripts=True, always_copy=False, build_directory=None, editable=False, upgrade=False, multi_version=True, no_report=True, user=False ) -- cgit v1.2.3 From 5c68f3db41766e24d5fe6f7adbfd713bc83786a3 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 19 Oct 2014 12:52:08 +0100 Subject: The name win32 is a misnomer. Use 'windows_support' instead. --- setuptools/dist.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'setuptools/dist.py') diff --git a/setuptools/dist.py b/setuptools/dist.py index 2d9da8c4..4f302232 100644 --- a/setuptools/dist.py +++ b/setuptools/dist.py @@ -15,7 +15,7 @@ from distutils.errors import (DistutilsOptionError, DistutilsPlatformError, from setuptools.depends import Require from setuptools.compat import basestring, PY2, unicode -from setuptools import win32 +from setuptools import windows_support import pkg_resources def _get_unpatched(cls): @@ -310,7 +310,7 @@ class Distribution(_Distribution): egg_cache_dir = os.path.join(os.curdir, '.eggs') if not os.path.exists(egg_cache_dir): os.mkdir(egg_cache_dir) - win32.hide_file(unicode(egg_cache_dir)) + windows_support.hide_file(unicode(egg_cache_dir)) readme_txt_filename = os.path.join(egg_cache_dir, 'README.txt') with open(readme_txt_filename, 'w') as f: f.write('This directory contains eggs that were downloaded ' -- cgit v1.2.3 From ae6eb3131a935824d1aca43c6ac5ac6bb4907078 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 19 Oct 2014 13:02:37 +0100 Subject: Declare argtypes and restype on SetFileAttributesW so that it will cast Python 2 bytestrings to Unicode automatically. --- setuptools/dist.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'setuptools/dist.py') diff --git a/setuptools/dist.py b/setuptools/dist.py index 4f302232..6b9d350e 100644 --- a/setuptools/dist.py +++ b/setuptools/dist.py @@ -14,7 +14,7 @@ from distutils.errors import (DistutilsOptionError, DistutilsPlatformError, DistutilsSetupError) from setuptools.depends import Require -from setuptools.compat import basestring, PY2, unicode +from setuptools.compat import basestring, PY2 from setuptools import windows_support import pkg_resources @@ -310,7 +310,7 @@ class Distribution(_Distribution): egg_cache_dir = os.path.join(os.curdir, '.eggs') if not os.path.exists(egg_cache_dir): os.mkdir(egg_cache_dir) - windows_support.hide_file(unicode(egg_cache_dir)) + windows_support.hide_file(egg_cache_dir) readme_txt_filename = os.path.join(egg_cache_dir, 'README.txt') with open(readme_txt_filename, 'w') as f: f.write('This directory contains eggs that were downloaded ' -- cgit v1.2.3