fix: update buildout
This commit is contained in:
		
							parent
							
								
									e98aef6fc4
								
							
						
					
					
						commit
						d4289222f2
					
				
							
								
								
									
										4
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								Makefile
									
									
									
									
									
								
							| @ -60,7 +60,7 @@ locales: | |||||||
| 	@pybabel compile -d searx/translations | 	@pybabel compile -d searx/translations | ||||||
| 
 | 
 | ||||||
| clean: | clean: | ||||||
| 	@rm -rf .installed.cfg .mr.developer.cfg bin parts develop-eggs \
 | 	@rm -rf .installed.cfg .mr.developer.cfg bin parts develop-eggs eggs \
 | ||||||
| 		searx.egg-info lib include .coverage coverage searx/static/themes/default/css/*.css | 		searx.egg-info lib include .coverage coverage | ||||||
| 
 | 
 | ||||||
| .PHONY: all tests robot flake8 coverage production minimal styles locales clean | .PHONY: all tests robot flake8 coverage production minimal styles locales clean | ||||||
|  | |||||||
							
								
								
									
										6
									
								
								base.cfg
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								base.cfg
									
									
									
									
									
								
							| @ -1,16 +1,10 @@ | |||||||
| [buildout] | [buildout] | ||||||
| extends = versions.cfg | extends = versions.cfg | ||||||
| versions = versions |  | ||||||
| unzip = true | unzip = true | ||||||
| newest = false | newest = false | ||||||
| extends = versions.cfg |  | ||||||
| versions = versions |  | ||||||
| prefer-final = true | prefer-final = true | ||||||
| develop = . | develop = . | ||||||
| 
 | 
 | ||||||
| extensions = |  | ||||||
|     buildout_versions |  | ||||||
| 
 |  | ||||||
| eggs = | eggs = | ||||||
|     searx |     searx | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										299
									
								
								bootstrap.py
									
									
									
									
									
								
							
							
						
						
									
										299
									
								
								bootstrap.py
									
									
									
									
									
								
							| @ -18,75 +18,17 @@ 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, urllib, urllib2, subprocess | import os | ||||||
|  | import shutil | ||||||
|  | import sys | ||||||
|  | import tempfile | ||||||
|  | 
 | ||||||
| from optparse import OptionParser | from optparse import OptionParser | ||||||
| 
 | 
 | ||||||
| if sys.platform == 'win32': | __version__ = '2015-07-01' | ||||||
|     def quote(c): | # See zc.buildout's changelog if this version is up to date. | ||||||
|         if ' ' in c: |  | ||||||
|             return '"%s"' % c  # work around spawn lamosity on windows |  | ||||||
|         else: |  | ||||||
|             return c |  | ||||||
| else: |  | ||||||
|     quote = str |  | ||||||
| 
 | 
 | ||||||
| # See zc.buildout.easy_install._has_broken_dash_S for motivation and comments. | tmpeggs = tempfile.mkdtemp(prefix='bootstrap-') | ||||||
| stdout, stderr = subprocess.Popen( |  | ||||||
|     [sys.executable, '-Sc', |  | ||||||
|      'try:\n' |  | ||||||
|      '    import ConfigParser\n' |  | ||||||
|      'except ImportError:\n' |  | ||||||
|      '    print 1\n' |  | ||||||
|      'else:\n' |  | ||||||
|      '    print 0\n'], |  | ||||||
|     stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate() |  | ||||||
| has_broken_dash_S = bool(int(stdout.strip())) |  | ||||||
| 
 |  | ||||||
| # In order to be more robust in the face of system Pythons, we want to |  | ||||||
| # run without site-packages loaded.  This is somewhat tricky, in |  | ||||||
| # particular because Python 2.6's distutils imports site, so starting |  | ||||||
| # with the -S flag is not sufficient.  However, we'll start with that: |  | ||||||
| if not has_broken_dash_S and 'site' in sys.modules: |  | ||||||
|     # We will restart with python -S. |  | ||||||
|     args = sys.argv[:] |  | ||||||
|     args[0:0] = [sys.executable, '-S'] |  | ||||||
|     args = map(quote, args) |  | ||||||
|     os.execv(sys.executable, args) |  | ||||||
| # Now we are running with -S.  We'll get the clean sys.path, import site |  | ||||||
| # because distutils will do it later, and then reset the path and clean |  | ||||||
| # out any namespace packages from site-packages that might have been |  | ||||||
| # loaded by .pth files. |  | ||||||
| clean_path = sys.path[:] |  | ||||||
| import site  # imported because of its side effects |  | ||||||
| sys.path[:] = clean_path |  | ||||||
| for k, v in sys.modules.items(): |  | ||||||
|     if k in ('setuptools', 'pkg_resources') or ( |  | ||||||
|         hasattr(v, '__path__') and |  | ||||||
|         len(v.__path__) == 1 and |  | ||||||
|         not os.path.exists(os.path.join(v.__path__[0], '__init__.py'))): |  | ||||||
|         # This is a namespace package.  Remove it. |  | ||||||
|         sys.modules.pop(k) |  | ||||||
| 
 |  | ||||||
| is_jython = sys.platform.startswith('java') |  | ||||||
| 
 |  | ||||||
| setuptools_source = 'http://peak.telecommunity.com/dist/ez_setup.py' |  | ||||||
| distribute_source = 'http://python-distribute.org/distribute_setup.py' |  | ||||||
| distribute_source = 'https://bitbucket.org/pypa/setuptools/raw/f657df1f1ed46596d236376649c99a470662b4ba/distribute_setup.py' |  | ||||||
| 
 |  | ||||||
| # parsing arguments |  | ||||||
| def normalize_to_url(option, opt_str, value, parser): |  | ||||||
|     if value: |  | ||||||
|         if '://' not in value:  # It doesn't smell like a URL. |  | ||||||
|             value = 'file://%s' % ( |  | ||||||
|                 urllib.pathname2url( |  | ||||||
|                     os.path.abspath(os.path.expanduser(value))),) |  | ||||||
|         if opt_str == '--download-base' and not value.endswith('/'): |  | ||||||
|             # Download base needs a trailing slash to make the world happy. |  | ||||||
|             value += '/' |  | ||||||
|     else: |  | ||||||
|         value = None |  | ||||||
|     name = opt_str[2:].replace('-', '_') |  | ||||||
|     setattr(parser.values, name, value) |  | ||||||
| 
 | 
 | ||||||
| usage = '''\ | usage = '''\ | ||||||
| [DESIRED PYTHON FOR BUILDOUT] bootstrap.py [options] | [DESIRED PYTHON FOR BUILDOUT] bootstrap.py [options] | ||||||
| @ -96,31 +38,14 @@ 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) | ||||||
| parser.add_option("-v", "--version", dest="version", | parser.add_option("--version", | ||||||
|                           help="use a specific zc.buildout version") |                   action="store_true", default=False, | ||||||
| parser.add_option("-d", "--distribute", |                   help=("Return bootstrap.py version.")) | ||||||
|                    action="store_true", dest="use_distribute", default=False, |  | ||||||
|                    help="Use Distribute rather than Setuptools.") |  | ||||||
| parser.add_option("--setup-source", action="callback", dest="setup_source", |  | ||||||
|                   callback=normalize_to_url, nargs=1, type="string", |  | ||||||
|                   help=("Specify a URL or file location for the setup file. " |  | ||||||
|                         "If you use Setuptools, this will default to " + |  | ||||||
|                         setuptools_source + "; if you use Distribute, this " |  | ||||||
|                         "will default to " + distribute_source + ".")) |  | ||||||
| parser.add_option("--download-base", action="callback", dest="download_base", |  | ||||||
|                   callback=normalize_to_url, nargs=1, type="string", |  | ||||||
|                   help=("Specify a URL or directory for downloading " |  | ||||||
|                         "zc.buildout and either Setuptools or Distribute. " |  | ||||||
|                         "Defaults to PyPI.")) |  | ||||||
| parser.add_option("--eggs", |  | ||||||
|                   help=("Specify a directory for storing eggs.  Defaults to " |  | ||||||
|                         "a temporary directory that is deleted when the " |  | ||||||
|                         "bootstrap script completes.")) |  | ||||||
| parser.add_option("-t", "--accept-buildout-test-releases", | parser.add_option("-t", "--accept-buildout-test-releases", | ||||||
|                   dest='accept_buildout_test_releases', |                   dest='accept_buildout_test_releases', | ||||||
|                   action="store_true", default=False, |                   action="store_true", default=False, | ||||||
| @ -130,95 +55,117 @@ parser.add_option("-t", "--accept-buildout-test-releases", | |||||||
|                         "extensions for you.  If you use this flag, " |                         "extensions for you.  If you use this flag, " | ||||||
|                         "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", None, action="store", dest="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", | ||||||
|  |                   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("--buildout-version", | ||||||
|  |                   help="Use a specific zc.buildout version") | ||||||
|  | parser.add_option("--setuptools-version", | ||||||
|  |                   help="Use a specific setuptools version") | ||||||
|  | parser.add_option("--setuptools-to-dir", | ||||||
|  |                   help=("Allow for re-use of existing directory of " | ||||||
|  |                         "setuptools versions")) | ||||||
| 
 | 
 | ||||||
| options, args = parser.parse_args() | options, args = parser.parse_args() | ||||||
|  | if options.version: | ||||||
|  |     print("bootstrap.py version %s" % __version__) | ||||||
|  |     sys.exit(0) | ||||||
| 
 | 
 | ||||||
| if options.eggs: |  | ||||||
|     eggs_dir = os.path.abspath(os.path.expanduser(options.eggs)) |  | ||||||
| else: |  | ||||||
|     eggs_dir = tempfile.mkdtemp() |  | ||||||
| 
 | 
 | ||||||
| if options.setup_source is None: | ###################################################################### | ||||||
|     if options.use_distribute: | # load/install setuptools | ||||||
|         options.setup_source = distribute_source |  | ||||||
|     else: |  | ||||||
|         options.setup_source = setuptools_source |  | ||||||
| 
 |  | ||||||
| if options.accept_buildout_test_releases: |  | ||||||
|     args.insert(0, 'buildout:accept-buildout-test-releases=true') |  | ||||||
| 
 | 
 | ||||||
| try: | try: | ||||||
|     import pkg_resources |     from urllib.request import urlopen | ||||||
|     import setuptools  # A flag.  Sometimes pkg_resources is installed alone. |  | ||||||
|     if not hasattr(pkg_resources, '_distribute'): |  | ||||||
|         raise ImportError |  | ||||||
| except ImportError: | except ImportError: | ||||||
|     ez_code = urllib2.urlopen( |     from urllib2 import urlopen | ||||||
|         options.setup_source).read().replace('\r\n', '\n') |  | ||||||
|     ez = {} |  | ||||||
|     exec ez_code in ez |  | ||||||
|     setup_args = dict(to_dir=eggs_dir, download_delay=0) |  | ||||||
|     if options.download_base: |  | ||||||
|         setup_args['download_base'] = options.download_base |  | ||||||
|     if options.use_distribute: |  | ||||||
|         setup_args['no_fake'] = True |  | ||||||
|         if sys.version_info[:2] == (2, 4): |  | ||||||
|             setup_args['version'] = '0.6.32' |  | ||||||
|     ez['use_setuptools'](**setup_args) |  | ||||||
|     if 'pkg_resources' in sys.modules: |  | ||||||
|         reload(sys.modules['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) |  | ||||||
| 
 | 
 | ||||||
| cmd = [quote(sys.executable), | ez = {} | ||||||
|        '-c', | if os.path.exists('ez_setup.py'): | ||||||
|        quote('from setuptools.command.easy_install import main; main()'), |     exec(open('ez_setup.py').read(), ez) | ||||||
|        '-mqNxd', |  | ||||||
|        quote(eggs_dir)] |  | ||||||
| 
 |  | ||||||
| if not has_broken_dash_S: |  | ||||||
|     cmd.insert(1, '-S') |  | ||||||
| 
 |  | ||||||
| find_links = options.download_base |  | ||||||
| if not find_links: |  | ||||||
|     find_links = os.environ.get('bootstrap-testing-find-links') |  | ||||||
| if not find_links and options.accept_buildout_test_releases: |  | ||||||
|     find_links = 'http://downloads.buildout.org/' |  | ||||||
| if find_links: |  | ||||||
|     cmd.extend(['-f', quote(find_links)]) |  | ||||||
| 
 |  | ||||||
| if options.use_distribute: |  | ||||||
|     setup_requirement = 'distribute' |  | ||||||
| else: | else: | ||||||
|     setup_requirement = 'setuptools' |     exec(urlopen('https://bootstrap.pypa.io/ez_setup.py').read(), ez) | ||||||
|  | 
 | ||||||
|  | if not options.allow_site_packages: | ||||||
|  |     # ez_setup imports site, which adds site packages | ||||||
|  |     # this will remove them from the path to ensure that incompatible versions | ||||||
|  |     # of setuptools are not in the path | ||||||
|  |     import site | ||||||
|  |     # inside a virtualenv, there is no 'getsitepackages'. | ||||||
|  |     # We can't remove these reliably | ||||||
|  |     if hasattr(site, 'getsitepackages'): | ||||||
|  |         for sitepackage_path in site.getsitepackages(): | ||||||
|  |             # Strip all site-packages directories from sys.path that | ||||||
|  |             # are not sys.prefix; this is because on Windows | ||||||
|  |             # sys.prefix is a site-package directory. | ||||||
|  |             if sitepackage_path != sys.prefix: | ||||||
|  |                 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 | ||||||
|  | if options.setuptools_to_dir is not None: | ||||||
|  |     setup_args['to_dir'] = options.setuptools_to_dir | ||||||
|  | 
 | ||||||
|  | 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 | ||||||
|  | 
 | ||||||
| ws = pkg_resources.working_set | ws = pkg_resources.working_set | ||||||
| setup_requirement_path = ws.find( | 
 | ||||||
|     pkg_resources.Requirement.parse(setup_requirement)).location | setuptools_path = ws.find( | ||||||
| env = dict( |     pkg_resources.Requirement.parse('setuptools')).location | ||||||
|     os.environ, | 
 | ||||||
|     PYTHONPATH=setup_requirement_path) | # Fix sys.path here as easy_install.pth added before PYTHONPATH | ||||||
|  | cmd = [sys.executable, '-c', | ||||||
|  |        'import sys; sys.path[0:0] = [%r]; ' % setuptools_path + | ||||||
|  |        'from setuptools.command.easy_install import main; main()', | ||||||
|  |        '-mZqNxd', tmpeggs] | ||||||
|  | 
 | ||||||
|  | find_links = os.environ.get( | ||||||
|  |     'bootstrap-testing-find-links', | ||||||
|  |     options.find_links or | ||||||
|  |     ('http://downloads.buildout.org/' | ||||||
|  |      if options.accept_buildout_test_releases else None) | ||||||
|  |     ) | ||||||
|  | if find_links: | ||||||
|  |     cmd.extend(['-f', find_links]) | ||||||
| 
 | 
 | ||||||
| requirement = 'zc.buildout' | requirement = 'zc.buildout' | ||||||
| version = options.version | version = options.buildout_version | ||||||
| if version is None and not options.accept_buildout_test_releases: | 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: |         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=[setup_requirement_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) | ||||||
| @ -227,8 +174,6 @@ if version is None and not options.accept_buildout_test_releases: | |||||||
|         bestv = None |         bestv = None | ||||||
|         for dist in index[req.project_name]: |         for dist in index[req.project_name]: | ||||||
|             distv = dist.parsed_version |             distv = dist.parsed_version | ||||||
|             if distv >= pkg_resources.parse_version('2dev'): |  | ||||||
|                 continue |  | ||||||
|             if _final_version(distv): |             if _final_version(distv): | ||||||
|                 if bestv is None or distv > bestv: |                 if bestv is None or distv > bestv: | ||||||
|                     best = [dist] |                     best = [dist] | ||||||
| @ -238,40 +183,28 @@ if version is None and not options.accept_buildout_test_releases: | |||||||
|         if best: |         if best: | ||||||
|             best.sort() |             best.sort() | ||||||
|             version = best[-1].version |             version = best[-1].version | ||||||
| 
 |  | ||||||
| if version: | if version: | ||||||
|     requirement += '=='+version |     requirement = '=='.join((requirement, version)) | ||||||
| else: |  | ||||||
|     requirement += '<2dev' |  | ||||||
| 
 |  | ||||||
| cmd.append(requirement) | cmd.append(requirement) | ||||||
| 
 | 
 | ||||||
| if is_jython: | import subprocess | ||||||
|     import subprocess | if subprocess.call(cmd) != 0: | ||||||
|     exitcode = subprocess.Popen(cmd, env=env).wait() |     raise Exception( | ||||||
| else:  # Windows prefers this, apparently; otherwise we would prefer subprocess |         "Failed to execute command:\n%s" % repr(cmd)[1:-1]) | ||||||
|     exitcode = os.spawnle(*([os.P_WAIT, sys.executable] + cmd + [env])) |  | ||||||
| if exitcode != 0: |  | ||||||
|     sys.stdout.flush() |  | ||||||
|     sys.stderr.flush() |  | ||||||
|     print ("An error occurred when trying to install zc.buildout. " |  | ||||||
|            "Look above this message for any errors that " |  | ||||||
|            "were output by easy_install.") |  | ||||||
|     sys.exit(exitcode) |  | ||||||
| 
 | 
 | ||||||
| ws.add_entry(eggs_dir) | ###################################################################### | ||||||
|  | # Import and run buildout | ||||||
|  | 
 | ||||||
|  | ws.add_entry(tmpeggs) | ||||||
| ws.require(requirement) | ws.require(requirement) | ||||||
| import zc.buildout.buildout | import zc.buildout.buildout | ||||||
| 
 | 
 | ||||||
| # If there isn't already a command in the args, add bootstrap |  | ||||||
| if not [a for a in args if '=' not in a]: | if not [a for a in args if '=' not in a]: | ||||||
|     args.append('bootstrap') |     args.append('bootstrap') | ||||||
| 
 | 
 | ||||||
| 
 | # if -c was provided, we push it back into args for buildout' main function | ||||||
| # if -c was provided, we push it back into args for buildout's main function |  | ||||||
| if options.config_file is not None: | if options.config_file is not None: | ||||||
|     args[0:0] = ['-c', options.config_file] |     args[0:0] = ['-c', options.config_file] | ||||||
| 
 | 
 | ||||||
| zc.buildout.buildout.main(args) | zc.buildout.buildout.main(args) | ||||||
| if not options.eggs:  # clean up temporary egg directory | shutil.rmtree(tmpeggs) | ||||||
|     shutil.rmtree(eggs_dir) |  | ||||||
|  | |||||||
| @ -8,7 +8,6 @@ Pygments = 2.0.2 | |||||||
| WebOb = 1.4.1 | WebOb = 1.4.1 | ||||||
| WebTest = 2.0.18 | WebTest = 2.0.18 | ||||||
| Werkzeug = 0.10.4 | Werkzeug = 0.10.4 | ||||||
| buildout-versions = 1.7 |  | ||||||
| collective.recipe.omelette = 0.16 | collective.recipe.omelette = 0.16 | ||||||
| coverage = 3.7.1 | coverage = 3.7.1 | ||||||
| decorator = 3.4.2 | decorator = 3.4.2 | ||||||
| @ -38,7 +37,6 @@ pyasn1 = 0.1.8 | |||||||
| pyasn1-modules = 0.0.6 | pyasn1-modules = 0.0.6 | ||||||
| certifi = 2015.04.28 | certifi = 2015.04.28 | ||||||
| 
 | 
 | ||||||
| #  |  | ||||||
| cffi = 1.1.2 | cffi = 1.1.2 | ||||||
| cryptography = 0.9.1 | cryptography = 0.9.1 | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user