class GenericSecImageBuilder(object):
    def __init__(self, env):
        self.env = env
        self.builderutil = BuilderUtil(env)

    def build(self, target, source, sign_id, config, target_base_dir, chipset,
              sec_image_policy):

        #import pdb; pdb.set_trace()
        self.builderutil.printinfo(
            "sectools_signer_builder: SECTOOLS_DIR = %s" % SECTOOLS_DIR)

        # Issuing sectools command
        cmds = [
            "python",
            os.path.join(SECTOOLS_DIR, "sectools.py"), "secimage", "-i",
            source, "-o", target_base_dir, "-g", sign_id, "-c", config
        ]

        cmds.append(sec_image_policy.cmd_options)

        self.builderutil.printinfo("sectools_signer_builder: %s" %
                                   " ".join(cmds))
        self.builderutil.execcmds(cmds, target=target)

        return self.builderutil.getReturnValueInBuilder(target)
class GenericSecImageBuilder(object):

    def __init__(self, env):
        self.env = env
        self.builderutil = BuilderUtil(env)

    def _generate_config_file(self, src_config, dest_config,
                              image_entry, relocatable):
        config = ConfigParser(src_config)

        image_type_list = config.root.parsegen.get_image_types_list()
        for image_type in image_type_list.get_image_type():
            if image_type.id == "elf_wrapped_mbn":
                #Override relocatable setting
                image_type.ewm_properties.relocatable = relocatable
                if image_entry is not None:
                    #Override image_entry
                    image_type.ewm_properties.image_entry = image_entry

        config.generate(dest_config)

    def build(self,
                target,
                source,
                sign_id,
                config,
                target_base_dir,
                chipset,
                sec_image_policy,
                image_entry,
                relocatable):

        #import pdb; pdb.set_trace()
        self.builderutil.printinfo("sectools_signer_builder: SECTOOLS_DIR = %s" % SECTOOLS_DIR)

        if sign_id == "mba_ewm":
            c_path.create_dir(target_base_dir)
            generated_config = os.path.join(target_base_dir, "generated_config.xml")
            self._generate_config_file(config, generated_config, image_entry, relocatable)
            config_used = generated_config
        else:
            config_used = config

        # Issuing sectools command
        cmds = ["python", os.path.join(SECTOOLS_DIR, "sectools.py"), "secimage", "-i", source,
                "-o", target_base_dir, "-g", sign_id, "-c", config_used]

        cmds.append(sec_image_policy.cmd_options)

        self.builderutil.printinfo("sectools_signer_builder: %s" % " ".join(cmds))
        self.builderutil.execcmds(cmds, target=target)

        return self.builderutil.getReturnValueInBuilder(target)
Ejemplo n.º 3
0
class GenericSecImageBuilder(object):

    def __init__(self, env):
        self.env = env
        self.builderutil = BuilderUtil(env)

    def _generate_config_file(self, src_config, dest_config,
                              image_entry, relocatable):
        config = ConfigParser(src_config)

        image_type_list = config.root.parsegen.get_image_types_list()
        for image_type in image_type_list.get_image_type():
            if image_type.id == "elf_wrapped_mbn":
                #Override relocatable setting
                image_type.ewm_properties.relocatable = relocatable
                if image_entry is not None:
                    #Override image_entry
                    image_type.ewm_properties.image_entry = image_entry

        config.generate(dest_config)

    def build(self,
                target,
                source,
                sign_id,
                config,
                target_base_dir,
                chipset,
                sec_image_policy,
                image_entry,
                relocatable):

        #import pdb; pdb.set_trace()
        self.builderutil.printinfo("sectools_signer_builder: SECTOOLS_DIR = %s" % SECTOOLS_DIR)

        if sign_id == "mba_ewm":
            c_path.create_dir(target_base_dir)
            generated_config = os.path.join(target_base_dir, "generated_config.xml")
            self._generate_config_file(config, generated_config, image_entry, relocatable)
            config_used = generated_config
        else:
            config_used = config

        # Issuing sectools command
        cmds = ["python", os.path.join(SECTOOLS_DIR, "sectools.py"), "secimage", "-i", source,
                "-o", target_base_dir, "-g", sign_id, "-c", config_used]

        cmds.append(sec_image_policy.cmd_options)

        self.builderutil.printinfo("sectools_signer_builder: %s" % " ".join(cmds))
        self.builderutil.execcmds(cmds, target=target)

        return self.builderutil.getReturnValueInBuilder(target)
class GenericSecImageBuilder(object):
    def __init__(self, env):
        self.env = env
        self.builderutil = BuilderUtil(env)

    def _generate_config_file(self, src_config, dest_config, image_entry,
                              relocatable):
        config = ConfigParser(src_config)

        image_type_list = config.root.parsegen.get_image_types_list()
        for image_type in image_type_list.get_image_type():
            if image_type.id == EWM_TYPE:
                #Override relocatable setting
                image_type.ewm_properties.relocatable = relocatable
                if image_entry is not None:
                    #Override image_entry
                    image_type.ewm_properties.image_entry = image_entry

        config.generate(dest_config)

    def build(self, target, source, sign_id, jtag_id, soc_hw_version, config,
              target_base_dir, sec_image_policy, image_entry, relocatable):

        if jtag_id is not None and soc_hw_version is not None:
            self.builderutil.printinfo(
                'both JTAG_ID and SOC_HW_VERSION are provided: jtag_id = ' +
                str(jtag_id) + ' soc_hw_version = ' + str(soc_hw_version))
            raise RuntimeError(
                'please specify only one, JTAG_ID or SOC_HW_VERSION')

        self.builderutil.printinfo("sectools_builder: SECTOOLS_DIR = %s" %
                                   SECTOOLS_DIR)

        if sign_id.endswith("ewm"):
            c_path.create_dir(target_base_dir)
            generated_config = c_path.join(target_base_dir,
                                           "generated_config.xml")
            self._generate_config_file(config, generated_config, image_entry,
                                       relocatable)
            config = generated_config

        # Issuing sectools command
        cmds = [
            "python",
            c_path.join(SECTOOLS_DIR, "sectools.py"), "secimage", "-i", source,
            "-o", target_base_dir, "-g", sign_id, "-c", config
        ]
        """
            FR 27556: Test keys to sign CRM builds
            if both jtag_id and soc_hw_version are provided, return error and exit;
            if one is provided, use that to sign the image;
            if neither is provided, use jtag_id=0 to sign the image.
        """
        if jtag_id is not None:
            jtag_id_arg = ["--cfg_msm_part", jtag_id]
            cmds = cmds + jtag_id_arg
        elif soc_hw_version is not None:
            soc_hw_version_arg = [
                "--cfg_soc_hw_version", soc_hw_version,
                "--cfg_in_use_soc_hw_version", "1", "--cfg_msm_part", ""
            ]
            cmds = cmds + soc_hw_version_arg

        cmds.append(sec_image_policy.cmd_options)

        self.builderutil.printinfo("sectools_builder: %s" % " ".join(cmds))
        self.builderutil.execcmds(cmds, target=target)

        return self.builderutil.getReturnValueInBuilder(target)