зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1444534 - Part 1: Allow "locales/en-US" relative paths in localized inputs. r=ted.mielczarek
This cleans up a few things, including simplifying the look of backend.mk by keeping the relsrcdir in MERGE_RELATIVE_FILE similar to the source path in the tree. Before, the locales/ floated around, which is hard to understand but doesn't matter, since it's stripped by MERGE_RELATIVE_FILE. This also tests both relative and topsrcdir-absolute paths. MozReview-Commit-ID: 1v3y9xGiNfL --HG-- rename : python/mozbuild/mozbuild/test/backend/data/localized-generated-files-AB_CD/inner/locales/en-US/localized-input => python/mozbuild/mozbuild/test/backend/data/localized-generated-files-AB_CD/locales/en-US/localized-input extra : rebase_source : 302d7cb638974fc5ec71513f47ce98222c5e3bb6
This commit is contained in:
Родитель
9ff601f55f
Коммит
c9cc551b04
|
@ -539,12 +539,17 @@ class RecursiveMakeBackend(CommonBackend):
|
|||
if obj.inputs:
|
||||
if obj.localized:
|
||||
# Localized generated files can have locale-specific inputs, which are
|
||||
# indicated by paths starting with `en-US/` or containing `/locales/en-US/`.
|
||||
# indicated by paths starting with `en-US/` or containing `locales/en-US/`.
|
||||
def srcpath(p):
|
||||
if '/locales/en-US' in p:
|
||||
e, f = p.split('/locales/en-US/', 1)
|
||||
if 'locales/en-US' in p:
|
||||
# We need an "absolute source path" relative to
|
||||
# topsrcdir, like "/source/path".
|
||||
if not p.startswith('/'):
|
||||
p = '/' + mozpath.relpath(p.full_path, obj.topsrcdir)
|
||||
e, f = p.split('locales/en-US/', 1)
|
||||
assert(f)
|
||||
return '$(call MERGE_RELATIVE_FILE,%s,/locales/%s)' % (f, e)
|
||||
return '$(call MERGE_RELATIVE_FILE,{},{}locales)'.format(
|
||||
f, e if not e.startswith('/') else e[len('/'):])
|
||||
elif p.startswith('en-US/'):
|
||||
e, f = p.split('en-US/', 1)
|
||||
assert(not e)
|
||||
|
|
|
@ -1461,7 +1461,7 @@ VARIABLES = {
|
|||
which provides the locale in use, i.e. ``en-US``.
|
||||
2. The ``inputs`` list may contain paths to files that will be taken from the locale
|
||||
source directory (see ``LOCALIZED_FILES`` for a discussion of the specifics). Paths
|
||||
in ``inputs`` starting with ``en-US/`` or containing ``/locales/en-US/`` are considered
|
||||
in ``inputs`` starting with ``en-US/`` or containing ``locales/en-US/`` are considered
|
||||
localized files.
|
||||
|
||||
To place the generated output file in a specific location, list its objdir path in
|
||||
|
|
|
@ -1188,12 +1188,12 @@ class TreeMetadataEmitter(LoggingMixin):
|
|||
if isinstance(f, SourcePath):
|
||||
if f.startswith('en-US/'):
|
||||
pass
|
||||
elif '/locales/en-US/' in f:
|
||||
elif 'locales/en-US/' in f:
|
||||
pass
|
||||
else:
|
||||
raise SandboxValidationError(
|
||||
'%s paths must start with `en-US/` or '
|
||||
'contain `/locales/en-US/`: %s'
|
||||
'contain `locales/en-US/`: %s'
|
||||
% (var, f,), context)
|
||||
|
||||
if not isinstance(f, ObjDirPath):
|
||||
|
|
|
@ -16,6 +16,17 @@ LOCALIZED_GENERATED_FILES += [ 'bar{AB_rCD}.xyz' ]
|
|||
bar = LOCALIZED_GENERATED_FILES['bar{AB_rCD}.xyz']
|
||||
bar.script = 'generate-foo.py'
|
||||
bar.inputs = [
|
||||
'inner/locales/en-US/localized-input',
|
||||
# Absolute source path.
|
||||
'/inner/locales/en-US/localized-input',
|
||||
'non-localized-input',
|
||||
]
|
||||
|
||||
LOCALIZED_GENERATED_FILES += [ 'zot{AB_rCD}.xyz' ]
|
||||
|
||||
bar = LOCALIZED_GENERATED_FILES['zot{AB_rCD}.xyz']
|
||||
bar.script = 'generate-foo.py'
|
||||
bar.inputs = [
|
||||
# Relative source path.
|
||||
'locales/en-US/localized-input',
|
||||
'non-localized-input',
|
||||
]
|
||||
|
|
|
@ -461,9 +461,15 @@ class TestRecursiveMakeBackend(BackendTester):
|
|||
'include $(topsrcdir)/config/AB_rCD.mk',
|
||||
'GARBAGE += bar$(AB_rCD).xyz',
|
||||
'EXTRA_MDDEPEND_FILES += bar$(AB_rCD).xyz.pp',
|
||||
'bar$(AB_rCD).xyz: %s/generate-foo.py $(call MERGE_RELATIVE_FILE,localized-input,/locales/inner) $(srcdir)/non-localized-input $(if $(IS_LANGUAGE_REPACK),FORCE)' % env.topsrcdir,
|
||||
'bar$(AB_rCD).xyz: %s/generate-foo.py $(call MERGE_RELATIVE_FILE,localized-input,inner/locales) $(srcdir)/non-localized-input $(if $(IS_LANGUAGE_REPACK),FORCE)' % env.topsrcdir,
|
||||
'$(REPORT_BUILD)',
|
||||
'$(call py_action,file_generate,--locale=$(AB_CD) %s/generate-foo.py main bar$(AB_rCD).xyz $(MDDEPDIR)/bar$(AB_rCD).xyz.pp $(call MERGE_RELATIVE_FILE,localized-input,/locales/inner) $(srcdir)/non-localized-input)' % env.topsrcdir,
|
||||
'$(call py_action,file_generate,--locale=$(AB_CD) %s/generate-foo.py main bar$(AB_rCD).xyz $(MDDEPDIR)/bar$(AB_rCD).xyz.pp $(call MERGE_RELATIVE_FILE,localized-input,inner/locales) $(srcdir)/non-localized-input)' % env.topsrcdir,
|
||||
'',
|
||||
'GARBAGE += zot$(AB_rCD).xyz',
|
||||
'EXTRA_MDDEPEND_FILES += zot$(AB_rCD).xyz.pp',
|
||||
'zot$(AB_rCD).xyz: %s/generate-foo.py $(call MERGE_RELATIVE_FILE,localized-input,locales) $(srcdir)/non-localized-input $(if $(IS_LANGUAGE_REPACK),FORCE)' % env.topsrcdir,
|
||||
'$(REPORT_BUILD)',
|
||||
'$(call py_action,file_generate,--locale=$(AB_CD) %s/generate-foo.py main zot$(AB_rCD).xyz $(MDDEPDIR)/zot$(AB_rCD).xyz.pp $(call MERGE_RELATIVE_FILE,localized-input,locales) $(srcdir)/non-localized-input)' % env.topsrcdir,
|
||||
'',
|
||||
]
|
||||
|
||||
|
|
|
@ -1371,10 +1371,10 @@ class TestEmitterBasic(unittest.TestCase):
|
|||
|
||||
def test_localized_files_no_en_us(self):
|
||||
"""Test that LOCALIZED_FILES errors if a path does not start with
|
||||
`en-US/` or contain `/locales/en-US/`."""
|
||||
`en-US/` or contain `locales/en-US/`."""
|
||||
reader = self.reader('localized-files-no-en-us')
|
||||
with self.assertRaisesRegexp(SandboxValidationError,
|
||||
'LOCALIZED_FILES paths must start with `en-US/` or contain `/locales/en-US/`: foo.js'):
|
||||
'LOCALIZED_FILES paths must start with `en-US/` or contain `locales/en-US/`: foo.js'):
|
||||
objs = self.read_topsrcdir(reader)
|
||||
|
||||
def test_localized_pp_files(self):
|
||||
|
|
Загрузка…
Ссылка в новой задаче