Bug 1330421 - Update artifact code to populate generated test support files from the tests archive.
This updates the client artifact code to locate test support files in the
common test archive and populate the objdir with these files appropriately.
MozReview-Commit-ID: GuXjwUtsl
--- a/Makefile.in
+++ b/Makefile.in
@@ -185,16 +185,22 @@ tup:
# js as standalone because automated builds are building nspr separately and
# that would remove the resulting files.
# Eventually, a standalone js build would just be able to build nspr itself,
# removing the need for the former.
ifdef JS_STANDALONE
NO_REMOVE=1
endif
+# For an artifact build, _tests will already be partly populated, so run
+# this install manifest with NO_REMOVE set in this case.
+ifdef MOZ_ARTIFACT_BUILDS
+install-_tests: NO_REMOVE=1
+endif
+
.PHONY: $(addprefix install-,$(subst /,_,$(install_manifests)))
$(addprefix install-,$(install_manifests)): install-%: $(install_manifest_depends)
ifneq (,$(filter FasterMake+RecursiveMake,$(BUILD_BACKENDS)))
@# If we're using the hybrid FasterMake/RecursiveMake backend, we want
@# to ensure the FasterMake end doesn't have install manifests for the
@# same directory, because that would blow up
$(if $(wildcard _build_manifests/install/$(subst /,_,$*)),$(if $(wildcard faster/install_$(subst /,_,$*)*),$(error FasterMake and RecursiveMake ends of the hybrid build system want to handle $*)))
endif
--- a/python/mozbuild/mozbuild/artifacts.py
+++ b/python/mozbuild/mozbuild/artifacts.py
@@ -58,16 +58,17 @@ import subprocess
import tarfile
import tempfile
import urlparse
import zipfile
import pylru
import taskcluster
+from mozbuild.action.test_archive import OBJDIR_TEST_FILES
from mozbuild.util import (
ensureParentDir,
FileAvoidWrite,
)
import mozinstall
from mozpack.files import (
JarFinder,
TarFinder,
@@ -190,16 +191,27 @@ class ArtifactJob(object):
destpath = mozpath.relpath(filename, src_prefix)
destpath = mozpath.join(dest_prefix, destpath)
self.log(logging.INFO, 'artifact',
{'destpath': destpath},
'Adding {destpath} to processed archive')
mode = entry['external_attr'] >> 16
writer.add(destpath.encode('utf-8'), reader[filename], mode=mode)
added_entry = True
+ for files_entry in OBJDIR_TEST_FILES.values():
+ origin_pattern = files_entry['pattern']
+ leaf_filename = filename
+ if 'dest' in files_entry:
+ dest = files_entry['dest']
+ origin_pattern = mozpath.join(dest, origin_pattern)
+ leaf_filename = filename[len(dest) + 1:]
+ if mozpath.match(filename, origin_pattern):
+ destpath = mozpath.join('..', files_entry['base'], leaf_filename)
+ mode = entry['external_attr'] >> 16
+ writer.add(destpath.encode('utf-8'), reader[filename], mode=mode)
if not added_entry:
raise ValueError('Archive format changed! No pattern from "{patterns}"'
'matched an archive path.'.format(
patterns=LinuxArtifactJob.test_artifact_patterns))
def process_symbols_archive(self, filename, processed_filename):
with JarWriter(file=processed_filename, optimize=False, compress_level=5) as writer: