summaryrefslogtreecommitdiff
path: root/setuptools/dist.py
diff options
context:
space:
mode:
authorMarc Abramowitz <marc@marc-abramowitz.com>2014-10-13 10:37:00 -0700
committerMarc Abramowitz <marc@marc-abramowitz.com>2014-10-13 10:37:00 -0700
commitc64524729fbd21cf5ad430acad82bf399b6f723d (patch)
tree15189bcc9723e3722640c92511b1aa759853ab10 /setuptools/dist.py
parent6281ff54a4276feae16ce808e9afd29c2691096a (diff)
downloadpython-setuptools-git-c64524729fbd21cf5ad430acad82bf399b6f723d.tar.gz
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
Diffstat (limited to 'setuptools/dist.py')
-rw-r--r--setuptools/dist.py21
1 files changed, 19 insertions, 2 deletions
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
)