# 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/. """ Defines artifacts to sign before repackage. """ from __future__ import absolute_import, print_function, unicode_literals from taskgraph.util.taskcluster import get_artifact_path def generate_specifications_of_artifacts_to_sign( task, keep_locale_template=True, kind=None ): build_platform = task.attributes.get('build_platform') is_nightly = task.attributes.get('nightly') if kind == 'release-source-signing': artifacts_specifications = [{ 'artifacts': [ get_artifact_path(task, 'source.tar.xz') ], 'formats': ['gpg'], }] elif 'android' in build_platform: artifacts_specifications = [{ 'artifacts': [ get_artifact_path(task, '{locale}/target.apk'), ], 'formats': ['jar'], }] # XXX: Mars aren't signed here (on any platform) because internals will be # signed at after this stage of the release elif 'macosx' in build_platform: artifacts_specifications = [{ 'artifacts': [get_artifact_path(task, '{locale}/target.dmg')], 'formats': ['macapp', 'widevine'], }] elif 'win' in build_platform: artifacts_specifications = [{ 'artifacts': [ get_artifact_path(task, '{locale}/setup.exe'), ], 'formats': ['sha2signcode'], }, { 'artifacts': [ get_artifact_path(task, '{locale}/target.zip'), ], 'formats': ['sha2signcode', 'widevine'], }] if 'win32' in build_platform and is_nightly: artifacts_specifications[0]['artifacts'] += [ get_artifact_path(task, '{locale}/setup-stub.exe') ] elif 'linux' in build_platform: artifacts_specifications = [{ 'artifacts': [get_artifact_path(task, '{locale}/target.tar.bz2')], 'formats': ['gpg', 'widevine'], }] else: raise Exception("Platform not implemented for signing") if not keep_locale_template: artifacts_specifications = _strip_locale_template(artifacts_specifications) return artifacts_specifications def _strip_locale_template(artifacts_without_locales): for spec in artifacts_without_locales: for index, artifact in enumerate(spec['artifacts']): stripped_artifact = artifact.format(locale='') stripped_artifact = stripped_artifact.replace('//', '/') spec['artifacts'][index] = stripped_artifact return artifacts_without_locales