From: Zac Medico Date: Fri, 4 Mar 2011 16:39:53 +0000 (-0800) Subject: config: quote overlays containing spaces X-Git-Tag: v2.1.9.43~13 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=47500360b3063b114904c0a7dc4817a2ac6390d4;p=portage.git config: quote overlays containing spaces This will fix bug #357297. --- diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py index b63cff145..6981e24ca 100644 --- a/pym/portage/package/ebuild/config.py +++ b/pym/portage/package/ebuild/config.py @@ -501,21 +501,24 @@ class config(object): self._ppropertiesdict = portage.dep.ExtendedAtomDict(dict) self._penvdict = portage.dep.ExtendedAtomDict(dict) - """ repoman controls PORTDIR_OVERLAY via the environment, so no - special cases are needed here.""" - - overlays = shlex_split(self.get('PORTDIR_OVERLAY', '')) - if overlays: - new_ov = [] - for ov in overlays: + # repoman controls PORTDIR_OVERLAY via the environment, so no + # special cases are needed here. + portdir_overlay = shlex_split(self.get("PORTDIR_OVERLAY", "")) + new_ov = [] + if portdir_overlay: + whitespace_re = re.compile(r"\s") + for ov in portdir_overlay: ov = normalize_path(ov) if os.path.isdir(ov): + if whitespace_re.search(ov) is not None: + ov = portage._shell_quote(ov) new_ov.append(ov) else: writemsg(_("!!! Invalid PORTDIR_OVERLAY" " (not a dir): '%s'\n") % ov, noiselevel=-1) - self["PORTDIR_OVERLAY"] = " ".join(new_ov) - self.backup_changes("PORTDIR_OVERLAY") + + self["PORTDIR_OVERLAY"] = " ".join(new_ov) + self.backup_changes("PORTDIR_OVERLAY") locations_manager.set_port_dirs(self["PORTDIR"], self["PORTDIR_OVERLAY"]) @@ -2129,7 +2132,7 @@ class config(object): def thirdpartymirrors(self): if getattr(self, "_thirdpartymirrors", None) is None: profileroots = [os.path.join(self["PORTDIR"], "profiles")] - for x in self["PORTDIR_OVERLAY"].split(): + for x in shlex_split(self.get("PORTDIR_OVERLAY", "")): profileroots.insert(0, os.path.join(x, "profiles")) thirdparty_lists = [grabdict(os.path.join(x, "thirdpartymirrors")) for x in profileroots] self._thirdpartymirrors = stack_dictlist(thirdparty_lists, incremental=True)