def __init__(self, use_flags=None, board=None, host=False, libdir=None, incremental=True, verbose=False, enable_tests=False, cache_dir=None, jobs=None, platform_subdir=None): self.board = board self.host = host self.incremental = incremental self.jobs = jobs self.verbose = verbose self.platform_subdir = platform_subdir if use_flags is not None: self.use_flags = use_flags else: self.use_flags = portage_util.GetBoardUseFlags(self.board) if enable_tests: self.use_flags.add('test') if self.host: self.sysroot = '/' else: board_vars = self.get_portageq_envvars(['SYSROOT'], board=board) self.sysroot = board_vars['SYSROOT'] if libdir: self.libdir = libdir else: self.libdir = '/usr/lib' if cache_dir: self.cache_dir = cache_dir else: self.cache_dir = os.path.join( self.sysroot, 'var/cache/portage/chromeos-base/platform2') self.libbase_ver = os.environ.get('BASE_VER', '') if not self.libbase_ver: # If BASE_VER variable not set, read the content of # $SYSROOT/usr/share/libchrome/BASE_VER # file which contains the default libchrome revision number. base_ver_file = os.path.join(self.sysroot, 'usr/share/libchrome/BASE_VER') try: self.libbase_ver = osutils.ReadFile(base_ver_file).strip() except FileNotFoundError: # Software not depending on libchrome still uses platform2.py, Instead # of asserting here. Provide a human readable bad value that is not # supposed to be used. self.libbase_ver = 'NOT-INSTALLED'
def __init__(self, use_flags=None, board=None, host=False, libdir=None, incremental=True, verbose=False, enable_tests=False, cache_dir=None, jobs=None, platform_subdir=None): self.board = board self.host = host self.incremental = incremental self.jobs = jobs self.verbose = verbose self.platform_subdir = platform_subdir if use_flags is not None: self.use_flags = use_flags else: self.use_flags = portage_util.GetBoardUseFlags(self.board) if enable_tests: self.use_flags.add('test') if self.host: self.sysroot = '/' self.pkgconfig = 'pkg-config' else: board_vars = self.get_portageq_envvars(['SYSROOT', 'PKG_CONFIG'], board=board) self.sysroot = board_vars['SYSROOT'] self.pkgconfig = board_vars['PKG_CONFIG'] if libdir: self.libdir = libdir else: self.libdir = '/usr/lib' if cache_dir: self.cache_dir = cache_dir else: self.cache_dir = os.path.join( self.sysroot, 'var/cache/portage/chromeos-base/platform2') self.libbase_ver = os.environ.get('BASE_VER', '') if not self.libbase_ver: # If BASE_VER variable not set, read the content of common_mk/BASE_VER # file which contains the default libchrome revision number. base_ver_file = os.path.join(self.get_src_dir(), 'BASE_VER') self.libbase_ver = osutils.ReadFile(base_ver_file).strip() assert self.libbase_ver
def HasUseFlag(self, board, use_flag): """Return the state of a USE flag for a board as a boolean.""" return use_flag in portage_util.GetBoardUseFlags(board)
def GenerateTestPayloads(target_image_path, archive_dir, full=False, delta=False, stateful=False, dlc=False): """Generates the payloads for hw testing. Args: target_image_path (str): The path to the image to generate payloads to. archive_dir (str): Where to store payloads we generated. full (bool): Generate full payloads. delta (bool): Generate delta payloads. stateful (bool): Generate stateful payload. dlc (bool): Generate dummy-dlc payload if available. Returns: list[str] - The list of payloads that were generated. """ real_target = os.path.realpath(target_image_path) # The path to the target should look something like this: # .../link/R37-5952.0.2014_06_12_2302-a1/chromiumos_test_image.bin board, os_version = real_target.split('/')[-3:-1] prefix = 'chromeos' suffix = 'dev.bin' generated = [] if full: # Names for full payloads look something like this: # chromeos_R37-5952.0.2014_06_12_2302-a1_link_full_dev.bin name = '_'.join([prefix, os_version, board, 'full', suffix]) payload_path = os.path.join(archive_dir, name) paygen_payload_lib.GenerateUpdatePayload(target_image_path, payload_path) generated.append(payload_path) if delta: # Names for delta payloads look something like this: # chromeos_R37-5952.0.2014_06_12_2302-a1_R37- # 5952.0.2014_06_12_2302-a1_link_delta_dev.bin name = '_'.join( [prefix, os_version, os_version, board, 'delta', suffix]) payload_path = os.path.join(archive_dir, name) paygen_payload_lib.GenerateUpdatePayload(target_image_path, payload_path, src_image=target_image_path) generated.append(payload_path) if dlc and 'dlc_test' in portage_util.GetBoardUseFlags(board): dlc_prefix = 'dlc' dlc_id = 'dummy-dlc' dlc_package = 'package' dummy_dlc_image = os.path.join(os.path.dirname(target_image_path), dlc_prefix, dlc_id, dlc_package, 'dlc.img') if full: # Names for full dummy-dlc payloads look something like this: # dlc_dummy-dlc_package_R37-5952.0.2014_06_12_2302-a1_link_full_dev.bin name = '_'.join([ dlc_prefix, dlc_id, dlc_package, os_version, board, 'full', suffix ]) payload_path = os.path.join(archive_dir, name) paygen_payload_lib.GenerateUpdatePayload(dummy_dlc_image, payload_path) generated.append(payload_path) if delta: # Names for delta payloads look something like this: # dlc_dummy-dlc_package_R37-5952.0.2014_06_12_2302-a1_R37- # 5952.0.2014_06_12_2302-a1_link_delta_dev.bin name = '_'.join([ dlc_prefix, dlc_id, dlc_package, os_version, os_version, board, 'delta', suffix ]) payload_path = os.path.join(archive_dir, name) paygen_payload_lib.GenerateUpdatePayload(dummy_dlc_image, payload_path, src_image=dummy_dlc_image) generated.append(payload_path) if stateful: generated.append( paygen_stateful_payload_lib.GenerateStatefulPayload( target_image_path, archive_dir)) return generated