Backed out 4 changesets (bug 1769405) for causing regression in Bug 1774100. CLOSED TREE

Backed out changeset 813147df341c (bug 1769405)
Backed out changeset 6de9495c467d (bug 1769405)
Backed out changeset 9099ba749b1f (bug 1769405)
Backed out changeset 5f8e0141a0ed (bug 1769405)
This commit is contained in:
Marian-Vasile Laza
2022-06-14 01:36:48 +03:00
parent 929e5ca126
commit 2d41524f31
4 changed files with 42 additions and 118 deletions

View File

@@ -37,9 +37,8 @@ from mozboot.solus import SolusBootstrapper
from mozboot.void import VoidBootstrapper
from mozboot.windows import WindowsBootstrapper
from mozboot.mozillabuild import MozillaBuildBootstrapper
from mozboot.mozconfig import MozconfigBuilder
from mozboot.mozconfig import find_mozconfig, MozconfigBuilder
from mozfile import which
from mozbuild.base import MozbuildObject
# Use distro package to retrieve linux platform information
import distro
@@ -82,21 +81,6 @@ Paste the lines between the chevrons (>>> and <<<) into
<<<
"""
MOZCONFIG_MISMATCH_WARNING_TEMPLATE = """
WARNING! Mismatch detected between the selected build target and the
mozconfig file %s:
Current config
>>>
%s
<<<
Expected config
>>>
%s
<<<
"""
CONFIGURE_MERCURIAL = """
Mozilla recommends a number of changes to Mercurial to enhance your
experience with it.
@@ -387,8 +371,6 @@ class Bootstrapper(object):
if not self.instance.no_interactive and not settings.mach_telemetry.is_set_up:
initialize_telemetry_setting(settings, str(checkout_root), str(state_dir))
self._output_mozconfig(application, mozconfig_builder)
print(FINISHED % name)
if not (
which("rustc")
@@ -399,54 +381,7 @@ class Bootstrapper(object):
% name
)
def _default_mozconfig_path(self):
return Path(self.mach_context.topdir) / "mozconfig"
def _read_default_mozconfig(self):
path = self._default_mozconfig_path()
with open(path, "r") as mozconfig_file:
return mozconfig_file.read()
def _write_default_mozconfig(self, raw_mozconfig):
path = self._default_mozconfig_path()
with open(path, "w") as mozconfig_file:
mozconfig_file.write(raw_mozconfig)
print(f'Your requested configuration has been written to "{path}".')
def _show_mozconfig_suggestion(self, raw_mozconfig):
suggestion = MOZCONFIG_SUGGESTION_TEMPLATE % (
self._default_mozconfig_path(),
raw_mozconfig,
)
print(suggestion, end="")
def _check_default_mozconfig_mismatch(
self, current_mozconfig_info, expected_application, expected_raw_mozconfig
):
current_raw_mozconfig = self._read_default_mozconfig()
current_application = current_mozconfig_info["project"][0].replace("/", "_")
if current_mozconfig_info["artifact-builds"]:
current_application += "_artifact_mode"
if expected_application == current_application:
if expected_raw_mozconfig == current_raw_mozconfig:
return
# There's minor difference, show the suggestion.
self._show_mozconfig_suggestion(expected_raw_mozconfig)
return
warning = MOZCONFIG_MISMATCH_WARNING_TEMPLATE % (
self._default_mozconfig_path(),
current_raw_mozconfig,
expected_raw_mozconfig,
)
print(warning)
if not self.instance.prompt_yesno("Do you want to overwrite the config?"):
return
self._write_default_mozconfig(expected_raw_mozconfig)
self._output_mozconfig(application, mozconfig_builder)
def _output_mozconfig(self, application, mozconfig_builder):
# Like 'generate_browser_mozconfig' or 'generate_mobile_android_mozconfig'.
@@ -457,26 +392,22 @@ class Bootstrapper(object):
mozconfig_builder.append(additional_mozconfig)
raw_mozconfig = mozconfig_builder.generate()
current_mozconfig_info = MozbuildObject.get_base_mozconfig_info(
self.mach_context.topdir, None, ""
)
current_mozconfig_path = current_mozconfig_info["mozconfig"]["path"]
if current_mozconfig_path:
# mozconfig file exists
if Path.samefile(
Path(current_mozconfig_path), self._default_mozconfig_path()
):
# This mozconfig file may be created by bootstrap.
self._check_default_mozconfig_mismatch(
current_mozconfig_info, application, raw_mozconfig
if raw_mozconfig:
mozconfig_path = find_mozconfig(Path(self.mach_context.topdir))
if not mozconfig_path:
# No mozconfig file exists yet
mozconfig_path = Path(self.mach_context.topdir) / "mozconfig"
with open(mozconfig_path, "w") as mozconfig_file:
mozconfig_file.write(raw_mozconfig)
print(
f'Your requested configuration has been written to "{mozconfig_path}".'
)
elif raw_mozconfig:
# The mozconfig file is created by user.
self._show_mozconfig_suggestion(raw_mozconfig)
elif raw_mozconfig:
# No mozconfig file exists yet
self._write_default_mozconfig(raw_mozconfig)
else:
suggestion = MOZCONFIG_SUGGESTION_TEMPLATE % (
mozconfig_path,
raw_mozconfig,
)
print(suggestion, end="")
def _validate_python_environment(self, topsrcdir):
valid = True

View File

@@ -281,7 +281,7 @@ class MozbuildObject(ProcessExecutionMixin):
@staticmethod
@memoize
def get_base_mozconfig_info(topsrcdir, path, env_mozconfig):
def get_mozconfig_and_target(topsrcdir, path, env_mozconfig):
# env_mozconfig is only useful for unittests, which change the value of
# the environment variable, which has an impact on autodetection (when
# path is MozconfigLoader.AUTODETECT), and memoization wouldn't account
@@ -321,7 +321,7 @@ class MozbuildObject(ProcessExecutionMixin):
sandbox = ReducedConfigureSandbox(
{},
environ=env,
argv=["mach"],
argv=["mach", "--help"],
logger=logger,
)
base_dir = os.path.join(topsrcdir, "build", "moz.configure")
@@ -329,21 +329,17 @@ class MozbuildObject(ProcessExecutionMixin):
sandbox.include_file(os.path.join(base_dir, "init.configure"))
# Force mozconfig options injection before getting the target.
sandbox._value_for(sandbox["mozconfig_options"])
return {
"mozconfig": sandbox._value_for(sandbox["mozconfig"]),
"target": sandbox._value_for(sandbox["real_target"]),
"project": sandbox._value_for(sandbox._options["project"]),
"artifact-builds": sandbox._value_for(
sandbox._options["artifact-builds"]
),
}
return (
sandbox._value_for(sandbox["mozconfig"]),
sandbox._value_for(sandbox["real_target"]),
)
except SystemExit:
print(out.getvalue())
raise
@property
def base_mozconfig_info(self):
return self.get_base_mozconfig_info(
def mozconfig_and_target(self):
return self.get_mozconfig_and_target(
self.topsrcdir, self._mozconfig, os.environ.get("MOZCONFIG")
)
@@ -353,7 +349,7 @@ class MozbuildObject(ProcessExecutionMixin):
This a dict as returned by MozconfigLoader.read_mozconfig()
"""
return self.base_mozconfig_info["mozconfig"]
return self.mozconfig_and_target[0]
@property
def config_environment(self):
@@ -573,7 +569,7 @@ class MozbuildObject(ProcessExecutionMixin):
return path
def resolve_config_guess(self):
return self.base_mozconfig_info["target"].alias
return self.mozconfig_and_target[1].alias
def notify(self, msg):
"""Show a desktop notification with the supplied message