Changeset View
Changeset View
Standalone View
Standalone View
head/www/firefox/files/patch-bug1288587
diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure | diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure | ||||
index 855214a..1e91d51 100644 | index 855214a..1e91d51 100644 | ||||
--- build/moz.configure/init.configure | --- build/moz.configure/init.configure | ||||
+++ build/moz.configure/init.configure | +++ build/moz.configure/init.configure | ||||
@@ -165,16 +165,17 @@ option(env='PYTHON', nargs=1, help='Python interpreter') | @@ -211,6 +211,7 @@ option(env='PYTHON', nargs=1, help='Python 2.7 interpr | ||||
# ============================================================== | |||||
@depends('PYTHON', check_build_environment, mozconfig, '--help') | |||||
@imports('os') | |||||
@imports('sys') | |||||
@imports('subprocess') | |||||
@imports(_from='mozbuild.configure.util', _import='LineIO') | |||||
@imports(_from='mozbuild.virtualenv', _import='VirtualenvManager') | @imports(_from='mozbuild.virtualenv', _import='VirtualenvManager') | ||||
@imports(_from='mozbuild.virtualenv', _import='verify_python_version') | @imports(_from='mozbuild.virtualenv', _import='verify_python_version') | ||||
@imports(_from='mozbuild.virtualenv', _import='PY2') | |||||
+@imports(_from='__builtin__', _import='KeyError') | +@imports(_from='__builtin__', _import='KeyError') | ||||
@imports('distutils.sysconfig') | def virtualenv_python2(env_python, build_env, mozconfig, help): | ||||
def virtualenv_python(env_python, build_env, mozconfig, help): | |||||
if help: | if help: | ||||
return | return | ||||
@@ -242,6 +243,12 @@ def virtualenv_python2(env_python, build_env, mozconfi | |||||
python = env_python[0] if env_python else None | |||||
# Ideally we'd rely on the mozconfig injection from mozconfig_options, | |||||
@@ -184,16 +185,22 @@ def virtualenv_python(env_python, build_env, mozconfig, help): | |||||
if 'PYTHON' in mozconfig['env']['added']: | |||||
python = mozconfig['env']['added']['PYTHON'] | |||||
elif 'PYTHON' in mozconfig['env']['modified']: | |||||
python = mozconfig['env']['modified']['PYTHON'][1] | |||||
elif 'PYTHON' in mozconfig['vars']['added']: | |||||
python = mozconfig['vars']['added']['PYTHON'] | python = mozconfig['vars']['added']['PYTHON'] | ||||
elif 'PYTHON' in mozconfig['vars']['modified']: | elif 'PYTHON' in mozconfig['vars']['modified']: | ||||
python = mozconfig['vars']['modified']['PYTHON'][1] | python = mozconfig['vars']['modified']['PYTHON'][1] | ||||
+ for i in ('env', 'vars'): | + for i in ('env', 'vars'): | ||||
+ for j in ('added', 'modified'): | + for j in ('added', 'modified'): | ||||
+ try: | + try: | ||||
+ del mozconfig[i][j]['PYTHON'] | + del mozconfig[i][j]['PYTHON'] | ||||
+ except KeyError: | + except KeyError: | ||||
+ pass | + pass | ||||
with LineIO(lambda l: log.error(l)) as out: | log.debug("python2: executable from configuration: %r" % python) | ||||
verify_python_version(out) | |||||
topsrcdir, topobjdir = build_env.topsrcdir, build_env.topobjdir | |||||
if topobjdir.endswith('/js/src'): | |||||
topobjdir = topobjdir[:-7] | |||||
with LineIO(lambda l: log.info(l)) as out: | @@ -294,7 +301,10 @@ def virtualenv_python2(env_python, build_env, mozconfi | ||||
@@ -255,17 +262,20 @@ def virtualenv_python(env_python, build_env, mozconfig | sys.executable, manager.python_path)) | ||||
log.info('Creating Python environment') | |||||
manager.build(python) | |||||
python = normsep(manager.python_path) | |||||
if not normsep(sys.executable).startswith(normsep(virtualenvs_root)): | |||||
log.info('Reexecuting in the virtualenv') | log.info('Reexecuting in the virtualenv') | ||||
if env_python: | if env_python: | ||||
- del os.environ['PYTHON'] | - del os.environ['PYTHON'] | ||||
+ try: | + try: | ||||
+ del os.environ['PYTHON'] | + del os.environ['PYTHON'] | ||||
+ except KeyError: | + except KeyError: | ||||
+ pass | + pass | ||||
# One would prefer to use os.execl, but that's completely borked on | # One would prefer to use os.execl, but that's completely borked on | ||||
# Windows. | # Windows. | ||||
sys.exit(subprocess.call([python] + sys.argv)) | sys.exit(subprocess.call([python] + sys.argv)) | ||||
@@ -430,6 +440,7 @@ option(env='PYTHON3', nargs=1, help='Python 3 interpre | |||||
@imports(_from='mozbuild.virtualenv', _import='PY3') | |||||
@imports(_from='mozbuild.pythonutil', _import='find_python3_executable') | |||||
@imports(_from='mozbuild.pythonutil', _import='python_executable_version') | |||||
+@imports(_from='__builtin__', _import='KeyError') | |||||
def virtualenv_python3(env_python, build_env, mozillabuild, mozconfig, help): | |||||
if help: | |||||
return | |||||
@@ -465,6 +476,12 @@ def virtualenv_python3(env_python, build_env, mozillab | |||||
python = mozconfig['vars']['added']['PYTHON3'] | |||||
elif 'PYTHON3' in mozconfig['vars']['modified']: | |||||
python = mozconfig['vars']['modified']['PYTHON3'][1] | |||||
+ for i in ('env', 'vars'): | |||||
+ for j in ('added', 'modified'): | |||||
+ try: | |||||
+ del mozconfig[i][j]['PYTHON3'] | |||||
+ except KeyError: | |||||
+ pass | |||||
# We are now in the virtualenv | log.debug("python3: executable from configuration: %r" % python) | ||||
if not distutils.sysconfig.get_python_lib(): | |||||
die('Could not determine python site packages directory') | |||||
@@ -545,7 +562,10 @@ def virtualenv_python3(env_python, build_env, mozillab | |||||
sys.executable, manager.python_path)) | |||||
log.info('Re-executing in the virtualenv') | |||||
if env_python: | |||||
- del os.environ['PYTHON3'] | |||||
+ try: | |||||
+ del os.environ['PYTHON3'] | |||||
+ except KeyError: | |||||
+ pass | |||||
# One would prefer to use os.execl, but that's completely borked on | |||||
# Windows. | |||||
sys.exit(subprocess.call([python] + sys.argv)) |