82 lines
2.9 KiB
Python
82 lines
2.9 KiB
Python
# 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 https://mozilla.org/MPL/2.0/.
|
|
|
|
from collections import defaultdict
|
|
|
|
from taskgraph.transforms.base import TransformSequence
|
|
from taskgraph.util.taskcluster import get_artifact_prefix
|
|
|
|
transforms = TransformSequence()
|
|
|
|
|
|
def _extract_locale_from_langpack_artifact_path(langpack_artifact_path):
|
|
return langpack_artifact_path.split("/")[2]
|
|
|
|
|
|
@transforms.add
|
|
def repackage_rpm(config, tasks):
|
|
kind_deps = config.kind_dependencies_tasks
|
|
l10n_signing_kind = (
|
|
"devedition-l10n-signing"
|
|
if config.params["release_product"] == "devedition"
|
|
else "shippable-l10n-signing"
|
|
)
|
|
# langpacks are platform independent, so we just pick one.
|
|
l10n_signing_build_platform = (
|
|
"linux64-devedition"
|
|
if config.params["release_product"] == "devedition"
|
|
else "linux64-shippable"
|
|
)
|
|
for task in tasks:
|
|
# depend on the shippable l10n tasks so we can use the xpi artifacts
|
|
# in the creation of a unified RPM package.
|
|
l10n_signing_deps = {
|
|
dep: dep
|
|
for dep in kind_deps
|
|
if all(
|
|
(
|
|
kind_deps[dep].kind == l10n_signing_kind,
|
|
kind_deps[dep].attributes.get("build_platform")
|
|
== l10n_signing_build_platform,
|
|
)
|
|
)
|
|
}
|
|
fetches = defaultdict(
|
|
list,
|
|
**{
|
|
"build-signing": [
|
|
{
|
|
"artifact": "target.tar.xz",
|
|
"extract": False,
|
|
"dest": "/builds/worker/fetches",
|
|
}
|
|
]
|
|
},
|
|
)
|
|
for l10n_signing_dep in l10n_signing_deps:
|
|
langpack_artifact_paths = [
|
|
release_artifact
|
|
for release_artifact in kind_deps[l10n_signing_dep].attributes[
|
|
"release_artifacts"
|
|
]
|
|
if "langpack" in release_artifact
|
|
]
|
|
for langpack_artifact_path in langpack_artifact_paths:
|
|
locale = _extract_locale_from_langpack_artifact_path(
|
|
langpack_artifact_path
|
|
)
|
|
prefix = get_artifact_prefix(kind_deps[l10n_signing_dep])
|
|
langpack_artifact_path_no_prefix = langpack_artifact_path[
|
|
len(prefix) :
|
|
].lstrip("/")
|
|
fetches[l10n_signing_dep].append(
|
|
{
|
|
"artifact": langpack_artifact_path_no_prefix,
|
|
"extract": False,
|
|
"dest": f"/builds/worker/fetches/{locale}",
|
|
}
|
|
)
|
|
task["dependencies"] = {**task["dependencies"], **l10n_signing_deps}
|
|
task["fetches"] = dict(fetches)
|
|
yield task
|