blob: 363e5dfcf5248df5e72919b46dcb8c48e5122260 [file] [log] [blame] [edit]
"""Recipe for building Combined SDK, bootloader, kernel."""
from helpers import branch_utils
from slave import base_recipe
from slave.step import combined_sdk_clean
from slave.step import combined_sdk_compile
from slave.step import py_env_setup_step
FAKE_WORK_DIR = 'out'
FAKE_PREBUILT_SUBDIR = (
FAKE_WORK_DIR + '/vendor/{vendor}/{product}/prebuilt')
OSS_SDK_DIR = '/tmp/oss'
OSS_SDK_RELEASE_SCRIPT = './sdk/build_scripts/release_oss.sh'
BUILD_LOGS_DIR = 'sdk/build_scripts/build_log/log'
MARVELL_PREBUILT_FILE = 'marvell-prebuilt.tgz'
MARVELL = {
'name': 'marvell',
'build_script': 'sdk/build_scripts/build_all.sh',
'fake_work_dir': FAKE_WORK_DIR,
'fake_prebuilt_dir': FAKE_PREBUILT_SUBDIR,
'prebuilt_file': MARVELL_PREBUILT_FILE,
'include_product_param': False,
'requirements_project': 'marvell/sdk/amp',
'requirements_path': 'requirements3.txt',
'oss_sdk_dir': OSS_SDK_DIR,
'oss_sdk_release_script': OSS_SDK_RELEASE_SCRIPT,
'build_logs_dir': BUILD_LOGS_DIR,
'purge_dirs': [
MARVELL_PREBUILT_FILE,
OSS_SDK_DIR,
FAKE_WORK_DIR,
]
}
AMLOGIC_PREBUILT_FILE = 'amlogic-prebuilt.tgz'
AMLOGIC = {
'name': 'amlogic',
'build_script': 'sdk/build_scripts/build_all.sh',
'fake_work_dir': FAKE_WORK_DIR,
'fake_prebuilt_dir': FAKE_PREBUILT_SUBDIR,
'prebuilt_file': AMLOGIC_PREBUILT_FILE,
'include_product_param': True,
'requirements_project': 'amlogic/sdk',
'requirements_path': 'requirements3.txt',
'oss_sdk_dir': OSS_SDK_DIR,
'oss_sdk_release_script': OSS_SDK_RELEASE_SCRIPT,
'build_logs_dir': BUILD_LOGS_DIR,
'purge_dirs': [
AMLOGIC_PREBUILT_FILE,
OSS_SDK_DIR,
FAKE_WORK_DIR,
]
}
AMLOGIC_CAMERA_MAIN = {
'name': 'amlogic',
'build_script': 'sdk/amlogic/sdk/build_scripts/build_all.sh',
'fake_work_dir': FAKE_WORK_DIR,
'fake_prebuilt_dir': FAKE_PREBUILT_SUBDIR,
'prebuilt_file': AMLOGIC_PREBUILT_FILE,
'include_product_param': True,
'requirements_project': ('amlogic/sdk', 'camera-main'),
'requirements_path': 'requirements3.txt',
'oss_sdk_dir': OSS_SDK_DIR,
'oss_sdk_release_script': 'sdk/amlogic/sdk/build_scripts/release_oss.sh',
'build_logs_dir': BUILD_LOGS_DIR,
'purge_dirs': [
AMLOGIC_PREBUILT_FILE,
OSS_SDK_DIR,
FAKE_WORK_DIR,
]
}
QUALCOMM_PREBUILT_FILE = 'qualcomm-prebuilt.tgz'
QUALCOMM = {
'name': 'qualcomm',
'build_script': 'sdk/build_scripts/build_all.sh',
'fake_work_dir': FAKE_WORK_DIR,
'fake_prebuilt_dir': FAKE_PREBUILT_SUBDIR,
'prebuilt_file': QUALCOMM_PREBUILT_FILE,
'include_product_param': True,
'requirements_project': 'qualcomm_sirocco/sdk',
'requirements_path': 'requirements3.txt',
'oss_sdk_dir': OSS_SDK_DIR,
'oss_sdk_release_script': OSS_SDK_RELEASE_SCRIPT,
'build_logs_dir': BUILD_LOGS_DIR,
'purge_dirs': [
QUALCOMM_PREBUILT_FILE,
OSS_SDK_DIR,
FAKE_WORK_DIR,
'qualcomm',
'u-boot',
]
}
MEDIATEK_PREBUILT_FILE = 'mediatek-prebuilt.tgz'
MEDIATEK_WORK_DIR = 'out_sdk'
MEDIATEK = {
'name': 'mediatek',
'build_script': 'sdk/build_scripts/build_all.sh',
'fake_work_dir': MEDIATEK_WORK_DIR,
'fake_prebuilt_dir': FAKE_PREBUILT_SUBDIR,
'prebuilt_file': MEDIATEK_PREBUILT_FILE,
'include_product_param': True,
'requirements_project': 'kirkwood/alps/device/google/kirkwood',
'requirements_path': 'sdk/requirements.txt',
'oss_sdk_dir': OSS_SDK_DIR,
'oss_sdk_release_script': OSS_SDK_RELEASE_SCRIPT,
'build_logs_dir': BUILD_LOGS_DIR,
'purge_dirs': [
MEDIATEK_PREBUILT_FILE,
OSS_SDK_DIR,
MEDIATEK_WORK_DIR,
'out',
]
}
BUILD_CONFIGS = {
'combined-sdk-kernel-bootloader': {
'vendor_config': MARVELL,
'product': 'salami',
},
'combined-sdk-kernel-bootloader-amlogic-biggie': {
'vendor_config': AMLOGIC,
'product': 'biggie',
},
'combined-sdk-kernel-bootloader-amlogic-bla4': {
'vendor_config': AMLOGIC_CAMERA_MAIN,
'product': 'bla4',
},
'combined-sdk-kernel-bootloader-amlogic-2rs4': {
'vendor_config': AMLOGIC_CAMERA_MAIN,
'product': '2rs4',
},
'combined-sdk-kernel-bootloader-amlogic-xua4': {
'vendor_config': AMLOGIC_CAMERA_MAIN,
'product': 'xua4',
},
'combined-sdk-kernel-bootloader-amlogic-boreal': {
'vendor_config': AMLOGIC,
'product': 'boreal',
},
'combined-sdk-kernel-bootloader-amlogic-elaine': {
'vendor_config': AMLOGIC,
'product': 'elaine',
},
'combined-sdk-kernel-bootloader-amlogic-estelle': {
'vendor_config': AMLOGIC,
'product': 'estelle',
},
'combined-sdk-kernel-bootloader-amlogic-gq': {
'vendor_config': AMLOGIC,
'product': 'gq',
},
'combined-sdk-kernel-bootloader-amlogic-korlan': {
'vendor_config': AMLOGIC,
'product': 'korlan',
},
'combined-sdk-kernel-bootloader-amlogic-lumia': {
'vendor_config': AMLOGIC,
'product': 'lumia',
},
'combined-sdk-kernel-bootloader-amlogic-swift': {
'vendor_config': AMLOGIC,
'product': 'swift',
},
'combined-sdk-kernel-bootloader-amlogic-newman': {
'vendor_config': AMLOGIC,
'product': 'newman',
},
'combined-sdk-kernel-bootloader-amlogic-nq': {
'vendor_config': AMLOGIC,
'product': 'nq',
},
'combined-sdk-kernel-bootloader-amlogic-sabrina': {
'vendor_config': AMLOGIC,
'product': 'sabrina',
},
'combined-sdk-kernel-bootloader-amlogic-spencer': {
'vendor_config': AMLOGIC,
'product': 'spencer',
},
'combined-sdk-kernel-bootloader-amlogic-a049': {
'vendor_config': AMLOGIC,
'product': 'a049',
},
'combined-sdk-kernel-bootloader-amlogic-venus': {
'vendor_config': AMLOGIC,
'product': 'venus',
},
'combined-sdk-kernel-bootloader-qualcomm-brezza': {
'vendor_config': QUALCOMM,
'product': 'brezza',
},
'combined-sdk-kernel-bootloader-qualcomm-sirocco': {
'vendor_config': QUALCOMM,
'product': 'sirocco',
},
'combined-sdk-kernel-bootloader-mediatek-kirkwood': {
'vendor_config': MEDIATEK,
'product': 'kirkwood',
},
'combined-sdk-kernel-bootloader-mediatek-kirkwood-user': {
'vendor_config': MEDIATEK,
'product': 'kirkwood-user',
},
}
def GetValidBuildNames():
return list(BUILD_CONFIGS.keys())
def CreateRecipe(build_name: str, **kwargs):
"""Builds a recipe object."""
return CombinedSdkRecipe(build_name, BUILD_CONFIGS[build_name], **kwargs)
class CombinedSdkRecipe(base_recipe.BaseRecipe):
"""Recipe to run an ota build."""
def __init__(self, build_name, build_config, **kwargs):
base_recipe.BaseRecipe.__init__(self, **kwargs)
self._build_name = build_name
self._build_config = build_config
def _oss_run_condition(self):
if self.build_system != 'catabuilder':
return False
if branch_utils.is_release_branch(self._manifest_branch):
return True
return False
def get_setup_steps(self):
steps = []
purge_dirs = self._build_config['vendor_config']['purge_dirs']
steps.append(combined_sdk_clean.CleanPrebuiltsSDKStep(
purge_dirs, **self._step_kwargs))
steps += super(CombinedSdkRecipe, self).get_setup_steps()
return steps
def get_steps(self):
vendor_config = self._build_config['vendor_config']
sdk_python_packages = 'team-sdk/python_packages'
steps = [
combined_sdk_clean.DirtyCheckSDKStep(
halt_on_failure=False, **self._step_kwargs),
combined_sdk_clean.CleanCheckoutSDKStep(**self._step_kwargs),
combined_sdk_clean.DirtyCheckSDKStep(
halt_on_failure=True, **self._step_kwargs),
py_env_setup_step.PyEnvSetupStep(
local_packages_dir=sdk_python_packages,
py3=True,
requirements_path=vendor_config['requirements_path'],
requirements_project=vendor_config['requirements_project'],
**self._step_kwargs),
combined_sdk_compile.CompileSDKStep(
self._build_config, **self._step_kwargs),
combined_sdk_compile.CreateTarStep(
self._build_config, **self._step_kwargs),
]
if self._oss_run_condition():
steps.append(combined_sdk_compile.OssCreateTarStep(
self._build_config, **self._step_kwargs))
steps += [
combined_sdk_compile.CreateLogDirStep(
self._build_config, **self._step_kwargs),
combined_sdk_compile.ArchiveArtifactsStep(
self._build_config, **self._step_kwargs),
]
return steps
def get_steps_for_ota_builder(self):
vendor_config = self._build_config['vendor_config']
sdk_python_packages = 'team-sdk/python_packages'
return [
py_env_setup_step.PyEnvSetupStep(
local_packages_dir=sdk_python_packages,
py3=True,
requirements_path=vendor_config['requirements_path'],
requirements_project=vendor_config['requirements_project'],
**self._step_kwargs),
combined_sdk_compile.CompileSDKStep(
self._build_config, **self._step_kwargs),
combined_sdk_compile.CopySDKStep(self._build_config,
**self._step_kwargs),
combined_sdk_compile.CreateTarStep(
self._build_config, **self._step_kwargs),
combined_sdk_compile.CreateLogDirStep(
self._build_config, **self._step_kwargs),
combined_sdk_compile.ArchiveArtifactsStep(
self._build_config, **self._step_kwargs),
]