[py-svn] py-trunk commit 62ca2e5e16b5: ship distribute_setup.py version 0.6.13
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Thu Jul 8 13:40:56 CEST 2010
# HG changeset patch -- Bitbucket.org
# Project py-trunk
# URL http://bitbucket.org/hpk42/py-trunk/overview
# User holger krekel <holger at merlinux.eu>
# Date 1278589219 -7200
# Node ID 62ca2e5e16b564304dfd1ea4bacb8c295dd1148e
# Parent d67c0d87eefe23990caf25aefea8da7d87523d3c
ship distribute_setup.py version 0.6.13
--- a/distribute_setup.py
+++ b/distribute_setup.py
@@ -46,7 +46,7 @@ except ImportError:
args = [quote(arg) for arg in args]
return os.spawnl(os.P_WAIT, sys.executable, *args) == 0
-DEFAULT_VERSION = "0.6.10"
+DEFAULT_VERSION = "0.6.13"
DEFAULT_URL = "http://pypi.python.org/packages/source/d/distribute/"
SETUPTOOLS_FAKED_VERSION = "0.6c11"
@@ -203,6 +203,29 @@ def download_setuptools(version=DEFAULT_
dst.close()
return os.path.realpath(saveto)
+def _no_sandbox(function):
+ def __no_sandbox(*args, **kw):
+ try:
+ from setuptools.sandbox import DirectorySandbox
+ if not hasattr(DirectorySandbox, '_old'):
+ def violation(*args):
+ pass
+ DirectorySandbox._old = DirectorySandbox._violation
+ DirectorySandbox._violation = violation
+ patched = True
+ else:
+ patched = False
+ except ImportError:
+ patched = False
+
+ try:
+ return function(*args, **kw)
+ finally:
+ if patched:
+ DirectorySandbox._violation = DirectorySandbox._old
+ del DirectorySandbox._old
+
+ return __no_sandbox
def _patch_file(path, content):
"""Will backup the file then patch it"""
@@ -220,32 +243,11 @@ def _patch_file(path, content):
f.close()
return True
+_patch_file = _no_sandbox(_patch_file)
def _same_content(path, content):
return open(path).read() == content
-def _no_sandbox(function):
- def __no_sandbox(*args, **kw):
- try:
- from setuptools.sandbox import DirectorySandbox
- def violation(*args):
- pass
- DirectorySandbox._old = DirectorySandbox._violation
- DirectorySandbox._violation = violation
- patched = True
- except ImportError:
- patched = False
-
- try:
- return function(*args, **kw)
- finally:
- if patched:
- DirectorySandbox._violation = DirectorySandbox._old
- del DirectorySandbox._old
-
- return __no_sandbox
-
- at _no_sandbox
def _rename_path(path):
new_name = path + '.OLD.%s' % time.time()
log.warn('Renaming %s into %s', path, new_name)
@@ -285,13 +287,13 @@ def _remove_flat_installation(placeholde
'Setuptools distribution', element)
return True
+_remove_flat_installation = _no_sandbox(_remove_flat_installation)
def _after_install(dist):
log.warn('After install bootstrap.')
placeholder = dist.get_command_obj('install').install_purelib
_create_fake_setuptools_pkg_info(placeholder)
- at _no_sandbox
def _create_fake_setuptools_pkg_info(placeholder):
if not placeholder or not os.path.exists(placeholder):
log.warn('Could not find the install location')
@@ -319,6 +321,8 @@ def _create_fake_setuptools_pkg_info(pla
finally:
f.close()
+_create_fake_setuptools_pkg_info = _no_sandbox(_create_fake_setuptools_pkg_info)
+
def _patch_egg_dir(path):
# let's check if it's already patched
pkg_info = os.path.join(path, 'EGG-INFO', 'PKG-INFO')
@@ -337,6 +341,7 @@ def _patch_egg_dir(path):
f.close()
return True
+_patch_egg_dir = _no_sandbox(_patch_egg_dir)
def _before_install():
log.warn('Before install bootstrap.')
@@ -356,8 +361,8 @@ def _under_prefix(location):
if len(args) > index:
top_dir = args[index+1]
return location.startswith(top_dir)
- elif option == '--user' and USER_SITE is not None:
- return location.startswith(USER_SITE)
+ if arg == '--user' and USER_SITE is not None:
+ return location.startswith(USER_SITE)
return True
@@ -416,6 +421,9 @@ def _fake_setuptools():
def _relaunch():
log.warn('Relaunching...')
# we have to relaunch the process
+ # pip marker to avoid a relaunch bug
+ if sys.argv[:3] == ['-c', 'install', '--single-version-externally-managed']:
+ sys.argv[0] = 'setup.py'
args = [sys.executable] + sys.argv
sys.exit(subprocess.call(args))
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -73,6 +73,7 @@ Bug fixes / Maintenance
rather than having dist-related code in the generic py.test
distribution
- fix homedir detection on Windows
+- ship distribute_setup.py version 0.6.13
Changes between 1.3.0 and 1.3.1
==================================================
More information about the pytest-commit
mailing list