Skip to content
Snippets Groups Projects
Commit 5b182719 authored by Tiago de Freitas Pereira's avatar Tiago de Freitas Pereira
Browse files

Fixed bootstrap

parent 53243cdb
No related branches found
No related tags found
No related merge requests found
include LICENSE README.rst bootstrap.py buildout.cfg requirements.txt version.txt include LICENSE README.rst bootstrap-buildout.py buildout.cfg requirements.txt version.txt
recursive-include doc conf.py *.rst recursive-include doc conf.py *.rst
recursive-include bob *.cc *.cpp *.h *.hdf5 recursive-include bob/learn/linear *.cpp *.h
recursive-include bob/learn/linear/data *.*
...@@ -56,6 +56,11 @@ parser.add_option("-c", "--config-file", ...@@ -56,6 +56,11 @@ parser.add_option("-c", "--config-file",
"file to be used.")) "file to be used."))
parser.add_option("-f", "--find-links", parser.add_option("-f", "--find-links",
help=("Specify a URL to search for buildout releases")) help=("Specify a URL to search for buildout releases"))
parser.add_option("--allow-site-packages",
action="store_true", default=False,
help=("Let bootstrap.py use existing site packages"))
parser.add_option("--setuptools-version",
help="use a specific setuptools version")
options, args = parser.parse_args() options, args = parser.parse_args()
...@@ -63,45 +68,42 @@ options, args = parser.parse_args() ...@@ -63,45 +68,42 @@ options, args = parser.parse_args()
###################################################################### ######################################################################
# load/install setuptools # load/install setuptools
to_reload = False
try: try:
import pkg_resources if options.allow_site_packages:
import setuptools import setuptools
import pkg_resources
from urllib.request import urlopen
except ImportError: except ImportError:
ez = {} from urllib2 import urlopen
try:
from urllib.request import urlopen
except ImportError:
from urllib2 import urlopen
# XXX use a more permanent ez_setup.py URL when available.
exec(urlopen('https://bitbucket.org/pypa/setuptools/raw/0.7.2/ez_setup.py'
).read(), ez)
setup_args = dict(to_dir=tmpeggs, download_delay=0)
ez['use_setuptools'](**setup_args)
if to_reload:
reload(pkg_resources)
import pkg_resources
# This does not (always?) update the default working set. We will
# do it.
for path in sys.path:
if path not in pkg_resources.working_set.entries:
pkg_resources.working_set.add_entry(path)
###################################################################### ez = {}
# Try to best guess the version of buildout given setuptools exec(urlopen('https://bootstrap.pypa.io/ez_setup.py').read(), ez)
if options.version is None:
if not options.allow_site_packages:
try: # ez_setup imports site, which adds site packages
from distutils.version import LooseVersion # this will remove them from the path to ensure that incompatible versions
package = pkg_resources.require('setuptools')[0] # of setuptools are not in the path
v = LooseVersion(package.version) import site
if v < LooseVersion('0.7'): # inside a virtualenv, there is no 'getsitepackages'.
options.version = '2.1.1' # We can't remove these reliably
except: if hasattr(site, 'getsitepackages'):
pass for sitepackage_path in site.getsitepackages():
sys.path[:] = [x for x in sys.path if sitepackage_path not in x]
setup_args = dict(to_dir=tmpeggs, download_delay=0)
if options.setuptools_version is not None:
setup_args['version'] = options.setuptools_version
ez['use_setuptools'](**setup_args)
import setuptools
import pkg_resources
# This does not (always?) update the default working set. We will
# do it.
for path in sys.path:
if path not in pkg_resources.working_set.entries:
pkg_resources.working_set.add_entry(path)
###################################################################### ######################################################################
# Install buildout # Install buildout
...@@ -132,10 +134,15 @@ if version is None and not options.accept_buildout_test_releases: ...@@ -132,10 +134,15 @@ if version is None and not options.accept_buildout_test_releases:
_final_parts = '*final-', '*final' _final_parts = '*final-', '*final'
def _final_version(parsed_version): def _final_version(parsed_version):
for part in parsed_version: try:
if (part[:1] == '*') and (part not in _final_parts): return not parsed_version.is_prerelease
return False except AttributeError:
return True # Older setuptools
for part in parsed_version:
if (part[:1] == '*') and (part not in _final_parts):
return False
return True
index = setuptools.package_index.PackageIndex( index = setuptools.package_index.PackageIndex(
search_path=[setuptools_path]) search_path=[setuptools_path])
if find_links: if find_links:
...@@ -162,8 +169,7 @@ cmd.append(requirement) ...@@ -162,8 +169,7 @@ cmd.append(requirement)
import subprocess import subprocess
if subprocess.call(cmd, env=dict(os.environ, PYTHONPATH=setuptools_path)) != 0: if subprocess.call(cmd, env=dict(os.environ, PYTHONPATH=setuptools_path)) != 0:
raise Exception( raise Exception(
"Failed to execute command:\n%s", "Failed to execute command:\n%s" % repr(cmd)[1:-1])
repr(cmd)[1:-1])
###################################################################### ######################################################################
# Import and run buildout # Import and run buildout
...@@ -181,4 +187,3 @@ if options.config_file is not None: ...@@ -181,4 +187,3 @@ if options.config_file is not None:
zc.buildout.buildout.main(args) zc.buildout.buildout.main(args)
shutil.rmtree(tmpeggs) shutil.rmtree(tmpeggs)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment