Commit 1ca83c5e authored by Manuel Günther's avatar Manuel Günther

Updated to the new bootstrap.py; small documentation correction.

parent f81b2cea
...@@ -18,7 +18,11 @@ The script accepts buildout command-line options, so you can ...@@ -18,7 +18,11 @@ The script accepts buildout command-line options, so you can
use the -c option to specify an alternate configuration file. use the -c option to specify an alternate configuration file.
""" """
import os, shutil, sys, tempfile import os
import shutil
import sys
import tempfile
from optparse import OptionParser from optparse import OptionParser
tmpeggs = tempfile.mkdtemp() tmpeggs = tempfile.mkdtemp()
...@@ -31,8 +35,8 @@ Bootstraps a buildout-based project. ...@@ -31,8 +35,8 @@ Bootstraps a buildout-based project.
Simply run this script in a directory containing a buildout.cfg, using the Simply run this script in a directory containing a buildout.cfg, using the
Python that you want bin/buildout to use. Python that you want bin/buildout to use.
Note that by using --setup-source and --download-base to point to Note that by using --find-links to point to local resources, you can keep
local resources, you can keep this script from going over the network. this script from going over the network.
''' '''
parser = OptionParser(usage=usage) parser = OptionParser(usage=usage)
...@@ -48,23 +52,21 @@ parser.add_option("-t", "--accept-buildout-test-releases", ...@@ -48,23 +52,21 @@ parser.add_option("-t", "--accept-buildout-test-releases",
"bootstrap and buildout will get the newest releases " "bootstrap and buildout will get the newest releases "
"even if they are alphas or betas.")) "even if they are alphas or betas."))
parser.add_option("-c", "--config-file", parser.add_option("-c", "--config-file",
help=("Specify the path to the buildout configuration " help=("Specify the path to the buildout configuration "
"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"))
options, args = parser.parse_args() options, args = parser.parse_args()
###################################################################### ######################################################################
# load/install distribute # load/install setuptools
to_reload = False to_reload = False
try: try:
import pkg_resources, setuptools import pkg_resources
if not hasattr(pkg_resources, '_distribute'): import setuptools
to_reload = True
raise ImportError
except ImportError: except ImportError:
ez = {} ez = {}
...@@ -73,8 +75,10 @@ except ImportError: ...@@ -73,8 +75,10 @@ except ImportError:
except ImportError: except ImportError:
from urllib2 import urlopen from urllib2 import urlopen
exec(urlopen('http://python-distribute.org/distribute_setup.py').read(), ez) # XXX use a more permanent ez_setup.py URL when available.
setup_args = dict(to_dir=tmpeggs, download_delay=0, no_fake=True) 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) ez['use_setuptools'](**setup_args)
if to_reload: if to_reload:
...@@ -86,10 +90,23 @@ except ImportError: ...@@ -86,10 +90,23 @@ except ImportError:
if path not in pkg_resources.working_set.entries: if path not in pkg_resources.working_set.entries:
pkg_resources.working_set.add_entry(path) pkg_resources.working_set.add_entry(path)
######################################################################
# Try to best guess the version of buildout given setuptools
if options.version is None:
try:
from distutils.version import LooseVersion
package = pkg_resources.require('setuptools')[0]
v = LooseVersion(package.version)
if v < LooseVersion('0.7'):
options.version = '2.1.1'
except:
pass
###################################################################### ######################################################################
# Install buildout # Install buildout
ws = pkg_resources.working_set ws = pkg_resources.working_set
cmd = [sys.executable, '-c', cmd = [sys.executable, '-c',
'from setuptools.command.easy_install import main; main()', 'from setuptools.command.easy_install import main; main()',
...@@ -104,8 +121,8 @@ find_links = os.environ.get( ...@@ -104,8 +121,8 @@ find_links = os.environ.get(
if find_links: if find_links:
cmd.extend(['-f', find_links]) cmd.extend(['-f', find_links])
distribute_path = ws.find( setuptools_path = ws.find(
pkg_resources.Requirement.parse('distribute')).location pkg_resources.Requirement.parse('setuptools')).location
requirement = 'zc.buildout' requirement = 'zc.buildout'
version = options.version version = options.version
...@@ -113,13 +130,14 @@ if version is None and not options.accept_buildout_test_releases: ...@@ -113,13 +130,14 @@ if version is None and not options.accept_buildout_test_releases:
# Figure out the most recent final version of zc.buildout. # Figure out the most recent final version of zc.buildout.
import setuptools.package_index import setuptools.package_index
_final_parts = '*final-', '*final' _final_parts = '*final-', '*final'
def _final_version(parsed_version): def _final_version(parsed_version):
for part in parsed_version: for part in parsed_version:
if (part[:1] == '*') and (part not in _final_parts): if (part[:1] == '*') and (part not in _final_parts):
return False return False
return True return True
index = setuptools.package_index.PackageIndex( index = setuptools.package_index.PackageIndex(
search_path=[distribute_path]) search_path=[setuptools_path])
if find_links: if find_links:
index.add_find_links((find_links,)) index.add_find_links((find_links,))
req = pkg_resources.Requirement.parse(requirement) req = pkg_resources.Requirement.parse(requirement)
...@@ -142,7 +160,7 @@ if version: ...@@ -142,7 +160,7 @@ if version:
cmd.append(requirement) cmd.append(requirement)
import subprocess import subprocess
if subprocess.call(cmd, env=dict(os.environ, PYTHONPATH=distribute_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])
...@@ -163,3 +181,4 @@ if options.config_file is not None: ...@@ -163,3 +181,4 @@ if options.config_file is not None:
zc.buildout.buildout.main(args) zc.buildout.buildout.main(args)
shutil.rmtree(tmpeggs) shutil.rmtree(tmpeggs)
...@@ -9,7 +9,7 @@ from setuptools import setup, find_packages ...@@ -9,7 +9,7 @@ from setuptools import setup, find_packages
setup( setup(
name='xbob.db.banca', name='xbob.db.banca',
version='1.1.0', version='1.1.1',
description='BANCA Database Access API for Bob', description='BANCA Database Access API for Bob',
url='http://github.com/bioidiap/xbob.db.banca', url='http://github.com/bioidiap/xbob.db.banca',
license='GPLv3', license='GPLv3',
......
...@@ -42,7 +42,7 @@ def add_files(session, imagedir, verbose): ...@@ -42,7 +42,7 @@ def add_files(session, imagedir, verbose):
def add_annotations(session, annotdir, verbose): def add_annotations(session, annotdir, verbose):
"""Add files (and clients) to the BANCA database.""" """Reads the annotation files and adds the annotations to the .sql3 database."""
def read_annotation(filename, file_id): def read_annotation(filename, file_id):
# read the eye positions, which are stored as four integers in one line # read the eye positions, which are stored as four integers in one line
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment