| """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), |
| ] |
| |