Ejemplo n.º 1
0
    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'
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
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