def project_env(self): return [ '{}="{}"'.format(variable, value) for variable, value in get_snapcraft_global_environment( self.project ).items() ]
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
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