Bug 1618033 - Remove now-unused mozharness mobile_l10n.py - which was used for single-locale l10n. r=aki

Differential Revision: https://phabricator.services.mozilla.com/D64222
This commit is contained in:
Justin Wood 2020-05-18 14:34:52 +00:00
Родитель 4629d5f139
Коммит 5c6a61f5ac
3 изменённых файлов: 0 добавлений и 305 удалений

Просмотреть файл

@ -1,7 +0,0 @@
mobile_l10n module
==================
.. automodule:: mobile_l10n
:members:
:undoc-members:
:show-inheritance:

Просмотреть файл

@ -10,7 +10,6 @@ scripts
desktop_unittest.rst
fx_desktop_build.rst
marionette.rst
mobile_l10n.rst
mobile_partner_repack.rst
multil10n.rst
talos_script.rst

Просмотреть файл

@ -1,297 +0,0 @@
#!/usr/bin/env python
# ***** BEGIN LICENSE BLOCK *****
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at http://mozilla.org/MPL/2.0/.
# ***** END LICENSE BLOCK *****
"""mobile_l10n.py
This currently supports nightly and release single locale repacks for
Android. This also creates nightly updates.
"""
import glob
import os
import re
import sys
try:
import simplejson as json
assert json
except ImportError:
import json
# load modules from parent dir
sys.path.insert(1, os.path.dirname(sys.path[0])) # noqa
from mozharness.base.errors import MakefileErrorList
from mozharness.base.log import OutputParser
from mozharness.mozilla.automation import AutomationMixin
from mozharness.mozilla.tooltool import TooltoolMixin
from mozharness.base.vcs.vcsbase import MercurialScript
from mozharness.mozilla.l10n.locales import LocalesMixin
from mozharness.mozilla.secrets import SecretsMixin
# MobileSingleLocale {{{1
class MobileSingleLocale(LocalesMixin, TooltoolMixin, AutomationMixin,
MercurialScript, SecretsMixin):
config_options = [[
['--locale', ],
{"action": "extend",
"dest": "locales",
"type": "string",
"help": "Specify the locale(s) to sign and update"
}
], [
['--tag-override', ],
{"action": "store",
"dest": "tag_override",
"type": "string",
"help": "Override the tags set for all repos"
}
]]
def __init__(self, require_config_file=True):
buildscript_kwargs = {
'all_actions': [
"get-secrets",
"clone-locales",
"list-locales",
"setup",
"repack",
"upload-repacks",
"summary",
],
'config': {
"hg_l10n_base": "https://hg.mozilla.org/l10n-central",
"log_name": "single_locale",
},
}
LocalesMixin.__init__(self)
MercurialScript.__init__(
self,
config_options=self.config_options,
require_config_file=require_config_file,
**buildscript_kwargs
)
self.base_package_name = None
self.repack_env = None
self.upload_env = None
self.upload_urls = {}
# Helper methods {{{2
def query_repack_env(self):
if self.repack_env:
return self.repack_env
c = self.config
repack_env = self.query_env(partial_env=c.get("repack_env"))
if self.query_is_nightly():
# we might set update_channel explicitly
if c.get('update_channel'):
update_channel = c['update_channel']
else: # Let's just give the generic channel based on branch.
update_channel = "nightly-%s" % (c['branch'],)
if isinstance(update_channel, unicode):
update_channel = update_channel.encode("utf-8")
repack_env["MOZ_UPDATE_CHANNEL"] = update_channel
self.info("Update channel set to: {}".format(repack_env["MOZ_UPDATE_CHANNEL"]))
self.repack_env = repack_env
return self.repack_env
def query_l10n_env(self):
return self.query_env()
def query_upload_env(self):
if self.upload_env:
return self.upload_env
upload_env = self.query_env(partial_env=self.config.get("upload_env"),
replace_dict=dict(self.config))
self.upload_env = upload_env
return self.upload_env
def _query_make_variable(self, variable, make_args=None):
make = self.query_exe('make')
env = self.query_repack_env()
dirs = self.query_abs_dirs()
if make_args is None:
make_args = []
# TODO error checking
output = self.get_output_from_command(
[make, "echo-variable-%s" % variable] + make_args,
cwd=dirs['abs_locales_dir'], silent=True,
env=env
)
parser = OutputParser(config=self.config, log_obj=self.log_obj,
error_list=MakefileErrorList)
parser.add_lines(output)
return output.strip()
def query_base_package_name(self):
"""Get the package name from the objdir.
Only valid after setup is run.
"""
if self.base_package_name:
return self.base_package_name
self.base_package_name = self._query_make_variable(
"PACKAGE",
make_args=['AB_CD=%(locale)s']
)
return self.base_package_name
def query_upload_url(self, locale):
if locale in self.upload_urls:
return self.upload_urls[locale]
else:
self.error("Can't determine the upload url for %s!" % locale)
def query_abs_dirs(self):
if self.abs_dirs:
return self.abs_dirs
abs_dirs = super(MobileSingleLocale, self).query_abs_dirs()
dirs = {
'build_dir': os.path.join(abs_dirs['base_work_dir'], 'build'),
}
abs_dirs.update(dirs)
self.abs_dirs = abs_dirs
return self.abs_dirs
# Actions {{{2
def clone_locales(self):
self.pull_locale_source()
# list_locales() is defined in LocalesMixin.
def _setup_configure(self):
dirs = self.query_abs_dirs()
env = self.query_repack_env()
mach = os.path.join(dirs['abs_src_dir'], 'mach')
if self.run_command([sys.executable, mach, 'configure'],
cwd=dirs['abs_src_dir'],
env=env,
error_list=MakefileErrorList):
self.fatal("Configure failed!")
# Invoke the build system to get nsinstall and buildid.h.
targets = [
'config/export',
'buildid.h',
]
self.run_command([sys.executable, mach, 'build'] + targets,
cwd=dirs['abs_src_dir'],
env=env,
error_list=MakefileErrorList,
halt_on_failure=True)
def setup(self):
c = self.config
dirs = self.query_abs_dirs()
mozconfig_path = os.path.join(dirs['abs_src_dir'], '.mozconfig')
self.copyfile(os.path.join(dirs['abs_work_dir'], c['mozconfig']),
mozconfig_path)
# TODO stop using cat
cat = self.query_exe("cat")
make = self.query_exe("make")
self.run_command([cat, mozconfig_path])
env = self.query_repack_env()
if self.config.get("tooltool_config"):
self.tooltool_fetch(
self.config['tooltool_config']['manifest'],
output_dir=self.config['tooltool_config']['output_dir'] % self.query_abs_dirs(),
)
self._setup_configure()
self.run_command([make, "wget-en-US"],
cwd=dirs['abs_locales_dir'],
env=env,
error_list=MakefileErrorList,
halt_on_failure=True)
self.run_command([make, "unpack"],
cwd=dirs['abs_locales_dir'],
env=env,
error_list=MakefileErrorList,
halt_on_failure=True)
def repack(self):
# TODO per-locale logs and reporting.
dirs = self.query_abs_dirs()
locales = self.query_locales()
make = self.query_exe("make")
repack_env = self.query_repack_env()
success_count = total_count = 0
for locale in locales:
total_count += 1
if self.run_command([make, "installers-%s" % locale],
cwd=dirs['abs_locales_dir'],
env=repack_env,
error_list=MakefileErrorList,
halt_on_failure=False):
self.add_failure(locale, message="%s failed in make installers-%s!" %
(locale, locale))
continue
success_count += 1
self.summarize_success_count(success_count, total_count,
message="Repacked %d of %d binaries successfully.")
def upload_repacks(self):
dirs = self.query_abs_dirs()
locales = self.query_locales()
make = self.query_exe("make")
base_package_name = self.query_base_package_name()
upload_env = self.query_upload_env()
success_count = total_count = 0
for locale in locales:
if self.query_failure(locale):
self.warning("Skipping previously failed locale %s." % locale)
continue
total_count += 1
output = self.get_output_from_command(
# Ugly hack to avoid |make upload| stderr from showing up
# as get_output_from_command errors
"%s upload AB_CD=%s 2>&1" % (make, locale),
cwd=dirs['abs_locales_dir'],
env=upload_env,
silent=True
)
parser = OutputParser(config=self.config, log_obj=self.log_obj,
error_list=MakefileErrorList)
parser.add_lines(output)
if parser.num_errors:
self.add_failure(locale, message="%s failed in make upload!" % (locale))
continue
package_name = base_package_name % {'locale': locale}
r = re.compile("(http.*%s)" % package_name)
for line in output.splitlines():
m = r.match(line)
if m:
self.upload_urls[locale] = m.groups()[0]
self.info("Found upload url %s" % self.upload_urls[locale])
# XXX Move the files to a SIMPLE_NAME format until we can enable
# Simple names in the build system
if self.config.get("simple_name_move"):
# Assume an UPLOAD PATH
upload_target = self.config["upload_env"]["UPLOAD_PATH"]
target_path = os.path.join(upload_target, locale)
self.mkdir_p(target_path)
glob_name = "*.%s.android-arm.*" % locale
for f in glob.glob(os.path.join(upload_target, glob_name)):
glob_extension = f[f.rfind('.'):]
self.move(os.path.join(f),
os.path.join(target_path, "target%s" % glob_extension))
self.log("Converted uploads for %s to simple names" % locale)
success_count += 1
self.summarize_success_count(success_count, total_count,
message="Make Upload for %d of %d locales successful.")
# main {{{1
if __name__ == '__main__':
single_locale = MobileSingleLocale()
single_locale.run_and_exit()