Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- #
- # Copyright 2007 Google Inc.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- #
- """Convenience wrapper for starting an appengine tool."""
- import os,sys
- _POSSIBLE_GAE_LOCATIONS = ['/home/sergey/Envs/classes/google_appengine',
- '/home/singer/.virtualenvs/classes//google_appengine',
- '/var/www/classes-root/test/google_appengine',
- '/usr/local/google_appengine',
- '/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine',
- 'c:\\Program Files (x86)\\Google\\google_appengine\\'
- ]
- DJANGO_VERSIONED_DIRNAME = 'django-1.4'
- def find_gae_path():
- paths = _POSSIBLE_GAE_LOCATIONS
- SDK_PATH = None
- for sdk_path in paths:
- sdk_path = os.path.realpath(sdk_path)
- if os.path.exists(sdk_path):
- SDK_PATH = sdk_path
- break
- if SDK_PATH is None:
- # The SDK could not be found in any known location.
- sys.stderr.write('The Google App Engine SDK could not be found!\n'
- 'Visit http://code.google.com/p/app-engine-patch/'
- ' for installation instructions.\n')
- sys.exit(1)
- return SDK_PATH
- GAE_PATH = find_gae_path()
- def get_gae_dir_path(sibling):
- dir_paths = [os.path.abspath(os.path.realpath(GAE_PATH)),
- os.path.abspath(GAE_PATH)]
- for dir_path in dir_paths:
- sibling_path = os.path.join(dir_path, sibling)
- if os.path.exists(sibling_path):
- return dir_path
- raise ValueError('Could not determine directory that contains both, this '
- 'file and %s.' % sibling)
- DIR_PATH = get_gae_dir_path(os.path.join('lib', 'ipaddr'))
- PATHS = [ #minimum required additional sys paths we need gae+django to start
- DIR_PATH,
- GAE_PATH,
- os.path.join(DIR_PATH, 'lib', DJANGO_VERSIONED_DIRNAME),
- os.path.join(DIR_PATH, 'lib', 'yaml', 'lib'),
- os.path.join(DIR_PATH, 'lib', 'webob_0_9'),
- ]
- EXTRA_PATHS = [ #this may differ from command to command
- # os.path.join(DIR_PATH, 'lib'),
- os.path.join(DIR_PATH, 'lib', 'antlr3'),
- os.path.join(DIR_PATH, 'lib', 'fancy_urllib'),
- os.path.join(DIR_PATH, 'lib', 'ipaddr'),
- os.path.join(DIR_PATH, 'lib', 'jinja2-2.6'),
- os.path.join(DIR_PATH, 'lib', 'protorpc'),
- os.path.join(DIR_PATH, 'lib', 'PyAMF'),
- os.path.join(DIR_PATH, 'lib', 'markupsafe'),
- os.path.join(DIR_PATH, 'lib', 'webapp2-2.5.2'),
- os.path.join(DIR_PATH, 'lib', 'google.appengine._internal.graphy'),
- os.path.join(DIR_PATH, 'lib', 'simplejson'),
- os.path.join(DIR_PATH, 'lib', 'concurrent'),
- os.path.join(DIR_PATH, 'lib', 'cherrypy'),
- ]
- def add_required_paths():
- sys.path.extend(PATHS[:])
- def add_extra_paths(extra_extra_paths=()):
- """Fix the sys.path to include our extra paths."""
- extra_paths = EXTRA_PATHS[:]
- extra_paths.extend(extra_extra_paths)
- sys.path = extra_paths + sys.path
- _get_dir_path = get_gae_dir_path
- SCRIPT_DIR = os.path.join(DIR_PATH, 'google', 'appengine', 'tools')
- DEVAPPSERVER2_DIR = os.path.join(
- DIR_PATH, 'google', 'appengine', 'tools', 'devappserver2')
- PYTHON_RUNTIME_DIR = os.path.join(
- DIR_PATH, 'google', 'appengine', 'tools', 'devappserver2', 'python')
- # EXTRA_PATHS = [
- # DIR_PATH,
- # os.path.join(DIR_PATH, 'lib', 'concurrent'),
- # os.path.join(DIR_PATH, 'lib', 'cherrypy'),
- # os.path.join(DIR_PATH, 'lib', 'fancy_urllib'),
- # os.path.join(DIR_PATH, 'lib', 'yaml-3.10'),
- # ]
- DEVAPPSERVER2_PATHS = [
- os.path.join(DIR_PATH, 'lib', 'antlr3'),
- os.path.join(DIR_PATH, 'lib', 'argparse'),
- os.path.join(DIR_PATH, 'lib', 'ipaddr'),
- os.path.join(DIR_PATH, 'lib', 'jinja2-2.6'),
- os.path.join(DIR_PATH, 'lib', 'webob-1.2.3'),
- os.path.join(DIR_PATH, 'lib', 'webapp2-2.5.1'),
- ]
- SCRIPT_EXCEPTIONS = {
- '_python_runtime.py': 'runtime.py',
- }
- SCRIPT_DIR_EXCEPTIONS = {
- 'devappserver2.py': DEVAPPSERVER2_DIR,
- '_python_runtime.py': PYTHON_RUNTIME_DIR,
- }
- PATH_EXCEPTIONS = {
- 'devappserver2.py': DEVAPPSERVER2_PATHS
- }
- def fix_sys_path(extra_extra_paths=()):
- """Fix the sys.path to include our extra paths."""
- add_required_paths()
- extra_paths = EXTRA_PATHS[:]
- extra_paths.extend(extra_extra_paths)
- sys.path = extra_paths + sys.path
- #
- _DIR_PATH = _get_dir_path(os.path.join('lib', 'ipaddr'))
- _SCRIPT_DIR = os.path.join(_DIR_PATH, 'google', 'appengine', 'tools')
- _DEVAPPSERVER2_DIR = os.path.join(
- _DIR_PATH, 'google', 'appengine', 'tools', 'devappserver2')
- _PYTHON_RUNTIME_DIR = os.path.join(
- _DIR_PATH, 'google', 'appengine', 'tools', 'devappserver2', 'python')
- _STUB_DEPENDENCIES = [
- os.path.join(_DIR_PATH, 'lib', 'antlr3'),
- os.path.join(_DIR_PATH, 'lib', 'fancy_urllib'),
- os.path.join(_DIR_PATH, 'lib', 'ipaddr'),
- os.path.join(_DIR_PATH, 'lib', 'yaml-3.10'),
- ]
- _DEVAPPSERVER2_PATHS = _STUB_DEPENDENCIES + [
- _DIR_PATH,
- os.path.join(_DIR_PATH, 'lib', 'concurrent'),
- os.path.join(_DIR_PATH, 'lib', 'cherrypy'),
- os.path.join(_DIR_PATH, 'lib', 'jinja2-2.6'),
- os.path.join(_DIR_PATH, 'lib', 'webob-1.2.3'),
- os.path.join(_DIR_PATH, 'lib', 'webapp2-2.5.1'),
- ]
- _PYTHON_RUNTIME_PATHS = [
- _DIR_PATH,
- os.path.join(_DIR_PATH, 'lib', 'concurrent'),
- os.path.join(_DIR_PATH, 'lib', 'cherrypy'),
- os.path.join(_DIR_PATH, 'lib', 'fancy_urllib'),
- os.path.join(_DIR_PATH, 'lib', 'protorpc'),
- os.path.join(_DIR_PATH, 'lib', 'yaml-3.10'),
- ]
- _BOOTSTAP_NAME_TO_REAL_NAME = {
- 'dev_appserver.py': 'devappserver2.py',
- '_python_runtime.py': 'runtime.py',
- }
- _SCRIPT_TO_DIR = {
- 'dev_appserver.py': _DEVAPPSERVER2_DIR,
- '_python_runtime.py': _PYTHON_RUNTIME_DIR,
- }
- _SYS_PATH_ADDITIONS = {
- 'dev_appserver.py': _DEVAPPSERVER2_PATHS,
- '_python_runtime.py': _PYTHON_RUNTIME_PATHS,
- }
- def fix_sys_path(extra_extra_paths=()):
- """Fix the sys.path to include our extra paths.
- fix_sys_path should be called before running testbed-based unit tests so that
- third-party modules are correctly added to sys.path.
- """
- sys.path[1:1] = EXTRA_PATHS
- def _run_file(file_path, globals_, script_dir=_SCRIPT_DIR):
- """Execute the file at the specified path with the passed-in globals."""
- script_name = os.path.basename(file_path)
- sys.path = _SYS_PATH_ADDITIONS[script_name] + sys.path
- if 'google' in sys.modules:
- del sys.modules['google']
- script_dir = _SCRIPT_TO_DIR.get(script_name, script_dir)
- script_name = _BOOTSTAP_NAME_TO_REAL_NAME.get(script_name, script_name)
- script_path = os.path.join(script_dir, script_name)
- execfile(script_path, globals_)
- if __name__ == '__main__':
- _run_file(__file__, globals())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement