Exemplo n.º 1
0
 def project_env(self):
     return [
         '{}="{}"'.format(variable, value)
         for variable, value in get_snapcraft_global_environment(
             self.project
         ).items()
     ]
Exemplo n.º 2
0
    def _expand_env(self, snapcraft_yaml):
        environment_keys = ["name", "version"]
        for key in snapcraft_yaml:
            if any((key == env_key for env_key in environment_keys)):
                continue

            replacements = environment_to_replacements(
                get_snapcraft_global_environment(self.project))

            snapcraft_yaml[key] = replace_attr(snapcraft_yaml[key],
                                               replacements)
        return snapcraft_yaml
Exemplo n.º 3
0
    def build_env_for_part(self, part, root_part=True) -> List[str]:
        """Return a build env of all the part's dependencies."""

        env = []  # type: List[str]
        stagedir = self._project.stage_dir

        if root_part:
            # this has to come before any {}/usr/bin
            env += part.env(part.part_install_dir)
            env += runtime_env(part.part_install_dir,
                               self._project.arch_triplet)
            env += runtime_env(stagedir, self._project.arch_triplet)
            env += build_env(
                part.part_install_dir,
                self._project.info.name,
                self._project.arch_triplet,
            )
            env += build_env_for_stage(stagedir, self._project.info.name,
                                       self._project.arch_triplet)

            global_env = get_snapcraft_global_environment(self._project)
            part_env = get_snapcraft_part_directory_environment(part)

            for variable, value in ChainMap(part_env, global_env).items():
                env.append('{}="{}"'.format(variable, value))

            # Finally, add the declared environment from the part.
            # This is done only for the "root" part.
            for be in part.build_environment:
                env.extend([f'{k}="{v}"' for k, v in be.items()])
        else:
            env += part.env(stagedir)
            env += runtime_env(stagedir, self._project.arch_triplet)

        for dep_part in part.deps:
            env += dep_part.env(stagedir)
            env += self.build_env_for_part(dep_part, root_part=False)

        # LP: #1767625
        # Remove duplicates from using the same plugin in dependent parts.
        seen = set()  # type: Set[str]
        deduped_env = list()  # type: List[str]
        for e in env:
            if e not in seen:
                deduped_env.append(e)
                seen.add(e)

        return deduped_env